JAVA Development Tools-JDK

Published date: March 1, 2024, Version: 1.6

Java development tools are software applications and environments that help developers create, test, debug, and manage Java applications. These tools streamline the development process and improve code quality.

some key Java development tools are Integrated Development Environments (IDEs), Text Editors, Build Tools, Version Control Systems, Testing Frameworks, Debugging Tools, Profiling Tools, Continuous Integration (CI) Tools, Code Analysis Tools, Application Servers. These tools play a crucial role in the Java development process, enabling developers to build high-quality, efficient, and reliable software applications. The choice of tools often depends on the specific project requirements and developer preferences.

 

JDK Version Release

A new full version of the JDK is released twice a year, in March and September. Some of these releases are designated LTS, indicating a Long-Term Support version of the JDK . LTS versions receive support and bug-fixes for a longer period of time than regular releases, but otherwise are not any different from any of the other major versions.

There are two LTS versions currently supported: 11 and 17. Squads using an LTS version should use the newest supported version (v17) unless otherwise there is a very strong requirement for v11 (for example, a required library is not yet available with v17 and there are no alternative libraries).

Squads should plan to update the Java version of their applications at least once quarterly:

  • those using LTS should update LTS versions every ~2 years as they are released and upgrade to the latest current LTS patch each quarter as necessary.

Build Tools – Maven, Gradle

It is expected that every Java application and library employs a build tool – either Maven or Gradle. These tools manage dependencies, running build and unit tests, and packaging the binary artifacts. They also provide a standard interface for Continuous Integration (CI) tools to hook into – if your application is using one of these tools, there will be a set of known commands that CI can use to build and test.

Both Maven and Gradle are strong build tools, and both are generally supported at CTC. If you do not have a preference between the two and/or are new to Java build and dependency management, we recommend you choose Maven, as it has a somewhat shallower learning curve.

Unit Test – JUnit 5

Unit testing is an integral part of the development process and should be included from Sprint 1.  We have an entire page on Unit Testing, which is definitely worth reading.  We recommend JUnit 5 as a unit testing platform.

APIs and Standalone applications – Spring Boot

One of the most common platforms for building applications in Java is Spring Boot.  It provides a quick, standardized way to bootstrap a Java application, and provides a number of standard libraries out of the box:

  • Multiple profiles (Local, Dev, QA, Prod, etc.)
  • Metrics
  • Health checks
  • Configuration management
  • Logging
  • JSON serialization/deserialization
  • Unit Test support, including JUnit and Hamcrest

In addition, Spring Boot integrates well with many other Spring projects that provide common functionality: