SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

KEY
A ferramenta ideal: uma questão de perspectiva.
PDF
Ruby vs python
ODP
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
PDF
Desenvolvimento ágil de software com Ruby on Rails
ODP
Linguagens Dinamicas na JVM
PPT
Spring Roo: design simples e agilidade do desenvolvimento java
PDF
Java script
PDF
Groovy na plataforma Java
A ferramenta ideal: uma questão de perspectiva.
Ruby vs python
Jruby, o melhor de 2 mundos (MacGyver + ChuckNorris)
Desenvolvimento ágil de software com Ruby on Rails
Linguagens Dinamicas na JVM
Spring Roo: design simples e agilidade do desenvolvimento java
Java script
Groovy na plataforma Java

Semelhante a JRuby - Explorando um mundo de possibilidades (20)

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

Mais de Paulo Igor Alves Godinho (13)

PDF
Pequenas Ações para Revolucionar sua Carreira
PPTX
Kanban - Mais que um quadro na parede
PDF
Melhorando o Fluxo de Trabalho com Kanban
PPTX
Small Acts - Pequenas ações geram grandes revoluções
PPTX
Preocupações Desenvolvedor Ágil
PPTX
Buscando Agilidade sem Rótulos
KEY
Facetas do desenvolvedor agil
PPT
Palestra agile brazil (versão atualizada)
PDF
Palestra tdd-completa
PPT
PDF
Palestra scrum
PDF
Metodos ageis thinkingdifferent
PPT
TDD - Test Driven Development com JAVA
Pequenas Ações para Revolucionar sua Carreira
Kanban - Mais que um quadro na parede
Melhorando o Fluxo de Trabalho com Kanban
Small Acts - Pequenas ações geram grandes revoluções
Preocupações Desenvolvedor Ágil
Buscando Agilidade sem Rótulos
Facetas do desenvolvedor agil
Palestra agile brazil (versão atualizada)
Palestra tdd-completa
Palestra scrum
Metodos ageis thinkingdifferent
TDD - Test Driven Development com JAVA
Anúncio

Último (20)

PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Aula sobre banco de dados com firebase db
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula 18 - Manipulacao De Arquivos python
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Curso de Java 9 - (Threads) Multitarefas.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Custos e liquidação no SAP Transportation Management, TM130 Col18
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Apple Pippin Uma breve introdução. - David Glotz
Aula sobre banco de dados com firebase db
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula 18 - Manipulacao De Arquivos python

JRuby - Explorando um mundo de possibilidades

Notas do Editor

  • #11: Por isso o “ Explorando um Mundo de possibilidades ” , pois não conhecemos todo o seu potencial, e por isso estamos estudando!
  • #12: 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).
  • #19: 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)
  • #20: 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).
  • #21: “… havendo hoje mais de 240 diferentes linguagens que executam sobre a máquina virtual Java (JVM).”