The most useful coding tools are ones that not only improve our code, but also our productivity. When it comes to Java there are dozens of useful tools that perform both functions.
Whatever task you have at hand, there’s a Java orientated tool to help you out. Today I’ve gathered together a list of my favourites.
Java Profiler UI helps you resolve performance bottlenecks, pin down memory leaks and understand threading issues.
Clover provides the metrics of writing code that does stuff and code that tests stuff. Clover runs in your IDE or your continuous integration system, and includes test optimization to make your tests run faster, and fail more quickly.
JD-GUI is a decompiler. Standalone graphics utility that displays source codes of “.class” files.
jClarity offers two products – one is for performance monitoring called Illuminate and second one is census for focused on garbage collection logs and analysis.
Snappy Compression/decompression library from Google Code. A great resource when speed is a requirement.
Spark is a web application framework for java programmers. Spark focuses on being as simple and straight-forward as possible, without the need for cumbersome configuration, to enable very fast web application development in pure Java with minimal effort.
VisualVM utilizes various available technologies like jvmstat, JMX, the Serviceability Agent (SA), and the Attach API to get the data and automatically uses the fastest and most lightweight technology to impose minimal overhead on monitored applications.
Sonarqube is a platform to manage code quality. It’s a web-based application which rules, alerts, thresholds, exclusions and settings.
Bintray gives developers full control over how they store, publish, download, promote and distribute software with advanced features that fully automate the software distribution process.
JUnit is a framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
Gradle is an automated build, test, publish, and deploy solution that also generates documentation.
Takipi gives a static and dynamic code analysis technology to analyze code events in real time. The technology’s focus is large-scale Java and Scala code bases.
Librato is a hosted service for monitoring and managing cloud applications, Librato can create custom dashboards in seconds without a need to set up or deploy any software.
Plumbr is for performance monitoring with automated root cause detection. Plumbr exposes the underlying problems down to the single line of code causing the issue.
Eclipse is a open-source integrated development environment. If you could have just one tool for Java development, Eclipse would be a good choice.
IntelliJ provides similar features to Eclipse, with a smooth, developer-friendly experience.
Yourkit combines analysis capabilities, on-demand profiling during both development and production, free embedding into production, and seamless IDE and application server integration.
Splunk captures, indexes and correlates real-time data in a searchable repository from which it can generate graphs, reports, alerts, dashboards and visualizations.
Profiler by NetBeans provides important information about the runtime behaviour of an application. Imposing relatively little overhead, the NetBeans Profiler tracks thread state, CPU performance, and memory usage.
Profiler4j is a dedicated CPU profiler Java which is user friendly and supports remote profiling and can be configured “on the fly”.
Mockito is a mock library, an open-source testing framework that enables the creation, verification, and stubbing of mocks.
Jetty is a Java HTTP (Web) server and Java Servlet container.
Hibernate is a object-relational mapper. Implements the Java persistence API.
Patty is another profiler which uses JVMTI and native bytecode instrumentation for the analysis of the heap, reachable objects, execution time, garbage collection efficiency, code coverage and thread contention.
GCViewer is a open sourced tool which can be used to visualize data produced by the Java VM options using the vmflags -verbose:gc and -Xloggc:.
FindBugs is a static code analyzer. Classifies potential errors in code as scariest, scary, troubling, or “of concern.” Available as a standalone GUI or as a plugin for Eclipse, NetBeans, IntelliJ, Gradle, Hudson, and Jenkins.
Jenkins is a continuous integration tool. Customizable with more than 1000 plugins.
Guava is a utility library. Contains core libraries that Google relies on in Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
Ruxit automatically monitors your applications, analyzes problems, and notifies you when something goes wrong.
DripStat is a Java/Scala performance monitoring service.
Spring Boot includes a number of additional features to help you monitor and manage your application when it’s pushed to production.
Guice is a lightweight dependency injection/inversion of Control (IoC) framework, from Google.
Pingdom is a service that tracks the uptime, downtime, and performance of websites.
JRat is the analysis toolkit you must use. With this tool, you can identify potential problem areas that can impact application performance.
Apache JMeter is a testing tool that will measure functional behaviour and also the performance of your websites, databases, web services etc.
PagerDuty is an operations performance platform delivering visibility and actionable intelligence across the entire incident lifecycle.
Duckware specializes in shareware Java applets and applications.
JIP is a high performance, low overhead profiler that is written entirely in Java.