The future of Java will include more frequent releases every 6 months, moving Java EE to the Eclipse Foundation and renaming it to Jakarta EE, decoupling JavaFX and deprecating applets. Project Valhalla aims to improve generics and add value types. Default methods will generate common implementations like getters/setters. While OracleJDK will remain commercial, OpenJDK will be the open source reference implementation updated every 6 months.
2. The future of Java -
● Oracle is moving Java EE to Eclipse Foundation
● Java EE 8 is the last one provided by Oracle
● The project will be renamed to Jakarta EE
3. The future of Java -
The Java EE Guardians was formed in 2016 to protect and evangelize the
platform when Oracle appeared to lose focus on Java EE 8 progress.
https://javaee-guardians.io
4. The future of Java -
● Oracle is decoupling JavaFX from the JDK
● Removed from Java 11
● New name: OpenJFX community
● Commercial support for JavaFX in the Oracle JDK 8 through at least 2022.
5. The future of Java - Swing and AWT
● Oracle will continue developing Swing and AWT in Java SE 8 and Java SE 11
● This means they will be supported by Oracle through at least 2026.
6. The future of Java - Applets
● Java Applet deprecated on Java 9
● Java Web Start and JNLP also deprecated
● Completely removed in Java 11 and later
7. The future of Java: Release train scheme
● No features will be promised for scheduled releases
● A new “major” Java version every six months!
● Small but continuous delivery
● Release semantic discussion:
$YEAR.$MONTH -> 18.3, 18.9, 19.1, 19.9...LTS
Incremental -> 10, 11, 13, 14...GPL
9. The future of Java - OracleJDK vs OpenJDK
No Free Java LTS Version?
That’s right, Oracle will no longer be providing free long-term support
OracleJDK LTS: every 3 years, public updates for 3 years
OpenJDK GPL: every 6 months release, updates for 6 months
● Binaries available under GPLv2 with CPE
● No more 32-bit binaries
● No more ARM binaries
● Windows, Linux, Mac and Solaris SPARC only All 64-bit
10. The future of Java - Java 10 18.3
New features:
● Feature 1: var x = 10;
● Feature 2: nop
11. The future of Java - Java 10 18.3
Java 1
Vector names = new Vector();
Java 10
var name = “Mark”;
var users = new ArrayList<User>();
The compiler uses the initializer’s type
name.trim();
users.add(new User());
12. The future of Java - Java 10 18.3
Lombok
val names = new ArrayList<String>();
Java 10
var names = new ArrayList<String>();
Lombok has also another cool features:
@Value produces getter and setters
@Builder produces complex builder APIs for your classes
13. Project Valhalla
Goals
1. Align JVM memory layout behavior with the cost model of modern hardware;
2. Extend generics to allow abstraction over all types, including primitives, values, and even void;
3. Enable existing libraries -- especially the JDK -- to compatibly evolve to fully take advantage of
these features.
Project Valhalla is an experimental OpenJDK project to develop major new
language features for Java 10 and beyond led by Brian Gotz.
14. Project Valhalla: Generics
Java has:
● Primitives: for performance
● Objects: for encapsulation, polymorphism, inheritance, OO
The problem is: where we want to use primitives but can't :(
Generics: new ArrayList<int>();
15. Project Valhalla: Generics
The idea:
new ArrayList<int>();
Value types
"Codes like a class, works like a primitive"
● Can have methods and fields –
● Can implement interfaces
● Can use encapsulation
● Can be generic
16. The future of Java: Default Impl
public class Point {
Int x, y;
}
Field based
getters and setters
equals()
hashCode()
toString()
constructor
remember lombok?
17. Conclusions
Java continues moving forward
Faster releases
Lots of ideas coming to improve Java
(value types, lighter JVM, better type interface...)
Use Lombok to make it easy to update to Java X and beyond