Java is both well-established and popular. It was released in 1995, but is still the fifth-most-used language according to Stack Overflow’s 2021 Developer Survey. Java's flexibility makes it popular for building enterprise apps, Android apps, IoT apps, and more. Here are 12 open-source Java tools that make you a more efficient developer.
Just like Java itself, NetBeans is part of the Oracle family. First released in 1996, NetBeans is an IDE specifically designed for Java. It's popular particularly among academics and researchers, and used by organizations such as Boeing, NASA, NATO, and EU research agencies.
NetBeans can be installed on all the operating systems that Java runs on and can be used for other programming languages as well. By default, it uses an Ant build for projects, but you can also set it up to use Maven. A popular open-source alternative to NetBeans is Eclipse.
While you can use NetBeans for building desktop and web apps, you have to use Android Studio if you want to code Android apps. Based on IntelliJ IDEA, Android Studio comes with Android-specific refactoring, Lint tools to catch performance and compatibility problems, and more.
Although Google has now replaced Java with Kotlin as their preferred language for Android apps, Java is still used for many of the mobile apps you use every day. Once you've compiled your app with Android Studio, and if the app is in line with Google's developer policies, you can publish it directly on the Google Play Store.
Pinpoint is an Application Performance Management tool for large-scale distributed systems that have been written in Java or PHP. It monitors your application in real-time and can be installed without changing a single line of code.
In particular, Pinpoint tracks the transaction flows between different types of components in services. The software provides an overview of what areas could cause problems and where your bottlenecks are. An open-source APM alternative to Pinpoint is stagemonitor.
JUnit is an open-source testing framework for Java that integrates with all the popular Java IDEs, as well as Maven, Ant, Gradle, and Jenkins. JUnit helps you write and run repeatable, automated tests. It's an essential tool for test-driven development.
JUnit is linked as a JAR at compile time and requires Java 8 or higher during runtime, although you can test code that's been compiled with previous versions of the JDK. JUnit version 5 consists of three sub-projects:
- JUnit Platform: the foundation for launching testing frameworks on the JVM.
- JUnit Jupiter: a programming model for writing tests.
- JUnit Vintage: a
TestEnginefor running tests written with JUnit 3 and 4.
SonarQube is an automatic code review tool that helps you write cleaner and safer code through static code analysis. It works for Java and 16 other programming languages. It has CI/CD integration with tools like Jenkins, Azure DevOps server, and many others.
SonarQube incorporates many tools that help improve the quality and safety of your code, such as an editor that gives immediate feedback on the code you’re writing and a tool that lets you know if your project is ready for production. The Community version of SonarQube is free and open-source, while other versions include support for more languages and more advanced security breach detections in code.
Maven is a project management tool for Java projects. Maven stores your project's build, reporting, and docs in one central place. It favors convention over configuration, which means that it's opinionated and requires you to follow a standard way of building projects using clear definitions.
An alternative to Maven is Ant. Ant isn't opinionated and, as a result, is more flexible in its configuration. However, this means that developers need to write all commands by themselves. Unless your project has an unusual build structure, Maven is the easier way to go.
Gradle is a dependency management and build automation tool that builds on the concepts of Ant and Maven. It doesn't use XML files but instead opts for a domain-specific language. This usually means smaller configuration files and less clutter.
Most of Gradle's functionality comes through its plugins. For example, you need a Java plugin to compile Java. Gradle is particularly useful for complex databases, because it tends to be faster and because it offers advanced analysis and debugging services. But its learning curve is higher if you're not familiar with Groovy or Kotlin.
Jenkins is the number one open-source automation server to build, test, and deploy code. Because of its huge number of plugins, it can fit easily into your existing tech architecture and reduce manual, mundane tasks to a minimum.
Jenkins is written in Java, which means that it’s easily portable to all major platforms, and is used in many of the projects the original creator of Jenkins wanted to build Jenkins for. It’s no surprise that Jenkins supports most of the tools in this list. Additionally, Jenkins has a thriving community of hundreds of thousands of users who are happy to answer any questions you might have.
SpotBugs is the spiritual successor to FindBugs, which is no longer maintained. SpotBugs uses static analysis to check for more than four hundred bug patterns in Java code. It can be used either standalone or integrated with Ant, Maven, Gradle, and Eclipse.
SpotBugs is extensible, which means you can add new detectors through plugins. The SpotBugs homepage mentions fb-contrib and find-sec-bugs as two popular plugins to write software that has fewer bugs.
Spring is one of the most popular Java frameworks. It has a huge ecosystem that continues to evolve, which can be somewhat daunting for a beginning Java developer. Of the many Spring projects to choose from, here are two of the most important ones:
- Spring Boot is an opinionated project that makes it easy to start out with Spring and build stand-alone, production-grade Spring applications with minimal fuss.
- Spring Security is the de-facto standard for securing Spring-based applications. It focuses on providing authentication and authorization to Java applications.
Contrary to Spring's large ecosystem, Spark is a microframework for creating web applications in Java (and Kotlin) with minimal effort. Spark is expressive, lightweight, and unopinionated.
Spark is particularly helpful if you want to develop an expressive web application with minimal boilerplate code. It's meant for rapid development and works great for microservices.
Apache Tomcat provides an HTTP web server environment for your Java code. It's an open-source implementation of the Java Servlet, JavaServer Pages, Java Expression Language, and Java WebSocket technologies.
Tomcat is very lightweight and used by many large-scale applications. Because Tomcat isn't really a full application server, it's particularly good for web apps that don't require full Java EE specifications.
These were 12 open-source developer tools for Java. Of course, because Java can run on so many different platforms, there are many other tools out there as well. If you enjoyed this article and think others can benefit from it as well, feel free to share it on social media using the buttons at the top right of this blog post.