2. MEET THE SPEAKER
John Archer
Principal Energy Solution Architect, Cloud Platform
Red Hat since 2015
Oracle, Petris, BEA Systems, SilverStream, BSI Consulting, DocuQuest, Andrews & Kurth LLP
Upstream Data Management, DoD, APIs, eCommerce, Mobile, IoT, Data Science and Blockchain
Open Group OSDU, Energistics, SPE, SEG, PPDM, OMG, HJUG (Founder), HDUG, HAL-PC
6. AGENDA
6
Red Hat and Java
Java State of the Union
Don’t Panic - CODE ON !
Thoughts for the future
What we’ll be discussing today
7. 7
RED HAT AND JAVA
● 2006 -Acquired JBoss
● 2007 - Founding member of OpenJDK
● 2008 - OpenJDK supported in RHEL XX
● 2009 - Oracle acquires Sun Microsystems
● 2012 - Acquired FuseSource
● 2013 - Assumed leadership of OpenJDK 6
● 2016 - Founding member of Eclipse MicroProfile
● 2018 - Founding member of Eclipse Jakarta EE
9. 9
RED HAT AND JAVA
● Project lead for OpenJDK 6 (now EOL)
● Project lead for OpenJDK 8 and OpenJDK 11
● Member of OpenJDK Vulnerability Group Governing Board
● Pioneered Java and Kubernetes (OpenShift)
● Wrote and lead the 64-bit ARMv8 port
● Wrote and lead the ultra low-pausetime Shenandoah garbage
collector project
● Lead and collaborate on many popular Java projects -
ActiveMQ, Eclipse CHE, Eclipse IDE, Hibernate, Camel, Drools,
WildFly, SmallRye, Strimzi...
● Established Quarkus project (more on this later)
10. 10
JAVA STATE OF THE UNION
● Still a de-facto language for enterprise developers*
● Large skills base (7-10 million Java devs.)**
● Large and Increasingly diverse ecosystem
○ Amazon, Fujitsu, Google, IBM, Microsoft, Netflix,
Oracle, Pivotal, Red Hat, ...
Sources:
*Tiobe Index : https://www.tiobe.com/tiobe-index/
* IEEE Spectrum : https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018
I** SlashData - 7.6 million active Java developers (State of Developer Nation, 16th Edition, Q4 2018)
11. 11
JAVA STATE OF THE UNION
● OpenJDK - release model changes
● Oracle JDK - business model changes
● MicroProfile created to support cloud native Java
● Java EE moved to Eclipse Jakarta EE
● Oracle Trademark impasse
Major changes to Java SE & EE
12. 12
DON’T PANIC
● Large, resilient community
● Many tried and trusted technologies
● Not dependent on a single vendor
● The innovation continues
● New leaders emerging
○ OpenJDK Supporters
○ Eclipse MicroProfile ecosystem
○ Cloud providers
13. 13
What does Red Hat Offer ?
Sources : https://access.redhat.com/articles/1299013#OpenJDK_Lifecycle_Dates_and_RHEL_versions
• Long term support for OpenJDK LTS releases
• Fully supported, both Dev and Prod, for Red Hat Enterprise Linux for any Java application
• Fully supported, both Dev and Prod, for Red Hat Middleware on Red Hat Enterprise Linux
• Fully supported, both Dev and Prod, for Red Hat Middleware on Windows
• Fully supported, both Dev and Prod on Windows for any Java application
RHEL 5 Support Added RHEL 6 Support Added RHEL 7 Support Added End of support
OpenJDK 6 (1.6) 5.3 6.0 7.0 December 2016
OpenJDK 7 (1.7) 5.9 6.3 7.0 June 2020
OpenJDK 8 (1.8) N/A 6.6 7.1 June 2023
OpenJDK 11 (18.9 LTS) N/A N/A 7.6 October 2024
15. Growth in Application Architecture Choices
THOUGHTS FOR THE FUTURE
Cloud Native Microservices Serverless
Event-Driven
Architecture
Monolith
16. AMQ Streams
Thoughts for the Future
16
AMQ Streams
• Enterprise distribution of Apache
Kafka
• Simplified deployment on OpenShift
• Based on OSS project called Strimzi
• Provides:
• Container images for running Apache
Kafka and Zookeeper
• Operators for managing and configuring
Apache Kafka clusters and topics
17. THOUGHTS FOR THE FUTURE
17
● Responsive: fast, is able to handle a large
number of events / connections
● Elastic: scale up and down by juststarting
and stopping nodes, round-robin
● Resilient: failure as first-class citizen, self-
healing
● Asynchronous message-passing: asynchronous
non-blocking development model
Vert.x is a toolkit to build distributed and
reactive applications on top of the JVM using an
asynchronous non-blocking development model.
Vert.x Reactive Toolkit for Writing Microservices
18. Eclipse MicroProfile
THOUGHTS FOR THE FUTURE
18
● Open Source community specifications for
Enterprise Java microservices
● 9 releases in 3 years
● 5 specifications in the pipeline
ImplementationsCommunity
19. Common Deployment Platform
THOUGHTS FOR THE FUTURE
19
Cloud Native Microservices Serverless
Event-Driven
Architecture
Monolith
Istio Knative
20. The Hidden Truth About Java + Containers
THOUGHTS FOR THE FUTURE
20
Container platform
Node
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
Node
Go Go
Go Go
Go Go
Go Go
Go Go
Go Go
Go Go
Node
HotSpot Heap
HotSpot Heap
HotSpot Heap
HotSpot Heap
21. Historical Enterprise Java Stack
Thoughts for the Future
21
Operating System + Hardware/VM
Java Virtual Machine (Hotspot)
Application Server
App App App App App
Dynamic Application Frameworks
Architecture: Monoliths
Deployment: multi-app,
appserver
App Lifecycle: Months
Memory: 1GB+ RAM
Startup Time: 10s of sec
22. Modern Enterprise Java Stack
Thoughts for the Future
22
Java Virtual Machine (Hotspot)
Application Server
App
Dynamic Application Frameworks
Architecture: Microservices
Deployment: Single App
App Lifecycle: Days
Memory: 100MBs+ RAM
Startup Time: Seconds
No Change
23. Java Serverless Stack
Thoughts for the Future
23
Java Virtual Machine (Hotspot)
Application Server
App
Dynamic Application Frameworks
Architecture: Microservices
Deployment: Single App
App Lifecycle: Days
Memory: 100MBs+ RAM
Startup Time: Seconds
No Change
24. THOUGHTS FOR THE FUTURE
24
Monolith
Quarkus - Kubernetes Native Java
Cloud Native Microservices Serverless
Event-Driven
Architecture
Istio Knative
25. Moving to Compile-Time Boot
THOUGHTS FOR THE FUTURE
25
What does a framework do at startup time
● Parse config files
● Classpath & classes scanning
○ for annotations, getters or other
metadata
● Build framework metamodel objects
● Prepare reflection and build proxies
● Start and open IO, threads etc
● Moved as much as possible to build phase
● Minimized runtime dependencies
● Maximize dead code elimination
● Introduced clear metadata contracts
● Spectrum of optimization levels
(all → some → minimal runtime reflection)
Framework Optimizations
A dynamic runtime on immutable infrastructure is unnecessary overhead
26. GraalVM
THOUGHTS FOR THE FUTURE
26
JVM CI
Sulong (LLVM)
Truffle
Graal Compiler
Substrate VM
Java HotSpot VM
27. Quarkus Reduces Memory Utilization
THOUGHTS FOR THE FUTURE
27
Quarkus + GraalVM
13 MB
Quarkus + OpenJDK
74 MB
Traditional Cloud-Native Stack
140 MB
REST
28. Quarkus Reduces Memory Utilization
THOUGHTS FOR THE FUTURE
28
REST + CRUD
Quarkus + GraalVM
35 MB
Quarkus + OpenJDK
130 MB
Traditional Cloud-Native Stack
218 MB
29. The New Truth about Java + Containers
THOUGHTS FOR THE FUTURE
29
CONTAINER ORCHESTRATION
NodeNode
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Traditional Cloud-Native
Java Stack
Node
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
NodeJS
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Go Go Go
Node
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
Quarkus
30. Quarkus Improve Startup Time
THOUGHTS FOR THE FUTURE
30
Quarkus + GraalVM 0.014 Seconds
REST
REST + CRUD
Quarkus + OpenJDK 0.75 Seconds
Quarkus + GraalVM 0.055 Seconds
Quarkus + OpenJDK 2.5 Seconds
Traditional Cloud-Native Stack 9.5 Seconds
Traditional Cloud-Native Stack 4.3 Seconds
31. Quarkus
Thoughts for the Future
31
App
Optimized Application Frameworks
Architecture: Microservices,
Serverless
Deployment: Single App
App Lifecycle: Seconds to
Days
Memory: 10MBs+ RAM
Startup Time: Milliseconds
Java Virtual Machine (Hotspot)
Optional
32. Developer Joy
THOUGHTS FOR THE FUTURE
32
A cohesive platform for optimized developer joy:
● Based on standards, but not limited
● Unified configuration
● Zero config, live reload in the blink of an eye
● Streamlined code for the 80% common usages,
flexible for the 20%
● No hassle native executable generation
33. Unifies Imperative and Reactive
THOUGHTS FOR THE FUTURE
33
● Combine both Reactive and imperative development in the same
application
● Inject the EventBus or the Vertx context
● Use the technology that fits your use-case
@Inject
SayService say;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return say.hello();
}
@Inject @Stream(”kafka”)
Publisher<String> reactiveSay;
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public Publisher<String> stream() {
return reactiveSay;
}
34. Best of Breed Frameworks and Standards
THOUGHTS FOR THE FUTURE
34
Eclipse Vert.x Hibernate RESTEasy Apache Camel Eclipse MicroProfile Netty
Kubernetes OpenShift Jaeger Prometheus Apache Kafka Infinispan
37. CONFIDENTIAL DesignatorRED HAT AND JAVA - FURTHER READING
37
HISTORY AND FUTURE OF OPENJDK
https://www.redhat.com/en/blog/history-and-future-openjdk?source=author&term=28071
JAKARTA EE IS OFFICIALLY OUT
https://developers.redhat.com/blog/2018/04/24/jakarta-ee-is-officially-out/
QUARKUS - WHY COMPILE TO NATIVE
https://developers.redhat.com/blog/2019/03/29/quarkus-why-compile-to-native/
OPENJDK 8 AND 11: STILL IN SAFE HANDS
https://developers.redhat.com/blog/2019/05/22/openjdk-8-and-11-still-in-safe-hands/
MICROPROFILE – COLLABORATING TO BRING MICROSERVICES TO
ENTERPRISE JAVA
https://middlewareblog.redhat.com/2016/06/27/microprofile-collaborating-to-bring-microservices-to-enterprise-java/
40. 40
JDK version adoption lags releases
Version
Release Date
JDK Beta 1995
JDK 1.0
January 1996
JDK 1.1
February 1997
J2SE 1.2 December 1998
J2SE 1.3 May 2000
J2SE 1.4 February 2002
J2SE 5.0 September 2004
Java SE 6 December 2006
Java SE 7 July 2011
Java SE 8 March 2014
Java SE 9 September 2017
Java SE 10 March 2018
Java SE 11 September 2018
Source: Java Magazine Oct. 2018 - JVM Ecosystem Report 2018
41. 41
The new Oracle JDK reality
• Oracle JDK still the incumbent, with
OpenJDK growing
• Oracle has announced that starting with
Java version 11, there is no free access to a
Java VM for use in production
• For current Java versions 6, 7, 9, 10, you can
only get version updates via a support
contract
• Java version 8 updates are only guaranteed
until January 2019
• Not all customers have decided on a JDK
maintenance strategy
Source: Java Magazine Oct. 2018 - JVM Ecosystem Report 2018