盘点最流行的Java工具

hello74 8年前
   <p>最流行的工具并不一定是“最好的”,对于开发来说,什么是最好的,取决于使用场景。然而,当选择工具时,流行程度是不可忽视的一个重要因素,并不是因为工具的流行增加了其价值,而是因为广泛使用的社区带来了无价的资源和支持。</p>    <p>流行的工具更容易学习,因为会有很多人乐意帮助你。如果是开源的话,麻烦就更少了。因为有更多的人在审核代码和进行测试,能考虑到更多的情况。</p>    <p>在很多情况下,都会有一个对立的竞争对手,比如Apache和Nginx——两个web服务器。Apache被使用的更多,但是顶尖的网站使用Nginx更多,也就是说,顶级工程师更加青睐Nginx——在很多情况下,流行度可能是区分工具最重要的一点。</p>    <p>这份列表包含了开发Java应用程序所需要的大部分工具。包括最流行的、次流行的,他们都有强大的社区支持。Java的初学者需要认识一下这些工具,熟悉生态系统。</p>    <h2>语言版本</h2>    <p>最流行的:Java 8</p>    <p>次流行的:Java 7</p>    <p>Java 8可能是所有版本中被接受最快的。可能是因为,Java 8带来了期待已久的现代语言特性,例如lambda表达式,解决了长久以来Java饱受人们批评的冗长啰嗦的缺点。当然, <a href="/misc/goto?guid=4958970913219231417" rel="nofollow,noindex">性能</a> 也是一大方面。</p>    <p>虽然现在很多Java应用和主要的应用都是用Java 8写的,但也有很大数量的Java应用依然使用Java 7或6。</p>    <p>我不会蹚Java EE和Spring这趟浑水,因为一谈论这个,总是伴随着很多争吵,在用户数量方面,似乎相当。也有一些第三方开发者两者都用。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.9, 1.10)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (graphs 1 & 2)</li>    </ol>    <h2>编辑器和IDE</h2>    <p>最流行的:Eclipse和IntelliJ IDEA(存在争议)</p>    <p>次流行的:Netbeans</p>    <p>Eclipse和Netbeans都是免费、开源的。Eclipse以强大的社区和丰富的插件闻名(开发Eclipse插件非常方便),这让Eclipse平台的扩展性变得很强,但是这个IDE启动比较慢。Netbeans通过整合了Maven和Git等让自己变得与众不同。IntelliJ以性能著称,并且是一款商业产品。它有免费和付费两种版本。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (IntelliJ IDEA was the top IDE in this report, figure 1.11)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (Eclipse was the top IDE in this one, paragraph 4)</li>    </ol>    <h2>Web Framework</h2>    <p>最流行的:AngularJS,SpringMVC</p>    <p>次流行的:Java Server Faces(JSF)</p>    <p>三个调查中的两个都显示Spring MVC的受欢迎度比Java Server Faces(JSF)高,DZone的 <a href="/misc/goto?guid=4959676861723436225" rel="nofollow,noindex">调查</a> 显示Spring MVC和JSF之间不分伯仲。随着JavaScript框架在web方面的发展,也许这些都不再重要了。有一个调查显示,AngularJS相比与纯Java框架,在前端方面更受欢迎。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.16)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (chart 3, paragraph 5 shows a tie)</li>     <li><a href="/misc/goto?guid=4959676861723436225" rel="nofollow,noindex">JSF and Spring MVC Tie in Java / JVM Frameworks Poll</a></li>    </ol>    <h2>应用服务器</h2>    <p>最流行的:Tomcat</p>    <p>次流行的:Wildfly</p>    <p>很长时间以来,Tomcat都是最流行的Java应用服务器框架。它是一个轻量级框架,在一些其他调查中,Jetty——另一个轻量级应用框架——领先于Wildfly——最流行的Java EE支持的应用服务器。Tomcat在轻量Java应用方面无疑是霸主地位,是 <a href="/misc/goto?guid=4959676861843050539" rel="nofollow,noindex">微型服务架构</a> 方面的最佳选择。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.13)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (chart 4)</li>     <li><a href="/misc/goto?guid=4959676861929832925" rel="nofollow,noindex">RebelLabs’ Great Application Server Debate 2013</a> (for a deeper dive into app server use cases)</li>    </ol>    <h2>测试框架</h2>    <h3>单元测试</h3>    <p>最流行的:JUnit</p>    <p>名副其实的最佳Java测试框架</p>    <h3>模拟</h3>    <p>最流行的:Mockito</p>    <p>最受欢迎的Java <a href="/misc/goto?guid=4959676862019759334" rel="nofollow,noindex">模拟</a> 测试框架。</p>    <h2>自动化Web浏览测试</h2>    <p>最流行的:Selenium</p>    <p>Selenium只是自动化浏览测试。开发者经常使用这个工具配合其他的测试框架,来测试大型Web应用。</p>    <h2>行为驱动开发测试(BDD)测试</h2>    <p>最流行的:Cucumber-JVM, Spock</p>    <p>Cucumber最开始只是一个Ruby项目,但是现在已经用各大主流编程语言实现了。Spock支持JVM驱动的语言Groovy,当然也支持Java。Mockito能做的事情它基本上都能做。</p>    <h3>数据</h3>    <ol>     <li><a href="https://simg.open-open.com/show/ce5b37e75f139fa4a5fbeae14511b191.png" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2014</a></li>     <li><a href="/misc/goto?guid=4959676862112722508" rel="nofollow,noindex">DZone Guide to Continuous Delivery, 2015 edition</a> (page 20)</li>    </ol>    <h2>版本控制系统</h2>    <p>最流行的:Git</p>    <p>次流行的:Subversion</p>    <p>记住,使用Git比仅仅使用Github和简单提交那样更加灵活。现在来看,Git赢得了版本控制大战的胜利,很多Subversion和CVS的用户逐渐开始转向Git。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.18)</li>    </ol>    <h2>持续集成</h2>    <p>最流行的:Jenkins</p>    <p>次流行的:No CI server</p>    <p>在这方面也有一个明显的巨头。Jenkins灵活的插件系统,在过去的五年间逐渐控制了这个领域。其余Jenkins的竞争对手中,更多的人选择No CI server。接下来是Bamboo。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.13)</li>     <li><a href="/misc/goto?guid=4959676862112722508" rel="nofollow,noindex">DZone Guide to Continuous Delivery, 2015 edition</a> (page 20)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (paragraph 4)</li>    </ol>    <h2>数据库</h2>    <p>最流行的:OracleDB</p>    <p>次流行的:MySQL</p>    <p>在所有这些工具中,数据库可谓是最取决于使用场景的。取决于你要创建的应用的不同,你可能需要一个轻量的键值对存储数据库,或者存储很多列的数据库。对于大多数的应用来说,一般的数据库就能满足需求,这就是为什么这两种数据库可以排名前列的原因。</p>    <p>Oracle是这篇文章中为数不多的商业软件,这意味着,它有很多“企业级”特性。如果你偏爱开源软件的话,强烈推荐MySQL和SQLite。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4958530981371870916" rel="nofollow,noindex">DB-Engines Database Rankings</a></li>     <li><a href="/misc/goto?guid=4959676862259815258" rel="nofollow,noindex">DZone Guide to Databases 2016</a></li>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.14, this is the only Java-specific one)</li>    </ol>    <h2>对象关系映射</h2>    <p>最流行的:The Java Persistence API (JPA) / Hibernate</p>    <p>次流行的:The Java Database Connectivity API (JDBC)</p>    <p>Hibernate太流行了,多年前就在Java Persistence API成了标准。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (paragraph 4)</li>     <li><a href="/misc/goto?guid=4959676862370011204" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2014</a> (page 31)</li>    </ol>    <h2>静态代码分析</h2>    <p>最流行的:FindBugs</p>    <p>次流行的:SonarQube</p>    <p>这两个工具非常不同,所以很难比较。FindBug是一个简单的静态代码分析工具,SonarQube是一个全平台的代码质量分析、语法检查、代码度量的工具。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676862112722508" rel="nofollow,noindex">DZone Guide to Continuous Delivery, 2015 edition</a> (page 20)</li>     <li><a href="/misc/goto?guid=4959676862370011204" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2014</a> (page 2)</li>    </ol>    <h2>语法检查</h2>    <p>最流行的:Checkstyle</p>    <p>次流行的:Eclipse</p>    <p>大型的Java IDE都有这个功能,但是如果你需要特定的程序专门进行类型检查,Checkstyle是一个不错的选择。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676862112722508" rel="nofollow,noindex">DZone Guide to Continuous Delivery, 2015 edition</a> (page 20)</li>    </ol>    <h2>人工仓库管理</h2>    <p>最流行的:Sonatype Nexus</p>    <p>次流行的:JFrog Artifactory</p>    <p>很多开发者并不使用人工仓库管理JARs,WARs,库和应用。但是如果想这么做的话,Nexus是最好的选择。两者都是商业软件,Apache Archiva是一个开源的选择。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676862370011204" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2014</a> (page 45)</li>    </ol>    <h2>控制反转</h2>    <p>最流行的:Spring Framework DI</p>    <p>次流行的:Google Guice</p>    <p>Spring framework在控制反转方面做的很不错,但是Google的开发者也做了一个不错的工具。 <a href="/misc/goto?guid=4958860111330644982" rel="nofollow,noindex">Dagger</a> 在这方面的用户并不很多,但是正在逐渐流行起来,尤其是安卓开发方面。 <a href="/misc/goto?guid=4959676862521553105" rel="nofollow,noindex">Pokémon Go</a> 使用的也是它。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676862607767647" rel="nofollow,noindex">Poll of reddit.com/r/java</a></li>    </ol>    <h2>性能分析</h2>    <h3>Java性能总览</h3>    <p>最流行的:VisualVM</p>    <p>次流行的:No profiler</p>    <p>有相当一部分的开发者并不使用性能分析工具(也许他们有专业的性能优化团队来做)。YourKit也是替代VisualVM的一个不错选择。</p>    <h3>载入测试</h3>    <p>最流行的:JMeter</p>    <p>次流行的:LoadRunner</p>    <p>除了这两款工具之外,还有很多做载入性能测试的工具,所以在使用之前,最好做好充分的市场调研。JMeter是开源软件,LoadRunner是商业软件。商业软件的好处是服务广泛,可以在云端运行测试。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.19)</li>     <li><a href="/misc/goto?guid=4959676862692928985" rel="nofollow,noindex">DZone Guide to Continuous Delivery, 2015 edition</a> (page 20)</li>    </ol>    <h2>编译自动化和依赖管理</h2>    <p>最流行的:Maven</p>    <p>次流行的:Gradle</p>    <p>Maven无疑占据了领导地位,但是Gradle的使用也很广泛,它还是安卓的标准编译工具。</p>    <h3>数据</h3>    <ol>     <li><a href="/misc/goto?guid=4959676861523353501" rel="nofollow,noindex">RebelLabs Java Tools and Technologies Landscape Report 2016</a> (figure 1.12)</li>     <li><a href="/misc/goto?guid=4959676861608336061" rel="nofollow,noindex">DZone Guide to the Java Ecosystem, 2015 edition</a> (chart 4)</li>    </ol>    <h2>日志库</h2>    <p>最流行的:Log4j</p>    <p>次流行的日志库尚不明确,这方面的调查比较少。 <a href="/misc/goto?guid=4959676862799307876" rel="nofollow,noindex">这篇文章</a> 的内容场景围绕流行的日志库和Java中的设置展开。</p>    <p>原文: <a href="https://dzone.com/articles/research-most-popular-java-tools-for-every-phase-o?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed:%20dzone" rel="nofollow,noindex">The Most Popular Java Tools for Every Phase of Development</a></p>    <p>作者:Mitch Pronschinske <strong>翻译</strong> :赖信涛 <strong>责编</strong> :仲培艺</p>    <p> </p>    <p>来自:http://geek.csdn.net/news/detail/95712</p>    <p> </p>