SlideShare a Scribd company logo
1 of 160
Download to read offline
A	trip	down	memory	lane:	
20	years	in	Java	and	JVM	land
Marcus	Lagergren
@lagergren
Safe	Harbor	Statement
@lagergren
Safe	Harbor	Statement
[This	is	my	story,	my	experiences.	
Official	and	other	peoples’	
versions	of	events	may	vary]
@lagergren
“Senior	Software	Architect”
https://www.klarna.com/careers/open-positions
What	have	I	been	doing	with	my	life	for	these	past	
20	years?
An	informative	keynote
A	historical	keynote
A	nostalgic	keynote
Agenda
• It’s	2015
• Java	has	been	around	for	20	years.
• Longer	if	you	count	the	
alphas/betas	of	Java	1.0
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Or	even	simpler…
20	years	of	Java	and	runtimes	from	an	
engineer’s	perspective…
Take	us	back	to	1995!
Oops…	too	far
A	boy	gets	his	Commodore	64
1991-1993
• Project	“Green”	at	Sun	
Microsystems
1991-1993
• Project	“Green”	at	Sun	
Microsystems
• A	portable	architecture	
for	home	electronics
1991-1993
• Project	“Green”	at	Sun	
Microsystems
• A	portable	architecture	
for	home	electronics
• Remote	controls?
1994
• I’m	still	at	university
• Scraped	together	enough	money	to	build	a	high	
performance	mini	tower	PC
• Pentium	90
• “Wow!	CPU	frequencies	are,	like,	in	the	FM	the	
FM	band	these	days”
1994
• At	the	same	time	in	Santa	Clara
1994
• At	the	same	time	in	Santa	Clara
• Oak	has	better	applications	than	programming	
remote	controls
1994
• At	the	same	time	in	Santa	Clara
• Oak	has	better	applications	than	programming	
remote	controls
• Deal	with	Netscape	finalizing
1994
• At	the	same	time	in	Santa	Clara
• Oak	has	better	applications	than	programming	
remote	controls
• Deal	with	Netscape	finalizing
• Write	once	/	run	everywhere
1994
• At	the	same	time	in	Santa	Clara
• Oak	has	better	applications	than	programming	
remote	controls
• Deal	with	Netscape	finalizing
• Write	once	/	run	everywhere
• “Network	aware”	language
1995-1996
• 1995	was	the	year	where	Internet	suddenly	
meant	“The	World	Wide	Web”
• 1996:	JDK	1.02
• The	first	JDK	released	by	Sun
• Java	in	Netscape	Navigator
1996
I	worked	with	Alphas	of	JDK	1.0	at	Ericsson	
Medialab
1996
I	worked	with	Alphas	of	JDK	1.0	at	Ericsson	
Medialab
1996
I	worked	with	Alphas	of	JDK	1.0	at	Ericsson	
Medialab
The	JDK	fit	on	one	of	these
[Sneakernet,	back	and	forth	to	KTH	where	there	was	bandwidth	and	not	just	my	
v42’’	modem]
1996
Anyone	remember	gamelan.com?
1996
• Internship	at	Ericsson	Medialab
1996
• Internship	at	Ericsson	Medialab
• “Play	with	Ericsson’s	future”
• Use	“cutting	edge	technology”	to	do	something	
with	media	on	demand
1996
• Internship	at	Ericsson	Medialab
• “Play	with	Ericsson’s	future”
• Use	“cutting	edge	technology”	to	do	something	
with	media	on	demand
1996
• Basically	Spotify
1996
• Basically	Spotify
• …	and	Netflix
1996
• Basically	Spotify
• …	and	Netflix
• …	in	an	Applet
1996
• Basically	Spotify
• …	and	Netflix
• …	in	an	Applet
• …	with	mpeg	hardware	cards
1996
• Java	1.0
1996
• Java	1.0
• Pure	byte	code	interpretation
• University	professor	suddenly	proud	of	his	interpreted	
toy	language,	not	ashamed	as	previously
• “If	Java	gets	away	with	it,	I	can”
• But	did	it?
1996
• Java	1.0
• Pure	byte	code	interpretation
• University	professor	suddenly	proud	of	his	interpreted	
toy	language,	not	ashamed	as	previously
• “If	Java	gets	away	with	it,	I	can”
• But	did	it?
• Java	Memory	Model	(broken)
1996
• Java	1.0
• Pure	byte	code	interpretation
• University	professor	suddenly	proud	of	his	interpreted	
toy	language,	not	ashamed	as	previously
• “If	Java	gets	away	with	it,	I	can”
• But	did	it?
• Java	Memory	Model	(broken)
• Thread.stopand	all	its	friends	(@deprecated)
1996
• Java	1.0
• Pure	byte	code	interpretation
• University	professor	suddenly	proud	of	his	interpreted	
toy	language,	not	ashamed	as	previously
• “If	Java	gets	away	with	it,	I	can”
• But	did	it?
• Java	Memory	Model	(broken)
• Thread.stopand	all	its	friends	(@deprecated)
• “Very	1.0”
1996
• “Your	development	cycle	is	much	faster	because	Java	is	
interpreted.	The	compile-link-load-test-crash-debug-cycle	is	
obsolete”
- James	Gosling
1996
• “Your	development	cycle	is	much	faster	because	Java	is	
interpreted.	The	compile-link-load-test-crash-debug-cycle	is	
obsolete”
- James	Gosling	
Wait!	Isn’t	that	the	argument	the	JavaScript	kiddies	use	today?
1996
• Appeal	Software	Solutions	is	founded	in	
Stockholm
- All	members	had	extensive	Java	experience,	
having	used	the	language	from	the	start
- Java	Consulting
- …	and	…	*sigh*	UML/RUP
1996
1996
1996
1997
• Java	on	the	client	side	not	really	taking	off
1997
• Java	on	the	client	side	not	really	taking	off
• Write	once	/	run	everywhere	does,	however
• And	no	buffer	overruns
• And	no	pointers
• And	automatic	memory	management
• ==	fast	application	development
• The	JDK	is	a	great	library	for	development
1997
• Java	on	the	client	side	not	really	taking	off
• Write	once	/	run	everywhere	does,	however
• And	no	buffer	overruns
• And	no	pointers
• And	automatic	memory	management
• ==	fast	application	development
• The	JDK	is	a	great	library	for	development
• The	dawn	of	application	servers
1997
• Java	on	the	client	side	not	really	taking	off
• Write	once	/	run	everywhere	does,	however
• And	no	buffer	overruns
• And	no	pointers
• And	automatic	memory	management
• ==	fast	application	development
• The	JDK	is	a	great	library	for	development
• The	dawn	of	application	servers
• Prehistoric	trail	toward	Java	EE
1997
• Java	1.1
• Inner	classes
• JavaBeans
• JDBC
• RMI
• Limited	Reflection	(non	runtime)
• The	first	JITs	
• (Symantec	on	Windows)
• SERIALIZATION	– THE	HORROR!
1997:	BTH	– Win	a	trip	to	JavaOne
JavaOne	1997
• Sun	Microsystems	presents	the	HotSpot
virtual	machine
– “WOW!	This	is	the	way	to	do	it!	Adaptive	
runtimes!”
1998
• JDK	1.2
• Swing
• strictfp
• JIT	introduced	in	the	classic	VM
• Collections	API
• JDK	triples	in	size:	1520	classes,	59	packages
1998
• JDK	1.2
• Swing
• strictfp
• JIT	introduced	in	the	classic	VM
• Collections	API
• JDK	triples	in	size:	1520	classes,	59	packages
JavaOne	1998
• Sun	Microsystems	presents	the	HotSpot	
virtual	machine	again
JavaOne	1998
• Sun	Microsystems	presents	the	HotSpot	
virtual	machine	again
– “WTF!	This	is	slide-by-slide	the	exact	same	
presentation	as	last	year!?!”
– We	can’t	wait	any	longer.	Let’s	build	our	own	VM.	
How	hard	can	it	be?
Creating	our	own	JVM	- JRockit
Productize	a	narrower	domain?
• Server-side	usage	only.	Headless.	
– We	need	to	help	the	early	app	server	vendors	get	
performance	and	scalability
Productize	a	narrower	domain?
• Server-side	usage	only.	Headless.	
– We	need	to	help	the	early	app	server	vendors	get	
performance	and	scalability
• No	interpreter	
– “startup	time	doesn’t	matter	on	the	server	
anyway”
1998
• BEA	Acquires	WebLogic
• Weblogic becomes	one	the	first	drivers	for	J2EE	
specification
1998
1998
• TowerJ
• Excelsior	JET
• Convert	byte	code	to	C	code	and	run	gcc
• Fundementally incompatible	with	a	runtime	
language
• Rakes	in	$$$	anyway
1999
• Appeal	Software	Solutions	finance	JRockit
development
• Hunting	for	VC
• In	August	we	sell	the	first	part	of	our	souls
• We	spend	nights	reading	academic	papers
• Jalapeño	(to	become	Jikes RVM)
2000
• Java	is	now	the	fastest	growing	programming	
language	in	the	world
• Dot	com	bubble
• NASDAQ	hits	5.000	just	before	the	tech	
wreck
2000
• The	Java	License
• You	can’t	call	yourself	“Java”	without	a	Java	
license
• You	need	to	pass	the	TCK	test	suite
– Not	available	without	license
• To	get	a	Java	License	you	need	a	“value	add”
The	Java	License
• What’s	a	“value	add”?
The	Java	License
• What’s	a	“value	add”?
The	Java	License
The	Java	License
• What’s	a	“value	add”?
The	Java	License
• What’s	a	“value	add”?
– Superior	performance!
The	Java	License
• What’s	a	“value	add”?
– Superior	performance!
– What?	You	didn’t	like	that?
The	Java	License
• What’s	a	“value	add”?
– Superior	performance!
– What?	You	didn’t	like	that?
– OK…	Let’s	see…	Err..	“managability”
The	Java	License
2000
• JDK	1.3	“Kestrel”
– HotSpot released	before,	April	1999	J2SE	JVM
– But	Kestrel	bundles	HotSpot with	JDK
– JNDI
– JPDA
– RMI/Corba
– JavaSound
2000
• Q1	2000
– JRockit 1.0	released
– “Very	1.0”
– N	x	M	green	threads	hybrid
– We	actually	sell	some	licenses
• We	are	stupid	enough	to	write	it	in	the	year	end	
financial	statement
2001
2001
• Appeal	Virtual	Machines	is	broken	out	from	
Appeal	Software	Solutions
• Appeal	Virtual	Machines	finally	gets	its	Java	
License!
• “Managability value	add”
• Static	compiler	mindset	still	very	strong
• Very	hard	to	sell	adaptive	runtimes	as	concept
2001
• BEA	wants	performance	and	scalability	
YESTERDAY
• We	take	time	to	help	them	out
• Start	cooperating	on	benchmarks
2001
• Intel	/	BEA	discussions	about	JRockit
2001
• The	Itanium	gets	introduced
2001
• JavaOne 2001
• I	was	mostly	in	San	Mateo	getting	JRockit
to	run	on	IA64	in	binary	translation	mode
2002
2002
• JDK	1.4	“Merlin”
– First	platform	developed	under	JCP
– assert	keyword
– Regexps (sorta like	Perl	but	not	really)
– Exception.getCause()
– NIO
– Logging	API
– Image	I/O
– XML
– IPv6
2002
• Valentine’s	day:	BEA	acquires	Appeal	
Virtual	Machines
• Now:	how	do	we	make	money?
• Eventually	we	found	4	value	adds
2002
• Valentine’s	day:	BEA	acquires	Appeal	
Virtual	Machines
• Now:	how	do	we	make	money?
• Eventually	we	found	4	value	adds
2002
• Value	add	#1
– CCE/SE
– Implement	BEA’s	multi	tier	support	process
2002
• Value	add	#2
– Managability
– JSR	works	starts	on	JSR-174
– Management	console	is	the	first	part	of	Java	
Mission	Control	to	get	out	there
2003-2004
• Some	hardware	observations	are	in	order
2003-2004
• Some	hardware	observations	are	in	order
– Clock	rate	curves	start	to	flatten	out
2003-2004
• Some	hardware	observations	are	in	order
– Clock	rate	curves	start	to	flatten	out
– Multi	cores,	NUMA,	hyperthreading
2003-2004
• Some	hardware	observations	are	in	order
– Clock	rate	curves	start	to	flatten	out
– Multi	cores,	NUMA,	hyperthreading
– Java	still	has	explicit	Threads
2003-2004
• Some	hardware	observations	are	in	order
– Clock	rate	curves	start	to	flatten	out
– Multi	cores,	NUMA,	hyperthreading
– Java	still	has	explicit	Threads
– In-order	execution	is	a	bad	idea	for	JITs
2003-2004
• Some	hardware	observations	are	in	order
– Clock	rate	curves	start	to	flatten	out
– Multi	cores,	NUMA,	hyperthreading
– Java	still	has	explicit	Threads
– In-order	execution	is	a	bad	idea	for	JITs
Execution	Time	=	Runtime	Overhead	+	Program	Runtime
2004
• JDK	5.0	(“Tiger”,	JSR-176)
– Number	scheme	changed	from	1.x
– Biggest	Java	release	so	far!
– Generics
– Annotations
– Autoboxing/	unboxing
– Enums
– Varargs (Object…	)
– Static	imports
– java.util.concurrent
2004
• The	Java	Memory	Model	gets	fixed!
2004
• x86_64	released	– not	the	Itanium,	still	64	bit
– For	the	first	time	in	history	AMD	eats	Intel’s	
lunch
– Full	backwards	compatibility	towards	IA32
– Adoption	(recognize	the	parallel	to	Java)
– Wider	register	bandwidth
– 2x	the	number	of	registers
– EXABYTES	of	virtual	memory	space
The	Benchmark	Wars
The	Benchmark	Wars
• SPECjvm98	was	the benchmark	since	time	
immemorial
• SPECjbb2000,	2005
• SPECJAppServer
• Running	SPECjbb2005	is	a	quantifiable	
management	goal
The	Benchmark	Wars
• Brought	real	world	optimizations
– Compressed	references
– Non	contiguous	heaps	for	32	bits
– External	and	internal	heap	compaction
– Concurrent	GC
– Biased	locking
– Large	pages
– NUMA
– Prefetch heuristics
– Using	vectorized hardware	instructions	SSE3/4
– Partial	Escape	Analysis
– Off	heap	storage	prototypes
The	Benchmark	Wars
• Brought	real	world	optimizations
– Compressed	references
– Non	contiguous	heaps	for	32	bits
– External	and	internal	heap	compaction
– Concurrent	GC
– Biased	locking
– Large	pages
– NUMA
– Prefetch heuristics
– Using	vectorized hardware	instructions	SSE3/4
– Partial	Escape	Analysis
– Off	heap	storage	prototypes
The	Benchmark	Wars
• All	this	from	a	few	semi-synthetic	
benchmarks
• Competition	leads	to	Java	server	side	
performance	being	pushed	to	where	it’s	
never	been	before
• “Performance	releases”	not	always	great	for	
stability,	though
The	Benchmark	Wars
“-XXaggressive”	ಠ_ಠ
2004
• Meanwhile	at	Appeal	Virtual	Machines
– Value	add	#3
– Deterministic	GC
– QoS level	for	pause	times
– Modern	applications	want	low	latency	rather	
than	throughput
– Telco,	finance	sectors	went	wild
2004
java –XgcPrio:deterministic –XpauseTarget:5ms
2004
java –XgcPrio:deterministic –XpauseTarget:5ms
2004
• JSR-174	gets	finalized
• Mission	Control	ships	with	its	first	versions
– Production	time	zero	overhead	monitoring
– Limited	flight	recordings	(JRA)
– Extremely	cheap	– Just	use	data	available	from	
the	runtime	already
Latency	Analysis	Tool
Memory	Leak	Detector
2005
Halftime
2006
2006
• Sun	Microsystems	not	doing	all	too	well?
• JavaFX is	going	on.	
– Mobile	phones	are	everything.	
– It	gets	a	bit	quiet	from	our	side	of	the	scene.
2006
• Apache	Harmony
– Needed	to	rewrite	classes	from	scratch
– IBM	and	others	contribute	a	lot	of	code
• Asks	for	Java	license	which	it	doesn’t	get
– Field	of	use	restrictions	claimed	not	compliant	with	
JCP	rules
• Various	JCP	fights	ensue
• Sun	opens	up	JVM/JDK	sources	under	GPL	v2
2006
• JDK	6.0	(December,	JSR-270)	“Mustang”
– javax.scripting(built	in	Rhino	
integration)
– Compiler	API
– JDBC	4.0
– Dynamic	languages,	JSR-292	up	for	review
Fantom
Fortress
BeanShell
Jaskell
ANTLR
JudoScript
ABCL
Erjang
X10
myForth
jdart
jgo
Nice
Gosu
Jacl
2006
• Dynamic	languages	are	becoming	trendy
• JRuby leads	the	growth
• JSR-292,	invokedynamic
• BEA,	IBM,	Sun	all	in	the	process
– We	contribute	substantially	to	the	spec
• The	polyglot	JVM	effort	is	starting	to	be	coordinated
• Bytecode is	basically	serialized	Java
– No	runtime-only	dispatch
2006
• Virtualization	is	becoming	trendy
• “The	JVM	is	just	a	specialized	operating	
system	for	running	Java”
• BEA	Starts	building	JRockit Virtual	Edition	
(VE)
– Value	add	#4
2006
2006
• Why	is	virtualized	Java	powerful?
– Removal	of	abstraction
– Zero	copy	I/O
– Move	everything	we	can	to	userland
– Minimize	syscalls
– Threads	can	protect	memory	from	other	threads
• Cheap	read	barriers	for	low	latency	GC!
– But	device	drivers?
– That’s	what	we	have	the	Hypervisor	for
– Heavily	encouraged	by	the	investment	banking	industry
2007
• Apache	requests	TCK
• The	JCP	stalls
• JRockit needs	to	hedge	its	bets,	and	can	run	
Harmony	after	a	few	months
• BEA/Sun	Java	license	discussions
• No	language	updates	for	the	forseeable
future?
2008
• Oracle	acquires	BEA
2008
• Oracle	acquires	BEA
2008
• Oracle	acquires	BEA
• JRockit engineering	works	closely	with	
ExaData and	the	Oracle	server	stacks
• JRockit becomes	default	Oracle	JVM
2008
• Oracle	acquires	BEA
• JRockit engineering	works	closely	with	
ExaData and	the	Oracle	server	stacks
• JRockit becomes	default	Oracle	JVM
• Oracle	forces	the	move	from	VMWare to	
Xen for	Jrockit VE.
2008-2009
• Political	vacuum
• Sun	in	financial	trouble?
2010
• Oracle	acquires	Sun!
2010
• Oracle	acquires	Sun!
2010
• Oracle	acquires	Sun!
• HotRockit?
• JRockit VE	dies	:-(
2010
• Pause	music,	Marcus	does	a	startup
2011
• Sadly,	still	no	new	Java	release	since	2006
• IBM	joins	the	OpenJDK
• Harmony	retires
2011
• Sadly,	still	no	new	Java	release	since	2006
• IBM	joins	the	OpenJDK
• Harmony	retires
• Marcus	comes	back	to	the	Language	team
2011
• Java	7	“Dolphin”
– Plan	“A”
– Initial	(native)	implementation	of	invokedynamic bytecode
– Compressed	oops	default
– Project	Coin
• Try-with-resource,	switch	on	strings,	binary	literals,	
underscores,	multi	catch	with	|	separators
– Concurrency	utilities	finalized	(JSR-166)
– NIO-2	(JSR-203)
2011
• Java	7	extremely	well	received	by	
community!
• Tipping	point	and	community	goodwill
• Oracle’s	second	JavaOne extremely	well	
received
JVM	Architecture	observation
• We	have	the	backwards	compatibility	still
• We	will	always	maintain	it
– In	some	ways,	things	might	change,	e.g.	
Jigsaw,	but	fundamental	compatibility	will	
always	be	there
JVM	Architecture	observation
• Demo:	AkroMail,	binaries	compiled	easter 1997.
2011-2012
• Java	8	development	starts	picking	up	
speed
• Nashorn project	officially	starts
• JMC	/	servicability port	to	HotSpot
completes,	part	of	Java	8	(7u40)
• Better	build	and	test	infrastructure
2013
• Crunch	mode
2013
• Crunch	mode
• Huge	security	backlog	goes	away!
2014
• Java	8	(released	March	18)
– Biggest	and	best	Java	release	ever
– Perm	gen	removal
– Type	annotation
– Unsigned	integer	math
– Repeated	annotations
– Date	and	Time	API	(JSR-310)
– Nashorn
2014
2014
2014
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
for (Integer cost : costBeforeTax) {
double price = cost + .25*cost;
System.out.println(price);
}
2014
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().
map((cost) -> cost .25*cost).
forEach(System.out::println);
2014
List<?> costBeforeTax =
Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.parallelStream().
map((cost) -> cost .25*cost).
forEach(System.out::println);
2014
• …and	the	build	process
• ./configure; make
– 5	minutes
– HUGE	breakthrough	for	productivity
2015
2015
• Java	9	in	the	works
– Jigsaw
– JShell REPL	(Project	Kulla)
– Nashorn partial	ES6	support,	huge	
performance	improvements
2015
• After	Java	9
– Value	types	(project	Valhalla)
– Foreign	function	interface	(project	Panama)
– Arrays	2.0
– Deterministic	and	Low	Latency	GC
– More	open	source	JVM	implementations:	J9,	
dynamic	language	applications.
2015
• Java	is	vibrant	again!
• Java	8	is	awesome!
• Java	9	had	an	awesome	JavaOne 2015
• Join	the	JCP!
Q	&	A?

More Related Content

Viewers also liked

Opovo 6
Opovo 6Opovo 6
Opovo 6laelmi
 
Waarom verantwoorde kwekers samenwerken met DogCatandCo
Waarom verantwoorde kwekers samenwerken met DogCatandCoWaarom verantwoorde kwekers samenwerken met DogCatandCo
Waarom verantwoorde kwekers samenwerken met DogCatandCoDogCatandCo - Animals Express
 
Ask the Experts final
Ask the Experts finalAsk the Experts final
Ask the Experts finalDaren Dunkel
 
geography Cape '09 u1 p2 #6
geography Cape '09 u1 p2 #6geography Cape '09 u1 p2 #6
geography Cape '09 u1 p2 #6Liam Nabbal
 
Javaのバージョニング問題の話しよっか
Javaのバージョニング問題の話しよっかJavaのバージョニング問題の話しよっか
Javaのバージョニング問題の話しよっかRyota Murohoshi
 
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うJavaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うKenji Kazumura
 
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылки
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылкиRIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылки
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылкиiSEO
 
Email Marketing + Video: Descubre el potencial de esta combinación exitosa
Email Marketing + Video: Descubre el potencial de esta combinación exitosaEmail Marketing + Video: Descubre el potencial de esta combinación exitosa
Email Marketing + Video: Descubre el potencial de esta combinación exitosaFromDoppler
 
How to customize Spring Boot?
How to customize Spring Boot?How to customize Spring Boot?
How to customize Spring Boot?GilWon Oh
 
Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafLAY Leangsros
 
Gradle入門
Gradle入門Gradle入門
Gradle入門orekyuu
 
Spring MVC Architecture Tutorial
Spring MVC Architecture TutorialSpring MVC Architecture Tutorial
Spring MVC Architecture TutorialJava Success Point
 
Using Music to Support and Enhance Speech & Language in Children with Cochlea...
Using Music to Support and Enhance Speech & Language in Children with Cochlea...Using Music to Support and Enhance Speech & Language in Children with Cochlea...
Using Music to Support and Enhance Speech & Language in Children with Cochlea...exploremusictherapy
 
Spring MVC - The Basics
Spring MVC -  The BasicsSpring MVC -  The Basics
Spring MVC - The BasicsIlio Catallo
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント土岐 孝平
 

Viewers also liked (19)

Opovo 6
Opovo 6Opovo 6
Opovo 6
 
Waarom verantwoorde kwekers samenwerken met DogCatandCo
Waarom verantwoorde kwekers samenwerken met DogCatandCoWaarom verantwoorde kwekers samenwerken met DogCatandCo
Waarom verantwoorde kwekers samenwerken met DogCatandCo
 
Ask the Experts final
Ask the Experts finalAsk the Experts final
Ask the Experts final
 
SantoshDengale
SantoshDengaleSantoshDengale
SantoshDengale
 
geography Cape '09 u1 p2 #6
geography Cape '09 u1 p2 #6geography Cape '09 u1 p2 #6
geography Cape '09 u1 p2 #6
 
Javaのバージョニング問題の話しよっか
Javaのバージョニング問題の話しよっかJavaのバージョニング問題の話しよっか
Javaのバージョニング問題の話しよっか
 
Spring vs EJB
Spring vs EJBSpring vs EJB
Spring vs EJB
 
Spring fundamentals
Spring fundamentalsSpring fundamentals
Spring fundamentals
 
Javaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使うJavaでトランザクショナルメモリを使う
Javaでトランザクショナルメモリを使う
 
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылки
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылкиRIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылки
RIW15: Как увеличить конверсию с сайта в 2 раза и более без ставки на ссылки
 
Email Marketing + Video: Descubre el potencial de esta combinación exitosa
Email Marketing + Video: Descubre el potencial de esta combinación exitosaEmail Marketing + Video: Descubre el potencial de esta combinación exitosa
Email Marketing + Video: Descubre el potencial de esta combinación exitosa
 
How to customize Spring Boot?
How to customize Spring Boot?How to customize Spring Boot?
How to customize Spring Boot?
 
Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and Thymeleaf
 
Gradle入門
Gradle入門Gradle入門
Gradle入門
 
Spring MVC Architecture Tutorial
Spring MVC Architecture TutorialSpring MVC Architecture Tutorial
Spring MVC Architecture Tutorial
 
Using Music to Support and Enhance Speech & Language in Children with Cochlea...
Using Music to Support and Enhance Speech & Language in Children with Cochlea...Using Music to Support and Enhance Speech & Language in Children with Cochlea...
Using Music to Support and Enhance Speech & Language in Children with Cochlea...
 
Javaプログラミング入門
Javaプログラミング入門Javaプログラミング入門
Javaプログラミング入門
 
Spring MVC - The Basics
Spring MVC -  The BasicsSpring MVC -  The Basics
Spring MVC - The Basics
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 

More from JavaDayUA

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeJavaDayUA
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in JavaJavaDayUA
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9JavaDayUA
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...JavaDayUA
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesJavaDayUA
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviewsJavaDayUA
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8JavaDayUA
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsJavaDayUA
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJavaDayUA
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureJavaDayUA
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelJavaDayUA
 
Save Java memory
Save Java memorySave Java memory
Save Java memoryJavaDayUA
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVMJavaDayUA
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaJavaDayUA
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovJavaDayUA
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovJavaDayUA
 
Testing in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras SlipetsTesting in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras SlipetsJavaDayUA
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevJavaDayUA
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovJavaDayUA
 
API first with Swagger and Scala by Slava Schmidt
API first with Swagger and Scala by  Slava SchmidtAPI first with Swagger and Scala by  Slava Schmidt
API first with Swagger and Scala by Slava SchmidtJavaDayUA
 

More from JavaDayUA (20)

STEMing Kids: One workshop at a time
STEMing Kids: One workshop at a timeSTEMing Kids: One workshop at a time
STEMing Kids: One workshop at a time
 
Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...Continuously building, releasing and deploying software: The Revenge of the M...
Continuously building, releasing and deploying software: The Revenge of the M...
 
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the ParenthesesThe Epic Groovy Puzzlers S02: The Revenge of the Parentheses
The Epic Groovy Puzzlers S02: The Revenge of the Parentheses
 
How to get the most out of code reviews
How to get the most out of code reviewsHow to get the most out of code reviews
How to get the most out of code reviews
 
Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8Unlocking the Magic of Monads with Java 8
Unlocking the Magic of Monads with Java 8
 
Virtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOpsVirtual Private Cloud with container technologies for DevOps
Virtual Private Cloud with container technologies for DevOps
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
MapDB - taking Java collections to the next level
MapDB - taking Java collections to the next levelMapDB - taking Java collections to the next level
MapDB - taking Java collections to the next level
 
Save Java memory
Save Java memorySave Java memory
Save Java memory
 
Design rationales in the JRockit JVM
Design rationales in the JRockit JVMDesign rationales in the JRockit JVM
Design rationales in the JRockit JVM
 
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons KrangaNext-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga
 
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail DubkovApache Cassandra. Inception - all you need to know by Mikhail Dubkov
Apache Cassandra. Inception - all you need to know by Mikhail Dubkov
 
Solution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman ShramkovSolution Architecture tips & tricks by Roman Shramkov
Solution Architecture tips & tricks by Roman Shramkov
 
Testing in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras SlipetsTesting in Legacy: from Rags to Riches by Taras Slipets
Testing in Legacy: from Rags to Riches by Taras Slipets
 
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max MyslyvtsevReactive programming and Hystrix fault tolerance by Max Myslyvtsev
Reactive programming and Hystrix fault tolerance by Max Myslyvtsev
 
Spark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris TrofimovSpark-driven audience counting by Boris Trofimov
Spark-driven audience counting by Boris Trofimov
 
API first with Swagger and Scala by Slava Schmidt
API first with Swagger and Scala by  Slava SchmidtAPI first with Swagger and Scala by  Slava Schmidt
API first with Swagger and Scala by Slava Schmidt
 

Recently uploaded

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

20 Years of Java