Release Cadence |
Oracle JDK vs OpenJDK |
Long-Term Support |
Slides at slides.codefx.org.
Tweet questions with #JavaNext
Release Cadence |
Oracle JDK vs OpenJDK |
Long-Term Support |
A new Java, every six months.
releases are driven by flagship features
new major release roughly every 2 years
Java 7 took 5 years
Java 8 took 3 years
Java 9 took 3.5 years
"Bump an 'almost ready' feature
2+ years into the future?"
⇝ "Better to delay the release."
implemented features provide no value
increases reaction time
puts (political) pressure on projects
makes everybody grumpy
If it hurts, do it more often.
fixed six-month release cadence
(March and September)
ship everything that is ready
All are major releases
with known quality guarantees.
⇝ No "beta versions"!
features are developed in "branches"
merged into "master" when (nearly) finished
"release branch" created 3 months prior
only bug fixes merged to "release branch"
completed features get out earlier
no pressure to complete features on time
easier to incubate features
easier to react to changes in the ecosystem
"Java will change too fast."
"Constant migrations will be expensive."
"Test matrix will explode."
"Ecosystem will fragment."
The rate of innovation doesn’t change. The rate of innovation delivery increases.
Maybe speed will pick up a little:
recent activities target low-hanging fruits
Oracle is focusing on Java core (my impression!)
By and large:
Evolution will be steadier, not faster.
(see Java 11)
But not the norm:
Java 10 is trivial
Java 11 is easy
Oracle is still committed
to backwards compatibility!
Balance shifted between
compatibility vs evolution:
@Deprecated(forRemoval=true)
"one major release" is now 6 months, not 36
increasing bytecode level
incubating features (if used incorrectly)
Remedies:
stick to supported APIs
stick to standardized behavior
stick to well-maintained projects
keep dependencies and tools up to date
consider using jlink
As the range of supported versions increases…
builds need to run against all of them
developers need to switch between them
Many tools already support this.
⇝ We need to know how.
Also: Moar automization!
"This will be like Python 2/3!"
No.
find a suitable update cadence
build on each release (including EA)
report problems
only rely on standardized behavior
heed deprecation warnings (jdeprscan
)
keep dependencies and tools up to date
Most importantly:
Be aware of what’s coming!
Release Cadence |
Oracle JDK vs OpenJDK |
Long-Term Support |
OpenJDK is the new default!
Sun/Oracle JDK used to…
contain more features
be perceived as more stable
be perceived as more performant
As of Java 11, on a technical basis,
Oracle JDK and OpenJDK are identical.
*
Only difference is license and support model:
Oracle ships OpenJDK at jdk.java.net,
licensed under GPL+CE
Oracle JDK is fully commercial:
from 11 on, no free use in production
⇝ OpenJDK is the new normal!
Release Cadence |
Oracle JDK vs OpenJDK |
Long-Term Support |
What if you (or your customers)
don’t want to update every six months?
What does Oracle support?
free updates for current OpenJDK version
(i.e. six months)
commercial support for Oracle JDK
for 5+ years for Java 11, 17, 23, etc.
(called Java SE Subscription;
prices)
⇝ No free LTS by Oracle.
How does Oracle handle bug/security/etc fixes?
usually developed on "master" (OpenJDK)
merged to current version’s "branch" (OpenJDK)
merged to current LTS version (Oracle JDK)
⇝ "LTS" means merging fixes
into old JDK versions.
Current discussions give hope:
free LTS for OpenJDK 11, 17, 23, etc.
by the community for 4+ years
built and shipped by Adopt OpenJDK
[L]et me assure you of one thing: whether by Oracle or Red Hat or someone else, JDK LTS releases will continue to be supported. We all have a lot invested in Java, and we won’t let it fall.
⇜ Get my book!
You can hire me:
training (Java 8-11, JUnit 5)
consulting (Java 8-11)