盘点当下最流行的 Java 工具

背景

最流行的工具并不一定是“最好的”,对于开发来说,什么是最好的,取决于使用场景。然而,当选择工具时,流行程度是不可忽视的一个重要因素,并不是因为工具的流行增加了其价值,而是因为广泛使用的社区带来了无价的资源和支持。 

流行的工具更容易学习,因为会有很多人乐意帮助你。如果是开源的话,麻烦就更少了。因为有更多的人在审核代码和进行测试,能考虑到更多的情况。 

在很多情况下,都会有一个对立的竞争对手,比如Apache和Nginx——两个web服务器。Apache被使用的更多,但是顶尖的网站使用Nginx更多,也就是说,顶级工程师更加青睐Nginx——在很多情况下,流行度可能是区分工具最重要的一点。 

这份列表包含了开发Java应用程序所需要的大部分工具。包括最流行的、次流行的,他们都有强大的社区支持。Java的初学者需要认识一下这些工具,熟悉生态系统。

最流行工具类 

语言版本 

最流行的:Java 8 

次流行的:Java 7 

Java 8可能是所有版本中被接受最快的。可能是因为,Java 8带来了期待已久的现代语言特性,例如lambda表达式,解决了长久以来Java饱受人们批评的冗长啰嗦的缺点。当然,性能也是一大方面。 

虽然现在很多Java应用和主要的应用都是用Java 8写的,但也有很大数量的Java应用依然使用Java 7或6。 

我不会蹚Java EE和Spring这趟浑水,因为一谈论这个,总是伴随着很多争吵,在用户数量方面,似乎相当。也有一些第三方开发者两者都用。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.9, 1.10)

  • DZone Guide to the Java Ecosystem, 2015 edition (graphs 1 & 2)

编辑器和IDE 

最流行的:Eclipse和IntelliJ IDEA(存在争议) 

次流行的:Netbeans 

Eclipse和Netbeans都是免费、开源的。Eclipse以强大的社区和丰富的插件闻名(开发Eclipse插件非常方便),这让Eclipse平台的扩展性变得很强,但是这个IDE启动比较慢。Netbeans通过整合了Maven和Git等让自己变得与众不同。IntelliJ以性能著称,并且是一款商业产品。它有免费和付费两种版本。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (IntelliJ IDEA was the top IDE in this report, figure 1.11)

  • DZone Guide to the Java Ecosystem, 2015 edition (Eclipse was the top IDE in this one, paragraph 4)

Web Framework 

最流行的:AngularJS,SpringMVC 

次流行的:Java Server Faces(JSF) 

三个调查中的两个都显示Spring MVC的受欢迎度比Java Server Faces(JSF)高,DZone的调查显示Spring MVC和JSF之间不分伯仲。随着JavaScript框架在web方面的发展,也许这些都不再重要了。有一个调查显示,AngularJS相比与纯Java框架,在前端方面更受欢迎。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.16)

  • DZone Guide to the Java Ecosystem, 2015 edition (chart 3, paragraph 5 shows a tie)

  • JSF and Spring MVC Tie in Java / JVM Frameworks Poll

应用服务器 

最流行的:Tomcat 

次流行的:Wildfly 

很长时间以来,Tomcat都是最流行的Java应用服务器框架。它是一个轻量级框架,在一些其他调查中,Jetty——另一个轻量级应用框架——领先于Wildfly——最流行的Java EE支持的应用服务器。Tomcat在轻量Java应用方面无疑是霸主地位,是微型服务架构方面的最佳选择。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)

  • DZone Guide to the Java Ecosystem, 2015 edition(chart 4)

  • RebelLabs’ Great Application Server Debate 2013 (for a deeper dive into app server use cases)


测试框架 

单元测试 

最流行的:JUnit 

名副其实的最佳Java测试框架 

模拟 

最流行的:Mockito 

最受欢迎的Java模拟测试框架。 

自动化Web浏览测试 

最流行的:Selenium 

Selenium只是自动化浏览测试。开发者经常使用这个工具配合其他的测试框架,来测试大型Web应用。 

行为驱动开发测试(BDD)测试 

最流行的:Cucumber-JVM, Spock 

Cucumber最开始只是一个Ruby项目,但是现在已经用各大主流编程语言实现了。Spock支持JVM驱动的语言Groovy,当然也支持Java。Mockito能做的事情它基本上都能做。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2014

  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

