Java developers usually try to find ways to write quality Java code, quick and efficient, to make their programming life easier. Since things change, more and more tools come up. So, below there is a list of useful tools that most developers have used, use or will surely use in the future. The list includes integrated development environments, integration tools, testing and quality tools and even more.
Integrated Development Environments
Eclipse is the most famous Java Integrated Development Environment (IDE), used by most developers. It allows developers to combine language support and other features into any of its default packages, and the Eclipse Marketplace allows for virtually unlimited customization and extension.
IntelliJ has raised the interest of developers, since it is being lately preferred over Eclipse. It provides both free and a proprietary commercial edition. IntelliJ offers outstanding framework-specific coding assistance and productivity-boosting features for many Java EE frameworks, along with deployment tools for most application servers.
NetBeans also belongs to the IDEs category, allowing to quickly and easily develop desktop, mobile and web applications . It is free, open source, and has a worldwide community of users and developers.
Jdeveloper is a free integrated development environment provided by Oracle. It provides complete end-to-end development to Oracle Fusion Middleware and Oracle Fusion Applications with support for the full development life cycle.
Junit is a simple, open source framework to write and run repeatable tests. It provides assertions for testing expected results, test fixtures for sharing common test data and test runners for running tests. You can take a look at our ultimate tutorial here.
TestNg is inspired from JUnit but includes some new functionalities that make it more powerful and easier to use, such as annotations, flexible test configuration, data-driven testing and parameter supporting, powerful execution model. It covers unit, functional, end-to-end, integration tests and is supported by a variety of tools and plug-ins (Eclipse, IDEA, Maven, etc…). Check out our article on Running unit tests and integration tests separately with Maven Failsafe and TestNG.
Mockito is a mocking framework that allows you to write beautiful tests with clean and simple API. Tests are very readable and they produce clean verification errors. With Mockito you ask questions about interactions after execution. Mocks are transparent and let the developer to focus on testing selected behavior rather than absorb attention. Check out our articles on Mockito here.
Arquillian is a testing platform for Java and the JVM, focused mostly on integration and functional testing. It picks up where unit tests leave off, focusing on the interation of application code inside a real runtime environment. Arquillian equips tests with container lifecycle management and test case enrichment.
Apache Maven is a very famous software project management and comprehension tool. Based on the concept of a project object model (POM), it manages a project’s build, reporting and documentation from a central piece of information. Maven provides a uniform build system, quality project information, guidelines for best practices development and allows for transparent migration to new features.
Gradle is an open source build automation system. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites. Gradle combines the power and flexibility of Ant with the dependency management and conventions of Maven into a more effective way to build.
Apache Ant is an open source Apache project, released under the Apache Software License. It consists of built-in tasks that allow developers to compile, assemble, test and run Java applications. It is flexible and does not put restrictions on coding conventions or directory layouts for Java projects.
Apache Ivy is a popular dependency manager focusing on flexibility and simplicity. It is a sub-project of the Apache Ant project, with which Ivy works to resolve project dependencies. An external XML file defines project dependencies and lists the resources necessary to build a project. Ivy then resolves and downloads resources from an artifact repository. It provides flexibility and configurability. Apache Ivy is integrated with Apache Ant, thus bringing the dependency management advantages of Apache Maven to Apache Ant build files, for those who already use Apache Ant and don’t want to migrate to Apache Maven.
Apache Tomcat is an open-source web server and servlet container developed by the Apache Software Foundation (ASF). It implements several Java EE specifications including Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket, and provides an HTTP web server environment for Javacode to run in. (Check more here.)
Wildfly, is the formerly known JBoss AS, or simply Jboss. It is an application server authored by JBoss and now developed by Red Hat. It is written in Java, and implements the Java Platform, Enterprise Edition (Java EE) specification. Wildfly runs on multiple platforms, it is free and open-source.
Glassfish is an open-source application server project started by Sun Microsystems for the Java EE platform and now sponsored by Oracle Corporation. The supported version is called Oracle GlassFish Server. GlassFish is free software, dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the classpath exception.
Oracle WebLogic Server is a Java EE application server currently developed by Oracle Corporation, used for building and deploying enterprise Java EE applications with support for new features for lowering cost of operations, improving performance, enhancing scalability and supporting the Oracle Applications portfolio.
Web applications testing
Apache JMeter is open source Apache project, actually a Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications, but has since expanded to other test functions. It can test performance both on static and dynamic resources, and it can simulate a heavy load on one or more servers to test its strength or to analyze overall performance under different load types. You can check more about JMeter here.
SoapUI is a free and open source cross-platform Functional Testing solution. It provides a graphical interface and enterprise-class features and it allows you to create and execute automated functional, regression, compliance, and load tests. SoapUI provides complete test coverage in one test environment and supports all the standard protocols and technologies.
SonarQube is an open source platform that has become a world leader in code quality management systems, and is well known for its Continuous Inspection of code quality. Apart from Java it also supports most languages, it can be used as part of Android development and it integrates with most continuous integration tools. It produces reports on duplicated code, coding standards, unit tests, code coverage, complex code, potential bugs, comments and design and architecture.
FindBugs is also open source and distributed under the terms of the Lesser GNU Public license. It operates on Java bytecode rather than source code. It can identify and determine the severity of potential errors, such as null pointer dereferences, infinite recursive loops, bad uses of the Java libraries and deadlocks. It is available as plug-in for Eclipse, NetBeans, IntelliJ IDEA. Check out our Findbugs Eclipse Example.
PMD is a source code analyzer. It can detect common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports most languages, apart from Java and includes CPD, the copy-paste-detector.
Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code. It is highly configurable and can be made to support almost any coding standard.
Versioning and Revision
Apache Subversion is the known to all of us SVN tool. It is a software versioning and revision control system distributed under an open source license. It is now developed as a project of the Apache Software Foundation, and as such is part of a rich community of developers and users.
Git is a free and open source distributed version control system designed to handle everything with speed and efficiency. Git outstands over other SCM tools, providing features like cheap local branching, convenient staging areas, and multiple workflows. Every Git working directory is a full-fledged repository with complete history and full version-tracking capabilities, independent of network access or a central server. Check our article on Git for beginners here.
Jenkins is an award-winning application that monitors executions of repeated jobs, from software projects to jobs run by cron. Its basic functionality is building and testing software projects continuously, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. Jenkins also provides monitoring executions of externally-run jobs, such as cron jobss, even those that are run on a remote machine.
Apache’s Continuum is an enterprise-ready continuous integration server with features such as automated builds, release management, role-based security, and integration with popular build tools and source control management systems.
Hudson is a continuous integration (CI) tool written in Java, which runs in an application server. It supports SCM tools like Subversion, Git and can execute Apache Ant and Apache Maven based projects, as well as arbitrary shell scripts and Windows batch commands. It monitors the execution of repeated jobs, such as building a software project or jobs run by cron.
YourKit Java Profiler is a technology leader, creator of the most innovative and intelligent tools for profiling Java applications. You can use YourKit solutions for both CPU and memory profiling and you can profile huge applications with maximum productivity and zero overhead. There are several, recent innovations to profiling that have gained well-deserved popularity among professional Java developers, both in big and small companies.
JProfiler is a commercially licensed Java profiling tool, that can be very useful for analyzing performance bottlenecks, memory leaks, CPU loads and resolve threading issues. It supports profiling on the same machine or remote machines. Users can see live through a visual representation of active and total bytes, instances, threads, classes, and garbage collector activities. It works as a stand-alone application and as a plug-in for the Eclipse software development environment.
Code Coverage tools
JaCoco is an open source toolkit for measuring and reporting Java code coverage. It is distributed under the terms of the Eclipse Public License and is currently the only byte code coverage tool that works with Java 8.
Clover is a commercial code coverage tool that provides the metrics you need to better balance the effort between writing code that does stuff, and code that tests stuff. It runs in your IDE or your continuous integration system, it includes test optimization to make your tests run faster, and fail more quickly.
JIRA is the tracker for teams planning and building great products. Thousands of teams choose JIRA to capture and organize issues, assign work, and follow team activity. It is not free, but there is a 7-days free trial period provided.
Trac is an enhanced wiki and issue tracking system for software development projects. It uses a minimalistic approach to web-based software project management. It helps developers write great software and provides an interface to Subversion and Git (or other version control systems), an integrated Wiki and convenient reporting facilities. Trac allows wiki markup in issue descriptions and commit messages, creating links and seamless references between bugs, tasks, changesets, files and wiki pages.
Javadoc is a documentation generator from Oracle Corporation for generating API documentation in HTML format from Java source code. IDEs automatically generate Javadoc HTML. Many file editors assist the user in producing Javadoc source and use the Javadoc info as internal references for the programmer. Javadoc also provides an API for creating doclets and taglets, which allows you to analyze the structure of a Java application.
Document! X is a combination of an automated Java documentation tool and a full documentation authoring environment which can be used to create accurate, professional quality documentation for your Java projects. It automatically integrates the generated documentation with popular Java IDEs. It provides documentation pages generated for library, namespace, class, interface, constructor, method, property, field.
So, this is a basic list of tools for every Java developer to check out. Feel free to try them on!
Do you have any more tools to suggest? Please let us know in the comments below!