advanced modular development...#javaone #jigsaw copyright © 2016, oracle and/or its affiliates. all...

52
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | Advanced Modular Development Alan Bateman Alex Buckley Java Platform Group, Oracle September 2016

Upload: others

Post on 20-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Advanced Modular Development

Alan Bateman Alex Buckley JavaPlatformGroup,OracleSeptember2016

Page 2: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |#JavaOne#Jigsaw

Sessions

Prepare for JDK 9

Introduction to Modular Development

Advanced Modular Development

Modules and Services

Project Jigsaw: Under The Hood

1

3

2

1

2

4

5

Page 3: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

ApplicationMigration

3

Page 4: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Typicalapplication

4

JAR JAR

JAR

JAR JAR

JARJAR

JAR

JARJAR JAR

JAR

JDK

JARJAR

JAR

JAR

JAR

JAR

JAR

JARJAR

Page 5: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Typicalapplication

5

JAR JAR

JAR

JAR

JAR

JARJAR JAR

JARJAR

JAR

JAR

JAR

JAR

JAR

JARJAR

modulejava.base

modulejava.logging

modulejava.sql

modulejava.xml

JAR

JAR

JAR

JAR

JAR

Page 6: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 6

jackson-databind-2.6.2.jar

myapp.jar

modulejava.base

modulejava.logging

mylib.jar

modulejava.xml

modulejava.sql

jackson-annotations-2.6.2.jar

jackson-core-2.6.2.jar

SampleScenario

Page 7: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 7

$ java -cp \ lib/myapp.jar:\ lib/mylib.jar:\ lib/jackson-core-2.6.2.jar:\ lib/jackson-databind-2.6.2.jar:\ lib/jackson-annotations-2.6.2.jar\ myapp.Main

Runningmyapplication

Page 8: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 8

jackson-databind-2.6.2.jar

modulemyapp

modulemylib

jackson-annotations-2.6.2.jar

jackson-core-2.6.2.jar

Migratingfromthetopdown

modulejava.base

modulejava.logging

modulejava.xml

modulejava.sql

Page 9: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Migratingfromthetopdown

• modulemyapprequires?

• modulemyappexports?

• modulemylibrequires?

• modulemylibexports?

9

Page 10: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 10

$ jdeps -s lib/myapp.jar lib/mylib.jarmyapp.jar -> lib/jackson-core-2.6.2.jarmyapp.jar -> lib/jackson-databind-2.6.2.jarmyapp.jar -> mylib.jarmyapp.jar -> java.basemyapp.jar -> java.sqlmylib.jar -> java.base

Page 11: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 11

// src/mylib/module-info.javamodule mylib { requires java.base; exports com.myapp.lib.util to myapp;}

Page 12: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 12

// src/myapp/module-info.javamodule myapp { requires mylib; requires java.base; requires java.sql; ??? requires jackson.core ??? ??? requires jackson.databind ???}

Page 13: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 13

Ifonly…

jackson-databind-2.6.2.jar

jackson-core-2.6.2.jar

jackson-annotations-2.6.2.jar

modulejackson.core

modulejackson.databind

modulejackson.annotations

Page 14: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 14

// src/myapp/module-info.javamodule myapp { requires mylib; requires java.base; requires java.sql; requires jackson.core; requires jackson.databind;}

Page 15: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 15

modulejackson.databind

modulemyapp

modulejava.base

modulejava.logging

modulemylib

modulejava.xml

modulejava.sql

modulejackson.annotations

modulejackson.core

Page 16: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Automaticmodules

• “Real”modules

• Nochangestosomeoneelse’sJARfile:-)

• ModulenamederivedfromJARfilename

• Exportsallitspackages• Requiresallothermodules

16

Page 17: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 17

modulemyapp

modulemylib

modulejackson.databind

modulejackson.annotations

modulejackson.core

modulejava.xml

modulejava.sql

modulejava.logging

modulejava.base

Page 18: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 18

modulemyapp

modulemylib

modulejackson.databind

import com.fasterxml.jackson.databind.ObjectMapper;...ObjectMapper mapper = new ObjectMapper();MyValue value = mapper.readValue("{\"name\":\"Bob\", \"age\":13}", MyValue.class);

Page 19: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 19

// src/myapp/module-info.javaweak module myapp { requires mylib; requires java.base; requires java.sql; requires jackson.core; requires jackson.databind;}

Page 20: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 20

