Cloud

Looking for a quick guide to migrating and modernizing your organization's Java-based applications? Modernizing Enterprise Java walks you through the journey. Download the free e-book today.

Java has been one of the most popular programming language choices for developers since its release 25 years ago. It is backed by an open source ecosystem of contributors and a growing number of companies who rely on Java for their core business workloads.

Java 17: Optimizing for the cloud

One of the main reasons for Java's success over time is its ability to evolve and adapt to new technologies and paradigms. This was demonstrated by the recent Long Time Support (LTS) release of Java 17, which provides improved support for modern architectures, such as container and microservices-based applications, and optimized footprints for edge computing.

A cloud native guide for developers

Our new book Modernizing Enterprise Java (O'Reilly), pictured in Figure 1, discusses how Java developers can move from traditional models toward modern approaches, including microservices-based, event-driven, cloud-native, and eventually serverless architectures with Kubernetes. We provide an analysis of various processes and frameworks and present an opinionated evolution of Java application development in enterprise-scale software, ready to support in heterogeneous, ubiquitous, large scale, and cloud-native environments where they run business-critical applications.

Book cover for Modernizing Enterprise Java.
Figure 1. The book cover for Modernizing Enterprise Java.

Revisiting enterprise development

In the first part of the book, we revisit enterprise development, analyzing the challenges developers encounter when faced with fast-moving IT scenarios. Some companies are leaping from monthly or even yearly software releases to potentially instantaneous releases—with great benefit for the business, as it gets products into the customers' hands faster. But this also brings development complexity to deal with, or at least requires a mind shift from traditional "legacy" models like monolithic applications to "modern" cloud-native, decoupled microservices-based applications.

3 approaches to application modernization: Rehost, replatform, refactor

The difference between the monolithic and microservices-based approaches couldn't be more fundamental in terms of functional requirements. An experienced developer and architect knows how to evaluate functional and nonfunctional requirements for a given project. But the "modernization" of any application depends on many aspects, and you can implement it in at least three ways:

  • Rehosting: As an example, porting an existing architecture as-is to run inside of a container.
  • Replatforming: Making slide adjustments to the existing application, like changing certain layers to start modernizing certain components.
  • Refactoring: Writing a new application that fits the new model.

Modernizing Enterprise Java analyzes all three of these approaches, but we code examples following an approach towards refactoring an e-store called Coolstore (see Figure 2) as a new application created with modern Java frameworks such as Quarkus and Spring Boot.

coolstore diagram
Figure 2. Diagram of our example e-commerce store Java implementation.

Get started with cloud native and Kubernetes

Ready to bring your monolithic, Java-based models into the future?

Last updated: October 18, 2023