JRubyRuby en un mundo enterpriseJano GonzálezDesarrolladorhttp://janogonzalez.com
Sobre mi         @janogonzalez●   Desarrollando en Java desde    2000, enamorado de Ruby en    2010●   Co-organizador del ...
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
Lo bueno
Portabilidad
Escalabilidad
Multithreading
JIT
Garbage Collector
La solución
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 objetonil....
Hay muchos tipos de objetos# Arreglos[1, 2, 3, 4, 5]# Hashes{:jano => "Alejandro", :cote => "José"}# Rangos(1..10)# Expres...
Con métodos muy cool# En realidad + es un método, no un operador1.+(9)# Con un poco de azucar sintáctico1 + 9# En otros ob...
Bloques# Un método puede recibir un bloque de código5.times do  |n| puts nend# Para casos cortos como el anterior...5.time...
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(...
Creando tus propias clases# Problem Java?class Persona  attr_reader :nombre, :apellido  def initialize(nombre, apellido)  ...
Modificando clases ya existentes# Monkey patchingclass Range  def even    self.select { |n| n % 2 == 0 }  endend(1..100).e...
Accediendo a clases Java# Importando clases Javarequire javajava_import java.util.dated = Date.newd.to_gmt_string
Accediendo a clases JavaDate d = new Date(); => d = Date.newd.toGMTString() => d.to_gmt_string
ComandosIntérprete$ jrubyREPL$ jirbAdministrador de paquetes$ jgem
GemasPrecaució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.ymldevelopment:  adapter: jdbcmysql  database: startechconf_development  username: root  encoding: u...
Usa modo multithread production.rb# Enable threaded modeconfig.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
Más información
Más información● http://jruby.org● @headius● @nicksieger● @janogonzalez      O RLY?
¡Gracias!
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
Upcoming SlideShare
Loading in...5
×

JRuby: Ruby en un mundo enterprise

1,127

Published on

Presentación realizada en StarTechConf 2011

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Buenísima la presentación... felicitaciones, aunque creo que la guerra aun no está zanjada... (:-)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
1,127
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

JRuby: Ruby en un mundo enterprise

  1. 1. JRubyRuby en un mundo enterpriseJano GonzálezDesarrolladorhttp://janogonzalez.com
  2. 2. 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
  3. 3. Java EE
  4. 4. ● 1999: J2EE 1.2● 2001: J2EE 1.3● 2003: J2EE 1.4● 2006: Java EE 5● 2009: Java EE 6
  5. 5. ● Spring● Hibernate● iBatis● Guice● ...
  6. 6. El problema
  7. 7. Exceso de complejidad
  8. 8. Lo bueno
  9. 9. Portabilidad
  10. 10. Escalabilidad
  11. 11. Multithreading
  12. 12. JIT
  13. 13. Garbage Collector
  14. 14. La solución
  15. 15. Ruby para la JVM :Dc
  16. 16. Dinámico :Dc
  17. 17. Orientado a Objetos :Dc
  18. 18. Gran soporte para meta- programación
  19. 19. Todo es un objeto# El clásico string“Hola Mundo”.upcase# No hay "tipos primitivos"!5.zero?# Hasta el nulo es un objetonil.nil?
  20. 20. Hay muchos tipos de objetos# Arreglos[1, 2, 3, 4, 5]# Hashes{:jano => "Alejandro", :cote => "José"}# Rangos(1..10)# Expresiones regulares/^[a-z]+$/# Lambdaslambda { |n| n * 2 }
  21. 21. Con métodos muy cool# En realidad + es un método, no un operador1.+(9)# Con un poco de azucar sintáctico1 + 9# En otros objetos"Hola " + "Mundo"# Con una gran cantidad de objetos![1, 2, 3] + [4, 5]
  22. 22. Bloques# Un método puede recibir un bloque de código5.times do |n| puts nend# Para casos cortos como el anterior...5.times { |n| puts n }
  23. 23. 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(:+)
  24. 24. Creando tus propias clases# Problem Java?class Persona attr_reader :nombre, :apellido def initialize(nombre, apellido) @nombre = nombre @apellido = apellido endendjano = Persona.new("Jano", "González")jano.nombre
  25. 25. Modificando clases ya existentes# Monkey patchingclass Range def even self.select { |n| n % 2 == 0 } endend(1..100).even
  26. 26. Accediendo a clases Java# Importando clases Javarequire javajava_import java.util.dated = Date.newd.to_gmt_string
  27. 27. Accediendo a clases JavaDate d = new Date(); => d = Date.newd.toGMTString() => d.to_gmt_string
  28. 28. ComandosIntérprete$ jrubyREPL$ jirbAdministrador de paquetes$ jgem
  29. 29. GemasPrecaución: No todas funcionan en Jruby
  30. 30. Encontrando la gema adecuada
  31. 31. Guerra de guerrillas
  32. 32. Fase I● Usar jirb como REPL Java● Ant/Maven → Apache Buildr● Scripts en general● Junit/Selenium → RSpec, Cucumber
  33. 33. Fase II● Servicios REST con Sinatra● DSLs para facilitar uso de bibliotecas Java● Aplicaciones Web con Ruby on Rails
  34. 34. JRuby on Rails
  35. 35. JRuby on Rails$ gem install rails$ rails new startechconf
  36. 36. Configura tu database.ymldevelopment: adapter: jdbcmysql database: startechconf_development username: root encoding: utf8test: adapter: jdbcmysql database: startechconf_test username: root encoding: utf8production: adapter: jdbc jndi: jdbc/stconrails
  37. 37. Usa modo multithread production.rb# Enable threaded modeconfig.threadsafe!
  38. 38. La magia que hay detrás● jruby-rack● activerecord-jdbc-adapter
  39. 39. Precaución●Si usas un servidor Java EE 1.4 (Por ej. WAS 6.1)debes usar jruby-rack 1.0.0.1
  40. 40. Integración con Spring
  41. 41. Integración con Spring● Usa un initializer para cargar el ApplicationContext
  42. 42. Deploy en tu appserver preferido
  43. 43. $ warble
  44. 44. warbler
  45. 45. Conclusión
  46. 46. Más información
  47. 47. Más información● http://jruby.org● @headius● @nicksieger● @janogonzalez O RLY?
  48. 48. ¡Gracias!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×