modulemyapp

modulemylib

modulejackson.databind

modulejackson.annotations

modulejackson.core

modulejava.xml

modulejava.sql

modulejava.logging

modulejava.base

Page 21: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 21

Page 22: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

$ javac --module-path lib --module-source-path src -d mods …

$ jar --create --file mlib/mylib.jar -C mods/mylib .

$ jar --create --file mlib/myapp.jar -C mods/myapp . \ --main-class myapp.Main

22

lib/jackson-core-2.6.2.jarlib/jackson-databind-2.6.2.jarlib/jackson-annotations-2.6.2.jar

src/myapp/module-info.javasrc/myapp/...

src/mylib/module-info.javasrc/mylib/...

Page 23: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 23

$ java --module-path mlib:lib —m myapp

$ java -cp \ lib/myapp.jar:\ lib/mylib.jar:\ lib/jackson-core-2.6.2.jar:\ lib/jackson-databind-2.6.2.jar:\ lib/jackson-annotations-2.6.2.jar \ myapp.Main

Page 24: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

LibraryMigration

24

Page 25: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 25

jackson-databind-2.6.2.jar

myapp.jar

modulejava.base

modulejava.logging

mylib.jar

modulejava.xml

modulejava.sql

jackson-annotations-2.6.2.jar

jackson-core-2.6.2.jar

SampleScenario

Page 26: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 26

modulejackson.databind

myapp.jar

modulejava.base

modulejava.logging

mylib.jar

modulejava.xml

modulejava.sql

modulejackson.annotations

modulejackson.core

Migratingfromthebottomup

Page 27: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Migratingfromthebottom

• modulejackson.corerequires?

• modulejackson.coreexports?

• modulejackson.databindrequires?

• modulejackson.databindexports?

• modulejackson.annotationsrequires?

• modulejackson.annotationsexports?

27

Page 28: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Requires?

28

$ jdeps -s lib/jackson*.jar jackson-annotations-2.6.2.jar -> java.base jackson-core-2.6.2.jar -> java.base jackson-databind-2.6.2.jar -> lib/jackson-annotations-2.6.2.jar jackson-databind-2.6.2.jar -> lib/jackson-core-2.6.2.jar jackson-databind-2.6.2.jar -> java.base jackson-databind-2.6.2.jar -> java.sql jackson-databind-2.6.2.jar -> java.xml

Page 29: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 29

jackson.databind

jackson.corejava.sql

jackson.annotations java.xml

java.base

Page 30: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Creatingthemodule-info.javaforeachmodule

30

$ jdeps —-gen-module-info src *.jar writing to src/jackson.annotations/module-info.java writing to src/jackson.databind/module-info.java writing to src/jackson.core/module-info.java

Page 31: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 31

// src/jackson.databind/module-info.java module jackson.databind { requires transitive jackson.annotations; requires transitive jackson.core; requires java.logging; requires transitive java.sql; requires transitive java.xml; exports com.fasterxml.jackson.databind; exports com.fasterxml.jackson.databind.annotation; exports com.fasterxml.jackson.databind.cfg; exports com.fasterxml.jackson.databind.deser; exports com.fasterxml.jackson.databind.deser.impl; exports com.fasterxml.jackson.databind.jsontype; exports com.fasterxml.jackson.databind.jsontype.impl; exports com.fasterxml.jackson.databind.module; exports com.fasterxml.jackson.databind.node; exports com.fasterxml.jackson.databind.ser; exports com.fasterxml.jackson.databind.ser.impl; exports com.fasterxml.jackson.databind.ser.std; exports com.fasterxml.jackson.databind.type; exports com.fasterxml.jackson.databind.util; }

Page 32: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 32

// src/jackson.databind/module-info.java module jackson.databind { requires transitive jackson.annotations; requires transitive jackson.core; requires java.logging; requires transitive java.sql; requires transitive java.xml; exports com.fasterxml.jackson.databind; exports com.fasterxml.jackson.databind.annotation; exports com.fasterxml.jackson.databind.cfg; exports com.fasterxml.jackson.databind.deser; exports com.fasterxml.jackson.databind.deser.impl; exports com.fasterxml.jackson.databind.jsontype; exports com.fasterxml.jackson.databind.jsontype.impl; exports com.fasterxml.jackson.databind.module; exports com.fasterxml.jackson.databind.node; exports com.fasterxml.jackson.databind.ser; exports com.fasterxml.jackson.databind.ser.impl; exports com.fasterxml.jackson.databind.ser.std; exports com.fasterxml.jackson.databind.type; exports com.fasterxml.jackson.databind.util; }

