際際滷

際際滷Share a Scribd company logo
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/)
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/
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
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
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 dellesistente
 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
 Lopinione 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
JUG GENOVA 21-09-2016 @ MANYDESIGNS
JAVA 9
 Other stuff
 jshell (Java REPL)
 VarHandles
 multi-release JARs
 jrt:// e jlink
 Deprecate le applet ;)
 altro

More Related Content

Similar to Java 9 by Alessio Stalla (16)

Groovy technology ecosystem
Groovy technology ecosystemGroovy technology ecosystem
Groovy technology ecosystem
Francesco Lerro
Scala: come recuperare la programmazione funzionale e perch辿
Scala: come recuperare la programmazione funzionale e perch辿Scala: come recuperare la programmazione funzionale e perch辿
Scala: come recuperare la programmazione funzionale e perch辿
Edmondo Porcu
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
Matteo Baccan
Java SE 5. Capitolo 01: Base
 Java SE 5. Capitolo 01: Base Java SE 5. Capitolo 01: Base
Java SE 5. Capitolo 01: Base
bobpuley
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
Alberto Brandolini
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: Aspectj
Matteo Baccan
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
Sinergia Totale
Struttin' on, novit in casa Struts
Struttin' on, novit in casa StrutsStruttin' on, novit in casa Struts
Struttin' on, novit in casa Struts
Marcello Teodori
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
Dominopoint - Italian Lotus User Group
Eclipse and Java
Eclipse and JavaEclipse and Java
Eclipse and Java
Felice Pescatore
Tile server
Tile serverTile server
Tile server
Federico Russo
Java sul tuo Mac
Java sul tuo MacJava sul tuo Mac
Java sul tuo Mac
Marcello Teodori
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Salvatore Laisa
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Appsterdam Milan
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
Luca Bianconi
Groovy technology ecosystem
Groovy technology ecosystemGroovy technology ecosystem
Groovy technology ecosystem
Francesco Lerro
Scala: come recuperare la programmazione funzionale e perch辿
Scala: come recuperare la programmazione funzionale e perch辿Scala: come recuperare la programmazione funzionale e perch辿
Scala: come recuperare la programmazione funzionale e perch辿
Edmondo Porcu
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
Matteo Baccan
Java SE 5. Capitolo 01: Base
 Java SE 5. Capitolo 01: Base Java SE 5. Capitolo 01: Base
Java SE 5. Capitolo 01: Base
bobpuley
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
Alberto Brandolini
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale
Webbit 2004: Aspectj
Webbit 2004: AspectjWebbit 2004: Aspectj
Webbit 2004: Aspectj
Matteo Baccan
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
Sinergia Totale
Struttin' on, novit in casa Struts
Struttin' on, novit in casa StrutsStruttin' on, novit in casa Struts
Struttin' on, novit in casa Struts
Marcello Teodori
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Salvatore Laisa
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Appsterdam Milan
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
Luca Bianconi

More from JUG Genova (10)

Lcds & Blaze Ds by Corneliu Creanga
Lcds & Blaze Ds by Corneliu CreangaLcds & Blaze Ds by Corneliu Creanga
Lcds & Blaze Ds by Corneliu Creanga
JUG Genova
Flex Air Intro
Flex Air IntroFlex Air Intro
Flex Air Intro
JUG Genova
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
JUG Genova
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef Arendsen
JUG Genova
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo RamassoServer Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
JUG Genova
Server Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
Server Day 2009: GlassFish 3 by Alexis Moussine-PouchkineServer Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
Server Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
JUG Genova
Server Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio SoldanoServer Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio Soldano
JUG Genova
Java IDE Day 2008 - Introduction by JUG Genova
Java IDE Day 2008 - Introduction by JUG GenovaJava IDE Day 2008 - Introduction by JUG Genova
Java IDE Day 2008 - Introduction by JUG Genova
JUG Genova
Java Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
Java Ide Day 2008 - Presentation on JDeveloper by Paolo RamassoJava Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
Java Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
JUG Genova
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav PechJava Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
JUG Genova
Lcds & Blaze Ds by Corneliu Creanga
Lcds & Blaze Ds by Corneliu CreangaLcds & Blaze Ds by Corneliu Creanga
Lcds & Blaze Ds by Corneliu Creanga
JUG Genova
Flex Air Intro
Flex Air IntroFlex Air Intro
Flex Air Intro
JUG Genova
LINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMsLINQ, Entities Framework & ORMs
LINQ, Entities Framework & ORMs
JUG Genova
Server Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef ArendsenServer Day 2009: Spring dm Server by Alef Arendsen
Server Day 2009: Spring dm Server by Alef Arendsen
JUG Genova
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo RamassoServer Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
Server Day 2009: Oracle/Bea Fusion Middleware by Paolo Ramasso
JUG Genova
Server Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
Server Day 2009: GlassFish 3 by Alexis Moussine-PouchkineServer Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
Server Day 2009: GlassFish 3 by Alexis Moussine-Pouchkine
JUG Genova
Server Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio SoldanoServer Day 2009: JBoss 5.0 by Alessio Soldano
Server Day 2009: JBoss 5.0 by Alessio Soldano
JUG Genova
Java IDE Day 2008 - Introduction by JUG Genova
Java IDE Day 2008 - Introduction by JUG GenovaJava IDE Day 2008 - Introduction by JUG Genova
Java IDE Day 2008 - Introduction by JUG Genova
JUG Genova
Java Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
Java Ide Day 2008 - Presentation on JDeveloper by Paolo RamassoJava Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
Java Ide Day 2008 - Presentation on JDeveloper by Paolo Ramasso
JUG Genova
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav PechJava Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
Java Ide Day 2008 - Presentation on Intelli J Idea by Vaclav Pech
JUG Genova

Java 9 by Alessio Stalla

  • 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 dellesistente 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 Lopinione 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