Struktur (Module) • Multi-Release Jars: Andere Klassen für Java 10 als Java 9 • REPL • Kleinere Sprachänderungen: • Private Methoden in Interfaces • Arm ohne Variable try(inputStream) {} • Diamond on anonymous class: List<String> x = new ArrayList<>() { …. }; • _ als Variablenname nicht mehr erlaubt https://de.slideshare.net/SimonRitter/55-new-features-in-jdk-9 29.09.2017 4 code.talks / Modularisierung (Rabea Gransberger @rgransberger)
Packages • Mehrere Versionen eines Moduls • Theoretisch möglich über Layer • Start/Stop/Replace von Modulen zur Laufzeit 29.09.2017 16 code.talks / Modularisierung (Rabea Gransberger @rgransberger)
um • Mission Control und FlightRecorder Open Source • Release März 2018 als 18.3 (Vorschlag 06.09.2017) • Folgende Feature Releases alle halbe Jahr: März / September • Update Releases: Jan, Apr, Jul, Okt • LTS Releases alle 3 Jahre ab September 2018 • https://mreinhold.org/blog/forward-faster • https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se 29.09.2017 17 code.talks / Modularisierung (Rabea Gransberger @rgransberger)
• Warnungen auf der Konsole beachten (-illegal-access Schalter) • Prüfen mit jdeps -jdkinternal • Beispiel Applikation läuft mit Java 9 ohne Modifikation • Classpath wird weiter genutzt als unnamed module 29.09.2017 44 code.talks / Modularisierung (Rabea Gransberger @rgransberger)
wieder • Klare Grenzen / Sicherheit: Public Klassen können versteckt sein • Einzelne Module können leicht ausgetauscht werden • Module Path robuster als Classpath • Runtime Fehler (NoClassDefFoundError) werden beim Start entdeckt, nicht beim Klassen nachladen. Bessere Fehlermeldungen: Modul fehlt, Export fehlt • Jar Hell: 2 Versionen eines Jars im Classpath • Bessere Tool Unterstützung: Welche Dependencies fehlen? • Kleinere Deployments • Bessere (Startup-) Performance 29.09.2017 68 code.talks / Modularisierung (Rabea Gransberger @rgransberger)