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

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

所以,虽然始终有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

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

每个开发阶段对应的最流行的Java工具相关推荐

  1. 【Android 安全】DEX 加密 ( 阶段总结 | 主应用 | 代理 Application | Java 工具 | 代码示例 ) ★

    文章目录 一.主应用 二.代理 Application 解析 1.代理 Application 源码 2.反射对象成员以及方法的工具类 3.压缩解压缩工具类 4.OpenSSL 解密工具类 5.Ope ...

  2. ibm java 工具_Eclipse是由IBM开发的一款功能完整且成熟的IDE集成开发环境,它是一个开源的、基于Java的可扩展开发平台,是目前最流行的Java语言开发工具。...

    [判断题]由运放组成的任何应用电路都可以采用 " 虚短 " 和 " 虚断 " 分析法.( ) [单选题]某污水厂初沉池设计流量为10000m2/d,进水悬浮物浓 ...

  3. 区块链开发中使用的最流行的编程语言

    我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的 ...

  4. 区块链开发语言python_区块链开发中使用的最流行的编程语言

    我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的 ...

  5. 软件开发环境-按开发阶段分类

    按开发阶段分类,有前端开发环境(支持系统规划.分析.设计等阶段的活动).后端开发环境(支持编程.测试等阶段的活动).软件维护环境和逆向工程环境等.此类环境往往可通过对功能较全的环境进行剪裁而得到.软件 ...

  6. android os自动安裝软件,[图]Bliss OS 12进入开发阶段:可在桌面设备上安装Android 10系统...

    此外还对电池进行了优化,添加了额外的安全性选项和相关功能,支持大部分主流游戏手柄,兼容ARM / ARM64应用程序. 目前Bliss OS 12已经进入早期开发阶段,有望让您在PC上运行最新的And ...

  7. 吃货开发 阶段01 类的定义 方法的布局 0925

    吃货开发 阶段01 类的定义 方法的布局 0925 视频 吃货联盟0925-01 定义订单类Order - 西瓜视频 https://www.ixigua.com/687631188571367067 ...

  8. 测试分类-软件开发阶段的各个测试

    大家好,我是十一. 还记得我们上篇中的测试分类图吗?其中有一部分是"按软件开发阶段划分",不记得没关系,这里我截了图出来,大家直接看图吧. 这个图呢就是我们这篇所要讲解的内容.主要 ...

  9. 软件测试类型按开发阶段的划分

    软件测试类型按开发阶段分为单元测试,集成测试,确认测试,系统测试,验收测试 (1)单元测试: 单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作,单元测试需要从程序内部结 ...

最新文章

  1. silverlight 无法发布 如何灵活配置IP
  2. 300米远程深度估计:港科大重磅开源自动驾驶深度感知新技术,远超现有雷达|CVPR2020...
  3. js字符串截取函数substr substring slice使用对比
  4. java.lang.Enum
  5. 拳王虚拟项目公社:虚拟资源知识付费怎么玩?如何做知识付费?知识付费如何赚钱?
  6. [转载]配置路由让MSN可传文件(2003-9-17)
  7. 如何在EXCEL中锁定表格的某一行
  8. 使用USB转485编程电缆连接西门子 S7-200的软件配置方法以及可能出现的问题
  9. 如何写好一份软件开发设计文档
  10. 2022.4.7网页一直在加载中,无提示
  11. 笔记本电脑里计算机未响应,win10系统笔记本word程序总是未响应的详细方案
  12. jquery colorbox图片弹出效果制作
  13. keil4单片机串口通信
  14. 广域网技术-PPP协议
  15. 利用python画圆
  16. 图像滤镜处理算法:灰度、黑白、底片、浮雕
  17. Javaweb入职第二天
  18. php curl 函数时战
  19. 任务态fMRI测量的重测可靠性:新的实证证据和元分析
  20. SSD硬盘在检测中出现数据损坏的处理

热门文章

  1. 使用ab(apachebench)进行压力测试
  2. Windows下挂载iscsi存储及多路径功能配置
  3. Externalizing Session State for a Spring Boot Application Using Spring-Session
  4. IIS8 使用FastCGI配置PHP环境支持 过程详解
  5. 程序、进程、线程之间的区别
  6. Linux的sysctl 命令参数详解
  7. Socket send函数和recv函数详解
  8. SIP中的SDP offer/answer交换初探
  9. 把Qt的界面文件(.ui文件)生成源文件(.h或.cpp)封装成链接库
  10. Gym导入Atari游戏环境报错