看到现代Java的语法如何简化并扩展了老Java之后,你可能已经摩拳擦掌跃跃欲试Java了。我整理了一下第三方的工具和库,这些可以用来帮助你们上手。
MavenMaven是一个Java构建系统,相比于配置,它更重视规范。Maven定义了应用程序的结构,并提供了许多内置函数,比如运行测试,打包应用,部署你的库。使用Maven会显著降低管理Java项目的认知开销。 Maven Central是Java世界中的PyPI,为已发布的Java库提供一站式服务。
核心函数谷歌的Guava library提供了谷歌Java开发中所使用的核心函数。这包括应用于集合,缓存,基础数据类型,并发,字符串处理工作,I/O等的常见函数。Guava为如何设计好的的Java API提供了绝佳的案例分析,提供最有效的从Java中推荐的最佳实践的具体例子一个很好的案例, Effective Java中推荐的最佳实践大部分都在Guava中得以体现。Guava被用于谷歌产品开发,进行了超过286,000个单元测试,可谓经受过实战测试的考验。
日期/时间函数Joda-Time 已经成为Java实际上的标准日期/时间函数库。事实上,Java 8几乎一字不差地采用了Joda-Time规范。自此,我们建议使用java.time中的日期/时间函数代替Joda-Time。但是,如果你需要使用Java 8之前的版本,Joda-Time提供了无与伦比的API。
分布式系统Akka 提供类似Erlang型的Actor模型的抽象层来编写分布式系统。Akka可以从容应对许多种不同的故障,为编写可靠的分布式系统提供了更高层次的抽象。
Web应用程序需要用Java写一个功能完善的Web应用程序?莫怕,有Play Framework罩着你。Play基于Akka的非阻塞I/O,提供了编写Web应用程序的可扩展的异步框架。如果想使用不那么前沿但是被广泛应用于产品的框架,请尝试Jetty。
单元测试JUnit 仍为编写单元测试的标准。最近几年,JUnit的匹配器有所扩展,允许你对集合作assertions。例如,您可以轻松地断言一个链表是否包含某个特殊值。
模拟框架(Mocking Framework)Mockito是Java的标准模拟库。它提供了所有你能想到的且对编写测试非常重要的模拟库的功能。
然而不足的是。。。
目前为止,我一直在为Java说好话,但是有些方面它还是很烂。
它还是Java!Java的历史遗留不可避免,Java仍然向下兼容其最早的版本,这意味着语言和标准库的最烂的部分还存在着。Guava是为了令Java语言更讨人喜欢而产生这个事实就证明了,Java和API存在不一致,令人困惑的问题,有时甚至是完全错误的。
JSONJava缺少映射到JSON的object literal syntax(如Python的字典literal syntax)。正因如此,从Java对象映射到JSON有时需要繁复的对象实例化和映射,反之亦然。目前有各种JSON库在这个领域竞争,Jackson是当前的最受欢迎的,但是Jackson的文档需要进一步完善。
模拟(Mocking)Mockito解决了测试Java代码中的很多痛点,但是从像Python语言的灵活转换到Java语言的严格,你需要更谨慎地来设计你的类用于模拟。
REPL