The future of Java
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
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
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.
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.
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
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
The future of Java: OracleJDK vs OpenJDK
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
The future of Java - Java 10 18.3
New features:
● Feature 1: var x = 10;
● Feature 2: nop
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());
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
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.
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>();
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
The future of Java: Default Impl
public class Point {
Int x, y;
}
Field based
getters and setters
equals()
hashCode()
toString()
constructor
remember lombok?
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
Thank you!
luanmalaguti@gmail.com
www.linkedin.com/in/luanmalaguti
Luan Malaguti Reffatti
Java Developer

The future of Java

  • 1.
  • 2.
    The future ofJava - ● 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 ofJava - 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 ofJava - ● 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 ofJava - 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 ofJava - Applets ● Java Applet deprecated on Java 9 ● Java Web Start and JNLP also deprecated ● Completely removed in Java 11 and later
  • 7.
    The future ofJava: 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
  • 8.
    The future ofJava: OracleJDK vs OpenJDK
  • 9.
    The future ofJava - 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 ofJava - Java 10 18.3 New features: ● Feature 1: var x = 10; ● Feature 2: nop
  • 11.
    The future ofJava - 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 ofJava - 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. AlignJVM 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 Javahas: ● 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 Theidea: 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 ofJava: Default Impl public class Point { Int x, y; } Field based getters and setters equals() hashCode() toString() constructor remember lombok?
  • 17.
    Conclusions Java continues movingforward 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
  • 18.