Core JavaJava

Java development tools for a programming boost !

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.

Testing

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.

Integration

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.

Application servers

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.

Quality analysis

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.

Continuous Integration

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.

Java Profilers

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.

Bug tracking

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.

Documentation generators

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!

Theodora Fragkouli

Theodora has graduated from Computer Engineering and Informatics Department in the University of Patras. She also holds a Master degree in Economics from the National and Technical University of Athens. During her studies she has been involved with a large number of projects ranging from programming and software engineering to telecommunications, hardware design and analysis. She works as a junior Software Engineer in the telecommunications sector where she is mainly involved with projects based on Java and Big Data technologies.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

14 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rafal
Rafal
9 years ago

What about mercurial (http://mercurial.selenic.com/) and bazaar (http://bazaar.canonical.com/en/)? Spock? And go.cd?

Man in dare
Man in dare
9 years ago

Dear Ma’am
Thankew.
It is very useful for me.
I m experienced java.swing.* developer.
Now I am going to website/$pring development.So tell me ide which is useful for me. I’ve experience using netbeans ide.

Chaker
Chaker
9 years ago

Hi Man in dare,

For Spring web app development i propose Spring Tool Suite,
it’s just a preconfigured eclipse. It’s easier to set up a spring based project

https://spring.io/tools

Tirthal
9 years ago

Missing JRebel (commercial) / Hotswap Agent (free), which aims to boost java developer productivity by saving time on application redeploys.

On a separate note – Inspired by your this post, I just published my bit different thoughts on the similar line “Tactics (tools, techniques and programming considerations) to improve Java Development Productivity” here – http://tirthalpatel.blogspot.in/2015/03/tactics-to-improve-java-dev-productivity.html

codesmell (@codesmell)
codesmell (@codesmell)
9 years ago

mercurial is missing

ER
ER
9 years ago

I think a non-IDE category should be in your article.

Said that, I propose the tool Spring Roo to develop web apps based on Spring framework, Spring MVC, et al.

Cheers

gowri sankar
gowri sankar
9 years ago

Very good summary. Thanks for sharing!

Chris Newland
9 years ago

JITWatch HotSpot log analyser?

Olivier Jacquemart
Olivier Jacquemart
9 years ago

I think that gatling is missing. It is a great stress tool. It should figure in the web application testing section.

Matthieu WALCKENAER
9 years ago

And you can add http://www.nudge-apm.com to get a dynamic view of your code while you’re testing your app… totally free for developers.
Chers and by the way nice article.

Jonathan Johnson
Jonathan Johnson
8 years ago

Great list

Team tools, Atlassian suite: Crucible, Hipchat, Artifactory, Bitbucket
Clustering: Docker, Mesos
Requirements and UX: Balsamiq
IDE agnostic code beautifier: JIndent
Cross platform installer: Install4j
GUI: JavaFX is evolution above Swing
VCS: Tortoise
Database: Toad
Monitoring logs: Logstash
SSH: MobaXTerm
Text editor: Notepad++

Take a gander at Thoughworks tech radar on Tools: https://www.thoughtworks.com/radar/tools

Java Code Geeks could have an continuously updated Tech Radar: https://www.thoughtworks.com/insights/blog/build-your-own-technology-radar

Viraf Karai
Viraf Karai
8 years ago

jvisualvm for monitoring heap, garbage collection, JMX MBeans, and CPU profiling.

Yiquan Zhou
8 years ago

Nice post, thanks for sharing!
http://findtheflow.io is also a free tool allowing to visualise the executions of Java applications in a web browser. You can gain better understanding on execution paths and dependencies within your code.

Almondo Halvez
Almondo Halvez
8 years ago

Interesting and helpful list!
Many developers use some nice productivity tools to produce a code base for starting development: JBoss Forge, Spring Roo or Generjee. It is useful to know the benefits of this little helpers, too.

Back to top button