A wide variety of open source and commercial third-party tools and technologies are available to assist you with developing Java-based applications.
The sample set of resources listed here are both effective and popular, or at least many that we have used frequently. Remember to check the licensing agreements of the open source tools you are using for commercial environment restrictions.
Apache Ant is an XML-based tool for building and deploying Java applications. It’s similar to the well-known Unix make utility.
Apache Bloodhound is an open source web-based project management and bug tracking system.
CruiseControl is a framework for a continuous build process.
Enterprise Architect is a commercial computer-aided software engineering (CASE) tool that provides forward and reverse Java code engineering with UML.
FindBugs is a program that looks for bugs in Java code.
Git is an open source distributed version control system.
Gradle is a build system that provides testing, publishing, and deployment support.
Hudson is an extensible continuous integration server.
Apache Ivy is a transitive relation dependency manager. It is integrated with Apache Ant.
Javacc is a tool that reads a grammar specification and converts it to a Java application that can recognize grammar matches.
Jalopy is a source code formatter for Java that has plug-ins for Eclipse, jEdit, NetBeans, and other tools.
jClarity is a performance analysis and monitoring tool for cloud environments.
jEdit is a text editor designed for programmers. It has several plug-ins available through a plug-in manager.
JavaFX Scene Builder is a visual layout tool for designing JavaFX applications.
Jenkins CI is an open source continuous integration server, formally known as Hudson Labs.
JIRA is a commercial bug tracking, issue tracking, and project management application.
JUnit is a framework for unit testing that provides a means to write and run repeatable tests.
Apache JMeter is an application that measures system behavior, such as functional behavior and performance.
Apache Maven is a software project management tool. Maven can manage builds, reports, and documentation.
Nemo is an online instance of Sonar dedicated to open source projects.
PMD scans Java source code for bugs, suboptimal code, and overly complicated expressions.
SonarQube is an open source quality management platform.
Apache Subversion is a centralized version control system that keeps track of work and changes for a set of files.
Apache ActiveMQ is a message broker that supports many cross-language clients and protocols.
BIRT is an open source Eclipse-based reporting system to be used with Java EE applications.
A DSL for Bitly-powered URL shortening services.
Apache Camel is a rule-based routing and mediation engine.
gedcom4j is a Java library for parsing, manipulating, and writing GEDCOM data.
Geocoder-java is a Java API for Google geocoder v3.
Google-gson is a Java API that can convert Java Objects into JSON and back.
Google Guava is a set of libraries that includes new collection types, immutable collections, a graph library, functional types, an in-memory cache, concurrency utilities, I/O, hashing, primitives and reflection.
Hibernate is an object/relational persistence and query service. It allows for the development of persistent classes.
iText is a Java library that allows for the creation and manipulation of PDF documents.
Jakarta Commons is a repository of reusable Java components.
Apache Jackrabbit is a content repository system that provides hierarchical content storage and control.
JasperReports is an open source Java reporting engine.
Jasypt is a Java library that allows the developer to add basic encryption capabilities.
JFreeChart is a Java class library for generating charts.
JFXtras2 is a set of controls and add-ons for JavaFX 2.0.
JGoodies provides components and solutions to solve common user interface tasks.
JIDE software provides various Java and Swing components.
jMonkeyEngine is a collection of libraries providing a Java 3D (OpenGL) game engine.
JOGL is a Java API supporting OpenGL and ES specifications.
jOOQ is a fluent API for typesafe SQL query construction and execution.
Moneta is a reference implementation of the JSR 354 Money & Currency API.
opencsv is a comma-separated values (CSV) parser library for Java.
Apache Poor Obfuscation Implementation (POI) is a library for reading and writing Microsoft Office formats.
ROME is a Java framework for RSS and Atom feeds.
RXTX provides native serial and parallel communications for Java.
Spring is a layered Java/Java EE application framework.
A Java JNA wrapper for the Tesseract optical character recognition (OCR) API.
A Java library for the Twitter API.
Eclipse IDE is an open source IDE for creating desktop, mobile, and web applications.
Greenfoot is a simple IDE designed to teach object orientation with Java.
IntelliJ IDEA is a commercial IDE for creating desktop, mobile, and web applications.
JCreator is a commercial IDE for creating desktop, mobile, and web applications.
JDeveloper is Oracle’s IDE for creating desktop, mobile, and web applications.
NetBeans is Oracle’s open source IDE for creating desktop, mobile, and web applications. This IDE is currently in the Apache Incubator.
Apache Geronimo is a Java EE server used for applications, portals, and web services.
Glassfish is an open source Java EE server used for applications, portals, and web services. Payara is a GlassFish derivative.
IBM WebSphere is a commercial Java EE server used for applications, portals, and web services.
JavaServer Faces technology simplifies building user interfaces for Java server applications. JSF implementations and component sets include Apache MyFaces, ICEFaces, RichFaces, and Primefaces.
Jetty is a web container for Java Servlets and JavaServer Pages.
Oracle WebLogic Application Server is a commercial Java EE server used for applications, portals, and web services.
Resin is a high-performance, cloud-optimized Java application server.
Apache ServiceMix is an enterprise service bus that combines the functionality of a service-oriented architecture and an event-driven architecture on the Java Business Integration specification.
Sling is a web application framework that leverages the Representational State Transfer (REST) software architecture style.
Apache Struts is a framework for creating enterprise-ready Java web applications that utilize a model-view-controller architecture.
Apache Tapestry is a framework for creating web applications based upon the Java Servlet API.
Apache Tomcat is a web container for Java Servlets and JavaServer Pages.
Apache TomEE is an all-Apache Java EE 6 Web Profile certified stack.
WildFly, formally known as JBoss Application Server, is an open source Java EE server used for applications, portals, and web services.
BeanShell is an embeddable Java source interpreter with object-based scripting language features.
Clojure is a dynamic programming language targeted for the Java Virtual Machine, Common Language Runtime, and JavaScript engines.
FreeMarker is a Java-based general-purpose template engine.
Groovy is a scripting language with many Python, Ruby, and Smalltalk features in a Java-like syntax.
Jacl is a pure Java implementation of the Tcl scripting language.
Java Math Expression Parser (JEP) is a Java library for parsing and evaluating mathematical expressions.
Jawk is a pure Java implementation of the AWK scripting language.
Jelly is a scripting tool used for turning XML into executable code.
JRuby is a pure Java implementation of the Ruby programming language.
Jython is a pure Java implementation of the Python programming language.
Nashorn is a JavaScript implementation. It is the only scripting language that has a script engine implementation included in the Java Scripting API by default.
Scala is a general-purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way.
Sleep, based on Perl, is an embeddable scripting language for Java applications.
Apache Velocity is a Java-based general-purpose template engine.
Visage is a domain-specific language (DSL) designed for the express purpose of writing user interfaces.