Page 33: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 33

src/jackson.core/module-info.java src/jackson.core/...

src/jackson.databind/module-info.java src/jackson.databind/...

src/jackson.annotations/module-info.java src/jackson.annotations/...

$ javac --module-source-path src -d mods $(find src -name “*.java”)

Page 34: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 34

$ javac --module-source-path src -d mods ...

$ jar --create --file mlib/jackson-core-2.6.2.jar \ —-module-version 2.6.2 -C mods/jackson.core .

$ jar --create --file mlib/jackson-databind-2.6.2.jar \ —-module-version 2.6.2 -C mods/jackson.databind .

$ jar --create --file mlib/jackson-annotations-2.6.2.jar \ —-module-version 2.6.2 -C mods/jackson.annotations .

Page 35: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 35

modulejackson.databind

modulejava.logging

modulejava.sql

modulejackson.core

modulejackson.annotations

myapp.jar mylib.jar

modulejava.base

modulejava.xml

Page 36: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 36

$ java -cp \ lib/myapp.jar:\ lib/mylib.jar:\ lib/jackson-core-2.6.2.jar:\ lib/jackson-databind-2.6.2.jar:\ lib/jackson-annotations-2.6.2.jar \ myapp.Main

Page 37: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 37

$ java --module-path mlib \ --add-modules jackson.databind \ -cp lib/myapp.jar:lib/mylib.jar myapp.Main

$ java -cp \ lib/myapp.jar:\ lib/mylib.jar:\ lib/jackson-core-2.6.2.jar:\ lib/jackson-databind-2.6.2.jar:\ lib/jackson-annotations-2.6.2.jar \ myapp.Main

Page 38: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Puttingitalltogether

38

Page 39: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 39

modulejackson.databind

modulejava.logging

modulejava.sql

modulejackson.core

modulejackson.annotations

modulejava.base

modulejava.xml

Page 40: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 40

modulejackson.databind

modulejava.logging

modulejava.sql

modulejackson.core

modulejackson.annotations

modulejava.base

modulejava.xml

modulemyapp

modulemylib

Page 41: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 41

$ ls -1 mlib myapp.jar mylib.jar jackson-core-2.6.2.jar jackson-databind-2.6.2.jar jackson-annotations-2.6.2.jar

$ java --module-path mlib -m myapp

Page 42: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Linking

42

Page 43: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 43

$ jlink --module-path $JDKMODS:mlib --add-modules myapp \ --compress=2 --strip-debug —-output myimage

$ du -ks myimage 26000 myimage

$ ls myimage/bin myapp java keytool

$ myimage/bin/java --list-modules myapp mylib [email protected] [email protected] [email protected] java.base@9 java.logging@9 java.sql@9 java.xml@9

Page 44: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 44

$ myimage/bin/java -m myapp Greetings from myapp, here’s some json!

Page 45: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 45

$ myimage/bin/myapp Greetings from myapp, here’s some json!

Page 46: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw

Summary

• Freedomtoadoptmodulesatyourownpace

• Modularizeyourapplicationbeforeitslibraries

• Modularizelibrariesindependently

• Differentkindsofmodules

• Explicitvs.automatic

• Strongvs.weak

46

Page 47: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 47

Goforthandmodularize!

Page 48: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOneJigsaw

Othersessions,mostlythisroom• PrepareforJDK9:[email protected]

• IntroductiontoModularDevelopment:Wed@3pm

• ModulesandServices:[email protected],[email protected]

• ProjectJigsaw:UnderTheHood:Tues@4pm

• ProjectJigsawHackSession:[email protected]

48

Page 49: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright©2016,Oracleand/oritsaffiliates.Allrightsreserved.#JavaOne#Jigsaw 49

MoreInformation

OpenJDKProjectJigsaw

http://openjdk.java.net/projects/jigsaw/

mailto:[email protected]

EarlyAccessBuilds

https://jdk9.java.net/jigsaw/

Page 50: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

Safe Harbor Statement

The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

50

Page 51: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind
Page 52: Advanced Modular Development...#JavaOne #Jigsaw Copyright © 2016, Oracle and/or its affiliates. All rights reserved. 31 // src/jackson.databind/module-info.java module jackson.databind