SlideShare a Scribd company logo
1 of 75
JRuby
   “Explorando um Mundo de Possibilidades”



                    Mateus e Paulo Igor



staff@idopter.com
JRuby
   “Explorando um Mundo de Possibilidades”


                    @mateuslinhares
                          e
                     @pigodinho


staff@idopter.com
staff@idopter.com
http://idopter.com



staff@idopter.com
http://idopter.com



staff@idopter.com
http://idopter.com



staff@idopter.com
http://idopter.com



staff@idopter.com
http://idopter.com   http://lancelote.com



staff@idopter.com
Fim do “Merchan”

staff@idopter.com
Objetivo da palestra

           Compartilhar nosso estudos!




staff@idopter.com
O que é o JRuby?

                    JAVA + RUBY?




staff@idopter.com
“…é uma implementação da
       linguagem Ruby em Java”




staff@idopter.com
“…é uma implementação da
       linguagem Ruby em Java”




staff@idopter.com
História
• criado em 2001 por Jan Arne Petersen
• Core Team 2008
   – Liderados por Charles Nutter
• JRuby 1.1 – JIT e AOT compilation (Ruby 1.8.7)
• 2009 Core Team vai para Engine Yard




staff@idopter.com
História
•   0.9 (2006) – suporte ao Rails
•   1.1 (2008) – Melhoria de performance com JIT e AOT
•   1.1.4 (2009) – suporte ao Ruby 1.9
•   1.2.0 (2009) – compilador JIT para Ruby 1.9 e o projeto
    Ruboto (suporte para Android)
•   1.3.0 (2009) – JRuby no GAE/J
•   1.4.0 (2009) – suporte nativo para o Windows
•   1.5.0 (2010) – suporte nativo para UNIX-based, libs
    padrões para o Rake-Ant, RubyGems e RSpec
•   1.6.0 (2011) – Ruby 1.9.2

staff@idopter.com
boring…




staff@idopter.com
JSR-292




staff@idopter.com
JSR-292



             Invokedynamic
        (projeto Da Vinci Machine)



staff@idopter.com
JSR-292



 http://www.infoq.com/br/
   articles/invokedynamic


staff@idopter.com
staff@idopter.com
Porque JRuby?


staff@idopter.com
Palavras de Charles Nutter

       http://www.slideshare.net/CharlesN
         utter/rubyconf-brazil-2010-jruby



staff@idopter.com
Se você…

  …quer ou precisa rodar na JVM…

           …JRuby é a resposta!


staff@idopter.com
Se você…

      …precisa usar uma lib java…

           …JRuby é a resposta!


staff@idopter.com
Se você…

  …quer o melhor GC do mundo…

           …JRuby é a resposta!


staff@idopter.com
Se você…

    …odeia lidar com libs nativas…

           …JRuby é a resposta!


staff@idopter.com
Se você…

  …precisa desenvolver ou “deployar”
   em qualquer OS/plataforma que
                seja…

             …JRuby é a resposta!


staff@idopter.com
Se você…

        …quer integrar com outras
     linguagens como Clojure, Scala,
                 Mirah…

             …JRuby é a resposta!


staff@idopter.com
Se você…

        …quer um Ruby melhor…

           …JRuby é a resposta!


staff@idopter.com
Se você…

        …quer um Ruby melhor…

           …JRuby é a resposta!


staff@idopter.com
O melhor dos dois mundos
• Java(JVM) oferece
   – GC eficiente
   – Green Threading




staff@idopter.com
O melhor dos dois mundos
• Java(JVM) oferece
   – GC eficiente
   – Green Threading
   – Portabilidade
   – Grande Legado




staff@idopter.com
O melhor dos dois mundos
• Ruby oferece
   – Tipagem dinâmica
   – Orientação a Objetos
   – Classes abertas
   – Metaprogramação




staff@idopter.com
Let’s do it!
•   Instalando JRuby
•   Hello World
•   Exemplos
•   Exemplos
•   Exemplos
•   …



staff@idopter.com
Instalando o JRuby




staff@idopter.com
http://jruby.org




staff@idopter.com
http://jruby.org/getting-started




staff@idopter.com
…pra dar sorte!

                    “Hello World”




staff@idopter.com
…pra dar sorte!

                    “Hello World”




staff@idopter.com
Quais são as possibilidades?

        Exemplos, Exemplos, Exemplos, …




