Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。它最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
Hutool是Hu + tool的自造词,谐音“糊涂”,寓意,追求“万事都作糊涂观,无所谓失,无所谓得”的境界。
Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。
以计算MD5为例:
同样,当我们想实现什么功能,脑袋中第一个想到的就是去找XXXUtil,而非百度。
-----------------------------------------------------------------------------------
随着Hutool使用越来越广泛,暴露出的问题也逐渐对出来。不过“没有银弹”,没有完美的无bug项目,关键是是否能及时修复。
最近有两位网友质疑Hutool,源于两个bug,Hutool在一天中连发两版修复了这些bug。虽然心里不太高兴,不过回头一想,每一个开源项目在发展的道路上难免会遇到坎坷,而这些坎坷才是一个成熟项目的宝贵财富。
感谢每一个热心用户给Hutool带来的帮助,也感谢大家的各种批评声音。Hutool争取做到知错能改,及时修复bug。
-----------------------------------------------------------------------------------
Bug修复
【extra】 修复JschUtil.exec不执行命名的问题(issue#405@Github)
【http】 修复CookieManager全局设定导致的可能存在的冲突,增加自定义的GlobalCookieManager
【core】 修复ZipUtil.zlib压缩识别问题(感谢@【上海】 沙漏)
【log】 调整log模块层次结构,兼容slf4j的API(issue#IY8DX@Gitee)
【core】 Convert.toXXX带默认值换成convertQuietly实现,避免异常(issue#403@Gitee)
【log】 解决行号错误问题
【log】 修复decimalFormatMoney中整数丢失问题(issue#IY9OV@Gitee)
【log】 修复log模块模板拼接时没有判断等级关闭与否的问题
【poi】 解决三目运算符导致类型转换问题(issue#385@Github)
【core】 解决NumberUtil.decimalFormatMoney格式错误问题(issue#391@Github)
【core】 修复NumberUtil.decimalFormatMoney只有整数的bug(issue#IWKVL@Gitee)
【bloomFilter】 修复BitMapBloomFilter构造数bug(issue#IWMIN@Gitee)
【extra】 MailUtil.send方法传入自定义Setting失效问题(感谢@【上海】康)
【core】 修复NetUtil.localIpv4s方法名,改为localIps(issue#IWS2C@Gitee)
【http】 修复HttpUtil.toParams方法某些符号未转义问题(issue#356@Github)
【captcha】 修复验证码被遮挡问题(issue#IWERW@Gitee)
【poi】 修复readBySax重复问题(issue#IVKLQ@Gitee)
【json】 修复JSON中含有日期导致的时间戳包含双引号问题
新特性
【poi】 增加TableUtil
【http】 HttpRequest增加setCookieManager方法
【http】 改进url错误时的报错信息(感谢@【北京】thumb)
【crypto】 提供HmacSM3支持(issue#396@Github)
【setting】 SettingLoader添加同步锁(issue#396@Github)
【json】 解析JSON字符串去除两边空白符(同时解决字符串中bom问题(issue#381@Github)
【poi】 Sax解析增加在异常后关闭文件的逻辑(issue#IXBOU@Gitee)
【core】 MapUtil增加get重载(TypeReference)(issue#IXL81@Gitee)
【crypto】 RC4增加encryptHex和encryptBase64方法(issue#387@Github)
【core】 DateUtil.parse增加格式(issue#385@Github)
【core】 增加CollUtil.containsAny(感谢【北京】宁静)
【core】 增加CollUtil.keySet和values(issue#IXYQJ@Gitee)
【core】 DateUtil.parse方法识别时间增强(issue#IWMM6@Gitee)
【extra】 Mail中Files附件可选为空(issue#365@Github)
【extra】 EmojiUtil增加containsEmoji方法(pr#373@Github)
【core】 Convert.toDBC()增加空校验(issue#369@Github)
【extra】 修改MailUtil中的逻辑,默认为非单例邮件客户端(issue#IWFRQ@Gitee)
【core】 修改Singleton单例策略,IdUtil增加getSnowflake(issue#IWA0G@Gitee)
【core】 增加RandomUtil.randomBoolean(issue#351@Github)
【core】 增加Base62实现,Base62类