Java at 20: Ready for life in the cloud
Borne out of many years of work in the enterprise distributed systems arena, enterprise Java went on to become a dominant force in application development.
Twenty years on, Java is still standing strong towards the top of industry language rankings. This is, in no small part, a result of the level of reinvention that we’ve seen in enterprise Java, which suggests that it may avoid the fate of other “legacy” technologies.
In the last decade, the enterprise IT landscape has moved from large, monolithic applications towards lighter and more modular application architectures. Java EE was an enabler of the old way of creating enterprise apps, so it too needed to change with the times.
To that end, the Java community came together in 2016 to develop MicroProfile (now part of the Eclipse Foundation). It’s designed to help optimise enterprise Java for microservices architectures in this new age of cloud-native application development. MicroProfile is now fairly well established and taking into account the needs of the developers while still enabling Java to play a prominent role.
In parallel, Java EE has also been migrated to a new home and a new brand: Jakarta EE. The robust community behind it has a goal to accelerate development of further innovations in enterprise Java, specifically in cloud computing, working with specifications provided by many vendors. Jakarta EE still needs to find its feet but there is immense potential for collaboration with Eclipse MicroProfile.
Java has two decades of optimisations for running highly-dynamic, monolithic applications that assumed sole ownership of virtualised host CPU and memory. However, in 2020, the world is dominated by the cloud, mobile, IoT, and open source, where containers, Kubernetes, microservices, reactive, Function-as-a-Service (FaaS), 12-factor, and cloud-native app dev are delivering unprecedented productivity and efficiency.
As a result, there has been a need to rethink how Java can be best utilised to address these new deployment environments and application architectures.
An enhanced Java ecosystem
The complexity in a cloud-native approach does not lie in the applications but in the communication between them, alongside management and monitoring. Herein there are issues to address for the Java ecosystem.
However, the mature and industrious Java community has been working to fill the gaps that have emerged in the age of cloud computing and helping to build a bright future for enterprise Java.
The Java language has seen several improvements, such as the functional feature, as well as the Jigsaw project, which introduced modularity. With this, we can create thinner Java applications that can be scaled easily. Additionally, Java releases now happen twice a year, which has served to promote a faster evolution of the Java platform.
New actions and initiatives have certainly improved the platform and promoted solutions to move towards cloud-native Java. This includes Quarkus, a Kubernetes-native Java stack crafted from best-of-breed Java libraries and standards that has fast boot times, incredibly low RSS memory utilisation, and also offers instant scaling in container orchestration platforms like Kubernetes.
A bright future for Java—with Quarkus
Quarkus has the potential to make Java a leading platform in Kubernetes and serverless environments, while offering developers a unified reactive and imperative programming model to optimally address a wider range of distributed application architectures.
Most Java developers are familiar with the imperative programming model and would like to utilise that experience when adopting a new platform. At the same time, developers are rapidly adopting a cloud-native, event-driven, asynchronous, and reactive model to address business requirements to build highly concurrent and responsive applications. Quarkus is designed to bring the two models together seamlessly in the same platform, resulting in strong leverage within an organisation.
Quarkus provides an effective solution for running Java in this new world of serverless, microservices, containers, Kubernetes, FaaS, and the cloud because it has been designed with these in mind. It also offers an extensible set of standards-based enterprise Java libraries and frameworks combined with extreme developer productivity that promises to revolutionise the way we develop in Java.
With Quarkus, we believe Java can be better equipped to scale in the modern application development landscape, while also improving at a faster clip.
Java developers are able to use Quarkus to build apps that have a faster startup time and take up less memory than traditional Java-based microservices frameworks. Quarkus includes flexible and easy to use APIs that enable developers to build cloud-native apps, and leading frameworks that are already familiar to most developers.
As a result of recent innovation it is fair to say that the future of enterprise Java may look a lot like the glories of the past. The large community of vendors, projects and individuals invested in Java will inspire the platform to evolve and enhance workloads today and for many years to come.