SlideShare ist ein Scribd-Unternehmen logo
1 von 37
¿Java? Virtual Machine


Quantas línguas fala a JVM?
Agenda
• Introdução
• A Java Virtual Machine
• A JVM Dinâmica
• A JVM de Babel
• Ferramentas para programadores poliglotas
• Conclusão
• Perguntas
INTRODUÇÃO



Como anda o mercado em relação à
        linguagem Java
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
Panorama - Exigências




Hardware   Software   Peopleware
E O QUE A JVM
  TEM A VER COM
      ISSO?

 Quais as vantagens de usar a JVM para
resolver os problemas de desempenho do
  dispositivo entre a cadeira e o monitor.
A Java Virtual Machine
      Programa em Java


           Bytecode


             JVM


      Sistema Operacional


           Hardware
A Java Virtual Machine
             Programa em Java


A JVM não         Bytecode

 conhece
                    JVM
Java!!! Só
 bytecode    Sistema Operacional


                  Hardware
Por que a JVM?

Coleta de   Gerência de
                          Portabilidade
  Lixo       Memória


                          Controle de
Segurança   Performance
                           Exceções


            Suporte a
            Multithread
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
A JVM DINÂMICA



O suporte da JVM a linguagens dinâmicas
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!
Linguagens dinâmicas

                    JVM com
  JSR 223       tipagem estática


            JSR-292




        Linguagens
     dinâmicas na JVM
As estrelas do momento

                  Java

        Earlang           Ruby




  Javascript      JVM         Clojure




        Groovy            Python

                  Scala
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
A JVM DE BABEL



Algumas das muitas línguas da JVM
Python
Alto nível

Interpretada

Imperativa

Orientada a objetos

Tipagem dinâmica e forte

Multiparadigma
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
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
Jython + Swing Jtable
from javax.swing import JTable
from javax.swing import JFrame
rowdata = [('bill', 'Bill Williams')]
colnames = ['user name', 'full name']
table = JTable(rowdata, colnames)
frame = JFrame("Table")
frame.getContentPane().add( table )
frame.size = 400, 300
frame.visible = 1
Javascript/Rhino/AJAX!?
• Linguagem script mais usada, em todos os
  browsers,Flash(ActionScript), Server-
  Side(Phobos, Rhino,JMaki,ASP)
• Boa para codificar GUI's ex:JQuery, ExtJS
• Multiparadigma contando com
  closures,herança baseada em protótipo
