Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Loading in …3
×
1 of 52

JRuby: Ruby en un mundo enterprise

0

Share

Download to read offline

Presentación realizada en StarTechConf 2011

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

JRuby: Ruby en un mundo enterprise

  1. 1. JRuby Ruby en un mundo enterprise Jano González Desarrollador http://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 objeto nil.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]+$/ # Lambdas lambda { |n| n * 2 }
  21. 21. 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]
  22. 22. 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 }
  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 end end jano = Persona.new("Jano", "González") jano.nombre
  25. 25. Modificando clases ya existentes # Monkey patching class Range def even self.select { |n| n % 2 == 0 } end end (1..100).even
  26. 26. Accediendo a clases Java # Importando clases Java require 'java' java_import 'java.util.date' d = Date.new d.to_gmt_string
  27. 27. Accediendo a clases Java Date d = new Date(); => d = Date.new d.toGMTString() => d.to_gmt_string
  28. 28. Comandos Intérprete $ jruby REPL $ jirb Administrador de paquetes $ jgem
  29. 29. Gemas Precaució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.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
  37. 37. Usa modo multithread production.rb # Enable threaded mode config.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!

×