SlideShare a Scribd company logo
Java 9 / Jigsaw
Modularisation & more
Presenters
Simon Maple
@sjmaple
Mani Sarkar
@theNeomatrix369
Hendrik Ebbers
@hendrikebbers
Our guest
Heather VanCura
@heathervc
Agenda
- Session 1: Introduction
- What is meant by Modularisation in Java 9?
- Session 2: JLink
- Lunch break: lunch + 10/15 minute optional session
- Fundamentals and background
- JSRs / JEPs playing a role
- Modularisation of OpenJDK sources (JEP 201 and related JEPs)
- Modularisation of Runtime Images (JEP 220 and related JEPs)
- Modularisation of Java Packages and Application Packaging (JEP 275 and related JEPs)
- Feature distribution
- Why modularisation?
- So many more topics to cover!
- Visualise your dependencies!
- Session 3: Migrating non-modular app to Java 9 or JShell
- Feedback
- Contribution
- Resources
How to share your (live) feedback with us?
Discussion/technical corner, share your thoughts, code snippets,
issues, feedback with us while you code away...
https://goo.gl/oytFzX
We have left a few
issues for you to find,
investigate, solve, report
to us or the OpenJDK /
JDK9 team
Setup
Is everyone setup, and ready to go?
https://git.io/v9UJ8
You have this link via email / meetup message!
Session 1: Introduction: Java 9 modularisation
15 minutes
What is meant by Modularisation in Java 9?
JDK
module java.base
package java.io
class Console
...
package java.lang
class String
...
module java.logging
package java.util.logging
class FileHandler
class LogManager
...
module java.sql
package java.sql
class Connection
class SqlData
...
Java, the language: split into modules
modules...
packages...
classes...
What is meant by Modularisation in Java 9?
java.base
java.sql
other
modules...
java.logging
Java, the language: dependency graph
java.xml
implicit implicit
explicit
(requires)
explicit
(requires)
implicit
JDK
What is meant by Modularisation in Java 9?
Java, the language: dependency graph
java.base
java.sql
other
modules...
java.logging java.xml
implicit implicit
explicit
(requires)
explicit
(requires)
implicit
JDK
Our Java
applications
explicit
(requires)
explicit
implicit
What is meant by Modularisation in Java 9?
Pre-Java 9
Java 9/Jigsaw
src/main/java
package a.b.c
class p
class q
package m.n.o
class s
class t
src/main/java
module a.b.c
package a.b.c
class p
class q
module m.n.o
package m.n.o
class s
class t
Structure of
a typical
Java app.
containing
packages...
Create your own
modules
containing
packages, classes...
What is meant by Modularisation in Java 9?
Typical package structure Modules contain packages
Credits to Paul Bakker & Sander Mak
package books.api.entities
classes
package bookstore.api.service
What is looks like from the file system?
What is meant by Modularisation in Java 9?
Typical package structure Modules contain packages
Credits to Paul Bakker & Sander Mak
contains module
visibility
(readability) &
dependency info
module books.api contains
package books.api.entities
package books.api.service
modules
What is looks like from the file system?
What is meant by Modularisation in Java 9?
module com.abc {
requires com.abc.pqr;
requires transitive com.xyz.abc;
exports com.abc.def.alpha;
exports com.abc.pqr.beta to
com.ijk.mno,
com.lmn.stu;
uses java.network.Driver;
provides java.sql.Driver with com.mno.def.Driver;
}
module
definition
defines dependencies of module, to modules
com.abc.pqr & com.xyz.abc
transitive keyword defines
implicit dependency
module name
How is module dependencies are defined in Java 9?
module-info.java
What is meant by Modularisation in Java 9?
module com.abc {
requires com.abc.pqr;
requires transitive com.xyz.abc;
exports com.abc.def.alpha;
exports com.abc.pqr.beta to
com.ijk.mno,
com.lmn.stu;
uses java.network.Driver;
provides java.sql.Driver with com.mno.def.Driver;
}
module
definition
make all & only public types in specified
packages available to other modules
How is module dependencies are defined in Java 9?
module name
… or make available
to specified modules
module-info.java
What is meant by Modularisation in Java 9?
module com.abc {
requires com.abc.pqr;
requires transitive com.xyz.abc;
exports com.abc.def.alpha;
exports com.abc.pqr.beta to
com.ijk.mno,
com.lmn.stu;
uses java.network.Driver;
provides java.sql.Driver with com.mno.def.Driver;
}
module-info.java
module
definition
this module publishes
a service provider
this module uses a service provider
published by another module
module name
How is module dependencies are defined in Java 9?
Session 1: Hands-on: Java 9 modularisation
60 minutes
https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-1-jigsaw-intro
Session 1: feedback
15 minutes
https://goo.gl/oytFzX
Lunch break
60 minutes
Short 10/15 minutes covering intro/background/fundamentals (talk while having a bite of food and drink)
What is meant by Modularisation in Java 9?
A bit of fundamentals and background before we get to the answer
What is meant by Modularisation in Java 9?
modularisation
Pre-Java 9 Java 9
Anomalies
OpenJDK& JDK
What is meant by Modularisation in Java 9?
How we perceive the JDK/JRE from a developer’s / end-user’s perspective?
JDK or
JRE
IBM
Other
vendors
Oracle download
Create
Client
Apps
distribute
Client
Apps +
bundle
JRE
What is meant by Modularisation in Java 9?
How the maintainers of Java perceive it?
Distribute
built apps
+ bundle
JDK
IBM
Other
vendors
Oracle build downloadOpenJDK JDK
What is meant by Modularisation in Java 9?
Modularisation of OpenJDK sources (JEP 201 and related JEPs)
Binary
compatible
JDK
re-organise rebuild
OpenJDK
source
Refactored
OpenJDK
source
Repository
JDK
re-organise
Improved layout of
source folders in
the JDK repository
What is meant by Modularisation in Java 9?
Modularisation of Runtime Images (JEP 220 and related JEPs)
Binary
compatible
JDK
re-organise rebuild
Runtime
JDK
Optimised
(modular)
JDK
Runtime
Traditional
Runtime JDK
Image
re-organise
A more compact
Runtime JDK Image
What is meant by Modularisation in Java 9?
Modularisation of Java Packages and Application Packaging (JEP 275 and related JEPs)
Modular Java 9
application +
custom JDK
compiles creates
Modularised
JDK Runtime
Modular
Java 9
source
JLink Smaller JDK footprint
Java 9
applicationcompiles creates
Modularised
JDK Runtime
Non-modular
Java 9 source
Binary compatible
creates
What is meant by Modularisation in Java 9?
JSR 376: Java Platform Module System played the primary role
http://openjdk.java.net/projects/jigsaw/spec/
What is meant by Modularisation in Java 9?
JEPs that lead to all the new features in Java 9 (including
Jigsaw):
- 200: The Modular JDK
- 201: Modular Source Code
- 220: Modular Run-Time Images (depends on JEP 162)
- 260: Encapsulate Most Internal APIs (no dependencies)
- 261: Module System (dependens on JEP 220, related to JEP 238)
- 282: jlink: The Java Linker (replaces implementation of JEP 220)
- 275: Modular Java Application Packaging
- 222: jshell: The Java Shell (Read-Eval-Print Loop)
- 193: Variable Handles
- 110: HTTP 2 Client
- 238: Multi-Release JAR Files
- 158: Unified JVM Logging
- G1 related JEPs (3)
- JEPs related to a number of security improvements
- JEPs related to a number of platform improvements
- >>> Many, many more JEPs, see the Java 9 JEPs list for further details <<<
What is meant by Modularisation in Java 9?
JDK 9& Jigsaw feature distribution
...
Other
JDK 9
features
Jigsaw
...
...
...
... ... ... ...
...
...
...
...
...
...
...
...
Why Modularisation in Java 9?
But, why?
It’s been worked on for about a decade:
- Encapsulation (hiding away what’s not intended or necessary for public use)
- JDK internal APIs (sun.misc.unsafe, security, etc…)
- Our APIs
- Decluttering of code bases (loose coupling & high cohesion)
- OpenJDK sources
- JDK sources
- Our Java App sources (post migration and refactoring)
- Customised runtime JDK (smaller footprint)
- Highly desirable for IoT, arduino/embedded devices, etc…
- Improve distribution and runtime performance
- OSGi has it, why not in native Java?
- Any more?
Why Modularisation in Java 9?
Not everything can be covered but let’s find out about these topics:
- open module
- open package
- named and unnamed modules
- difference between classpath and module path
- automatic module names
- kill switch (remove Jigsaw restrictions)
- a CLI flag passed to java: java --permit-illegal-access …
- Jlink CLI option: --launcher
- and many more topics...
So many things to cover!
https://github.com/accso/java9-jigsaw-depvis
Visualise your dependencies!
Session 2: Introduction: JLink
10 minutes
Session 2: Introduction: JLink
Create a package
distributable, that
runs on any platform,
but needs a platform
specific JDK
JDK (javac)
Your App
packages
& classes
Your App
package
(distributable)
JVM, the
Platform
Java, the
language
(packages &
classes)
Any JRE/JDK
compiles
creates
Pre-Java 9
depends on (needs), to run
Session 2: Introduction: JLink
JDK
modules
JLink
JVM, the
Platform
Java, the
language (JDK
modules)
Your App
modules
Create standalone
distributable (smaller
footprint), that runs
on a specific platform
Your App
modules
JDK compiles
creates
Java 9
Session 2: Hands-on: JLink
40 minutes
https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-2-jlink
Session 2: feedback
10 minutes
https://goo.gl/oytFzX
Session 3: Introduction: Migration or JShell
15 minutes
Session 3: Introduction: Migration or JShell
Hendrik Ebbers
@hendrikebbers
Over to
Hendrik
Session 3 hands-on: Migration or JShell
60 minutes
https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-3-jshell
Session 3 & overall: feedback
15-30 minutes
https://goo.gl/oytFzX
Contribute
Don’t like something or like something a lot,
want to contribute to make things better?
https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/content/en/how-to-navigate/how_to_contribute_to_adopt_openjdk_and_openjdk.html
Feedback
We value your feedback, make Java better
with your constructive feedback
https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/content/en/feedback.htm
l
Resources
Want to know about the other features of Java 9:
https://github.com/AdoptOpenJDK/jdk9-jigsaw/blob/master/Java-9-Resources.md
Thank you to all
Thank you for your continued support
9
@virtualJug
@ljcjug
@hackthetower
@adoptopenjdk
@openjdk
@jcp_org
@java

