¿Java? Virtual MachineQuantas línguas fala a JVM?
Agenda• Introdução• A Java Virtual Machine• A JVM Dinâmica• A JVM de Babel• Ferramentas para programadores poliglotas• Con...
INTRODUÇÃOComo anda o mercado em relação à        linguagem Java
Panorama• Linguagem Java evolui lentamente• Futuro do Java ainda é incerto devido à  Oracle• Existem diversas linguagens d...
Panorama - ExigênciasHardware   Software   Peopleware
E O QUE A JVM  TEM A VER COM      ISSO? Quais as vantagens de usar a JVM pararesolver os problemas de desempenho do  dispo...
A Java Virtual Machine      Programa em Java           Bytecode             JVM      Sistema Operacional           Hardware
A Java Virtual Machine             Programa em JavaA JVM não         Bytecode conhece                    JVMJava!!! Só byt...
Por que a JVM?Coleta de   Gerência de                          Portabilidade  Lixo       Memória                          ...
Por que outras linguagens?• Paradigmas  • Usar o paradigma que mais se encaixa, para resolução    do problema• Domínios Es...
A JVM DINÂMICAO suporte da JVM a linguagens dinâmicas
Linguagens dinâmicas• Recursos da plataforma Java• Vasto ecossistema de frameworks e  bibliotecas opensource• Possibilidad...
Linguagens dinâmicas                    JVM com  JSR 223       tipagem estática            JSR-292        Linguagens     d...
As estrelas do momento                  Java        Earlang           Ruby  Javascript      JVM         Clojure        Gro...
DaVinci• Suporte arquitetural de primeira classe para  linguagens , sem ser o Java• Idéia de rodar outras linguagens com p...
A JVM DE BABELAlgumas das muitas línguas da JVM
PythonAlto nívelInterpretadaImperativaOrientada a objetosTipagem dinâmica e forteMultiparadigma
Python/Jython• Elegante, Legível, Robusta• Google utiliza em toda sua infraestrutura,  podendo destacar Youtube, GoogleMap...
Python/Jython• Jython trouxe o Python para JVM• Linguagem fácil de aprender mas ao  mesmo tempo poderosa de usar• Jython p...
Jython + Swing Jtablefrom javax.swing import JTablefrom javax.swing import JFramerowdata = [(bill, Bill Williams)]colnames...
Javascript/Rhino/AJAX!?• Linguagem script mais usada, em todos os  browsers,Flash(ActionScript), Server-  Side(Phobos, Rhi...
Javascript/Rhino• Rhino+JSR223 integrados por padrão no  Java6• Javascript por ser mais flexível, pode ser  usada em uma s...
Javascript/Rhinoimport javax.script.*;public class EvalScript {    public static void main(String[] args) throws Exception...
Ruby/JRuby• Mais poderosa que o Perl e mais OO que o  Python• Influências de SmallTalk ,Eiffel e Lisp• Tipagem dinâmica e ...
Ruby/JRuby7.class           => Fixnum“hello”.length    => 53.times { |i| puts “Number #{i}” }                  => Number 1...
Ruby/JRubyDef fazer_quack(quacker) quacker.quackendfazer_quack(Pato.new)fazer_quack(Pinguin.new)fazer_quack(Polvo.new)
Ruby/JRuby• Projeto iniciado em 2001• Melhor escalabilidade   • JRuby é a versão mais rápida, sendo de 2x-5x mais     rápi...
Ruby/JRuby• Projeto Kenai• Oracle Mix• Slideshare• Twitter• Justin.TV• Milhares de outros projetos
Clojure• Dialeto Lisp    • Funcional e não OO•   Funções de primeira classe!•   STM - Software transactional memory•   Sup...
Groovy• OO• Sintaxe bem parecida com Java• Executa código Java sem modificação• Sintaxe simples sem parêntesis e ponto  vi...
Scala• Criada por Martin Odersky em 2001• OO e Funcional• Linguagem de propósito geral• Alto e perfeito suporte a  concorr...
Outras linguagens• Kawa,Jatha , Groovy, BeanShell,• Pnuts, Jacl (TCL), JudoScript,Ioke• Jaskell, Sleep (Perl), Jelly, AWK,...
FERRAMENTAS     PARAPROGRAMADORES  POLIGLOTAS Ferramentas e tecnologias para    programadores poliglotas
Integração com outras            tecnologias• Netbeans possui suporte à todas as  linguagens vistas até agora• Eclipse tem...
Linguagens Dinâmicas e           Frameworkshttp://glassfish-scripting.dev.java.net
Conclusão• Mercado em expansão• Tendências como NoSQL, Cloud Computing estão  impulsionando o desenvolvimento com novas  l...
Perguntas
Próximos SlideShares
Carregando em…5
×

Java virtual machine quantas linguas fala a jvm2

3.741 visualizações

Publicada em

Palestra que fala da JVM e as muitas linguagens que que ela suporta. Essa palestra eu ministrei no UAIJUG, na primeira reunião mensal.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.741
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java virtual machine quantas linguas fala a jvm2

  1. 1. ¿Java? Virtual MachineQuantas línguas fala a JVM?
  2. 2. Agenda• Introdução• A Java Virtual Machine• A JVM Dinâmica• A JVM de Babel• Ferramentas para programadores poliglotas• Conclusão• Perguntas
  3. 3. INTRODUÇÃOComo anda o mercado em relação à linguagem Java
  4. 4. Panorama• Linguagem Java evolui lentamente• Futuro do Java ainda é incerto devido à Oracle• Existem diversas linguagens dinâmicas no mercado • Python, PHP, Ruby, Scala, Groovy, Clojure... • Muitas em ascensão• Mercado exige cada vez mais performance
  5. 5. Panorama - ExigênciasHardware Software Peopleware
  6. 6. E O QUE A JVM TEM A VER COM ISSO? Quais as vantagens de usar a JVM pararesolver os problemas de desempenho do dispositivo entre a cadeira e o monitor.
  7. 7. A Java Virtual Machine Programa em Java Bytecode JVM Sistema Operacional Hardware
  8. 8. A Java Virtual Machine Programa em JavaA JVM não Bytecode conhece JVMJava!!! Só bytecode Sistema Operacional Hardware
  9. 9. Por que a JVM?Coleta de Gerência de Portabilidade Lixo Memória Controle deSegurança Performance Exceções Suporte a Multithread
  10. 10. Por que outras linguagens?• Paradigmas • Usar o paradigma que mais se encaixa, para resolução do problema• Domínios Específicos • Linguagens que facilitam a criação/manutenção de determinados tipos de aplicação• Ferramentas • Corrigir/Adicionar Ferramentas a linguagem Java • Linguagem demora a adquirir certas características usadas pelos programadores, devido a burocracia e grande utilização
  11. 11. A JVM DINÂMICAO suporte da JVM a linguagens dinâmicas
  12. 12. Linguagens dinâmicas• Recursos da plataforma Java• Vasto ecossistema de frameworks e bibliotecas opensource• Possibilidade de atacar diversos tipos de problemas com a ferramenta certa• Evitar soltar um parafuso com um alicate, ou matar moscas com bazuca!
  13. 13. Linguagens dinâmicas JVM com JSR 223 tipagem estática JSR-292 Linguagens dinâmicas na JVM
  14. 14. As estrelas do momento Java Earlang Ruby Javascript JVM Clojure Groovy Python Scala
  15. 15. DaVinci• Suporte arquitetural de primeira classe para linguagens , sem ser o Java• Idéia de rodar outras linguagens com performance comparável a da linguagem Java• Idéia de coexistência, tornando a JVM uma plataforma “universal” para todas as linguagens• Acabar com a dificuldade dos desenvolvedores de linguagens, que poderão usar a JVM com facilidade
  16. 16. A JVM DE BABELAlgumas das muitas línguas da JVM
  17. 17. PythonAlto nívelInterpretadaImperativaOrientada a objetosTipagem dinâmica e forteMultiparadigma
  18. 18. Python/Jython• Elegante, Legível, Robusta• Google utiliza em toda sua infraestrutura, podendo destacar Youtube, GoogleMaps e GAE• Crescente utilização para Web através de frameworks como Django, TurboGears• Utilizada para tarefas administrativas em diversas distribuições Linux
  19. 19. Python/Jython• Jython trouxe o Python para JVM• Linguagem fácil de aprender mas ao mesmo tempo poderosa de usar• Jython pode acessar libs e frameworks escritos tanto em Python como em Java! Python Java Jython
  20. 20. Jython + Swing Jtablefrom javax.swing import JTablefrom javax.swing import JFramerowdata = [(bill, Bill Williams)]colnames = [user name, full name]table = JTable(rowdata, colnames)frame = JFrame("Table")frame.getContentPane().add( table )frame.size = 400, 300frame.visible = 1
  21. 21. Javascript/Rhino/AJAX!?• Linguagem script mais usada, em todos os browsers,Flash(ActionScript), Server- Side(Phobos, Rhino,JMaki,ASP)• Boa para codificar GUIs ex:JQuery, ExtJS• Multiparadigma contando com closures,herança baseada em protótipo• AJAX faz com que seja indispensável nos dias de hoje
  22. 22. Javascript/Rhino• Rhino+JSR223 integrados por padrão no Java6• Javascript por ser mais flexível, pode ser usada em uma série de finalidades como regras de negócios que mudam freqüentemente• Usado pelo Mozilla
  23. 23. Javascript/Rhinoimport javax.script.*;public class EvalScript { public static void main(String[] args) throws Exception { // cria um gerente para o motor de scripts ScriptEngineManager factory = new ScriptEngineManager(); // cria o motor JavaScript como mostrado nos exemplos anteriores ScriptEngine engine = factory.getEngineByName("js"); // interpreta o codigo Javascript engine.eval("print(Hello World, Javascript on the JVM)"); }}
  24. 24. Ruby/JRuby• Mais poderosa que o Perl e mais OO que o Python• Influências de SmallTalk ,Eiffel e Lisp• Tipagem dinâmica e forte• Puramente OO (Tudo é um objeto)• Focada na simplicidade, produtividade e na felicidade do programador
  25. 25. Ruby/JRuby7.class => Fixnum“hello”.length => 53.times { |i| puts “Number #{i}” } => Number 1 Number 2 Number 3
  26. 26. Ruby/JRubyDef fazer_quack(quacker) quacker.quackendfazer_quack(Pato.new)fazer_quack(Pinguin.new)fazer_quack(Polvo.new)
  27. 27. Ruby/JRuby• Projeto iniciado em 2001• Melhor escalabilidade • JRuby é a versão mais rápida, sendo de 2x-5x mais rápida que outras versões e com threads nativas• Boa forma de colocar o Ruby no ambiente corporativo• Integração com libs/frameworks Java e vice-versa• http://jruby.org/
  28. 28. Ruby/JRuby• Projeto Kenai• Oracle Mix• Slideshare• Twitter• Justin.TV• Milhares de outros projetos
  29. 29. Clojure• Dialeto Lisp • Funcional e não OO• Funções de primeira classe!• STM - Software transactional memory• Suporte a Concorrência/Multicore/Paralelismo• Dados Imutáveis• Integrada com Java• http://clojure.org/
  30. 30. Groovy• OO• Sintaxe bem parecida com Java• Executa código Java sem modificação• Sintaxe simples sem parêntesis e ponto virgula• Listas, Mapas e Expressões Regulares• Integração Bi-Direcional• http://groovy.codehaus.org/Portuguese+Home
  31. 31. Scala• Criada por Martin Odersky em 2001• OO e Funcional• Linguagem de propósito geral• Alto e perfeito suporte a concorrência/paralelismo• Tipagem Estática• http://www.scala-lang.org
  32. 32. Outras linguagens• Kawa,Jatha , Groovy, BeanShell,• Pnuts, Jacl (TCL), JudoScript,Ioke• Jaskell, Sleep (Perl), Jelly, AWK, JEP,• Jexl, JST, SISC (Scheme), Athena• (Smaltalk), Jepp (Python native),• Quercus (PHP), BexScript, Jasconn• (AppleScript), JavaFX...• http://en.wikipedia.org/wiki/List_of_JVM_languages• http://www.is-research.de/info/vmlanguages/
  33. 33. FERRAMENTAS PARAPROGRAMADORES POLIGLOTAS Ferramentas e tecnologias para programadores poliglotas
  34. 34. Integração com outras tecnologias• Netbeans possui suporte à todas as linguagens vistas até agora• Eclipse tem suporte a várias dessas linguagens• Glassfish v3 possui integração com novos frameworks sendo o “container” perfeito, para Java e outras linguagens
  35. 35. Linguagens Dinâmicas e Frameworkshttp://glassfish-scripting.dev.java.net
  36. 36. Conclusão• Mercado em expansão• Tendências como NoSQL, Cloud Computing estão impulsionando o desenvolvimento com novas linguagens• Novos paradigmas e problemas!• Como dito no livro “Pragmatic Programmer”, o bom programador deve aprender várias linguagens, pelo menos uma por ano• Grandes nomes do TI como Sun, Microsoft, IBM e Oracle apostam nestas linguagens
  37. 37. Perguntas

×