当前课程知识点:软件工程与软件自动化 >  第五章 软件自动化技术 >  扩展阅读与话题讨论 >  各个开发阶段最流行的Java工具汇总

返回《软件工程与软件自动化》慕课在线视频课程列表

各个开发阶段最流行的Java工具汇总资料文件与下载

各个开发阶段最流行的Java工具汇总


(转自码农网)

仅仅因为工具是最流行的并不意味着它是“最好的”。最好的总是和具体的编程内容相关。不过,人气,不可否认是选择同类工具时的重要指标。这并不是说流行本身会增加工具的价值;价值在于资源和来自于社区的支持。

流行的工具更易于学习,因为有如此多的人可以帮助你使用它们。并且流行的开源工具,往往bug较少,因为有更多的目光都集中在代码上,有更多的人在大范围的场景中测试它。

所以,虽然总有像Apache和Nginx这样的对位工具——两web服务器:Apache被更多的网站使用,但Nginx更多的是被web上的顶级站点使用,这意味着它被一些最好的工程团队所使用——在很多情况下,知名度可以成为工具之间的关键区别。

名单涵盖了绝大多数你在开发Java应用程序时所需工具的重要内容。里面有最流行的工具“冠军”,涵盖了各个类别,此外还有来自于大型Java社区调查证明其地位的在一些背景和引文下稍逊一筹的“亚军”工具。Java初学者应该看一看所有这些顶级工具以便于更了解这个生态系统。

语言版本

冠军:Java 8

亚军:Java 7

Java 8有可能是迄今为止最快被采用的新版本了。这可能是因为一些期待已久的现代语言功能如lambda表达式,减少了一些Java经常被批评的冗长程度。性能的提升也是很大的一个卖点。

虽然现在新的Java app和主要的app是用Java 8写的,但是还有大量现有的Java app仍然使用的是Java 7或6。

我不会趟进Java EE与Spring之间的竞争,因为相关的统计数据总是存在争议,但是两者在用户数量上似乎相当接近。大约三分之一的开发人员在使用其中之一的同时还是用了另外一个。

数据:

[1] 2016年RebelLabs Java工具和技术趋势报告(图1.9,1.10)

[2] 2015版Java生态系统DZone指南(图1&2)

编辑器和IDE

冠军:(存在争议)Eclipse和IntelliJ IDEA

亚军:Netbeans

Eclipse和Netbeans都是免费和开源的。Eclipse因其大型的社区和插件(很容易写)的富有而闻名,这使得该平台可无休止地扩展,但有时会加载缓慢和繁琐。Netbeans因包括如Maven和Git的整合开箱即用而显得与众不同。IntelliJ具有商业产品的性能和完美。它有免费和付费两种版本。

数据:

[1] IntelliJ IDEA的光芒会盖过Eclipse吗

[2] 2016年RebelLabs Java工具和技术趋势报告(IntelliJ IDEA是本报告中的最佳IDE,图1.11)

[3] 2015版Java生态系统DZone指南(Eclipse是其中的最佳IDE,图4)

web框架

冠军:AngularJS,Spring MVC

亚军:Java Server Faces(JSF)

虽然三分之二的调查显示了Spring MVC优于Java Server Faces(JSF),但是来自于DZone大型投票(图5)显示Spring MVC和JSF之间的打成了平手。这可能已经没有多大关系了,因为JavaScript框架在许多流行的web堆栈中变得越来越有价值。一项问及AngularJS与纯Java Web框架使用率比较的调查显示,在前端上,AngularJS优于最流行的Java框架。

数据:

[1] 调查:Java程序员最亲睐的Web框架

[2] 2016年RebelLabs Java工具和技术趋势报告(图1.16)

[3] 2015版Java生态系统DZone指南(表3,第5段显示平局)

[4] JSF和Spring MVC在Java打成平手 / JVM框架调查投票

应用服务器

冠军:Tomcat

亚军:Wildfly

Tomcat已经很多年担任最常用Java应用服务器的称号了。它轻巧,不会尝试实现所有的Java EE规范。在一些调查中,Jetty,另一个轻量级的应用服务器,领先于Wildfly——顶部Java EE——支持的应用程序服务器。Tomcat是简单Java应用的领导者,而轻量级的应用服务器毫无疑问是微服务架构的首选。

数据:

[1] 2016年RebelLabs Java工具和技术趋势报告(图1.13)

[2] 2015版Java生态系统DZone指南(图4)

[3] 2013年RebelLabs应用程序服务器辩论(为了更深入地了解应用服务器用例)

测试框架

单元测试

冠军:JUnit

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

Mocking

冠军:Mockito

显然是Java mocking框架中的最爱。

自动化web浏览器测试

冠军:Selenium

Selenium不过是自动化了浏览器。开发人员通常与测试框架一起使用这个工具来做大规模的web应用程序测试。

行为驱动开发测试(BDD)

冠军:Cucumber-JVM,Spock

Cucumber原本是一个Ruby项目,但现在具有针对每一种主要编程语言的实现。Spock支持JVM语言Groovy和Java。它还可以处理很多Mockito能做的事情。

数据:

[1] 8个超实用的Java测试工具和框架

[2] 2014年RebelLabs Java工具和技术趋势报告

[3] 2015版Java生态系统DZone指南(第20页)

版本控制系统

冠军:Git

亚军:Subversion

请记住,Git比只用GitHub及其约定的版本控制更灵活。Git似乎已经几乎打赢了版本控制的战役,大多数的Subversion和CVS用户被开发人员抓进了一套遗留的工具中。

数据:

[1] Git教程及相关文章

[2] 2016年RebelLabs Java工具和技术趋势报告(图1.18)

持续集成

冠军:Jenkins

亚军:No CI server

这是另一个有着明确领导者的领域。Jenkins的灵活的插件系统,导致其在过去的五年时间里,逐渐上升到主导地位。不使用任何CI server的人比使用任意单一Jenkins竞争者的人要多。最接近的竞争者是Bamboo。

数据:

[1] 2016年RebelLabs Java工具和技术趋势报告(图1.13)

[2] 2015版持续交付DZone指南(第20页)

[3] 2015版Java生态系统DZone指南(第4段)

数据库

冠军:OracleDB

亚军:MySQL

选择数据库相比这里的许多其他工具,更依赖于上下文。根据你要构建的app,你可能需要一个轻巧的key-value存储,以及一个巨大的列式数据库。对于大多数应用程序,关系数据库可以把这工作做好,这就是为什么你会看到两个关系型数据库站到Java工具世界之巅的原因。

Oracle是这篇文章中提到的少数商业产品之一,这意味着它有很多的“企业”特点。 MySQL或甚至SQLite是开源的强大选择。

数据:

[1] 2015年240个数据库引擎排名参考

[2] DB-引擎数据库排名

[3] 2016年数据库DZone指南

[4] 2016年RebelLabs Java工具和技术趋势报告(图1.14,这是唯一特定Java的一个)

对象关系映射(ORM)

冠军:Java Persistence API(JPA)/Hibernate

亚军:Java Database Connectivity API(JDBC)

Hibernate是如此受欢迎,若干年前它得到了Java Persistence API规范的标准化。

数据:

[1] 2015版Java生态系统DZone指南(第4段)

[2] 2014年RebelLabs Java工具和技术趋势报告(第31页)

静态代码分析

冠军:FindBugs

亚军:SonarQube

这两个工具都在范围上有很大的不同,因此很难比较。FindBugs是一个简单的静态代码分析工具,而SonarQube是一个用于代码质量分析,语法检查和代码度量的完整平台。

数据:

[1] 2015版持续交付DZone指南(第20页)

[2] 2014年RebelLabs Java工具和技术趋势报告(第2页)

语法检查

冠军:Checkstyle

亚军:Eclipse

此功能可以在主要的java ide中找到,但如果你需要一个单独的程序用于专门的语法检查(又名“linting”),Checkstyle是一个不错的选择。

数据:

[1] 2015版持续交付DZone指南(第20页)

工件管理

冠军:Sonatype Nexus

亚军:JFrog Artifactory

许多开发人员在版本化JAR,WAR,库和完整的app时不使用工件仓库。但是,如果他们这样做的话,Nexus有用户优势。两者都是商业产品。Apache Archiva是一个开源选择。

数据:

[1] 2014年RebelLabs Java工具和技术趋势报告(第45页)

依赖注入

冠军:Spring Framework DI

亚军:Google Guice

Spring框架在依赖注入上做的很好,但谷歌的开发者用Guice也创造了一个流行工具。Dagger没有那么普及,但它很新,并且用户在增加,特别是围绕Android开发。它被用于Pokémon Go。

数据:

[1] reddit.com/r/java

性能分析/分析器

Java分析

冠军:VisualVM

亚军:No profiler

显著数量的Java开发人员不使用任何分析器。YourKit是VisualVM另一个流行的替代分析器。

负载测试

冠军:JMeter

亚军:LoadRunner

除了这两个之外,还有大量各种负载测试工具,所以一定要研究这个市场。JMeter是开源的,而LoadRunner是商业产品。商业产品的主要优点是运行测试的云服务范围。

数据:

[1] 2016年RebelLabs Java工具和技术趋势报告(图1.19)

[2] 2015版持续交付DZone指南(第20页)

自动化构建与依赖管理

冠军:Maven

亚军:Gradle

虽然Maven明显领先,但Gradle仍然被广泛用作辅助构建工具,并且是Android的标准构建工具。

数据:

[1] Gradle在大型Java项目上的应用

[2] 2016年RebelLabs Java工具和技术趋势报告(图1.12)

[3] 2015版Java生态系统DZone指南(图4)

日志库

冠军:log4j

日志库的亚军还不清楚,因为在这个工具类上较少有研究。这篇文章给出了围绕Java流行的日志库和设置问题。

数据:

[1] Java程序员最常用的8个Java日志框架

[2] 最详细的Log4j使用教程

[3] 2016年Takipi Java库 100强

[4] 2013年Java日志状态


下一节:话题讨论

返回《软件工程与软件自动化》慕课在线视频列表

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

各个开发阶段最流行的Java工具汇总笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。