The Most Popular Java Tools for Every Phase of Development
A look at the most popular tool in each phase of Java development. Are your favorites on the list?
Join the DZone community and get the full member experience.
Join For FreeJust because a tool is the most popular doesn’t mean it’s the “best.” What’s best is always context-dependent in programming. However, popularity is an undeniably important metric when choosing between a handful of similar tools. It’s not the popularity itself that adds to a tool’s value; it’s the greater supply of resources and support from the larger community of a given tool.
Popular tools are easier to learn because so many people can help you use them. And popular open-source tools tend to be less buggy because more eyes are on the code and more people are testing it in a greater number of scenarios.
So, while there’s always a counterpoint like Apache and Nginx — two web servers: Apache is used on more websites, but Nginx is used more by the top sites on the web, which means its used by some of the best engineering teams — in a lot of cases, popularity can be a key differentiator between tools.
This list covers most of the important things you need tools for when developing Java applications. It covers each category by providing the “Top” most popular tool, and also provides a “Runner-up,” with some context and citations from large Java community surveys proving these placements. Java beginners should have a look at all of these top tools to get more familiar with the ecosystem.
Language Version
Top: Java 8
Runner-up: Java 7
Java 8 has possibly the fastest adoption rate of any new version to date. This is likely due to long-awaited modern language features such as lambda expressions that cut down on some of the verbosity that Java is often criticized for. The performance increases are a big deal too.
While new Java apps and primary apps are written in Java 8 now, a good amount of existing Java apps are still Java 7 or 6.
I won’t wade into the Java EE vs. Spring competition, because the stats on that are always in dispute, but they appear to be fairly close in user numbers. About a third of developers using either one also use the other simultaneously.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.9, 1.10)
[2] DZone Guide to the Java Ecosystem, 2015 edition (graphs 1 & 2)
Editors and IDEs
Top: (in dispute) Eclipse and IntelliJ IDEA
Runner-up: Netbeans
Eclipse and Netbeans are both free and open source. Eclipse is well known for its large community and wealth of plugins (they're easy to write), which make the platform endlessly extensible but slow to load and cumbersome at times. Netbeans differentiates itself by including things such as Maven and Git integration out of box. IntelliJ has the performance and polish of a commercial product. It has both free and paid versions.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (IntelliJ IDEA was the top IDE in this report, figure 1.11)
[2] DZone Guide to the Java Ecosystem, 2015 edition (Eclipse was the top IDE in this one, paragraph 4)
Web Framework
Top: AngularJS, Spring MVC
Runner-up: Java Server Faces (JSF)
While two out of three surveys give Spring MVC the edge over Java Server Faces (JSF), the large poll from DZone (paragraph 5) showed a virtual tie between Spring MVC and JSF. That might not matter much anymore, since JavaScript frameworks are making significant inroads into many popular web stacks. The one survey that asked about AngularJS usage compared to pure Java web framework usage showed AngularJS having an edge over the most popular Java frameworks on the front end.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.16)
[2] DZone Guide to the Java Ecosystem, 2015 edition (chart 3, paragraph 5 shows a tie)
[3] JSF and Spring MVC Tie in Java / JVM Frameworks Poll
Application Server
Top: Tomcat
Runner-up: Wildfly
Tomcat has been the most used Java application server for many years. It’s lightweight and doesn’t try to implement all of the Java EE specs. In some surveys, Jetty, another lightweight app server, is ahead of Wildfly—the top Java EE-supporting app server. Tomcat is the clear leader for simple Java applications, and lightweight app servers are definitely the weapon of choice in microservices architectures.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)
[2] DZone Guide to the Java Ecosystem, 2015 edition (chart 4)
[3] RebelLabs’ Great Application Server Debate 2013 (for a deeper dive into app server use cases)
Testing Frameworks
Unit Testing
Top: JUnit
The de facto Java unit testing framework.
Mocking
Top: Mockito
The clear favorite among Java mocking frameworks.
Automated Web Browser Testing
Top: Selenium
Selenium just automates the browsers. Developers usually use this tool along with testing frameworks to do large-scale web application testing.
Behavior-Driven Development (BDD) Testing
Top: Cucumber-JVM, Spock
Cucumber was originally a Ruby project but now has implementations for every major programming language. Spock supports the JVM language Groovy as well as Java. It could also handle much of what Mockito does.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2014
[2] DZone Guide to Continuous Delivery, 2015 edition (page 20)
Version Control System
Top: Git
Runner-up: Subversion
Remember, Git is more flexible than just using GitHub and its conventions for version control. Git seems to have pretty much won the version control wars, with most of the Subversion and CVS users being developers caught in a suite of legacy tools.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.18)
Continuous Integration
Top: Jenkins
Runner-up: No CI server
This is another area where there’s a clear leader. Jenkins’ flexible plugin system led to its gradual rise to dominance over the last five years. There are more people not using any CI server than there are using any single competitor of Jenkins. The next closest competitor is Bamboo.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)
[2] DZone Guide to Continuous Delivery, 2015 edition (page 20)
[3] DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
Database
Top: OracleDB
Runner-up: MySQL
Your database choice is a lot more context-dependent than many of the other tools here. Depending on the app you’re building, you might need a light key-value store as well as a massive columnar database. For most applications, relational databases still get the job done, and that’s why you see two relational databases at the top of the Java tooling world.
Oracle is one of the few commercial products in this article, which means it has a lot of “enterprise” features. MySQL or even SQLite are strong choices if you’re looking for open source.
Data:
[1] DB-Engines Database Rankings
[2] DZone Guide to Databases 2016
[3] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.14, this is the only Java-specific one)
Object Relational Mapping (ORM)
Top: The Java Persistence API (JPA) / Hibernate
Runner-up: The Java Database Connectivity API (JDBC)
Hibernate was so popular that it got standardized in the Java Persistence API specification several years back.
Data:
[1] DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
[2] RebelLabs Java Tools and Technologies Landscape Report 2014 (page 31)
Static Code Analysis
Top: FindBugs
Runner-up: SonarQube
These two tools are very different in scope, so it's hard to compare. FindBugs is a simpler static code analysis tool while SonarQube is an entire platform for code quality analysis, syntax checking, and code metrics.
Data:
[1] DZone Guide to Continuous Delivery, 2015 edition (page 20)
[2] RebelLabs Java Tools and Technologies Landscape Report 2014 (page 2)
Syntax Checking
Top: Checkstyle
Runner-up: Eclipse
This functionality can be found in the major Java IDEs, but if you need a separate program specializing in syntax checking (aka. "linting"), Checkstyle is a good choice.
Data:
[1] DZone Guide to Continuous Delivery, 2015 edition (page 20)
Artifact Management
Top: Sonatype Nexus
Runner-up: JFrog Artifactory
Many developers don’t use a artifact repository for versioning JARs, WARs, libraries, and complete apps. But when they do, Nexus has an edge in users. Both are commercial products. Apache Archiva is an open-source option.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2014 (page 45)
Dependency Injection
Top: Spring Framework DI
Runner-up: Google Guice
The Spring framework does a good job at dependency injection, but Google’s developers also created a popular tool in Guice. Dagger isn’t nearly as popular, but it’s new and gaining users, especially around Android development. It’s being used in Pokémon Go.
Data:
Performance Analysis/Profiler
Java profiling
Top: VisualVM
Runner-up: No profiler
A significant number of Java developers are not using any profiler (perhaps leaving performance considerations to a different team). YourKit is another popular alternative to VisualVM.
Load Testing
Top: JMeter
Runner-up: LoadRunner
There’s a huge variety of load testing tools besides these two, so be sure to research this market. JMeter is open source, and LoadRunner is a commercial product. The main advantage of commercial products is the range of services for running tests in the cloud.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.19)
[2] DZone Guide to Continuous Delivery, 2015 edition (page 20)
Build Automation and Dependency Management
Top: Maven
Runner-up: Gradle
While Maven is the clear leader, Gradle is still used widely as a secondary build tool, and it’s the standard build tool for Android.
Data:
[1] RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.12)
[2] DZone Guide to the Java Ecosystem, 2015 edition (chart 4)
Logging Libraries
Top: Log4j
The runner-up wasn’t clear with logging libraries, since less research has been done on this tool category. This article gives context around the question of popular logging libraries and setups in Java.
Data:
[1] Takipi’s Top 100 Java Libraries in 2016
[2] The State of Logging in Java in 2013
Any other recent Java tooling research you’d like to add? Or questions you’d like to poll the community about? Share them in the comments either here or at TechBeacon.
Published at DZone with permission of Mitch Pronschinske. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments