SlideShare una empresa de Scribd logo
JRuby
Ruby en un mundo enterprise




Jano González
Desarrollador
http://janogonzalez.com
Sobre mi
         @janogonzalez
●   Desarrollando en Java desde
    2000, enamorado de Ruby en
    2010
●   Co-organizador del Meetup de
    Lenguajes Dinámicos:
    http://www.meetup.com/dynla
    ngchile/
●   Publica el blog
    http://gemaroja.com
●   Músico frustrado
Java EE
● 1999: J2EE 1.2
● 2001: J2EE 1.3

● 2003: J2EE 1.4

● 2006: Java EE 5

● 2009: Java EE 6
● Spring
● Hibernate

● iBatis

● Guice

● ...
El problema
Exceso de complejidad
Jano Gonzalez - jruby
Jano Gonzalez - jruby
Lo bueno
Portabilidad
Escalabilidad
Multithreading
JIT
Garbage Collector
La solución
Jano Gonzalez - jruby
Ruby para la JVM
      :Dc
Dinámico
   :Dc
Orientado a Objetos
        :Dc
Gran soporte para meta-
     programación
Todo es un objeto

# El clásico string
“Hola Mundo”.upcase

# No hay "tipos primitivos"!
5.zero?

# Hasta el nulo es un objeto
nil.nil?
Hay muchos tipos de objetos
# Arreglos
[1, 2, 3, 4, 5]

# Hashes
{:jano => "Alejandro", :cote => "José"}

# Rangos
(1..10)

# Expresiones regulares
/^[a-z]+$/

# Lambdas
lambda { |n| n * 2 }
Con métodos muy cool

# En realidad + es un método, no un operador
1.+(9)

# Con un poco de azucar sintáctico
1 + 9

# En otros objetos
"Hola " + "Mundo"

# Con una gran cantidad de objetos!
[1, 2, 3] + [4, 5]
Bloques


# Un método puede recibir un bloque de código
5.times do
  |n| puts n
end

# Para casos cortos como el anterior...
5.times { |n| puts n }
Bloques

# El clásico map
(1..100).map { |n| n * 2 }

# El clásico select
(1..100).select { |n| n % 3 == 0 }

# El clásico reduce
(1..100).reduce { |sum, n| sum + n }

# Incluso más corto
(1..100).reduce(:+)
Creando tus propias clases
# Problem Java?
class Persona
  attr_reader :nombre, :apellido

  def initialize(nombre, apellido)
    @nombre = nombre
    @apellido = apellido
  end
end

jano = Persona.new("Jano", "González")
jano.nombre
Modificando clases ya existentes

# Monkey patching
class Range
  def even
    self.select { |n| n % 2 == 0 }
  end
end

(1..100).even
Accediendo a clases Java


# Importando clases Java
require 'java'
java_import 'java.util.date'

d = Date.new
d.to_gmt_string
Accediendo a clases Java



Date d = new Date(); => d = Date.new
d.toGMTString() => d.to_gmt_string
Comandos

Intérprete
$ jruby

REPL
$ jirb

Administrador de paquetes
$ jgem
Gemas




Precaución: No todas funcionan en Jruby
Encontrando la gema adecuada
Guerra de guerrillas
Fase I


● Usar jirb como REPL Java
● Ant/Maven → Apache Buildr

● Scripts en general

● Junit/Selenium → RSpec, Cucumber
Fase II



● Servicios REST con Sinatra
● DSLs para facilitar uso de bibliotecas Java

● Aplicaciones Web con Ruby on Rails
JRuby on Rails
JRuby on Rails



$ gem install rails
$ rails new startechconf
Configura tu database.yml
development:
  adapter: jdbcmysql
  database: startechconf_development
  username: root
  encoding: utf8

test:
  adapter: jdbcmysql
  database: startechconf_test
  username: root
  encoding: utf8

production:
  adapter: jdbc
  jndi: jdbc/stconrails
Usa modo multithread production.rb



# Enable threaded mode
config.threadsafe!
La magia que hay detrás



● jruby-rack
● activerecord-jdbc-adapter
Precaución



●Si usas un servidor Java EE 1.4 (Por ej. WAS 6.1)
debes usar jruby-rack 1.0.0.1
Integración con Spring
Integración con Spring



●   Usa un initializer para cargar el ApplicationContext
Deploy en tu appserver
      preferido
$ warble
warbler
Conclusión
Jano Gonzalez - jruby
Más información
Más información


● http://jruby.org
● @headius

● @nicksieger

● @janogonzalez      O RLY?
¡Gracias!

Más contenido relacionado

PDF
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
Jano González
 
PDF
Programación Políglota en la JVM
Jano González
 
