Java下好用的开源库推荐
作者:Jack47
转载请保留作者和原文出处
欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源。
2017-4-6 更新: Google搜索 awesome java, 你会看到众多程序员参与维护的优秀Java编程库列表。学好英语,用Google搜索,否则我们就只能在中文的局域网里翻阅别人写的二手资料了。
本文想介绍下自己在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介绍
Joda Time
Joda-Time:
Java 8之前提供的标准的日期(Date)和时间(Time)类非常烂。现在Java下Joda Time已经成为了标准,进入了 Java 8中的java.time。Joda-Time的API相当简单,支持很多日历系统,对时区(time zone),时间间隔(duration),格式(format)和解析(parsing)的支持也相当赞。
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 class的代码生成库。Byte Buddy的目的是通过领域专用语言(DSL)来把生成字节码的过程隐藏起来。这样使用Byte Buddy时就不需要知道底层的Java字节码和类文件的格式了。
如果您看了本篇博客,觉得对您有所收获,请点击右下角的“推荐”,让更多人看到!
Java下好用的开源库推荐的更多相关文章
- 【开源库推荐】#3 Android EventBus的使用
原文地址:[开源库推荐]#3 Android EventBus的使用 | Stars-One的杂货小窝 EventBus的Github Event bus for Android and Java t ...
- 27个提升效率的iOS开源库推荐
DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...
- 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐!
作者:编辑部的故事 < 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! > 开源巨献:年度最佳 JavaScript 和 CSS 开源库推荐! Tutoria ...
- 快快快!27个提升效率的iOS开源库推荐
文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...
- 快快快!27个提升效率的iOS开源库推荐(转)
CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用.开发工具.移动游戏及引擎.智能硬件.物联网等方方面面.如果您想投稿.参与内容翻译工作,或寻求近匠报道,请发送 ...
- linux下安装libcurl及开源库的一般安装步骤
前言 总有人说:要多看源代码!那么源代码去哪找呢?找到了又该怎么安装呢?本票博客不介绍如何使用和学习,只要讲获取和安装,以后会将curl和libevent的使用和学习. 一.开源库常用安装步骤 1.开 ...
- 各种实用的 PHP 开源库推荐【转】
转自: https://my.oschina.net/editorial-story/blog/882780 PHP 是一种通用开源脚本语言.语法吸收了 C 语言.Java 和 Perl 的特点,利于 ...
- ios开发--27个提升效率的iOS开源库推荐
超长慎入列表: DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core D ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
随机推荐
- 恢复SQL Server被误删除的数据(再扩展)
恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- 玩转Vim 编辑器
一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...
- 自己写的数据交换工具——从Oracle到Elasticsearch
先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
- mount报错: you must specify the filesystem type
在linux mount /dev/vdb 到 /home 分区时报错: # mount /dev/vdb /homemount: you must specify the filesystem ty ...
- iOS开源项目周报1222
由OpenDigg 出品的iOS开源项目周报第二期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. io ...
- intellij idea 13&14 插件推荐及快速上手建议
IntelliJIDEA插件安装 首页 > blog Tags : intellij IDEA插件安装 更新日期: 2015-04-29 IntelliJ IDEA插件下载地址: http:// ...