JUG GENOVA 21-09-2016 @ MANYDESIGNS JAVA 9 Alessio Stalla [email protected]• 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/)
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
• I moduli sono caricati a partire dal module path
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.
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)
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.
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
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…