staff@idopter.com
Classes Java no JRuby

                    require ‘java’




staff@idopter.com
Java no JRuby




staff@idopter.com
Java no JRuby




             usando classes Java



staff@idopter.com
usando classes Java




Importando a
 classe Java          classe Java




staff@idopter.com
Java : java.lang.System

 JRuby: Java::JavaLang::System




staff@idopter.com
Pacotes Java no JRuby


  Módulo
JavaSocket




 staff@idopter.com
Pacotes Java no JRuby




staff@idopter.com
Referência ao módulo




staff@idopter.com
Usando interface java




staff@idopter.com
Usando as classes java




staff@idopter.com
JRuby Socket

       jruby-lab/examples/socket_example




staff@idopter.com
MySQL com JRuby usando JDBC
          jruby-lab/examples/mysql-jdbc




staff@idopter.com
Usando .JAR




staff@idopter.com
Java Swing com JRuby

          jruby-lab/examples/jruby-swing




staff@idopter.com
Rails e JRuby




staff@idopter.com
JRuby no Toncat/JBoss/Glassfish




staff@idopter.com
JRuby e JMS




staff@idopter.com
Rspec e Java

      jruby-lab/examples/testing-java-with-
                     jruby



staff@idopter.com
E o que mais?




staff@idopter.com
Projeto Ruboto

                JRuby is everywhere!




staff@idopter.com
Projeto Ruboto



                    =>

staff@idopter.com
Projeto Ruboto



                    =>

staff@idopter.com
Projeto Ruboto




staff@idopter.com
E o que mais?




staff@idopter.com
JRuby no Google App Engine

staff@idopter.com
…quer mais?




staff@idopter.com
quer mais?




staff@idopter.com
Referências e Dicas

                    Jruby-Lab




staff@idopter.com
staff@idopter.com
• Exemplos
   • Referências
       – Artigos
       – Wiki
       – Apresentações
       – Blog
       – Twitter




staff@idopter.com
https://github.com/pigor/jruby-lab




staff@idopter.com
staff@idopter.com
http://groups.google.com/group/guru-pa




staff@idopter.com
Obrigado!!!

         @mateuslinhares e @pigodinho
          {mateus, pigor}@idopter.com

staff@idopter.com
JRuby
   “Explorando um Mundo de Possibilidades”


                    @mateuslinhares
                          e
                     @pigodinho


staff@idopter.com

More Related Content

Similar to JRuby Mundo Possibilidades

Java e o mercado de trabalho
Java e o mercado de trabalhoJava e o mercado de trabalho
Java e o mercado de trabalhoClaudiney Marques
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Sábado Hackadêmico - JavaScript
Sábado Hackadêmico - JavaScriptSábado Hackadêmico - JavaScript
Sábado Hackadêmico - JavaScriptJulio Greff
 
JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)Luciano Ramalho
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com GrailsWanderson Oliveira
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologiaRômulo Jales
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue Guerra
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
React Native - Experiência Nativa para o usuário e experiência Web para o des...
React Native - Experiência Nativa para o usuário e experiência Web para o des...React Native - Experiência Nativa para o usuário e experiência Web para o des...
React Native - Experiência Nativa para o usuário e experiência Web para o des...Emiliano Barbosa
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 

Similar to JRuby Mundo Possibilidades (20)

Java e o mercado de trabalho
Java e o mercado de trabalhoJava e o mercado de trabalho
Java e o mercado de trabalho
 
I mini curso e torneio robocode.pptx
I mini curso e torneio  robocode.pptxI mini curso e torneio  robocode.pptx
I mini curso e torneio robocode.pptx
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Sábado Hackadêmico - JavaScript
Sábado Hackadêmico - JavaScriptSábado Hackadêmico - JavaScript
Sábado Hackadêmico - JavaScript
 
O mundo visto de dentro do Ruby
O mundo visto de dentro do RubyO mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)JavaScript agora é sério (TDC 2011)
JavaScript agora é sério (TDC 2011)
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Produtividade em Java com Grails
Produtividade em Java com GrailsProdutividade em Java com Grails
Produtividade em Java com Grails
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologia
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Aula 1 - Seja um programador Java
Aula 1 - Seja um programador JavaAula 1 - Seja um programador Java
Aula 1 - Seja um programador Java
 
