SlideShare a Scribd company logo
1 of 44
Download to read offline
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Pi@alls	of	MigraCng	projects	
to	JDK	9	
CON4123	
Pavel	Bucek	
	
Oracle	
September,	2016
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Safe	Harbor	Statement	
The	preceding	is	intended	to	outline	our	general	product	direcCon.	It	is	intended	for	
informaCon	purposes	only,	and	may	not	be	incorporated	into	any	contract.	It	is	not	a	
commitment	to	deliver	any	material,	code,	or	funcConality,	and	should	not	be	relied	upon	
in	making	purchasing	decisions.	The	development,	release,	and	Cming	of	any	features	or	
funcConality	described	for	Oracle’s	products	remains	at	the	sole	discreCon	of	Oracle.	
4
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
IntroducCon,	moCvaCon,	agenda	
•  Project	Jersey	
– hTps://jersey.java.net	
– Reference	implementaCon	of	JAX-RS:	JSR	311,	339,	370	
– Started	10	years	ago	
– Maven	project,	170+	maven	modules,	700+	java	packages,	2100+	classes,	…	
•  MoCvaCon	
– We	want	to	be	an	enabler,	not	blocker	(when	thinking	about	adopCon	of	Java	9)	
– jlink	promises	great	value	in	microservice	world		
5
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
IntroducCon,	moCvaCon,	agenda	
•  Agenda	
– Going	through	compile,	test,	run,	package	on	Java	9	
•  Jigsaw	way,	no	cheats	J	
– Iterate	over	issues	and	soluCons	
– Jlink	
– Conclusion	
6
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jigsaw	
•  Standard	module	system	for	the	Java	SE	pla@orm	
– And	its	applicaCon	to	JDK!	
•  Goals	
– Make	the	JDK	easily	scalable	down	to	small	compuCng	devices	
– Improve	the	security	and	maintainability	of	the	Java	SE	Pla@orm	implementaCon	
(And	the	JDK)	
– Enable	improved	applicaCon	performance	
– Make	it	easier	for	developers	to	construct	and	maintain	libraries	and	scale	
applicaCons	
7
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jigsaw	
•  No-Goals	
– Versioning	support	
•  Too	complex	to	do	it	now,	postponed	
– Support	for	fine	grain	definiCon	of	automaCc	modules	
– “Maven	central”	like	module	repository	
8
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jigsaw	
•  Module	is	a	base	element	of	Jigsaw	runCme	
•  Each	module	can	declare	
– Dependencies	on	other	modules	
•  TransiCve,	staCc,	syntheCc,	mandated	
– Exported	packages	(!)	
– Used	Services	
– Provided	Services	(formerly	META-INF/services)	
•  (there	is	no	version)	
–  (it	CAN	be	added	later	by	“jar”	command)	
9	
What	is	a	module?
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jigsaw	
10	
module my.module {
requires java.base;
requires transitive javax.ws.rs.api;
exports org.my.module.package;
exports org.my.module.package to moduleName;
uses org.my.module.package.InterfaceName;
provides org.my.module.package.InterfaceName with
org.my.module.package.ImplName;
}
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jigsaw	
•  Building	without	any	modificaCons	
– Results	in	CNFE	(some	JAX-B	class),	which	is	expected	
– Can	be	fixed	by	–XaddReads	(or	other	version	of	this	parameters)	
– “unnamed	module”	
•  Jigsaw	is	used	only	for	JDK	itself	
– Goal:	Make	Jersey	Maven	modules	Jigsaw	modules.	
11
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Mapping	
– Maven	module	(groupId:arCfactId)	to	Jigsaw	module	name	
– Maven	dependencies	to	Jigsaw	“requires”	
– ExporCng	packages	
– META-INF/services/*	to	provides	X	with	Y;	
•  Declaring	Service	interfaces	
•  Jersey	has	170+	modules…	
12	
Back	to	Jersey
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Maven	module	(groupId:arCfactId)	to	Jigsaw	module	name	
– groupId.arCfactId	+	(s/-/./g)	
•  META-INF/services/*	to	provides	X	with	Y;	
•  ExporCng	packages	
– Export	all	for	now	
13	
Back	to	Jersey
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Maven	dependencies	mapping	to	Jigsaw	“requires”	
– Maven	dependency	scopes:	compile,	provided,	runCme,	opConal,	system,	..	
– Jigsaw	requires	can	be:	transiCve,	staCc	
•  There	is	no	direct	mapping	for	Mavens	opConal	and	provided	scopes	
•  Easy	way	out	is	to	map	all	dependencies	to	“transiCve”,	which	means	
“requires	transiCve”	
– Ok	for	now,	we’ll	get	back	to	that	later	
	
14	
Back	to	Jersey
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Classpath	
– Good	old	classpath,	modelled	as	the	“unnamed	module”	
– Requires	everything,	exports	none	
•  Modulepath	
– When	a	module	(jar,	exploded,	..)	is	on	module	path,	it	is	treated	as	a	module	
– When	a	jar	without	module-info.java	is	on	module	path,	it	is	treated	as	an	automaCc	
module	
•  Exports	all	packages,	Requires	all	modules	on	the	module	path	(*)	
•  Name	derived	from	the	jar	name	
15	
Classpath	vs	Modulepath
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  How	to	build	Java	9	module?	
– javac	–target	9	–source	9	–p	$CP	–mp	$MP	$(find	.	-name	"*.java”)	
•  Maven	support	–	compiler	plugin	version	“3.6-jigsaw-SNAPSHOT”	
– Put	dependencies	on	the	module	path	instead	of	classpath	
16	
Back	to	Jersey	
--class-path <path>, -classpath <path>, -cp <path>
Specify where to find user class files and annotation processors
--module-path <path>, -p <path>, -modulepath <path>
Specify where to find application modules
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
17	
PlaAorm	modules
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
18	
PlaAorm	modules
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Trivial	build	issues	
– Add	“requires”	for	java	pla@orm	modules	
•  java.logging,	java.naming,	java.acCvaCon,	java.xml.bind,	java.desktop,	java.management	
– OSGi	bundle	plugin	and	other	stuff	
•  Exclude,	it	won’t	work	anyway	
•  hTp://openjdk.java.net/projects/penrose/	
•  “The	goal	is	to	explore	and	implement	interoperability	between	OSGi	and	Jigsaw.”	
– Maven	shade	plugin	
– JAXB	Maven	plugin	
•  Test	compilaCon	(let’s	skip	it	for	now)	
19	
Back	to	Jersey
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Single	package	can	be	provided	only	by	a	single	module
20	
Back	to	Jersey	–	Servlet	dependencies	
jersey-container-servlet	
jersey-container-servlet-core	
javax.servlet-api:3.0.1	[provided]	
servlet-api:2.4	[provided]	
jersey-server	 javax.ws.rs.api	jersey-common
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Single	package	can	be	provided	only	by	a	single	module
21	
Back	to	Jersey	–	Servlet	dependencies	
jersey-container-servlet-3x	
jersey-container-servlet-core	
javax.servlet-api:3.0.1	[provided]	servlet-api:2.4	[provided]	
jersey-server	 javax.ws.rs.api	jersey-common	
jersey-container-servlet-2x
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Single	package	can	be	provided	only	by	a	single	module	
– Having	2	modules	which	export	same	package	is	an	error	
•  appengine.api	jar	(automaCc	module)	includes	javax.acIvaIon,	which	is	
already	provided	by	pla@orm	module	java.acIvaIon	
– This	is	a	no	go	in	Jigsaw	
•  Weld	(2.2.14.Final)	
–  [ERROR]	…/module-info.java:	module	X	reads	package	org.jboss.weld.context	from	both	
weld.core.impl	and	weld.api	
– SCll	the	same	issue	
22	
Split	package	issue
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Java	EE	API	
– CombinaCon	of	all	Java	EE	spec	APIs	
23	
Back	to	Jersey	–	Java	EE	API	versus	<any	spec>	(javax.ws.rs.api	in	this	case)	
javax/annotaCon	
javax/annotaCon/security	
javax/annotaCon/sql	
javax/batch	
javax/decorator	
javax/ejb	
javax/el	
javax/enterprise	
javax/enterprise/concurrent	
javax/enterprise/context	
javax/enterprise/deploy	
javax/enterprise/event	
javax/enterprise/inject	
javax/enterprise/uCl	
javax/faces	
javax/inject	
javax/interceptor	
javax/jms	
javax/json	
javax/jws	
javax/mail	
javax/management	
javax/persistence	
javax/resource	
javax/security	
javax/servlet	
javax/transacCon	
javax/validaCon	
javax/websocket	
javax/ws/rs	
javax/xml/bind	
javax/xml/registry	
javax/xml/rpc	
javax/xml/soap	
javax/xml/ws	
…	(lots	of	sub-packages)
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
24	
Java	EE	API	jar	versus	<any	spec>	(javax.ws.rs.api	in	this	case)	
User	ApplicaCon	
ApplicaCon	Server	
javax:javaee-api:7.0	
javax.websocket:	
javax.websocket-api	
javax.inject:	
javax.inject	
javax.batch:	
javax.batch-api	
javax.ws.rs:	
javax.ws.rs-api	
…
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
25	
Java	EE	API	jar	versus	<any	spec>	(javax.ws.rs.api	in	this	case)	
User	ApplicaCon	
(Jigsaw	module)	
ApplicaCon	Server	
javax:javaee-api:7.0	
javax.websocket:	
javax.websocket-api	
javax.inject:	
javax.inject	
javax.batch:	
javax.batch-api	
javax.ws.rs:	
javax.ws.rs-api	
…	
requires	javaee.api	
automaCc	module	
requires	javax.websocket.api;	
requires	javax.inject;	
requires	javax.ws.rs.api;	
…
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
26	
Java	EE	API	jar	versus	<any	spec>	(javax.ws.rs.api	in	this	case)	
module	javaee-api	
(aggregator	module,	no	classes!)	
javax.websocket:	
javax.websocket-api	
javax.batch:	
javax.batch-api	
javax.ws.rs:	
javax.ws.rs-api	
…	
requires	transient	javax.batch.api
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Part	of	Java	EE	API	which	is	included	in	the	JDK	
– Similarly	as	JAX-B,	JAX-WS,	Corba,	TransacCons,	…	
•  Jersey	depends	on	javax.annotaCon-api:1.2	
•  JDK	includes	version	<1.2	(module	java.annotaCons.common)	
•  @Priority	is	@since	1.2	
•  java.se.ee	requires	java.annotaCons.common	
27	
Back	to	Jersey	–	javax.annotaIon	–	“common	annotaIons”
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	
•  Jersey	uses	hk2	as	DI	framework	
•  exports	packageName;	doesn’t	guarantee	access	to	private	objects/fields	
– It		used	to	..	Last	week	J	
•  Maven	war	plugin	
– XStream	serializaCon	library	
28	
exports	private
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
ServiceLoader	
•  META-INF/services	
– uses	X;	//	X	is	an	interface	
– provides	X	with	Y	//	X	is	an	interface,	Y	is	an	implementaCon	class	
•  Jersey	use	slightly	more	complex	
– Internal	API	for	looking	up	classes	(adding	implementaCons	in	injecCon	fw	binding	
phase)	
•  Classes	are	looked	up	from	different	module	->	missing	uses	->	cannot	be	declared	since	the	iface	
name	is	not	known	
– ReflecCon	for	the	rescue	
– Class.getModule().addUses(…)	
			
29
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
What	have	we	built?	
30
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Build	Summary	
•  126	modules	
– CausaliCes	
•  Bundles	
•  All	War	examples	
•  OSGi	and	mulCmodule	tests	
•  Let’s	try	to	run	the	example!	
– Maven	exec	plugin	
– IDE	support	
– …?	
31
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Run	
•  Let’s	run	helloworld	example!	
32
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Test	
•  Automated	tesCng	
•  Maven	compile	plugin	
– Broken	with	latest	jdk	build	
•  Maven	surefire	plugin	
– Doesn’t	seem	to	be	ready	yet	
•  Full	manual	approach	since	now	
33
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Jlink	
•  Tool	which	produces	opCmized	runCme	for	specific	usecase	
•  Packaging	minimal	set	from	JDK	with	the	applicaCon	
– $	jlink	--module-path	$JAVA_HOME/jmods/:"$MP"	--add-modules	
org.glassfish.jersey.examples.helloworld	--output	./jlink-test	
– Error:	module-info.class	not	found	for	javax.annotaCon.api	module	
•  Jlink	requires	all	modules	to	be	named	modules	
– L	
34
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Packaging	
•  Jersey	provides	jax-rs-ri	bundle	
•  What’s	a	bundle?	
– Fat	jar	
•  Executable	Fat	Jar	
– L	
•  Executable	Uber	Jar!	
– What	the	hell	is	an	uber	jar?	
35	
Bundles..
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Uber	JAR	
•  Originally	a	jar,	which	has	all	dependencies	in	/lib	
– Classpath	element	in	META-INF/MANIFEST.MF	
•  When	applied	to	Jigsaw	
– Each	module	has	its	own	directory	
– New	main	class	definiCon	(module/class)	
– ModuleFinder	implementaCon	
36	
Bundles..
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Uber	JAR	&	Jlink	
•  Create	Jlink	image	with	subset	of	pla@orm	modules	and	use	that	to	run	our	
uber	jar	
– jlink	--module-path=$JAVA_HOME/jmods	--add-modules	
java.logging,java.naming,java.acCvaCon,java.xml.bind,java.desktop,java.management	
--output	./jlink	
37
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
TODO	
•  Use	requires	transiIve	only	where	required	
– Only	when	the	dependency	is	exposed	in	exported	package	
•  exports	X	to	Y;	
– Export	internal	packages	strictly	to	org.glassgish.jersey.*	modules	
– Y	is	required	to	be	on	the	module	path	
•  DistribuCon	packages	
– Use	mulC-release	support	in	JAR	files	
– Distribute	Java	9	enabled	Jersey	JARs	
38
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Most	of	the	credits	goes	to…	
•  Alex	Buckley	
•  Alan	Bateman	
•  Were	to	get	latest	Jigsaw	build	
– hTps://jdk9.java.net/jigsaw/	
39
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Was	it	worth	it?	
•  Java	9	is	sCll	evolving	
– Non-compaCble	changes	
– Missing	tooling	support	
•  Java	9	ready	project	
•  No	shareable	results	
40
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	
Contacts/QA	
	
•  Pavel	Bucek	(pavel.bucek@oracle.com)	
•  Jersey	/	JAX-RS	RI	:	hTp://jersey.java.net	
– users@jersey.java.net	
	
	
	
Feel	free	to	ask	any	quesCons	now	or	contact	me	later.	
41
Copyright	©	2016,	Oracle	and/or	its	affiliates.	All	rights	reserved.		|	 42
Migrating Projects to JDK 9: Pitfalls and Solutions
Migrating Projects to JDK 9: Pitfalls and Solutions

More Related Content

What's hot

Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerSimon Ritter
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Simon Ritter
 
OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14Ivan Krylov
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?Simon Ritter
 
55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9Simon Ritter
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System IntroductionDan Stine
 
JDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveJDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveSimon Ritter
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerSimon Ritter
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Simon Ritter
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Simon Ritter
 

What's hot (20)

Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java Smaller
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9
 
OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 
JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?JDK 9: Mission Accomplished. What Next For Java?
JDK 9: Mission Accomplished. What Next For Java?
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
55 New Features in JDK 9
55 New Features in JDK 955 New Features in JDK 9
55 New Features in JDK 9
 
Java 9 Modularity in Action
Java 9 Modularity in ActionJava 9 Modularity in Action
Java 9 Modularity in Action
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Java 9 and Beyond
Java 9 and BeyondJava 9 and Beyond
Java 9 and Beyond
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
 
JDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveJDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep Dive
 
JDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java SmallerJDK 9: Big Changes To Make Java Smaller
JDK 9: Big Changes To Make Java Smaller
 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
 
What's New in Java 9
What's New in Java 9What's New in Java 9
What's New in Java 9
 
Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014Oracle Keynote from JMagghreb 2014
Oracle Keynote from JMagghreb 2014
 

Similar to Migrating Projects to JDK 9: Pitfalls and Solutions

Web protocols for java developers
Web protocols for java developersWeb protocols for java developers
Web protocols for java developersPavel Bucek
 
Develop Oracle Virtual Box and deploy to Cloud
Develop Oracle Virtual Box and deploy to CloudDevelop Oracle Virtual Box and deploy to Cloud
Develop Oracle Virtual Box and deploy to CloudInprise Group
 
Japanese Introduction to Oracle JET
Japanese Introduction to Oracle JETJapanese Introduction to Oracle JET
Japanese Introduction to Oracle JETGeertjan Wielenga
 
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]vasuballa
 
3° Sessione Oracle - CRUI: Mobile&Conversational Interface
3° Sessione Oracle - CRUI: Mobile&Conversational Interface3° Sessione Oracle - CRUI: Mobile&Conversational Interface
3° Sessione Oracle - CRUI: Mobile&Conversational InterfaceJürgen Ambrosi
 
Jfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and ContainersJfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and ContainersMika Rinne
 
Oracle Solaris Cloud Management and Deployment with OpenStack
Oracle Solaris Cloud Management and Deployment with OpenStackOracle Solaris Cloud Management and Deployment with OpenStack
Oracle Solaris Cloud Management and Deployment with OpenStackOTN Systems Hub
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group ReplicationMark Swarbrick
 
Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016David Delabassee
 
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...Trivadis
 
MySQL Enterprise Cloud
MySQL Enterprise Cloud MySQL Enterprise Cloud
MySQL Enterprise Cloud Mark Swarbrick
 
MySQL Enterprise Cloud
MySQL Enterprise CloudMySQL Enterprise Cloud
MySQL Enterprise CloudMark Swarbrick
 
Push-button Composition of Oracle Application and Database Environments: Avi ...
Push-button Composition of Oracle Application and Database Environments: Avi ...Push-button Composition of Oracle Application and Database Environments: Avi ...
Push-button Composition of Oracle Application and Database Environments: Avi ...OpenStack
 
Java @ Rio Meetup #1 - Java @ Oracle Cloud
Java @ Rio Meetup #1 - Java @ Oracle CloudJava @ Rio Meetup #1 - Java @ Oracle Cloud
Java @ Rio Meetup #1 - Java @ Oracle CloudPaulo Alberto Simoes ∴
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document StoreMark Swarbrick
 
Percona Live - Dublin 03 ee + cloud
Percona Live - Dublin 03 ee + cloudPercona Live - Dublin 03 ee + cloud
Percona Live - Dublin 03 ee + cloudMark Swarbrick
 
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, OracleMigrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, OracleOpenStack
 
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16pdx_spark
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...vasuballa
 

Similar to Migrating Projects to JDK 9: Pitfalls and Solutions (20)

Web protocols for java developers
Web protocols for java developersWeb protocols for java developers
Web protocols for java developers
 
Develop Oracle Virtual Box and deploy to Cloud
Develop Oracle Virtual Box and deploy to CloudDevelop Oracle Virtual Box and deploy to Cloud
Develop Oracle Virtual Box and deploy to Cloud
 
Japanese Introduction to Oracle JET
Japanese Introduction to Oracle JETJapanese Introduction to Oracle JET
Japanese Introduction to Oracle JET
 
Java EE Next
Java EE NextJava EE Next
Java EE Next
 
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]
OOW16 - Oracle E-Business Suite Integration Best Practices [CON6709]
 
3° Sessione Oracle - CRUI: Mobile&Conversational Interface
3° Sessione Oracle - CRUI: Mobile&Conversational Interface3° Sessione Oracle - CRUI: Mobile&Conversational Interface
3° Sessione Oracle - CRUI: Mobile&Conversational Interface
 
Jfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and ContainersJfokus 2017 Oracle Dev Cloud and Containers
Jfokus 2017 Oracle Dev Cloud and Containers
 
Oracle Solaris Cloud Management and Deployment with OpenStack
Oracle Solaris Cloud Management and Deployment with OpenStackOracle Solaris Cloud Management and Deployment with OpenStack
Oracle Solaris Cloud Management and Deployment with OpenStack
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016Java EE Next - BeJUG JavaOne Afterglow 2016
Java EE Next - BeJUG JavaOne Afterglow 2016
 
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...
Trivadis TechEvent 2017 Leveraging the Oracle Cloud by Kris Bhanushali tech_e...
 
MySQL Enterprise Cloud
MySQL Enterprise Cloud MySQL Enterprise Cloud
MySQL Enterprise Cloud
 
MySQL Enterprise Cloud
MySQL Enterprise CloudMySQL Enterprise Cloud
MySQL Enterprise Cloud
 
Push-button Composition of Oracle Application and Database Environments: Avi ...
Push-button Composition of Oracle Application and Database Environments: Avi ...Push-button Composition of Oracle Application and Database Environments: Avi ...
Push-button Composition of Oracle Application and Database Environments: Avi ...
 
Java @ Rio Meetup #1 - Java @ Oracle Cloud
Java @ Rio Meetup #1 - Java @ Oracle CloudJava @ Rio Meetup #1 - Java @ Oracle Cloud
Java @ Rio Meetup #1 - Java @ Oracle Cloud
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
Percona Live - Dublin 03 ee + cloud
Percona Live - Dublin 03 ee + cloudPercona Live - Dublin 03 ee + cloud
Percona Live - Dublin 03 ee + cloud
 
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, OracleMigrating your infrastructure to OpenStack - Avi Miller, Oracle
Migrating your infrastructure to OpenStack - Avi Miller, Oracle
 
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

Migrating Projects to JDK 9: Pitfalls and Solutions