从去年也便是16年,java开发技能又勃发新春,被大数据带动起来,再度成为炙手可热的编程言语,甚至国内上市公司达内教育业强势敞开java
从去年也便是16年,java开发技能又勃发新春,被大数据带动起来,再度成为炙手可热的编程言语,甚至国内上市公司达内教育业强势敞开java教育领域,不得不说IT教育巨头达内教育的加入将成为java训练职业的强大的推动者,多的论题今天不在讨论了,今天首要的目的便是和我们共享一下一些现在比较常用的类库,希望在能我们日常的编程中协助到我们:

榜首:Guice
Google 开发的轻量级依赖性注入框架,合适 Java 6 以上的版别。
代码:
# Typical dependency injection
public class DatabaseTransactionLogProvider implements Provider {
@Inject Connection connection;
public TransactionLog get() {
return new DatabaseTransactionLog(connection);
}
}
# FactoryModuleBuilder generates factory using your interface
public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}
第二:OkHttp
HTTP是现代应用程序实现网络连接的途径,也是我们进行数据和媒体交换的工具。高效运用HTTP能使你的东西加载更快,并节省带宽。OkHttp是一个十分高效的HTTP客户端,默许情况下:
支撑HTTP/2,允许对同一主机的恳求共用一个套接字。
假如HTTP/2 不可用,连接池会削减恳求延迟。
通明的GZIP能够削减下载流量。
呼应的缓存避免了重复的网络恳求。
代码:
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request)。execute();
return response.body()。string();
}
第三:Retrofit
Retrofit 是 Square 下的类型安全的 HTTP 客户端,支撑 Android 和 Java 等,它能将你的 HTTP API 转换为 Java 接口。
Retrofit 将 HTTP API 转换为 Java 接口代码:
public interface GitHubService {
@GET(“users/{user}/repos”)
CalllistRepos(@Path(“user”) String user);
}
Retrofit 类实现 GitHubService 接口代码:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl
.build();
GitHubService service = retrofit.create(GitHubService.class);
来自 GitHubService 的每个 Call 都能产生为长途 Web 服务产生一个异步或同步 HTTP 恳求:
Call> repos = service.listRepos(“octocat”);
第四:JDeferred
与JQuery类似的Java Deferred/Promise类库
优势与特性:
Deferred 目标和 Promise
Promise 回调:.then(…), .done(…), .fail(…), .progress(…), .always(…)
支撑多个promises - .when(p1, p2, p3, …)。then(…)
Callable 和 Runnable - wrappers.when(new Runnable() {…})
运用 Executor 服务
支撑Java 泛型: Deferred 支撑Android
Java 8 Lambda的友爱支撑
第五:RxJava
RxJava – JVM的呼应式编程扩展 – 是一个为Java虚拟机编写的运用可观察序列的构建异步的根据事情的程序的类库。它根据观察者方式实现对数据/事情的序列的支撑,并添加了一些操作符,允许你以声明式构建序列, 使得开发者无需关心底层的线程、同步、线程安全和并发数据结构。RxJava最常见的一个用法便是在后台线程运转一些计算和网络恳求,而在UI线程显示成果(或者过错):
代码:
Flowable.fromCallable(() -{
Thread.sleep(1000); // imitate expensive computation
return “Done”;
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(System.out::println, Throwable::printStackTrace);
Thread.sleep(2000); // <--- wait for the flow to finish
第六:MBassador
MBassador是一个实现了发布-订阅方式的轻量级的,高功能的事情总线。它易于运用,并力求功能丰厚,易于扩展,而同时又确保资源的高效利用和高功能。MBassador的高功能的中心是一个专业的数据结构,它提供了非堵塞的读取器,并最小化写入器的锁争用,因此并发读写访问的功能衰减会是最小的。
优势与功能
注解驱动的;提供任何东西,慎重对待类型层次结构;同步和异步的消息传递;可装备的引用类型;消息过滤;封装的消息;处理器的优先级;自定义过错处理;可扩展性;
// Define your listener
class SimpleFileListener{
@Handler
public void handle(File msg){
// do something with the file
}
}
// somewhere else in your code
MBassador bus = new MBassador();
Object listener = new SimpleFileListener();
bus.subscribe (listener);
bus.post(new File(“/tmp/smallfile.csv”))。now();
bus.post(new File(“/tmp/bigfile.csv”))。asynchronously();
第七:Mockito
Java里单元测验的十分棒(tasty)的模仿框架:
代码:
//你能够模仿具体的类,而不只是接口
LinkedList mockedList = mock(LinkedList.class);
//打桩
when(mockedList.get(0))。thenReturn(“first”);
when(mockedList.get(1))。thenThrow(new RuntimeException());
//以下代码打印出“first”字符串
System.out.println(mockedList.get(0));
//以下代码抛出运转时异
System.out.println(mockedList.get(1));
//以下代码打印出“null”,由于get(999)没有被打桩
System.out.println(mockedList.get(999));
//虽然是能够验证一个打过桩的调用,但通常是多余的
//假如你的代码关心get(0)返回值的内容,那么其他东西就会中止(往往在verify()履行之前就发生了)。
//假如你的代码不关心get(0)返回值的内容,那么它就不该该被打桩。不相信吗?看看这里。
verify(mockedList)。get(0);
、
第八:Jukito
它结合了JUnit、Guice和Mockito的能力。 并且它还听起来像一门很酷的功夫。
优势与特性
极大的削减了比如主动mock的样板,从而使测验更加易读。
能够使得测验能够根据被测验的目标上的API的改动而弹性变化。
标有@Inject注解的字段会被主动注入,不需要忧虑会遗遗忘它们
使得将目标连接在一起变得简单,因此你能够将一个单元测验变成集成测验的一部分
代码:
@RunWith(JukitoRunner.class)
public class EmailSystemTest {
@Inject EmailSystemImpl emailSystem;
Email dummyEmail;
@Before
public void setupMocks(
IncomingEmails incomingEmails,
EmailFactory factory) {
dummyEmail = factory.createDummy();
when(incomingEmails.count())。thenReturn(1);
when(incomingEmails.get(0))。thenReturn(dummyEmail);
}
@Test
public void shouldFetchEmailWhenStarting(
EmailView emailView) {
// WHEN
emailSystem.start();
// THEN
verify(emailView)。addEmail(dummyEmail);
}
}
第九:Spock
企业级的测验和标准框架。
代码:
class HelloSpockSpec extends spock.lang.Specification {
def “length of Spock's and his friends' names”() {
expect:
name.size() == length
where:
name | length
“Spock” | 5
“Kirk” | 4
“Scotty” | 6
}
}
第十:WireMock运用方法
用于模仿HTTP服务的工具;
对HTTP呼应进行打桩,能够匹配URL、header头信息和body内容的方式;
恳求验证;
在单元测验里运转,但是是作为一个对立的进程或者一个WAR应用的方式;
可通过流通的Java API、JSON文件和根据HTTP的JSON进行装备;
对stub的录制/回放;
故障注入;
针对每个恳求的根据条件进行署理;
针对恳求的检查和替换进行浏览器的署理;
有状态的行为模仿;
可装备的呼应延迟。
代码
{
“request”: {
“method”: “GET”,
“url”: “/some/thing”
},
“response”: {
“status”: 200,
“statusMessage”: “Everything was just fine!”
}
}
达内现已开设PHP训练、UI训练、HTML5、Java/大数据训练、Java训练、Linux/云计算训练、全栈工程师等很多学科,累计培育数万名学员,截至2016年9月学员就业均匀起薪高达6070元。
达内已是第11个年头,这条路虽历尽艰辛,但我们痴心不改。我们便是想让学员们知道:不是一切的训练组织都是骗人的!

在达内,你能够找到自我、重拾自傲;在达内,你会每天渴求生长,学到深夜;
在达内,你把学习当成一种习气;在达内,你有更多的兄弟姐妹;
以上就是济南达内给大家做的内容详解,更多关于IT知识的学习,请继续关注济南达内