React Native - Experiência Nativa para o usuário e experiência Web para o des...
React Native - Experiência Nativa para o usuário e experiência Web para o des...React Native - Experiência Nativa para o usuário e experiência Web para o des...
React Native - Experiência Nativa para o usuário e experiência Web para o des...
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 

More from Paulo Igor Alves Godinho (13)

Pequenas Ações para Revolucionar sua Carreira
Pequenas Ações para Revolucionar sua CarreiraPequenas Ações para Revolucionar sua Carreira
Pequenas Ações para Revolucionar sua Carreira
 
Kanban - Mais que um quadro na parede
Kanban - Mais que um quadro na paredeKanban - Mais que um quadro na parede
Kanban - Mais que um quadro na parede
 
Melhorando o Fluxo de Trabalho com Kanban
Melhorando o Fluxo de Trabalho com KanbanMelhorando o Fluxo de Trabalho com Kanban
Melhorando o Fluxo de Trabalho com Kanban
 
Small Acts - Pequenas ações geram grandes revoluções
Small Acts - Pequenas ações geram grandes revoluçõesSmall Acts - Pequenas ações geram grandes revoluções
Small Acts - Pequenas ações geram grandes revoluções
 
Preocupações Desenvolvedor Ágil
Preocupações Desenvolvedor ÁgilPreocupações Desenvolvedor Ágil
Preocupações Desenvolvedor Ágil
 
Buscando Agilidade sem Rótulos
Buscando Agilidade sem RótulosBuscando Agilidade sem Rótulos
Buscando Agilidade sem Rótulos
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
Palestra agile brazil (versão atualizada)
Palestra agile brazil (versão atualizada)Palestra agile brazil (versão atualizada)
Palestra agile brazil (versão atualizada)
 
Palestra tdd-completa
Palestra tdd-completaPalestra tdd-completa
Palestra tdd-completa
 
Carreira2 0
Carreira2 0Carreira2 0
Carreira2 0
 
Palestra scrum
Palestra scrumPalestra scrum
Palestra scrum
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 

JRuby Mundo Possibilidades

Editor's Notes

  1. Por isso o “ Explorando um Mundo de possibilidades ” , pois não conhecemos todo o seu potencial, e por isso estamos estudando!
  2. JRuby is a Java implementation of the Ruby programming language. It is free software released under a three-way CPL/GPL/LGPL license. JRuby is tightly integrated with Java to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code (similar to Jython for the Python language).
  3. http://www.infoq.com/br/articles/invokedynamic “ Os pontos fortes da plataforma Java, tais como um garbage collector (coletor de lixo) eficiente, um modelo robusto de segurança e a disponibilidade ampla do runtime do Java (JRE), juntamente com uma grande quantidade de bibliotecas e ferramentas, fizeram a plataforma ser amplamente adotada para esta finalidade, havendo hoje mais de 240 diferentes linguagens que executam sobre a máquina virtual Java (JVM). ” “ A API de MethodHandles (referências de métodos) descrita na JSR-292 fornece os elementos básicos para a escrita da "cola" simples entre o método de origem (o "chamador") e o de destino.” (Charles Nutter) “ A InvokeDynamic contacta a sua linguagem ou biblioteca quando uma chamada dinâmica é feita, e você responde fornecendo uma referência de método (ou uma cadeia de referências). A referência então conecta a origem ao destino da maneira apropriada.” (Charles Nutter)
  4. http://www.infoq.com/br/articles/invokedynamic Tanto a Microsoft, com o .Net 4 e a DLR, quanto a Oracle, através do projeto Da Vinci Machine e do Java 7, estão procurando aprimorar o suporte a linguagens alternativas que têm como destino suas máquinas virtuais. Este movimento é reflexo de uma tendência crescente entre os desenvolvedores e implementadores de linguagens, que estão utilizando cada vez mais ambientes de execução pré-existentes para executar suas linguagens, dado que desenvolver a partir do zero um novo ambiente de execução representa um grande investimento. Os pontos fortes da plataforma Java, tais como um garbage collector (coletor de lixo) eficiente, um modelo robusto de segurança e a disponibilidade ampla do runtime do Java (JRE), juntamente com uma grande quantidade de bibliotecas e ferramentas, fizeram a plataforma ser amplamente adotada para esta finalidade, havendo hoje mais de 240 diferentes linguagens que executam sobre a máquina virtual Java (JVM).
  5. “… havendo hoje mais de 240 diferentes linguagens que executam sobre a máquina virtual Java (JVM).”