SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 2
Quem	sou?
• Bacharel	em	Ciência	da	Computação	pela	UFRJ
• Especialista	em	Desenvolvimento	de	Aplicações	e	
Arquiteto	de	Soluções	para	Plataformas	em	Nuvem	
na	Oracle
• Desenvolvedor	apaixonado	pela	Tecnologia	Java e	
pela	Comunidade	Java
• Developer Advocate |	Java	Evangelist Apprentice
https://www.linkedin.com/in/paulosimoes @pasimoes
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Safe	Harbor	Statement
The	following	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.
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Agenda
Java SE 9 – JSR da Plataforma
Modularidade e Novas Capacidades
Comunidade Java
Agradecimentos!
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 5
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 6
Java	SE	9	Platform	Umbrella	JSR	(379)
• Oracle
• Azul	
Systems
• Red	Hat
• IBM
• Google
Agenda
• 2016/05/26 Feature Complete
• 2017/02/09 All Tests Run
• 2017/02/16 Zero	Bug	Bounce
• 2017/06/22 Initial Release	Candidate
• 2017/07/06 Final	Release	Candidate
• 2017/09/21 General	Availability
JSR	379:	JavaTM SE	9	Release	Contents	
https://jcp.org/en/jsr/detail?id=379
JDK	9	Project
http://openjdk.java.net/projects/jdk9/
Expert	Group	Inicial
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Novas funcionalidades e
capacidades
Novas ferramentas e capacidades que possam ser uteis para a
maioria dos desenvolvedores
7
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
• JEP	261:	Sistema	de	Módulos
• JEP	200:	A	JDK	Modular
• JEP	201:	Código	Fontes	Modular
• JEP	220:	Imagens	de	tempo	de	
execução	modulares
• Mais:
– JEP	260:	Encapsula	a	maiora	das	APIs	
Internas
– JEP	282:	Jlink:	O	Java	Linker
8
Projeto	Jigsaw	:	Modularize	a	Plataforma	Java
Ref:	http://mreinhold.org/blog/jigsaw-module-system
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Background	:	Modularidade
• Sistema	de	Modulos	da	Plataforma	Java
– JSR376	(alvo	Java	SE	9)
• OpenJDK	Project	Jigsaw
– JEP	200,	201,	220,	260,	261
Declaração	do	Modulo
9
Modulo?
OpenJDK	Projeto	Jigsaw	:	Modularidade
Ref:	http://mreinhold.org/blog/jigsaw-module-system
com.foo.bar.alpha.Alpha
com.foo.bar.alpha.AlphaFactory
com.foo.bar.beta.Beta
com.foo.bar.beta.BetaFactory
Modulo: com.foo.bar
Pacote
module-info.java
com/foo/bar/alpha/AlphaFactory.java
com/foo/bar/alpha/Alpha.java
...
module-info.java >
module com.foo.bar {
requires org.baz.qux;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
com.foo.app
lê
com.foo.bar
Public	≠	Acessível
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 10
Resolução	dos	Módulos
• Dado	o	módulo	de	aplicação	inicial,	o	sistema	de	
módulo	resolve	as	dependências	expressas	em	
suas	cláusulas	necessárias,	localizando	módulos	
observáveis	adicionais	para	atender	a	essas	
dependências	e,	em	seguida,	resolve	as	
dependências	desses	módulos,	e	assim	por	
diante,	até	que	cada	dependência	de	cada	
módulo	seja	cumprida.	
• O	resultado	dessa	computação	é	um	grafo	de	
módulo que,	para	cada	módulo	com	uma	
dependência	que	é	cumprida	por	algum	outro	
módulo,	contém	um	caminho	direto	do	primeiro	
módulo	para	o	segundo.
module com.foo.app {
requires com.foo.bar;
requires java.sql;
}
module com.foo.bar {
requires org.baz.qux;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
module java.sql {
requires public java.logging;
requires public java.xml;
export java.sql;
export javax.sql;
export javax.transaction.xa;
}
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 11
Grafo	da	Modularidade
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 12
Modularidade	:	Simplificação
Mais	Simples
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 13
Literatura Recomendada
Java	9	Modularity
Patterns	and	Practices	for	Developing	Maintainable	Applications
By Paul	Bakker, Sander	Mak
Publisher: O'Reilly	Media
Release	Date: September	2017
The	State	of	the	Module	System
http://openjdk.java.net/projects/jigsaw/spec/sotms/
By	Mark	Reinhold
Release	Date: March	2016
This	document	is	slightly	out	of	date.	But	none	of	the	fundamental	
concepts	has	changed
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 14
tools / jlink
JEP	282:	Jlink:	O	Java	Linker
• Criar	uma	ferramenta	que	pode	montar	e	optimizar	um	conjunto	de	
módulos	e	suas	dependências	em	uma	imagem	de	runtime	costumizada	
como	definido	no	PEC	220.	Defini	um	mecanismo	de	plugin	para	
transformação	e	otimização	durante	o	processo	de	montagem,	e	para	a	
geração	de	formatos	de	imagem	alternativos.
• Criar	um	runtime	otimizado	e	adaptado	para um	único	programa
• JEP	261	define	o	tempo	de	link	como	uma	fase	opcional entre	as	fases	de	
compilação	e	execução. O	tempo	de	Link	necessita	de	uma	ferramenta	de	
linkagem	que	monte	e	otimize um	conjunto	de	modulos e	suas
dependencias	transitivas	para	criar	um	imagem	de	runtime	ou	executável.
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 15
deploy / packager
JEP	275:	Empacotamento	Modular	de	Aplicações	Java
• Integrar	os	recursos do	Projeto	Jigsaw no	Java	Packager,	incluindo	o	
conhecimento	de	modulos	e	a	criação	de	runtime	customizados
• Alanvancar	o	uso	de	Jlink no	nosso	packager	para criar	pacotes	menores
• O	packager	irá	criar	aplicações	que	utilizam	apenas	o	runtime	JDK	9.
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 16
core-libs / java.util:collections
JEP	269:	Métodos	Factory	Convenientes	para	Collections
• Define	biblioteca de	APIs	que	tornam	conveniente	a	criação	de	instâncias	
de	coleções	e	mapas	com	poucos	números	de	elementos,	de	forma	a	
aliviar	a	dor	de	não	ter	coleções	literais	na	Linguagem	Java
• Diminui	a	quantidade	de	código necessário	para	a	criação	de	pequenas	
coleções	e	mapas
List<String> euCountries = new ArrayList<>();
euCountries.add("France");
euCountries.add("Bulgaria");
euCountries.add("Germany");
List.of("France", "Bulgaria",
"Germany");
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 17
tools / jshell
JEP	222:	JShell:	O	Java	Shell	(Read-Eval-Print	Loop)
• Fornecer	uma	ferramenta	interativa	para	avaliar	declarações,	sentenças	e	
expressões	da	linguagem	de	programação	Java,	juntamente	com	uma	API	
para	que	outras	aplicações	podem	utilizar	esta	funcionalidade
• Uma	Read-Eval-Print	Loop	(REPL)	é	uma	ferramenta	de	programação	
interativa	que	permite	loops,	leitura	continua	da	entrada	do	usuário,	
avaliação	da	entrada,	e	impressão	do	valor	da	entrada	ou	uma	descrição	
da	mudança	de	estado	que	a	entrada	causou.	
• Scala,	Ruby,	JavaScript,	Haskell,	Clojure	e	Python	todos	têm	REPLs	e	todos	
permitem	pequenos	programas	iniciais.	JShell	adiciona	funcionalidade	
REPL	para	a	plataforma	Java
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 18
G1	com	Garbage Collector Padrão	(JEP	248)
• Antes	do	Java	9,	o	garbage collector padrão	era	tipicamente	o	Parallel GC	
nas	VMs em	servidores	e	o	Serial	GC	nas	VMs em	Clientes.
• No	Java	9, as	VMs em	servidores	utilizarão	o	G1	como	o	default.	G1	é	um	
garbage collector paralelo	e	de	pequena-pausa	que	trabalha	
especialmente	bem	para	maquinas	multi-core com	grandes	tamanhos	de	
memória	heap.
• Em	adicional,	o	coletor	Concurrent Mark	Sweep (CMS)	foi	deprecado.
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 19
Permitindo o	compartilhamento de	código
Metodos Privados em Interfaces
interface Greeter {
...
default void greetSomeone(String personName, boolean female) {
System.out.println("Hi " + getTitle(female) + " " + personName);
}
default void farewellSomeone(String personName, boolean female) {
System.out.println("Bye " + getTitle(female) + " " + personName);
}
private String getTitle(boolean female) {
return female ? "Ms" : "Mr";
}
}
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Adotando	novos	padrões
JDK	9	mantendo-se	com	as	melhorias	na	indústria
20
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
Suporte	HTTP/2	
• JEP	110	:	Define	um	nova	API	Cliente	
HTTP	que	implenta HTTP/2	e	WebSocket
– Permite	o	”push”	de	dados	do	Servidor,	
priorizando	e	enviando	os	dados	cruciais	para	
carregamento	da	pagina	web
– Poderá	substituir	a	API	HttpURLConnection
legada
– Pode	atingir	até	47%	de	melhoria	em	
velocidade	de	resposta
– Suportar	tanto	HTTP	1.1	quanto	2.0
21
Outras	novidades
Algoritmos	Hash SHA-3
• JEP	287:	Implementa	as	funções	hash de	
criptografia	(BYTE-only)	especificados	em	
NIST	FIPS	202	
– FIPS	202	define	4	novas	funções	hash:	SHA3-
224,	SHA3-256,	SHA3-384,	e	SHA3-512.	
– Estes	podem	ser	implementados	como	novos	
algoritmos	de	java.security.MessageDigest API	
sob	os	nomes	padronizados	"SHA3-224",	
"SHA3-256",	"SHA3-384",	e	"SHA3-512".	
– Não	são	necessárias	novas	API,	uma	vez	que	
não	há	parametros requeridos.
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		|
JDK	Enhancement	
Proposals
Mais	informações	sobre	cada	JEP:	
http://openjdk.java.net/jeps/{JEP#}
22
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 23
Comunidade Java
“Muito a aprender você ainda tem”
by Mestre Yoda
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 24
314 Grupos	de	
Usuários	Java
§ 88	Países	(~	½	United	Nations)
§ Brasil	2º	(2	Gr.	>	3º	Alemanha)
Desenvolvedores
Java
250+	
Java	Champions
50+	JUG	
constribuindo
para	o	JCP
A	Comunidade	Java	é	Muito	Grande...
10M+
Community
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 25
Rio
http://meetup.com/Java-at-Rio/
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 26
Java	Dev	BR
javadevbr.slack.com
http://nighthacking.com
http://www.oracle.com/technetwork/java/index.html
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 27
Agradecimentos
“Sempre passar o que você aprendeu.”
by Mestre Yoda
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 28
Prof. Miguel Jonathan
Prof. Julio Salek
in memoriam
Tia Deise Lobo
in memoriam
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 29
”Os	olhos	enxergam	apenas	o	que	a	mente	
está	preparada	para	compreender"
by filósofo	francês	Henri	Bergson
Copyright	©	2017, Oracle	and/or	its	affiliates.	All	rights	reserved.		| 30
Java SE 9 - Novas funcionalidades e capacidades
Java SE 9 - Novas funcionalidades e capacidades

Mais conteúdo relacionado

Semelhante a Java SE 9 - Novas funcionalidades e capacidades

VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAYelken Heckman Ferreira Gonzales
 
Colabore e compartilhe com ORACLE Documents Cloud!
Colabore e compartilhe com ORACLE Documents Cloud!Colabore e compartilhe com ORACLE Documents Cloud!
Colabore e compartilhe com ORACLE Documents Cloud!Edison Borges Filho
 
Apresentação OWASP - UBI, Covilhã
Apresentação OWASP - UBI, CovilhãApresentação OWASP - UBI, Covilhã
Apresentação OWASP - UBI, CovilhãCarlos Serrao
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes javaBruno Garcia
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformationtdc-globalcode
 
Apresentação Oracle Documents Cloud Services
Apresentação Oracle Documents Cloud ServicesApresentação Oracle Documents Cloud Services
Apresentação Oracle Documents Cloud ServicesPaolo Boscolo
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Renato Groffe
 
As melhores práticas de desenvolvimento de software em fábrica de software
As melhores práticas de desenvolvimento de software em fábrica de softwareAs melhores práticas de desenvolvimento de software em fábrica de software
As melhores práticas de desenvolvimento de software em fábrica de softwareRafael Souza
 

Semelhante a Java SE 9 - Novas funcionalidades e capacidades (20)

VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVAVRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
VRaptor - Um Framework MVC Web para desenvolvimento ágil com JAVA
 
2015 - PUC Campinas - DBA Career
2015 - PUC Campinas - DBA Career2015 - PUC Campinas - DBA Career
2015 - PUC Campinas - DBA Career
 
Apresentação MSDevelop
Apresentação MSDevelopApresentação MSDevelop
Apresentação MSDevelop
 
Colabore e compartilhe com ORACLE Documents Cloud!
Colabore e compartilhe com ORACLE Documents Cloud!Colabore e compartilhe com ORACLE Documents Cloud!
Colabore e compartilhe com ORACLE Documents Cloud!
 
Apresentação OWASP - UBI, Covilhã
Apresentação OWASP - UBI, CovilhãApresentação OWASP - UBI, Covilhã
Apresentação OWASP - UBI, Covilhã
 
Paa s evento
Paa s eventoPaa s evento
Paa s evento
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Rogério falcone
Rogério falconeRogério falcone
Rogério falcone
 
Certificacoes java
Certificacoes javaCertificacoes java
Certificacoes java
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Apresentacao Convenio
Apresentacao ConvenioApresentacao Convenio
Apresentacao Convenio
 
TDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital TransformationTDC2016SP - Trilha Digital Transformation
TDC2016SP - Trilha Digital Transformation
 
2015 - IFSP Boituva - DBA Career
2015 - IFSP Boituva - DBA Career2015 - IFSP Boituva - DBA Career
2015 - IFSP Boituva - DBA Career
 
Apresentação Oracle Documents Cloud Services
Apresentação Oracle Documents Cloud ServicesApresentação Oracle Documents Cloud Services
Apresentação Oracle Documents Cloud Services
 
Apresentação Executiva
Apresentação ExecutivaApresentação Executiva
Apresentação Executiva
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Conhecendo a owasp
Conhecendo a owaspConhecendo a owasp
Conhecendo a owasp
 
As melhores práticas de desenvolvimento de software em fábrica de software
As melhores práticas de desenvolvimento de software em fábrica de softwareAs melhores práticas de desenvolvimento de software em fábrica de software
As melhores práticas de desenvolvimento de software em fábrica de software
 
Gestão de Projetos
Gestão de ProjetosGestão de Projetos
Gestão de Projetos
 

Java SE 9 - Novas funcionalidades e capacidades