Java Programming Language
Java is an object-oriented programming language that can write cross-platform application software. It is a Java programming language and Java platform launched by Sun Microsystems in May 1995. (That is, the general name of JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)).
The most popular tool is not necessarily the "best". What is best for development depends on the usage scenario. However, when choosing a tool, popularity is an important factor that cannot be ignored, not because a tool's popularity increases its value, but because a widely used community brings invaluable resources and support.
Popular tools are easier to learn because there will be many people willing to help you. If it is open source, there will be less trouble. Because there are more people reviewing the code and testing, more situations can be considered.
In many cases, there will be an opposing competitor, such as Apache and Nginx - two web servers. Apache is used more, but top websites use Nginx more, which means that top engineers favor Nginx more - in many cases, popularity may be the most important point in distinguishing tools.
This list contains most of the tools needed to develop Java applications. Including the most popular and less popular ones, they all have strong community support. Beginners to Java need to get acquainted with these tools and become familiar with the ecosystem.
Language version
Most popular: Java 8
Next popular: Java 7
Java 8 is probably the fastest accepted of all versions . It may be because Java 8 brings long-awaited modern language features, such as lambda expressions, which solve the verbosity shortcomings of which Java has long been criticized. Of course, performance is also a big aspect.
Although many Java applications and major applications are now written in Java 8, there are also a large number of Java applications that still use Java 7 or 6.
I will not get into the muddy waters of Java EE and Spring, because talking about this is always accompanied by a lot of quarrels, and in terms of the number of users, they seem to be quite equal. There are also some third-party developers who use both.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.9, 1.10)
DZone Guide to the Java Ecosystem, 2015 edition (graphs 1 & 2)
Editors and IDEs
The most popular: Eclipse and IntelliJ IDEA (controversial)
The next most popular: Netbeans
Eclipse and Netbeans are both free, Open source. Eclipse is famous for its strong community and rich plug-ins (it is very convenient to develop Eclipse plug-ins), which makes the Eclipse platform very scalable, but this IDE starts slowly. Netbeans differentiates itself by integrating Maven and Git. IntelliJ is known for its performance and is a commercial product. It has both free and paid versions.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (IntelliJ IDEA was the top IDE in this report, figure 1.11)
DZone Guide to the Java Ecosystem, 2015 edition (Eclipse was the top IDE in this one, paragraph 4)
Web Framework
The most popular: AngularJS, SpringMVC
The next most popular: Java Server Faces (JSF)
Two of the three surveys showed that Spring MVC is more popular than Java Server Faces (JSF), and DZone's survey showed that Spring MVC and JSF are neck and neck. With the development of JavaScript frameworks on the web, perhaps these are no longer important. A survey shows that AngularJS is more popular on the front end than pure Java frameworks.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.16)
DZone Guide to the Java Ecosystem, 2015 edition (chart 3, paragraph 5 shows a tie)
JSF and Spring MVC Tie in Java / JVM Frameworks Poll
Application Server
Most popular: Tomcat
Second most popular: Wildfly
For a long time, Tomcat has been the most popular Java application server framework. It is a lightweight framework, and in some other surveys, Jetty - another lightweight application framework - is ahead of Wildfly - the most popular Java EE powered application server. Tomcat is undoubtedly the dominant player in lightweight Java applications and is the best choice for microservice architecture.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.13)
DZone Guide to the Java Ecosystem, 2015 edition(chart 4)
RebelLabs' Great Application Server Debate 2013 (for a deeper dive into app server use cases)
Testing Framework
Unit Testing
The most popular: JUnit
The best Java testing framework worthy of the name
Simulation
The most popular: Mockito
The most popular Java simulation testing framework.
Automated Web Browsing Test
The most popular: Selenium
Selenium is just automated browsing testing. Developers often use this tool in conjunction with other testing frameworks to test large-scale web applications.
Behavior-Driven Development Testing (BDD) Testing
The most popular: Cucumber-JVM, Spock
Cucumber was just a Ruby project at the beginning, but now it has been used in major mainstream applications Programming languages implemented. Spock supports the JVM-driven language Groovy, and of course Java. It can basically do everything Mockito can do.
Data
RebelLabs Java Tools and Technologies Landscape Report 2014
DZone Guide to Continuous Delivery, 2015 edition (page 20)
Version Control System
Most popular: Git
Next popular: Subversion
Remember, using Git is more flexible than just using Github and simple commits. Now, Git has won the version control war, and many Subversion and CVS users are gradually turning to Git.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.18)
Continuous Integration
The most popular: Jenkins
The next most popular: No CI server
There is also an obvious giant in this area. Jenkins' flexible plug-in system has gradually taken over the field in the past five years. Among other Jenkins competitors, more people choose No CI server. Next is Bamboo.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016(figure 1.13)
DZone Guide to Continuous Delivery, 2015 edition (page 20)
DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
Databases
Most popular: OracleDB
Next popular: MySQL
Of all these Among tools, the database can be said to be the most dependent on usage scenarios. Depending on the application you want to create, you may need a lightweight key-value store database, or a database that stores many columns. For most applications, a general database can meet the needs, which is why these two databases can be ranked at the top.
Oracle is one of the few commercial software in this article, which means that it has many "enterprise-level" features. If you prefer open source software, MySQL and SQLite are highly recommended.
Data
DB-Engines Database Rankings
DZone Guide to Databases 2016
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.14, this is the only Java-specific one)
Object-relational mapping
The most popular: The Java Persistence API (JPA) / Hibernate
The next most popular: The Java Database Connectivity API ( JDBC)
Hibernate is so popular that it became the standard in Java Persistence API many years ago.
Data
DZone Guide to the Java Ecosystem, 2015 edition (paragraph 4)
RebelLabs Java Tools and Technologies Landscape Report 2014 (page 31)
Static Code Analysis
Most popular: FindBugs
Second popular: SonarQube
These two tools are very different, so it is difficult to compare. FindBug is a simple static code analysis tool, and SonarQube is a full-platform tool for code quality analysis, syntax checking, and code measurement.
Data
DZone Guide to Continuous Delivery, 2015 edition (page 20)
RebelLabs Java Tools and Technologies Landscape Report 2014 (page 2)
Syntax Check
The most popular: Check
The next most popular: Eclipse
Large Java IDEs all have this function, but if you need a specific program to specifically perform type checking, Check is a good choice.
Data
DZone Guide to Continuous Delivery, 2015 edition(page 20)
Manual warehouse management
The most popular: Sonatype Nexus
Most Popular: JFrog Artifactory
Many developers do not use manual repositories to manage JARs, WARs, libraries and applications. But if you want to do this, Nexus is the best choice. Both are commercial software, with Apache Archiva being an open source option.
Data
RebelLabs Java Tools and Technologies Landscape Report 2014 (page 45)
Inversion of Control
The most popular: Spring Framework DI
Most popular: Google Guice
Spring framework does a good job in inversion of control, but Google developers also made a good tool. Dagger doesn't have many users in this area, but it is gradually becoming popular, especially in Android development. Pokémon Go also uses it.
Data
Poll of reddit.com/r/java
Performance Analysis
Java Performance Overview
The most popular: VisualVM
The next most popular: No profiler
A considerable number of developers do not use performance analysis tools (maybe they have professional performance optimization teams to do it) . YourKit is also a good alternative to VisualVM.
Loading Test
The most popular: JMeter
The most popular: LoadRunner
In addition to these two tools, there are many other tools for loading It is a tool for performance testing, so it is best to conduct sufficient market research before using it. JMeter is open source software and LoadRunner is commercial software. The benefit of commercial software is that it has a wide range of services and can run tests in the cloud.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.19)
DZone Guide to Continuous Delivery, 2015 edition (page 20)
Compilation Automation and Dependency Management
The most popular: Maven
The next most popular: Gradle
Maven undoubtedly occupies the leadership position, but Gradle is also widely used, and it is still Android standard compilation tools.
Data
RebelLabs Java Tools and Technologies Landscape Report 2016 (figure 1.12)
DZone Guide to the Java Ecosystem, 2015 edition (chart 4)
Log library
The most popular: Log4j The
most popular log library is not yet clear, and there are relatively few surveys in this area. The content scenarios of this article revolve around popular logging libraries and settings in Java.
The above is an inventory of the most popular Java tools. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!