43
JVM do Java 8 de dentro pra fora Mario Amaral @mario_fts github.com/mariofts

Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Embed Size (px)

DESCRIPTION

News on java8 VM

Citation preview

Page 1: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

JVM do Java 8de dentro pra fora

Mario Amaral

@mario_ftsgithub.com/mariofts

Page 2: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Quem sou eu?

Mário AmaralInstrutor e DesenvolvedorCaelum StellaVraptor

Page 3: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

JVM do Java 8de dentro pra fora

Modularização da JVMNova Engine de JsMudanças na MemóriaO que ficou de fora...

Page 4: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Modularização da JVM

Page 5: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Tamanho da JVM

~140 MB

Page 6: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Dispositivosmenores

Arduino BeagleBoard Raspberry Pi

Page 7: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Compact Profiles4 profiles default

Page 8: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Compact 1CoreDate & TimeCollections...

Page 9: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Compact 2Compact 1JDBCJax-P

Page 10: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Compact 3Compact 3SecurityJMX

Page 11: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

FUll SECompact 3SwingJax-WSResto...

Page 12: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

10 MBcompact1

17 MBcompact2

24 MBcompact3

140 MBFull jre

Page 13: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Nova VM deJavaScript

Page 14: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

PERA...Dá pra rodar javascript de

dentro da JVM?

SIM

Page 15: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 16: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

RhinoMozillaJava 6Compila js para bytecode

Page 17: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Na verdade...Várias linguagens

Page 18: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 19: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 20: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Java 7invokedynamic

Page 21: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

NashornOracleJava 8Compila js para bytecodeUsa novas features

Page 22: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

hello.js

var hello = function() { print("Hello Nashorn!");};

hello();

no terminal...

$ jjs hello.jsHello Nashorn!$

Page 23: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

No java....

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("nashorn");

engine.eval("hello.js");

Page 24: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Mudançasna Memória

Page 25: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Memória do Java é modular

Page 26: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

PermGenObjetos "permanentes"Metadados de ClassesRef. estáticasPool de Strings

Page 27: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

O Problema...Nem tudo é permanente...

OutOfMemoryError: PermGenSpace

Page 28: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

MetaSpaceMemória Nativa

Dinâmico

Page 29: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Nunca maisOutOfMemoryError: PermGen Space

Page 30: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Mas.. 

Page 31: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Mas..OutOfMemoryError: Metadata Space

Page 32: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

Tamanho do MetaSpace éconfigurável

-XX:MetaspaceSize-XX:MaxMetaspaceSize

Page 33: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

E o futuro?

Page 34: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

JigSaw

Page 35: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 36: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 37: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 38: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

ModularizaçãoFim do Jar Hell

Page 39: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts
Page 40: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

jdepsComando para mostrardependência entre jars

Page 41: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

jdeps -cp * vraptor-4.0.1-SNAPSHOT.jar

vraptor-4.0.0.Final.jar -> xstream-1.4.7.jarvraptor-4.0.0.Final.jar -> javassist-3.18.1-GA.jarvraptor-4.0.0.Final.jar -> iogi-1.0.0.jarvraptor-4.0.0.Final.jar -> commons-io-2.2.jarvraptor-4.0.0.Final.jar -> paranamer-2.6.jarvraptor-4.0.0.Final.jar -> jstl-1.2.jarvraptor-4.0.0.Final.jar -> javax.annotation-api-1.2.jarvraptor-4.0.0.Final.jar -> mirror-1.6.1.jarvraptor-4.0.0.Final.jar -> gson-2.2.4.jarvraptor-4.0.0.Final.jar -> slf4j-api-1.7.5.jarvraptor-4.0.0.Final.jar -> validation-api-1.1.0.Final.jarvraptor-4.0.0.Final.jar -> javax.interceptor-api-1.2.jarvraptor-4.0.0.Final.jar -> weld-core-impl-2.1.2.Final.jarvraptor-4.0.0.Final.jar -> javax.ejb-api-3.2.jarvraptor-4.0.0.Final.jar -> guava-15.0.jarvraptor-4.0.0.Final.jar -> jdk1.8.0_05.jdk/Contents/Home/jre/lib/rt.jarvraptor-4.0.0.Final.jar -> javax.inject-1.jarvraptor-4.0.0.Final.jar -> javax.servlet-api-3.1.0.jarvraptor-4.0.0.Final.jar -> commons-fileupload-1.3.1.jarvraptor-4.0.0.Final.jar -> cdi-api-1.1.jar

Page 43: Detalhes Internos Da Nova JVM Do Java 8 - @Mariofts

JVM do Java 8de dentro pra fora

Mario Amaral

@mario_ftsgithub.com/mariofts