• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java virtual machine   quantas linguas fala a jvm2
 

Java virtual machine quantas linguas fala a jvm2

on

  • 3,407 views

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

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

Statistics

Views

Total Views
3,407
Views on SlideShare
3,404
Embed Views
3

Actions

Likes
1
Downloads
9
Comments
0

1 Embed 3

http://www.hanrss.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

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

    Java virtual machine   quantas linguas fala a jvm2 Java virtual machine quantas linguas fala a jvm2 Presentation Transcript

    • ¿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• Conclusão• Perguntas
    • 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 dinâmicas no mercado • Python, PHP, Ruby, Scala, Groovy, Clojure... • Muitas em ascensão• Mercado exige cada vez mais performance
    • 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 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 JavaA JVM não Bytecode conhece JVMJava!!! Só bytecode Sistema Operacional Hardware
    • Por que a JVM?Coleta de Gerência de Portabilidade Lixo Memória Controle deSeguranç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ÂMICAO 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 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, 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 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
    • 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
    • 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/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)"); }}
    • 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/JRuby7.class => Fixnum“hello”.length => 53.times { |i| puts “Number #{i}” } => Number 1 Number 2 Number 3
    • 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á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 PARAPROGRAMADORES 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 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 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