各位读者好,
这篇文章是在我看过 Andres Almiray 的一篇介绍文后,整理出来的。
因为内容非常好,我便将它整理成参考列表分享给大家, 同时附上各个库的特性简介和示例。
请欣赏!
Guice (发音同 ‘juice’) ,是一个 Google 开发的轻量级依赖性注入框架,适合 Java 6 以上的版本。
GitHub, JavaDoc, 使用指南, FactoryModuleBuilder(https://google.github.io/guice/api-docs/latest/javadoc/index.html)
HTTP是现代应用程序实现网络连接的途径,也是我们进行数据和媒体交换的工具。高效使用HTTP能使你的东西加载更快,并节省带宽。
OkHttp是一个非常高效的HTTP客户端,默认情况下:
GitHub, Website(http://square.github.io/okhttp/)
Retrofit 是 Square 下的类型安全的 HTTP 客户端,支持 Android 和 Java 等,它能将你的 HTTP API 转换为 Java 接口。
Retrofit 将 HTTP API 转换为 Java 接口:
来自 GitHubService 的每个 Call 都能产生为远程 Web 服务产生一个异步或同步 HTTP 请求:
GitHub, Website(http://square.github.io/retrofit/)
与JQuery类似的Java Deferred/Promise类库
.then(…)
, .done(…)
, .fail(…)
, .progress(…)
, .always(…)
.when(p1, p2, p3, …).then(…)
wrappers.when(new Runnable() {…})
Deferred<Integer, Exception, Doubledeferred;
, deferred.resolve(10);
, deferred.reject(new Exception());
,deferred.notify(0.80);
,RxJava – JVM的响应式编程扩展 – 是一个为Java虚拟机编写的使用可观察序列的构建异步的基于事件的程序的类库。
它基于观察者模式实现对数据/事件的序列的支持,并添加了一些操作符,允许你以声明式构建序列, 使得开发者无需关心底层的线程、同步、线程安全和并发数据结构。
RxJava最常见的一个用法就是在后台线程运行一些计算和网络请求,而在UI线程显示结果(或者错误):
GitHub, Wiki(https://github.com/ReactiveX/RxJava/wiki)
MBassador是一个实现了发布-订阅模式的轻量级的,高性能的事件总线。它易于使用,并力求功能丰富,易于扩展,而同时又保证资源的高效利用和高性能。
MBassador的高性能的核心是一个专业的数据结构,它提供了非阻塞的读取器,并最小化写入器的锁争用,因此并发读写访问的性能衰减会是最小的。
GitHub, Javadoc(http://bennidi.github.io/mbassador/)
使用注解来减少Java中的重复代码,比如getter,setters,非空检查,生成的Builder等。
public int getFoo() {return foo;}了
。@ToString
, @EqualsAndHashCode
, @Getter注解,以及为所有非final的字段生成@Setter
注解,以及生成@RequiredArgsConstructor!
Java简单日志门面 (SLF4J) 为不同的日志框架(比如java.util.logging
, logback
, log4j
)提供了简单的门面或者抽象的实现,允许最终用户在部署时能够接入自己想要使用的日志框架。
简言之,类库和其他嵌入式的组件都应该考虑采用SLF4J作为他们的日志需求,因为类库无法将它们对日志框架的选择强加给最终用户。另一方面,对于独立的应用来说,就不一定需要使用SLF4J。独立应用可以直接调用他们自己选择的日志框架。而对于logback来说,这个
问题是没有意义的,因为logback是通过
SLF4J来暴露其日志接口的。
对测试进行参数化,还不错
与标准的JUnit 参数化运行器的区别如下:
官方网站,GitHub,快速入门(https://github.com/Pragmatists/junitparams/wiki/Quickstart)
Java里单元测试的非常棒(tasty)的模拟框架:
官方网站, GitHub, 文档(https://github.com/mockito/mockito)
它结合了JUnit、Guice和Mockito的能力。 而且它还听起来像一门很酷的武术。
标有@Inject注解的字段会被自动注入,
不需要担心会遗忘掉它们GitHub, Website(http://jukito.arcbees.com/)
Awaitility是一个小型的Java领域专用语言(DSL),用于对异步的操作进行同步。
测试异步的系统是比较困难的。不仅需要处理线程、超时和并发问题,而且测试代码的本来意图也有可能被这些细节所蒙蔽。Awaitility是一个领域专用语言,可以允许你以一种简洁且易读的方式来表达异步系统的各种期望结果。
GitHub,入门, 用户指南(https://github.com/awaitility/awaitility/wiki/Usage)
企业级的测试和规范框架。
GitHub, Website(http://spockframework.org/)
用于模拟HTTP服务的工具