More Related Content

PDF
Java 9 / Jigsaw - AJUG/VJUG session
PDF
JCP & The Future of Java
PDF
Migrating Speedment to Java 9
PDF
Java interview questions
PDF
Java SE 9 modules (JPMS) - an introduction
PDF
Bea weblogic job_interview_preparation_guide
PPTX
Java EE 7 for Real Enterprise Systems
PDF
Oracle History #5
Java 9 / Jigsaw - AJUG/VJUG session
JCP & The Future of Java
Migrating Speedment to Java 9
Java interview questions
Java SE 9 modules (JPMS) - an introduction
Bea weblogic job_interview_preparation_guide
Java EE 7 for Real Enterprise Systems
Oracle History #5

What's hot (20)

PPTX
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
PDF
Introducing Java 7
PPTX
Future of Java EE with Java SE 8
PDF
Java one 2015 [con3339]
PDF
Java EE 6 workshop at Dallas Tech Fest 2011
DOCX
Hibernate3 q&a
PDF
Sun Java EE 6 Overview
PPTX
Technical Interview
PDF
Java j2ee interview_questions
PDF
The State of Java under Oracle at JCertif 2011
PDF
Java 7 workshop
DOCX
Java Tutorial to Learn Java Programming
PPTX
An introduction to Java 9 & Its Features
PDF
Java EE6 CodeCamp16 oct 2010
DOCX
Java questions with answers
PPT
Java & J2EE Struts with Hibernate Framework
PDF
Core java introduction
PPT
Java interview-questions-and-answers
PDF
Java EE 6 Component Model Explained
DOCX
Java J2EE Complete Syllabus Checklist
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
Introducing Java 7
Future of Java EE with Java SE 8
Java one 2015 [con3339]
Java EE 6 workshop at Dallas Tech Fest 2011
Hibernate3 q&a
Sun Java EE 6 Overview
Technical Interview
Java j2ee interview_questions
The State of Java under Oracle at JCertif 2011
Java 7 workshop
Java Tutorial to Learn Java Programming
An introduction to Java 9 & Its Features
Java EE6 CodeCamp16 oct 2010
Java questions with answers
Java & J2EE Struts with Hibernate Framework
Core java introduction
Java interview-questions-and-answers
Java EE 6 Component Model Explained
Java J2EE Complete Syllabus Checklist

