Java 9 by Alessio Stalla

50 %
50 %
Information about Java 9 by Alessio Stalla

Published on September 26, 2016

Author: juggenova

Source: slideshare.net

1. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 Alessio Stalla alessio.stalla@manydesigns.com • http://openjdk.java.net/projects/jdk9/ pagina del progetto con: • Lista delle JEP (JDK Enhancement Proposals) di Java 9 • Roadmap • Mailing list • Binari di prova (per Jigsaw: https://jdk9.java.net/jigsaw/)

2. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • Jigsaw • modularizzazione della JDK • modularizzazione opzionale del codice utente • percorso di migrazione da classpath a module path • http://openjdk.java.net/projects/jigsaw/spec/sotms/ • http://openjdk.java.net/projects/jigsaw/spec/issues/

3. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • A module is a named, self-describing collection of code and data. • Il codice è organizzato in package contenenti classi… • I dati sono le resources… • …nulla di nuovo sotto il sole. • Un modulo è dichiarato in module-info.java • e compilato in module-info.class • notare named ma non versioned

4. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • I moduli hanno dipendenze da altri moduli • module com.foo.bar { requires org.apache.stuff; } • I moduli possono esportare codice (package) • module x { exports com.foo.pkg; } • I tipi esportati sono solo quelli pubblici • Un package può stare in un solo modulo • I moduli sono caricati a partire dal module path

5. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • I moduli danno luogo ad artefatti • JAR modulari (module-info.class) • “JMOD” files (interni alla JDK, con codice nativo ecc.) • moduli espansi in directory.

6. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • Alcune considerazioni più avanzate • implied readability (requires public) • ServiceLoader (uses, provides) - ad es. JDBC, Postgres driver • Reflection permessa su tipi pubblici (esportati) • qualified exports (export x to y) • Layers • Class loaders (in particolare platform)

7. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • Il grande mostro: compatibilità e migrazione dell’esistente • Unnamed module (in realtà uno per classloader) che tutto legge e tutto esporta (ma non è accessibile dai named modules) • Automatic modules JAR vecchio stile piazzati nel module path che danno luogo a moduli sintetici. Analogamente leggono ed esportano tutto e hanno implied readability.

8. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • Report dalla mailing list del progetto Jigsaw: • Gran confusione!!! • Il feature freeze della JDK 9 era previsto per marzo ma ancora si stanno discutendo e modificando aspetti chiave quali la reflection (weak modules) • Critiche e richieste da Stephen Colebourne (Joda Time), persone di RedHat (JBoss), Jochen Theodorou (Groovy) ecc. • I maggiori tool (Maven, Gradle) e linguaggi (Groovy, Nashorn) hanno dovuto subire pesanti adattamenti e non tutto funziona

9. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • L’opinione di Alessio: ennesimo aumento di complessità e stranezze • “public is not public” • setAccessible: boh? • Java EE vs Java SE? • Bootstrap/Platform/Extension class loader? • Anche se avendo seguito la discussione siamo ad un compromesso molto più accettabile di qualche mese fa…

10. JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 • Other stuff • jshell (Java REPL) • VarHandles • multi-release JARs • jrt:// e jlink • Deprecate le applet ;) • altro…

Add a comment