• AJAX faz com que seja indispensável nos
  dias de hoje
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
Javascript/Rhino
import 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')");
    }
}
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
Ruby/JRuby
7.class           => Fixnum
“hello”.length    => 5
3.times { |i| puts “Number #{i}” }
                  => Number 1
                    Number 2
                    Number 3
Ruby/JRuby
Def fazer_quack(quacker)
 quacker.quack
end
fazer_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á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/
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
•   Suporte a Concorrência/Multicore/Paralelismo
•   Dados Imutáveis
•   Integrada com Java
•   http://clojure.org/
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
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
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/
FERRAMENTAS
     PARA
PROGRAMADORES
  POLIGLOTAS

 Ferramentas e tecnologias para
    programadores poliglotas
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
Linguagens Dinâmicas e
           Frameworks




http://glassfish-scripting.dev.java.net
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
Perguntas

Weitere ähnliche Inhalte

Was ist angesagt?

Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!Leandro Nishijima
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkFlávio Lisboa
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoPedro Cavalero
 
TDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhereTDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywheretdc-globalcode
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBjesuinoPower
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1guestc9a1c7
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutosBruno Oliveira
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 

Was ist angesagt? (20)

Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Groovy stack
Groovy stackGroovy stack
Groovy stack
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Jclouds jug vale
Jclouds jug valeJclouds jug vale
Jclouds jug vale
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada framework
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalho
 
TDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhereTDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhere
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
 
Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1Java Bahia Desenvolvimento Java Area1
Java Bahia Desenvolvimento Java Area1
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 

Ähnlich wie Java virtual machine quantas linguas fala a jvm2

Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo JavaTI Infnet
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebJairo Junior
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Aula 01 O que é java
Aula 01   O que é javaAula 01   O que é java
Aula 01 O que é javaSergio Silva
 

Ähnlich wie Java virtual machine quantas linguas fala a jvm2 (20)

Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Por dentro da jvm
Por dentro da jvmPor dentro da jvm
Por dentro da jvm
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Java 01 Java Visao Geral
Java 01 Java Visao GeralJava 01 Java Visao Geral
Java 01 Java Visao Geral
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações WebFrameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
 
Dr Java Virtual Machine
Dr Java Virtual MachineDr Java Virtual Machine
Dr Java Virtual Machine
 
Clojure
ClojureClojure
Clojure
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Java basico
Java basicoJava basico
Java basico
 
Aula 01 o que é java
Aula 01  o que é javaAula 01  o que é java
Aula 01 o que é java
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Aula 01 O que é java
Aula 01   O que é javaAula 01   O que é java
Aula 01 O que é java
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 

Mehr von Josenaldo de Oliveira Matos Filho (7)

De Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor JavaDe Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor Java
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
Josenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldoJosenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldo
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 

Java virtual machine quantas linguas fala a jvm2

  • 1. ¿Java? Virtual Machine Quantas línguas fala a JVM?
  • 2. Agenda • Introdução • A Java Virtual Machine • A JVM Dinâmica • A JVM de Babel • Ferramentas para programadores poliglotas • Conclusão • Perguntas
  • 3. INTRODUÇÃO Como anda o mercado em relação à linguagem Java
  • 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. Panorama - Exigências Hardware Software Peopleware
  • 6. E O QUE A JVM TEM A VER COM ISSO? Quais as vantagens de usar a JVM para resolver os problemas de desempenho do dispositivo entre a cadeira e o monitor.
  • 7. A Java Virtual Machine Programa em Java Bytecode JVM Sistema Operacional Hardware
  • 8. A Java Virtual Machine Programa em Java A JVM não Bytecode conhece JVM Java!!! Só bytecode Sistema Operacional Hardware
  • 9. Por que a JVM? Coleta de Gerência de Portabilidade Lixo Memória Controle de Segurança Performance Exceções Suporte a Multithread
  • 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. A JVM DINÂMICA O suporte da JVM a linguagens dinâmicas
  • 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. Linguagens dinâmicas JVM com JSR 223 tipagem estática JSR-292 Linguagens dinâmicas na JVM
  • 14. As estrelas do momento Java Earlang Ruby Javascript JVM Clojure Groovy Python Scala
  • 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. A JVM DE BABEL Algumas das muitas línguas da JVM
  • 17. Python Alto nível Interpretada Imperativa Orientada a objetos Tipagem dinâmica e forte Multiparadigma
  • 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. 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. Jython + Swing Jtable from javax.swing import JTable from javax.swing import JFrame rowdata = [('bill', 'Bill Williams')] colnames = ['user name', 'full name'] table = JTable(rowdata, colnames) frame = JFrame("Table") frame.getContentPane().add( table ) frame.size = 400, 300 frame.visible = 1
  • 21. Javascript/Rhino/AJAX!? • Linguagem script mais usada, em todos os browsers,Flash(ActionScript), Server- Side(Phobos, Rhino,JMaki,ASP) • Boa para codificar GUI's 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. 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. Javascript/Rhino import 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. 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. Ruby/JRuby 7.class => Fixnum “hello”.length => 5 3.times { |i| puts “Number #{i}” } => Number 1 Number 2 Number 3
  • 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. Ruby/JRuby • Projeto Kenai • Oracle Mix • Slideshare • Twitter • Justin.TV • Milhares de outros projetos
  • 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. 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. 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. 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. FERRAMENTAS PARA PROGRAMADORES POLIGLOTAS Ferramentas e tecnologias para programadores poliglotas
  • 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. Linguagens Dinâmicas e Frameworks http://glassfish-scripting.dev.java.net
  • 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