Similar to Java 9 / Jigsaw - LJC / VJUG session (hackday session) (20)

PPTX
Java 9 Modularity and Project Jigsaw
PPTX
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
PDF
Java 9 and Beyond
PDF
A Journey through the JDKs (Java 9 to Java 11)
PPTX
Java 9 Module System Introduction
PDF
Java 9 modularity+
PDF
What's new in java 9?
PPTX
What’s expected in Java 9
PPTX
Java 9
PDF
Haj 4344-java se 9 and the application server-1
PPTX
Real World Java 9 - JetBrains Webinar
PDF
Real World Java 9
PDF
Java 9, JShell, and Modularity
PDF
JavaOne 2016: Life after Modularity
PPTX
Java modules using project jigsaw@jdk 9
PDF
How can your applications benefit from Java 9?
PDF
Java 9 Modularity in Action
PDF
What we can expect from Java 9 by Ivan Krylov
PDF
Java 9 preview
PDF
OSGi and Java 9+
Java 9 Modularity and Project Jigsaw
Java 9: Deep Dive into Modularity and Dealing with Migration Issues
Java 9 and Beyond
A Journey through the JDKs (Java 9 to Java 11)
Java 9 Module System Introduction
Java 9 modularity+
What's new in java 9?
What’s expected in Java 9
Java 9
Haj 4344-java se 9 and the application server-1
Real World Java 9 - JetBrains Webinar
Real World Java 9
Java 9, JShell, and Modularity
JavaOne 2016: Life after Modularity
Java modules using project jigsaw@jdk 9
How can your applications benefit from Java 9?
Java 9 Modularity in Action
What we can expect from Java 9 by Ivan Krylov
Java 9 preview
OSGi and Java 9+

