BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
"Developers are building microservices with a lot of different languages, including Node.JS, Python and PHP," said Mike Lehman, vice president of product management for Oracle. "There is a huge enterprise knowledge base and skills capabilities around Java. But a vast number of emerging and popular languages are being used."
Reconsider Java for cloud-native
A clear majority of enterprise apps have been built in Java, and Java patterns are widely used to demonstrate new concepts. There is also a rich set of enterprise tooling to support code serviceability, monitoring and operations.
Java Enterprise Edition (EE) does include these features, but it also comes with the burden of a larger VM and app server model. New modularity features being implemented into Java EE based on Project Jigsaw and Java MicroProfile promise to enable enterprises to use their Java expertise and code base for digital transformation initiatives. Lehman said, "I often hear from the development teams that, while they can run with those other languages, having a centricity of one language makes them more productive overall just because of the existing skill sets, knowledge and management."
Java's container roots
Mark Little, vice president of software engineering at Red Hat, said, "In some respects, Java has had the concept of a container for years as the JVM [Java virtual machine] at one level and at a higher level as the application container defined by Java EE and implemented by Apache Tomcat or Red Hat [Enterprise Application Platform]. Docker containers provide a higher level of abstraction for combining these with Linux containers because workloads need to move to the cloud efficiently and at a low cost."
Linux containers are the most convenient, repeatable, reliable and scalable way of doing this. In the short term, the biggest trend will be moving existing Java workloads so they can be deployed efficiently into Linux containers, Little said. That alone will take time and some re-architecting.
However, the JVM was not built with the modern idea of containers in mind. According to Little, "There are some architectural and implementation issues which we know about and which are being worked on."
Little is also seeing a trend toward stripping down Java EE and other application server containers to core services that can be deployed into Linux containers. There are also Java Development Kit Enhancement Proposals open for improving the way the JVM works with Linux containers.
Use Java EE MicroProfile to streamline
The advent of Java MicroProfile promises to be a big enabler for digital transformation of the enterprise by shrinking the size of Java runtimes that can run inside and outside the enterprise. MicroProfile is important for enterprise architects because, if legacy apps can be transformed into microservices in their own natural environment, digital transformation is easier for developers, testers and operations teams.
This will allow enterprises to take advantage of their existing Java development tooling resources and tooling for creating smaller, nimbler microservice applications that can run across different cloud platforms. This is important since each layer in the application stack adds overhead. Better container interoperability is helping to reduce the overhead from traditional virtual machines. MicroProfile standardization promises to similarly reduce the overhead of traditional JVMs.
Major vendors and enterprise architects are collaborating on the Eclipse MicroProfile open source projects to bring additional APIs that will provide Java EE developers with new features required for implementing robust enterprise apps.
MicroProfile interoperability has been demonstrated across several Java apps servers, including Red Hat WildFly Swarm, IBM WebSphere Liberty, Payara MicroProfile and Tomitribe TomEE. IBM plans to make it easier for developers to code microservices that can be frequently updated and moved between different cloud environments with the recent release of its Open Liberty Java EE and MicroProfile implementation, contributed to the Eclipse Foundation as Eclipse OpenJ9. Ian Robinson, WebSphere chief architect at IBM, said IBM is keen to see Eclipse MicroProfile work well with service mesh infrastructure like Istio.
Enterprise-grade features coming to Java EE MicroProfile
One of the higher-level goals is to get Java developers of legacy apps to reuse their existing tooling in a way that allows them to spend more time writing code and less configuring the underlying infrastructure required to execute and orchestrate application logic. New APIs being baked into MicroProfile just in time for JavaOne 2017 support better configuration, fault tolerance, health metrics, health checks and security via JSON Web Token propagation. These features will enable Java app developers to extend the power of their microservices using well-defined specifications and APIs that work across cloud platforms.
According to Red Hat's Little, "We are seeing that with Eclipse MicroProfile, specifications are being defined with the understanding that the underlying container platform offers services that are relevant to applications. For example, the MicroProfile Configuration 1.0 specification was defined with the expectation that application configuration is externalized and integrated into the underlying container platform."
The MicroProfile Fault Tolerance 1.0 specification understands that circuit breaking may be a service offered by an underlying service mesh like Istio. Fault Tolerance was built to offer a clean integration between the two to address a wider set of uses.
In many ways, these improvements should encourage enterprise architects to adopt Java for a wider array of digital transformation initiatives. Oracle's Lehman observed, "Java remains one of the most popular languages on the Internet, with about 12 million developers and over 21 billion JVMs deployed to the cloud. Many of these developers have a rich skill set, and in many ways, Java is a powerful language for building microservices and driving digital transformation."
About Java's 'deprecated' method
Guide to digital transformation
Moving forward with mobile digital transformation