PPT
Introduccion A Groovy
Andres Almiray
 
PDF
PHPVigo #19 - Lightning variables de entorno
Rolando Caldas
 
PPT
Introducción a Groovy
David Santamaria
 
PPT
Realizando Pruebas en la JVM con Velocidad y Eficacia
Andres Almiray
 
PPTX
Serializacion de objetos en java
Hugo Nugra
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
Jano González
 
Programación Políglota en la JVM
Jano González
 
Introduccion A Groovy
Andres Almiray
 
PHPVigo #19 - Lightning variables de entorno
Rolando Caldas
 
Introducción a Groovy
David Santamaria
 
Realizando Pruebas en la JVM con Velocidad y Eficacia
Andres Almiray
 
Serializacion de objetos en java
Hugo Nugra
 

La actualidad más candente (14)

PPTX
Serializacion de objetos en java
Hugo Nugra
 
PDF
Groovy & Grails
betabeers
 
PDF
Django
Adolfo Fitoria
 
ODP
Node.js - Eventos para Todos
Mariano Iglesias
 
ODP
Etiquetas en JSP
Luisa Arguello
 
PDF
Jvmmx docker jvm
superserch
 
ODP
Etiquetas jsp
Faizuly16
 
PDF
Grails
David Santamaria
 
PDF
Ocho cosas que debes saber de JavaScript
David Ballén
 
PPTX
Introducción a groovy & grails
Fátima Casaú Pérez
 
PPT
Java
cursoticst
 
PDF
Sinatra
Mauro Pompilio
 
PDF
Rubyonline
Francisco Granados
 
Serializacion de objetos en java
Hugo Nugra
 
Groovy & Grails
betabeers
 
Node.js - Eventos para Todos
Mariano Iglesias
 
Etiquetas en JSP
Luisa Arguello
 
Jvmmx docker jvm
superserch
 
Etiquetas jsp
Faizuly16
 
Ocho cosas que debes saber de JavaScript
David Ballén
 
Introducción a groovy & grails
Fátima Casaú Pérez
 
Rubyonline
Francisco Granados
 
Publicidad

Similar a Jano Gonzalez - jruby (20)

KEY
JRuby al Rescate de J2EE
Jorge Alberto Rodríguez Suárez
 
PDF
Ruby para Java Developers
Gustavo Andres Brey
 
KEY
JRuby Al Rescate J2EE
Jorge Alberto Rodríguez Suárez
 
PDF
Jruby On Rails. Ruby on Rails en la JVM
javier ramirez
 
PPT
Java12
Luis Gala Nevew
 
PDF
Realizando pruebas en la JVM con velocidad y eficacia
Software Guru
 
PPTX
HackDay Java 9 Spanish version
HillmerC
 
PDF
JRuby ¿Lo mejor de dos mundos?
Jano González
 
PDF
Javascript
Carlos Alonso Pérez
 
PPT
PROGRAMACIÓN CON JAVA MAVEN PROGRAMACIÓN CON JAVA MAVEN.ppt
anytrix
 
PPT
Java para android developers
jose diaz
 
PPTX
Conceptos básicos de un lenguaje de programación
Edison López Díaz
 
PDF
sesion_01-JAVA.pdf
RocioCarmenCoronadoR
 
PPT
java presentación.ppt presetnación conceptos java
khristy04
 
PPT
Java world
Christian Jonathan
 
PDF
¿Por qué Ruby? Descubre su expresividad (y peculiaridades)
Rafael García
 
PPT
Introducción a RubyOnRails
Pablo Marrero
 
PDF
Alta disponibilidad con MySQL
Dennis Cohn
 
PDF
Desarrollo web en Nodejs con Pillars por Chelo Quilón
betabeers
 
JRuby al Rescate de J2EE
Jorge Alberto Rodríguez Suárez
 
Ruby para Java Developers
Gustavo Andres Brey
 
JRuby Al Rescate J2EE
Jorge Alberto Rodríguez Suárez
 
Jruby On Rails. Ruby on Rails en la JVM
javier ramirez
 
Realizando pruebas en la JVM con velocidad y eficacia
Software Guru
 
HackDay Java 9 Spanish version
HillmerC
 
JRuby ¿Lo mejor de dos mundos?
Jano González
 
PROGRAMACIÓN CON JAVA MAVEN PROGRAMACIÓN CON JAVA MAVEN.ppt
anytrix
 
Java para android developers
jose diaz
 
Conceptos básicos de un lenguaje de programación
Edison López Díaz
 
sesion_01-JAVA.pdf
RocioCarmenCoronadoR
 
java presentación.ppt presetnación conceptos java
khristy04
 
Java world
Christian Jonathan
 
¿Por qué Ruby? Descubre su expresividad (y peculiaridades)
Rafael García
 