More from Mani Sarkar (18)

PDF
How to contribute to Adopt OpenJDK?
PDF
Cli in the browser
PDF
Theory of constraints
PDF
Kanban kata
PDF
Refactoring developer habits
PDF
Essential technical skills
PDF
How is Java / JVM built ? Back then and now...
PDF
How is Java / JVM built ? Adopt OpenJDK is your answer !
PDF
Adopt OpenJDK the past, the present & the future
PDF
Adopt OpenJDK presentation (slide deck)
PDF
Adopt OpenJDK, Betterrev blind ignite presentation
PDF
Fosdem2014 fromwebrevtobetterrevbryantsarkar-140203131215-phpapp02
PPTX
Java2 days 2013-lambda
PPTX
Ljc conf open jdk betterrev bof
PPTX
Sonar qube to impove code quality
PPTX
Java2 days 2013-j-treg
PDF
History of java
PDF
Leaning on the two Ts
How to contribute to Adopt OpenJDK?
Cli in the browser
Theory of constraints
Kanban kata
Refactoring developer habits
Essential technical skills
How is Java / JVM built ? Back then and now...
How is Java / JVM built ? Adopt OpenJDK is your answer !
Adopt OpenJDK the past, the present & the future
Adopt OpenJDK presentation (slide deck)
Adopt OpenJDK, Betterrev blind ignite presentation
Fosdem2014 fromwebrevtobetterrevbryantsarkar-140203131215-phpapp02
Java2 days 2013-lambda
Ljc conf open jdk betterrev bof
Sonar qube to impove code quality
Java2 days 2013-j-treg
History of java
Leaning on the two Ts

