作者:Jack47
转载请保留作者和原文出处
欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源。
本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定期更新。
使用这些开源的类库,帮助非常大,能够节约你的宝贵时间,减少你出错的可能,让你把时间都集中在处理自己独特的业务逻辑上。同时可以多看看这些优秀的开源库,向他们学习,能够帮助你设计更好的API,让你的代码更易读,更整洁,更简单,因为这些API自身就是很好的例子。
Guava
Guava[ˈgwɑːvə]。它包含了Google在Java项目中使用一些核心库,包含集合(Collections),缓存(Caching),并发编程库(Concurrency),常用注解(Common annotations),String操作,I/O操作方面的众多非常实用的函数。Guava需要JDK1.6及以上版本。
Guava库是按照Joshua Bloch的 <<Effective Java: 2nd Edition>>来写的,不可变性(不可变的集合,CharMatcher,Joiner, Splitter等),构造者模式(ImmutableList.builder(), Joiner, Ordering等),范型等随处可见,使用工厂而不是构造函数(Maps.newHashMap()),钟情于组合而不是继承(ForwardXXX这类集合)。
我专门写过 Google Java编程库Guava介绍
5 Reasons use Guava
Guava和Apache库之间的对比
Friends of Guava
Joda Time
Joda-Time:
Java 8之前提供的标准的日期(Date)和时间(Time)类非常烂。现在Java下Joda Time已经成为了标准,进入了 Java 8中的java.time。Joda-Time的API相当简单,支持很多日历系统,对时区(time zone),时间间隔(duration),格式(format)和解析(parsing)的支持也相当赞。
Joda Time 5分钟上手手册
Apache Commons
Apache Commons项目目的是从各个方面提供可复用的Java编程组件。里面包含了很多很多组件,我用到的主要有:
Codec 提供了常用编码和解码的函数实现,例如Base64, Hex
CLI
提供了一个非常方便的命令行参数解析器,几行API调用就可以搞定命令行参数解析
Metrics
Metrics以前叫Coda Hale Metrics。如果你需要关注程序内部的一些性能或业务指标,需要统计数据,Coda Hale Metrics都可以帮你搞定,包括JDBI,Jersey,Jetty,Log4j,JVM内部性能指标。如果需要定制自己的指标,你所需要做的就是两件事情:
Metrics支持5种数据类型:Meter(事件发生的频率,例如QPS), Gauge(值的大小), Counters(计数器), Histogram(计算值的统计分布), Timer(耗时)。其中 Meter支持 1min,5min,15min内平均值,由于是通过采样来统计的,所以性能开销很小。Gauge支持最大值,最小值,平均值和标准差,同时也支持5种分点数据:75,90,98,99,99.9分点。
Metrics支持JMX汇报,HTTP汇报(自带了一个简单的Servlet,可以提供JSON表示注册的所有监控数据),也可以使用终端,文件来输出CSV格式的数据,也可以支持Ganglia和Graphite所需的格式类型。
Kafka消息队列,流式处理数据的Storm,都在用Metrics作为监控数据的收集系统。
SLF4J
SLF4J全称是Simple Logging Facade for Java,即简单日志门面。它对众多的日志框架做了抽象,提供统一的日志API,用户可以通过classpath指定SLF4J最终使用的日志框架,这样就可以在运行时才决定使用哪个日志后端,例如Logback,log4j等。这样做的好处是让应用程序和特定的日志框架之间解耦合。当你需要和第三方代码库或者已经决定了日志框架选型的项目做集成时,这个特性会非常方便。
SLF4J使用手册只有区区两页。
PowerMock
单测Mock工具库PowerMock与同类的工具Mockito, EasyMock, jMock都很相似,都是为了简化单元测试过程中测试上下文的搭建而开发的工具。可以极大地简化单元测试的书写过程,可以实现对静态函数、构造函数、私有函数、Final函数一季系统函数的模拟。这样可以大大提高单测的效率及单测代码的可读性。
PowerMock使用定制化的类加载器(class loader)和字节码(bytecode)操作技术,而不是用反射的机制。
Byte Buddy
Byte Buddy是一个用来在Java应用程序运行过程中产生Java> 如果您看了本篇博客,觉得对您有所收获,请点击右下角的“推荐”,让更多人看到!
资助Jack47写作,打赏一个鸡蛋灌饼吧
微信打赏
支付宝打赏
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com