Java is both well-established and popular. It was released in 1995, but still the third most used language in GitHub's 2020 State of the Octoverse. Java's flexibility makes it popular for building enterprise apps, Android apps, IoT apps, and more. Here are 10 open-source Java tools to make you a better 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 test written with JUnit 3 and 4.
Maven is a project management tool for Java projects. You use Maven to have your project's build, reporting, and docs in one central place. Maven favors convention over configuration, i.e. 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 its 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.
SpotBugs is the spiritual successor of 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 micro framework 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 10 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.