每个开发阶段对应的最流行的Java工具

译文
开发 后端
就因为某个工具是最流行的,并不意味着它就是“最好的”。在编程领域,什么是最好的取决于具体环境。然而,在一批类似的工具当中选择时,人气或受欢迎程度无疑是个重要的衡量标准。倒不是人气本身增添了工具的价值,而是说某个工具的更庞大社区带来了更丰富的资源和支持。

【51CTO.com快译】就因为某个工具是***的,并不意味着它就是“***的”。在编程领域,什么是***的取决于具体环境。然而,在一批类似的工具当中选择时,人气或受欢迎程度无疑是个重要的衡量标准。倒不是人气本身增添了工具的价值,而是说某个工具的更庞大社区带来了更丰富的资源和支持。

[[174150]]

流行的工具更容易上手,因为有很多人可以帮助你使用它。而流行的开源工具往往代码错误较少,因为有更多双眼睛盯着代码,更多的人在数量更多的场景下测试代码。

所以,虽然始终有Apache和Nginx(这是两种Web服务器)这样的竞争对手:Apache用在数量多得多的网站上,但是Nginx更常被知名网站所使用,这意味着Nginx被一些最出色的工程团队所使用――在许多情况下,人气可能是工具之间的关键区别因素之一。

本文涵盖了你在开发Java应用程序时需要的大部分重要工具,包括每个类别,提供了***的工具,还提供了“次流行的工具”,并附有一些背景介绍和来自Java社区调查的引言,证实了这些排名。Java初学者应看一下所有这些***工具,进一步熟悉整个生态系统。

语言版本

***的:Java 8

次流行的:Java 7

Java 8可能是任何新版本中采用速度最快的。这可能是由于,Java 8带来了期待已久的现代语言功能,比如lambda表达式,缓解了Java经常饱受诟病的冗长啰嗦这一缺点。性能提升也是一大方面。

虽然现在新的Java应用程序和主要的应用程序是用Java 8编写的,但大量现有的Java应用程序依然使用Java 7或6。

我不会比较Java EE和Spring孰优孰劣,因为这方面的统计数字始终存在争议,而两者的用户数量似乎旗鼓相当。使用其中一种语言的约三分之一的开发人员同时还使用另一种语言。

编辑器或IDE

***的:Eclipse和IntelliJ IDEA(存在争议)

次流行的:Netbeans

Eclipse和Netbeans都是免费、开源的。Eclipse以庞大的社区和丰富的插件(易于编写)而家喻户晓,这让Eclipse平台具有无比强大的扩展性,但是载入速度缓慢、有时比较笨拙。Netbeans的不同之处在于结合了一些特性,比如默认情况下就与Maven和Git整合起来。IntelliJ拥有商业产品的那种性能和成熟。它有免费版和收费版。

Web框架

***的:AngularJS和SpringMVC

次流行的:Java Server Faces(JSF)

虽然三分之二的调查显示Spring MVC比Java Server Faces(JSF)更有优势,但DZone的大规模调查显示,Spring MVC和JSF其实难分伯仲。这种比较可能不再重要,因为JavaScript框架正在大举进入到许多流行的web堆栈。有一项调查询问AngularJS的使用相比纯粹的Java Web框架怎样,结果发现AngularJS在前端方面比***的Java框架更有优势。

应用服务器

***的:Tomcat

次流行的:Wildfly

多年来,Tomcat一向是使用最广泛的Java应用服务器。它是轻量级应用服务器,并不试图实现所有的Java EE规格。在一些调查中,另一种轻量级应用服务器Jetty领先***的、支持Java EE的应用服务器Wildfly。对简单的Java应用程序而言,Tomcat显然是领头羊;轻量级应用服务器无疑是微服务架构方面的***选择。

测试框架

单元测试

***的:JUnit

事实上的Java单元测试框架。

模拟测试

***的:Mockito

它显然是Java 模拟测试框架中的佼佼者。

自动化浏览器Web测试

***的:Selenium

Selenium可自动化测试浏览器。开发人员经常结合测试框架来使用这个工具,进行大规模的Web应用程序测试。

行为驱动开发(BDD)测试

***的:Cucumber-JVM和Spock

Cucumber起初是个Ruby项目,但是现在已支持各大编程语言。除了Java外,Spock还支持JVM语言Groovy。它还能处理Mockito能处理的大部分工作。

版本控制系统

***的:Git

次流行的:Subversion

