• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dr Java Virtual Machine
 

Dr Java Virtual Machine

on

  • 1,456 views

Apresentação para o Locaweb TechDay (Nov/2009) falando sobre a JVM (Java Virtual Machine).

Apresentação para o Locaweb TechDay (Nov/2009) falando sobre a JVM (Java Virtual Machine).

Statistics

Views

Total Views
1,456
Views on SlideShare
1,453
Embed Views
3

Actions

Likes
0
Downloads
15
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dr Java Virtual Machine Dr Java Virtual Machine Presentation Transcript

  • Dr. “Java Virtual Machine” Otávio Fernandes otavio.fernandes@locaweb.com.br http://blog.emresumo.com/
  • Ou...
  • Como eu aprendi a parar de odiar Java e Amar a JVM
  • OMG! Ele disse “ódio”. Vamos ter que inventar um novo Design Pattern.
  • Porque “ódio” ao Java? • Em primeiro lugar: Sarcasmo (ponto); • Escreve-se mais do que o necessário; • Necessidade imposta de uma IDE; • Padrões impostos; • Foco na plataforma e não no programador; • Complexidade/Excesso dos Frameworks; • Excessivamente “Enterprise”;
  • É fato, existem inúmeros códigos extremamente competentes em Java. Todas as plataformas implicam em limitações.
  • O futuro da linguagem Java? • Compatibilidade com as versões anteriores; • Apenas bug-fixes, poucas features; • E assim, é cada vez mais difícil prosseguir;
  • Reinvento do “Java” • 1993: Oak se transforma em Java; • 2009: JVM é plataforma para (n+1) linguagens; • Java está caminhando para ser o novo “Cobol”;
  • Aproveitar os excelentes códigos que já foram feitos e estão há anos em produção. Estabilidade.
  • JVM
  • “Amor” a JVM • Excelente Garbage Collector; • HotSpot (foi comprado da LLC, para a v1.3); • JIT (Just in Time) Compilation; • Disponível em N plataformas e Java Cards; • Adaptive Optimization (Hot Spots); • Threads (das boas!); • Startup Time Delay;
  • Otimizações na JVM • Destaques: • Gerações da Memória HEAP (onde estão os objetos); • Teoria da Mortalidade Infantil; • JIT; • Hot Spots; • Startup Time Delay;
  • A Oracle/Sun afirma que a JVM tem mais de 4.5 bilhões de instâncias.
  • Como a JVM trabalha?
  • Conjunto de Instruções • Load/store; • Arithmetic; • Type conversion; • Object creation and manipulation; • Operand stack management (push/pop); • Control transfer (branching); • Method invocation and return; • Throwing exceptions; • Monitor-based concurrency;
  • No final, tudo se resume ao Java Bytecode...
  • Java Bytecode 0 aload_0 1 invokespecial #3 <Method java.lang.Object()> 4 aload_0 5 aload_1 6 putfield #5 <Field java.lang.String name> 9 aload_0 10 iload_2 11 putfield #4 <Field int idNumber> 14 aload_0 15 aload_1 16 iload_2 17 invokespecial #6 <Method void storeData(java.lang.String, int)> 20 return
  • No seu cerne a JVM é dinâmica.
  • A melhor parte da JVM
  • Está sendo utilizada para outras linguagens. Mais modernas, outros paradigmas.
  • Exemplos: • JRuby; • Scala; • Clojure; • e muitas outras...
  • JRuby
  • Chamada as APIs do Java. Isso indica que eu poderia testar as minhas aplicações Java (legadas ou não) com RSpec, por exemplo.
  • Implementação do JRuby: • Predominantemente Java; • A parte dinâmica do Ruby veio a partir de Reflections; • Workarrounds: • Stripping Types; • Boxing Types; • Boxing Arrays;
  • Chamadas Reflexivas são sempre mais lentas do que as convencionais, apesar de toda a evolução da JVM para melhorar isso.
  • Porem, no Java 7... • Da Vinci Machine ou MLVM (Multi Language Virtual Machine); • Instrução do “invokedynamic”; • JSR 292; • Suporte nativo as linguagens dinâmicas;
  • Obrigado.
  • Perguntas?
  • Agradecimentos especiais: “Stanley Kubrick” William Markito (Ericsson) Fábio Kung (Locaweb) Maurício Aniche (Locaweb) Ricardo Ruiz (Locaweb)