版本控制系统 

最流行的:Git 

次流行的:Subversion 

记住,使用Git比仅仅使用Github和简单提交那样更加灵活。现在来看,Git赢得了版本控制大战的胜利,很多Subversion和CVS的用户逐渐开始转向Git。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.18)

持续集成 

最流行的:Jenkins 

次流行的:No CI server 

在这方面也有一个明显的巨头。Jenkins灵活的插件系统,在过去的五年间逐渐控制了这个领域。其余Jenkins的竞争对手中,更多的人选择No CI server。接下来是Bamboo。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.13)

  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

  • DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)

数据库 

最流行的:OracleDB 

次流行的:MySQL 

在所有这些工具中,数据库可谓是最取决于使用场景的。取决于你要创建的应用的不同,你可能需要一个轻量的键值对存储数据库,或者存储很多列的数据库。对于大多数的应用来说,一般的数据库就能满足需求,这就是为什么这两种数据库可以排名前列的原因。 

Oracle是这篇文章中为数不多的商业软件,这意味着,它有很多“企业级”特性。如果你偏爱开源软件的话,强烈推荐MySQL和SQLite。 

数据 

  • DB-Engines Database Rankings

  • DZone Guide to Databases 2016

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.14, this is the only Java-specific one)


对象关系映射 

最流行的:The Java Persistence API (JPA) / Hibernate 

次流行的:The Java Database Connectivity API (JDBC) 

Hibernate太流行了,多年前就在Java Persistence API成了标准。 

数据 

  • DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)

  • RebelLabs Java Tools and Technologies Landscape Report 2014 (page 31)


静态代码分析 

最流行的:FindBugs 

次流行的:SonarQube 

这两个工具非常不同,所以很难比较。FindBug是一个简单的静态代码分析工具,SonarQube是一个全平台的代码质量分析、语法检查、代码度量的工具。 

数据 

  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

  • RebelLabs Java Tools and Technologies Landscape Report 2014 (page 2)

语法检查 

最流行的:Check  

次流行的:Eclipse 

大型的Java IDE都有这个功能,但是如果你需要特定的程序专门进行类型检查,Check 是一个不错的选择。

数据 

  • DZone Guide to Continuous Delivery, 2015 edition(page 20)

人工仓库管理 

最流行的:Sonatype Nexus 

次流行的:JFrog Artifactory 

很多开发者并不使用人工仓库管理JARs,WARs,库和应用。但是如果想这么做的话,Nexus是最好的选择。两者都是商业软件,Apache Archiva是一个开源的选择。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2014 (page 45)


控制反转 

最流行的:Spring Framework DI 

次流行的:Google Guice 

Spring framework在控制反转方面做的很不错,但是Google的开发者也做了一个不错的工具。Dagger在这方面的用户并不很多,但是正在逐渐流行起来,尤其是安卓开发方面。Pokémon Go使用的也是它。 

数据 

  • Poll of reddit.com/r/java

性能分析 

Java性能总览 

最流行的:VisualVM 

次流行的:No profiler 

有相当一部分的开发者并不使用性能分析工具(也许他们有专业的性能优化团队来做)。YourKit也是替代VisualVM的一个不错选择。 

载入测试 

最流行的:JMeter 

次流行的:LoadRunner 

除了这两款工具之外,还有很多做载入性能测试的工具,所以在使用之前,最好做好充分的市场调研。JMeter是开源软件,LoadRunner是商业软件。商业软件的好处是服务广泛,可以在云端运行测试。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.19)

  • DZone Guide to Continuous Delivery, 2015 edition (page 20)

编译自动化和依赖管理 

最流行的:Maven 

次流行的:Gradle 

Maven无疑占据了领导地位,但是Gradle的使用也很广泛,它还是安卓的标准编译工具。 

数据 

  • RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.12)

  • DZone Guide to the Java Ecosystem, 2015 edition (chart 4)

日志库 

最流行的:Log4j 

次流行的日志库尚不明确,这方面的调查比较少。这篇文章的内容场景围绕流行的日志库和Java中的设置展开。

思考

记得上次去撸串,旁边师傅还一直喊呢:“问君何所有,烤串和啤酒。”作为JAVA的源生者,我们又怎么能不熟悉当下最为广泛使用的工具呢?
“工欲善其事,必先利其器”,这就是我们的利器呢!




你可能感兴趣的:(JAVA)