记住:Git比仅仅使用GitHub及其版本控制约定来得活。Git似乎基本上赢得了版本控制大战的胜利,而大多数Subversion和CVS用户是只好使用一套遗留工具的开发人员。

持续集成

***的:Jenkins

次流行的:暂无

这是显然存在领头羊的另一个方面。在过去的五年间,Jenkins灵活的插件系统让它逐渐成为霸主。不使用任何持续集成服务器的人比使用Jenkins的任何一个竞争对手的人要多。实力最接近的下一个竞争对手是Bamboo。

数据库

***的:OracleDB

次流行的:MySQL

你在选择数据库时比本文介绍的其他许多工具更依赖具体环境。除了庞大的列式数据库外,你可能还需要轻型的键值存储数据库,这取决于你在构建的应用程序。对于大多数应用程序来说,关系数据库仍能满足要求,这就是为什么你看到两种关系数据库跻身Java工具榜单的前列。

Oracle是本文中为数不多的商业软件之一,这意味着它有许多“企业级”功能。如果你偏爱开源,MySQL或甚至SQLite是合理的选择。

持久API及/或对象关系映射(ORM)

***的:Java持久API(JPA)/hibernate

次流行的:Java数据库连接API(JDBC)

Hibernate太流行了,几年前就在Java持久API规范当中实现了标准化。

静态代码分析

***的:FindBugs

次流行的:SonarQube

这两个工具的范围大不一样,所以很难比较。FindBug是一个较简单的静态代码分析工具,而SonarQube是个完整的平台,可用于代码质量分析、语法检查和代码度量。

语法检查

***的:Checkstyle

次流行的:Eclipse

主要的Java IDE都有这项功能,但是如果你需要专门用于语法检查的另一个程序,Checkstyle倒是个不错的选择。

工件管理

***的:Sonatype Nexus

次流行的:JFrog Artifactory

许多开发人员并不使用工件库对JAR、WAR、库和整个应用程序进行版本管理。但是他们在这么做时,Nexus更受用户的青睐。两者都是商业软件。Apache Archiva是个开源工具。

依赖注入

***的:Spring Framework DI

次流行的:Google Guice

Spring框架在依赖注入方面做得不赖,但是谷歌的开发人员也开发了一款流行的工具:Guice。Dagger 的人气比不上两者,但它是新工具,用户越来越多,尤其是在安卓开发方面。热门游戏《Pokémon Go》用的就是它。

性能分析

Java分析

***的:VisualVM

次流行的:暂无

为数不少的Java开发人员并不使用任何性能分析工具(可能将性能问题交给不同的团队去考虑)。YourKit是替代VisualVM的另一种流行的工具。

载入测试

***的:JMeter

次流行的:LoadRunner

除了这两款工具外,还有一大批的载入测试工具,所以务必要调研这个市场。JMeter是开源工具,LoadRunner是商业产品。商业产品的主要优点是它为在云端运行测试提供了众多服务。

构建自动化和依赖管理

***的:Maven

次流行的:Gradle

虽然Maven是明显的领头羊,但是Gradle依然使用广泛,是一种仅次于Maven的构建工具,它还是安卓平台的标准构建工具。

日志库

***的:Log4j

日志库方面的次流行工具并不明确,因为这个工具类别方面开展的研究比较少。

原文标题:The most popular Java tools for every phase of development,作者:Mitch Pronschinske

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:赵立京 来源: 51CTO
相关推荐

2011-03-23 10:50:21

LAMPWeb开发

2011-01-04 18:04:49

PHP

2021-07-28 14:25:01

编程语言开发JavaScript

2022-05-18 13:43:04

Devops应用程序开发

2023-03-22 18:21:27

2010-05-25 15:12:59

Web

2020-08-12 13:18:49

Java编程语言

2009-11-10 09:39:00

Web设计

2014-02-19 10:34:48

JavaScript代码规范

2014-02-04 19:44:23

编程语言开发

2017-01-15 17:44:27

Java EE服务器

2023-10-17 18:07:36

2011-03-21 13:01:10

2022-12-04 23:52:11

iOS自动化工具

2016-12-26 11:00:57

Java开发者工具

2012-05-17 11:22:59

跨平台工具跨平台Java

2017-06-27 14:02:09

前端框架Bootstrap

2023-03-31 11:21:10

网络协议LoRaWAN

2018-03-13 09:34:30

人工智能编程语言Python

2017-04-12 09:42:29

Java开发工具
点赞
收藏

51CTO技术栈公众号