Recently uploaded (20)

PDF
Softaken Excel to vCard Converter Software.pdf
PDF
AI in Product Development-omnex systems
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Nekopoi APK 2025 free lastest update
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
medical staffing services at VALiNTRY
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
history of c programming in notes for students .pptx
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Understanding Forklifts - TECH EHS Solution
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
L1 - Introduction to python Backend.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
ai tools demonstartion for schools and inter college
Softaken Excel to vCard Converter Software.pdf
AI in Product Development-omnex systems
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
Operating system designcfffgfgggggggvggggggggg
Nekopoi APK 2025 free lastest update
Design an Analysis of Algorithms II-SECS-1021-03
medical staffing services at VALiNTRY
VVF-Customer-Presentation2025-Ver1.9.pptx
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
history of c programming in notes for students .pptx
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Understanding Forklifts - TECH EHS Solution
wealthsignaloriginal-com-DS-text-... (1).pdf
PTS Company Brochure 2025 (1).pdf.......
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
L1 - Introduction to python Backend.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
ai tools demonstartion for schools and inter college

Java 9 / Jigsaw - LJC / VJUG session (hackday session)

  • 1. Java 9 / Jigsaw Modularisation & more
  • 4. Agenda - Session 1: Introduction - What is meant by Modularisation in Java 9? - Session 2: JLink - Lunch break: lunch + 10/15 minute optional session - Fundamentals and background - JSRs / JEPs playing a role - Modularisation of OpenJDK sources (JEP 201 and related JEPs) - Modularisation of Runtime Images (JEP 220 and related JEPs) - Modularisation of Java Packages and Application Packaging (JEP 275 and related JEPs) - Feature distribution - Why modularisation? - So many more topics to cover! - Visualise your dependencies! - Session 3: Migrating non-modular app to Java 9 or JShell - Feedback - Contribution - Resources
  • 5. How to share your (live) feedback with us? Discussion/technical corner, share your thoughts, code snippets, issues, feedback with us while you code away... https://goo.gl/oytFzX We have left a few issues for you to find, investigate, solve, report to us or the OpenJDK / JDK9 team
  • 6. Setup Is everyone setup, and ready to go? https://git.io/v9UJ8 You have this link via email / meetup message!
  • 7. Session 1: Introduction: Java 9 modularisation 15 minutes
  • 8. What is meant by Modularisation in Java 9? JDK module java.base package java.io class Console ... package java.lang class String ... module java.logging package java.util.logging class FileHandler class LogManager ... module java.sql package java.sql class Connection class SqlData ... Java, the language: split into modules modules... packages... classes...
  • 9. What is meant by Modularisation in Java 9? java.base java.sql other modules... java.logging Java, the language: dependency graph java.xml implicit implicit explicit (requires) explicit (requires) implicit JDK
  • 10. What is meant by Modularisation in Java 9? Java, the language: dependency graph java.base java.sql other modules... java.logging java.xml implicit implicit explicit (requires) explicit (requires) implicit JDK Our Java applications explicit (requires) explicit implicit
  • 11. What is meant by Modularisation in Java 9? Pre-Java 9 Java 9/Jigsaw src/main/java package a.b.c class p class q package m.n.o class s class t src/main/java module a.b.c package a.b.c class p class q module m.n.o package m.n.o class s class t Structure of a typical Java app. containing packages... Create your own modules containing packages, classes...
  • 12. What is meant by Modularisation in Java 9? Typical package structure Modules contain packages Credits to Paul Bakker & Sander Mak package books.api.entities classes package bookstore.api.service What is looks like from the file system?
  • 13. What is meant by Modularisation in Java 9? Typical package structure Modules contain packages Credits to Paul Bakker & Sander Mak contains module visibility (readability) & dependency info module books.api contains package books.api.entities package books.api.service modules What is looks like from the file system?
  • 14. What is meant by Modularisation in Java 9? module com.abc { requires com.abc.pqr; requires transitive com.xyz.abc; exports com.abc.def.alpha; exports com.abc.pqr.beta to com.ijk.mno, com.lmn.stu; uses java.network.Driver; provides java.sql.Driver with com.mno.def.Driver; } module definition defines dependencies of module, to modules com.abc.pqr & com.xyz.abc transitive keyword defines implicit dependency module name How is module dependencies are defined in Java 9? module-info.java
  • 15. What is meant by Modularisation in Java 9? module com.abc { requires com.abc.pqr; requires transitive com.xyz.abc; exports com.abc.def.alpha; exports com.abc.pqr.beta to com.ijk.mno, com.lmn.stu; uses java.network.Driver; provides java.sql.Driver with com.mno.def.Driver; } module definition make all & only public types in specified packages available to other modules How is module dependencies are defined in Java 9? module name … or make available to specified modules module-info.java
  • 16. What is meant by Modularisation in Java 9? module com.abc { requires com.abc.pqr; requires transitive com.xyz.abc; exports com.abc.def.alpha; exports com.abc.pqr.beta to com.ijk.mno, com.lmn.stu; uses java.network.Driver; provides java.sql.Driver with com.mno.def.Driver; } module-info.java module definition this module publishes a service provider this module uses a service provider published by another module module name How is module dependencies are defined in Java 9?
  • 17. Session 1: Hands-on: Java 9 modularisation 60 minutes https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-1-jigsaw-intro
  • 18. Session 1: feedback 15 minutes https://goo.gl/oytFzX
  • 19. Lunch break 60 minutes Short 10/15 minutes covering intro/background/fundamentals (talk while having a bite of food and drink)
  • 20. What is meant by Modularisation in Java 9? A bit of fundamentals and background before we get to the answer
  • 21. What is meant by Modularisation in Java 9? modularisation Pre-Java 9 Java 9 Anomalies OpenJDK& JDK
  • 22. What is meant by Modularisation in Java 9? How we perceive the JDK/JRE from a developer’s / end-user’s perspective? JDK or JRE IBM Other vendors Oracle download Create Client Apps distribute Client Apps + bundle JRE
  • 23. What is meant by Modularisation in Java 9? How the maintainers of Java perceive it? Distribute built apps + bundle JDK IBM Other vendors Oracle build downloadOpenJDK JDK
  • 24. What is meant by Modularisation in Java 9? Modularisation of OpenJDK sources (JEP 201 and related JEPs) Binary compatible JDK re-organise rebuild OpenJDK source Refactored OpenJDK source Repository JDK re-organise Improved layout of source folders in the JDK repository
  • 25. What is meant by Modularisation in Java 9? Modularisation of Runtime Images (JEP 220 and related JEPs) Binary compatible JDK re-organise rebuild Runtime JDK Optimised (modular) JDK Runtime Traditional Runtime JDK Image re-organise A more compact Runtime JDK Image
  • 26. What is meant by Modularisation in Java 9? Modularisation of Java Packages and Application Packaging (JEP 275 and related JEPs) Modular Java 9 application + custom JDK compiles creates Modularised JDK Runtime Modular Java 9 source JLink Smaller JDK footprint Java 9 applicationcompiles creates Modularised JDK Runtime Non-modular Java 9 source Binary compatible creates
  • 27. What is meant by Modularisation in Java 9? JSR 376: Java Platform Module System played the primary role http://openjdk.java.net/projects/jigsaw/spec/
  • 28. What is meant by Modularisation in Java 9? JEPs that lead to all the new features in Java 9 (including Jigsaw): - 200: The Modular JDK - 201: Modular Source Code - 220: Modular Run-Time Images (depends on JEP 162) - 260: Encapsulate Most Internal APIs (no dependencies) - 261: Module System (dependens on JEP 220, related to JEP 238) - 282: jlink: The Java Linker (replaces implementation of JEP 220) - 275: Modular Java Application Packaging - 222: jshell: The Java Shell (Read-Eval-Print Loop) - 193: Variable Handles - 110: HTTP 2 Client - 238: Multi-Release JAR Files - 158: Unified JVM Logging - G1 related JEPs (3) - JEPs related to a number of security improvements - JEPs related to a number of platform improvements - >>> Many, many more JEPs, see the Java 9 JEPs list for further details <<<
  • 29. What is meant by Modularisation in Java 9? JDK 9& Jigsaw feature distribution ... Other JDK 9 features Jigsaw ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
  • 30. Why Modularisation in Java 9? But, why?
  • 31. It’s been worked on for about a decade: - Encapsulation (hiding away what’s not intended or necessary for public use) - JDK internal APIs (sun.misc.unsafe, security, etc…) - Our APIs - Decluttering of code bases (loose coupling & high cohesion) - OpenJDK sources - JDK sources - Our Java App sources (post migration and refactoring) - Customised runtime JDK (smaller footprint) - Highly desirable for IoT, arduino/embedded devices, etc… - Improve distribution and runtime performance - OSGi has it, why not in native Java? - Any more? Why Modularisation in Java 9?
  • 32. Not everything can be covered but let’s find out about these topics: - open module - open package - named and unnamed modules - difference between classpath and module path - automatic module names - kill switch (remove Jigsaw restrictions) - a CLI flag passed to java: java --permit-illegal-access … - Jlink CLI option: --launcher - and many more topics... So many things to cover!
  • 34. Session 2: Introduction: JLink 10 minutes
  • 35. Session 2: Introduction: JLink Create a package distributable, that runs on any platform, but needs a platform specific JDK JDK (javac) Your App packages & classes Your App package (distributable) JVM, the Platform Java, the language (packages & classes) Any JRE/JDK compiles creates Pre-Java 9 depends on (needs), to run
  • 36. Session 2: Introduction: JLink JDK modules JLink JVM, the Platform Java, the language (JDK modules) Your App modules Create standalone distributable (smaller footprint), that runs on a specific platform Your App modules JDK compiles creates Java 9
  • 37. Session 2: Hands-on: JLink 40 minutes https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-2-jlink
  • 38. Session 2: feedback 10 minutes https://goo.gl/oytFzX
  • 39. Session 3: Introduction: Migration or JShell 15 minutes
  • 40. Session 3: Introduction: Migration or JShell Hendrik Ebbers @hendrikebbers Over to Hendrik
  • 41. Session 3 hands-on: Migration or JShell 60 minutes https://github.com/AdoptOpenJDK/jdk9-jigsaw/tree/master/session-3-jshell
  • 42. Session 3 & overall: feedback 15-30 minutes https://goo.gl/oytFzX
  • 43. Contribute Don’t like something or like something a lot, want to contribute to make things better? https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/content/en/how-to-navigate/how_to_contribute_to_adopt_openjdk_and_openjdk.html
  • 44. Feedback We value your feedback, make Java better with your constructive feedback https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/content/en/feedback.htm l
  • 45. Resources Want to know about the other features of Java 9: https://github.com/AdoptOpenJDK/jdk9-jigsaw/blob/master/Java-9-Resources.md
  • 46. Thank you to all Thank you for your continued support 9 @virtualJug @ljcjug @hackthetower @adoptopenjdk @openjdk @jcp_org @java