Introducción a RubyOnRails
Pablo Marrero
 
Alta disponibilidad con MySQL
Dennis Cohn
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
betabeers
 
Publicidad

Más de StarTech Conference (19)

PDF
Mike hostetler - jQuery knowledge append to you
StarTech Conference
 
PDF
Luis Meijueiro - Open Data
StarTech Conference
 
KEY
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
StarTech Conference
 
KEY
Jonathan snook - fake-it
StarTech Conference
 
PDF
Scott Chacon - Cuento de tres árboles
StarTech Conference
 
PDF
T.Pollak y C.Yaconi - Prey
StarTech Conference
 
PDF
Pedro Fuentes - star techconf
StarTech Conference
 
PDF
Robert Nyman - HTML5 apis where no man has gone before startechconf
StarTech Conference
 
PPTX
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
StarTech Conference
 
PDF
Ravi Mynampaty - developing findability standards
StarTech Conference
 
KEY
Charles nutter star techconf 2011 - jvm languages
StarTech Conference
 
PDF
Caridy patino - node-js
StarTech Conference
 
PPT
Abraham Barrera - dev-cross-mobile
StarTech Conference
 
PDF
Eduardo Silva - monkey http-server everywhere
StarTech Conference
 
PDF
Stephanie Rewis - css-startech
StarTech Conference
 
PPT
Rey Bango - HTML5: polyfills and shims
StarTech Conference
 
PDF
Tom Preston Werner - Optimize for happiness
StarTech Conference
 
KEY
Mark ramm To relate or not to relate
StarTech Conference
 
PDF
Greg rewis move-itsession
StarTech Conference
 
Mike hostetler - jQuery knowledge append to you
StarTech Conference
 
Luis Meijueiro - Open Data
StarTech Conference
 
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
StarTech Conference
 
Jonathan snook - fake-it
StarTech Conference
 
Scott Chacon - Cuento de tres árboles
StarTech Conference
 
T.Pollak y C.Yaconi - Prey
StarTech Conference
 
Pedro Fuentes - star techconf
StarTech Conference
 
Robert Nyman - HTML5 apis where no man has gone before startechconf
StarTech Conference
 
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
StarTech Conference
 
Ravi Mynampaty - developing findability standards
StarTech Conference
 
Charles nutter star techconf 2011 - jvm languages
StarTech Conference
 
Caridy patino - node-js
StarTech Conference
 
Abraham Barrera - dev-cross-mobile
StarTech Conference
 
Eduardo Silva - monkey http-server everywhere
StarTech Conference
 
Stephanie Rewis - css-startech
StarTech Conference
 
Rey Bango - HTML5: polyfills and shims
StarTech Conference
 
Tom Preston Werner - Optimize for happiness
StarTech Conference
 
Mark ramm To relate or not to relate
StarTech Conference
 
Greg rewis move-itsession
StarTech Conference
 

Último (20)

PDF
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
PDF
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
PDF
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
PPTX
INTRODUCCION A BASE DE DATOS NIVELBASICO 6
Cangrilg
 
PDF
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
PDF
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
PDF
Liceo departamental MICRO BIT (1).pdfslksjshshwuwjwjjdjdjshshs
edepanaobando
 
PDF
Estructuras básicas Conceptos básicos de programación.pdf
sdbdsamuel
 
PDF
Trabajo de tecnologia en equipo (1).pdf
jjfch3110
 
PDF
2do grado medios de transportes.pdf para el primario
AndreaAlegre18
 
PDF
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
PDF
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
PDF
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
PDF
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 
PDF
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
PDF
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
PDF
Excel avanzado trabajo grupal tecnologia
mapaulahiguita
 
PPTX
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
PDF
Tecnología 2do período Eliana valencia.
ElianaValencia28
 
PPTX
Ingeniería Genética y Obtención de Insulina por Escherichia.pptx
ElbaCristinaMendoza
 
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
INTRODUCCION A BASE DE DATOS NIVELBASICO 6
Cangrilg
 
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
Liceo departamental MICRO BIT (1).pdfslksjshshwuwjwjjdjdjshshs
edepanaobando
 
Estructuras básicas Conceptos básicos de programación.pdf
sdbdsamuel
 
Trabajo de tecnologia en equipo (1).pdf
jjfch3110
 
2do grado medios de transportes.pdf para el primario
AndreaAlegre18
 
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
Excel avanzado trabajo grupal tecnologia
mapaulahiguita
 
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
Tecnología 2do período Eliana valencia.
ElianaValencia28
 
Ingeniería Genética y Obtención de Insulina por Escherichia.pptx
ElbaCristinaMendoza
 

Jano Gonzalez - jruby