SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
JVM do Java 8
de dentro pra fora
Mario Amaral
@mario_fts
github.com/mariofts
Quem sou eu?
Mário Amaral
Instrutor e Desenvolvedor
Caelum Stella
Vraptor
JVM do Java 8
de dentro pra fora
Modularização da JVM
Nova Engine de Js
Mudanças na Memória
O que ficou de fora...
Modulariza
çãodaJVM
Tamanho da JVM
~140 MB
Dispositivos
menores
Arduino BeagleBoard Raspberry Pi
Compact Profiles
4 profiles default
Compact 1
Core
Date & Time
Collections
...
Compact 2
Compact 1
JDBC
Jax-P
Compact 3
Compact 3
Security
JMX
FUll SE
Compact 3
Swing
Jax-WS
Resto...
10 MB
compact1
17 MB
compact2
24 MB
compact3
140 MB
Full jre
NovaVMde
JavaScript
PERA...
Dá pra rodar javascript de
dentro da JVM?
SIM
Rhino
Mozilla
Java 6
Compila js para bytecode
Na verdade...
Várias linguagens
Java 7
invokedynamic
Nashorn
Oracle
Java 8
Compila js para bytecode
Usa novas features
hello.js
var hello = function() {
print("Hello Nashorn!");
};
hello();
no terminal...
$ jjs hello.js
Hello Nashorn!
$
No java....
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("hello.js");
Mudanças
naMemória
Memória do Java é modular
PermGen
Objetos "permanentes"
Metadados de Classes
Ref. estáticas
Pool de Strings
O Problema...
Nem tudo é permanente...
OutOfMemoryError: PermGen
Space
MetaSpace
Memória Nativa
Dinâmico
Nunca mais
OutOfMemoryError: PermGen Space
Mas..
 
Mas..
OutOfMemoryError: Metadata Space
Tamanho do MetaSpace é
configurável
-XX:MetaspaceSize
-XX:MaxMetaspaceSize
E o futuro?
JigSaw
Modularização
Fim do Jar Hell
jdeps
Comando para mostrar
dependência entre jars
jdeps -cp * vraptor-4.0.1-SNAPSHOT.jar
vraptor-4.0.0.Final.jar -> xstream-1.4.7.jar
vraptor-4.0.0.Final.jar -> javassist-3.18.1-GA.jar
vraptor-4.0.0.Final.jar -> iogi-1.0.0.jar
vraptor-4.0.0.Final.jar -> commons-io-2.2.jar
vraptor-4.0.0.Final.jar -> paranamer-2.6.jar
vraptor-4.0.0.Final.jar -> jstl-1.2.jar
vraptor-4.0.0.Final.jar -> javax.annotation-api-1.2.jar
vraptor-4.0.0.Final.jar -> mirror-1.6.1.jar
vraptor-4.0.0.Final.jar -> gson-2.2.4.jar
vraptor-4.0.0.Final.jar -> slf4j-api-1.7.5.jar
vraptor-4.0.0.Final.jar -> validation-api-1.1.0.Final.jar
vraptor-4.0.0.Final.jar -> javax.interceptor-api-1.2.jar
vraptor-4.0.0.Final.jar -> weld-core-impl-2.1.2.Final.jar
vraptor-4.0.0.Final.jar -> javax.ejb-api-3.2.jar
vraptor-4.0.0.Final.jar -> guava-15.0.jar
vraptor-4.0.0.Final.jar -> jdk1.8.0_05.jdk/Contents/Home/jre/lib/rt.ja
vraptor-4.0.0.Final.jar -> javax.inject-1.jar
vraptor-4.0.0.Final.jar -> javax.servlet-api-3.1.0.jar
vraptor-4.0.0.Final.jar -> commons-fileupload-1.3.1.jar
vraptor-4.0.0.Final.jar -> cdi-api-1.1.jar
Referências
Oracle: what's new
Compact profiles overview
Mais sobre compact profiles
Post sobre o Nashorn
Permgem vs. Metaspace
JVM do Java 8
de dentro pra fora
Mario Amaral
@mario_fts
github.com/mariofts

Mais conteúdo relacionado

Mais procurados

Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Otávio Santana
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Princípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémPrincípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémLocaweb
 

Mais procurados (6)

Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Princípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e AlémPrincípios de Concorrência em Ruby e Além
Princípios de Concorrência em Ruby e Além
 
Testing node.js
Testing node.jsTesting node.js
Testing node.js
 
Pouch db tdc2016
Pouch db tdc2016Pouch db tdc2016
Pouch db tdc2016
 

Semelhante a Detalhes internos da nova JVM do Java 8 @mariofts

Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfSlides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfJadna Almeida
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com JavaAlisson Pedrina
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Marcio Sfalsin
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machineBruno Coan
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia JavaThiago Gonzaga
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformMilfont Consulting
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01Daniel Alves
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01rollbackpt
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilMarcio Garcia
 

Semelhante a Detalhes internos da nova JVM do Java 8 @mariofts (20)

Slides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdfSlides 04 - A Linguagem Java.pdf
Slides 04 - A Linguagem Java.pdf
 
Alta Performance com Java
Alta Performance com JavaAlta Performance com Java
Alta Performance com Java
 
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
 
JBoss5 @ FISL
JBoss5 @ FISLJBoss5 @ FISL
JBoss5 @ FISL
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Introdução Java virtual machine
Introdução Java virtual machineIntrodução Java virtual machine
Introdução Java virtual machine
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia Java
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
 

Detalhes internos da nova JVM do Java 8 @mariofts