Your SlideShare is downloading. ×
  • Like
JRuby: Ruby en un mundo enterprise
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

JRuby: Ruby en un mundo enterprise

  • 1,077 views
Published

Presentación realizada en StarTechConf 2011

Presentación realizada en StarTechConf 2011

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

Views

Total Views
1,077
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
13
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. JRubyRuby en un mundo enterpriseJano GonzálezDesarrolladorhttp://janogonzalez.com
  • 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. Java EE
  • 4. ● 1999: J2EE 1.2● 2001: J2EE 1.3● 2003: J2EE 1.4● 2006: Java EE 5● 2009: Java EE 6
  • 5. ● Spring● Hibernate● iBatis● Guice● ...
  • 6. El problema
  • 7. Exceso de complejidad
  • 8. Lo bueno
  • 9. Portabilidad
  • 10. Escalabilidad
  • 11. Multithreading
  • 12. JIT
  • 13. Garbage Collector
  • 14. La solución
  • 15. Ruby para la JVM :Dc
  • 16. Dinámico :Dc
  • 17. Orientado a Objetos :Dc
  • 18. Gran soporte para meta- programación
  • 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. 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. 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. 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. 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. 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. Modificando clases ya existentes# Monkey patchingclass Range def even self.select { |n| n % 2 == 0 } endend(1..100).even
  • 26. Accediendo a clases Java# Importando clases Javarequire javajava_import java.util.dated = Date.newd.to_gmt_string
  • 27. Accediendo a clases JavaDate d = new Date(); => d = Date.newd.toGMTString() => d.to_gmt_string
  • 28. ComandosIntérprete$ jrubyREPL$ jirbAdministrador de paquetes$ jgem
  • 29. GemasPrecaución: No todas funcionan en Jruby
  • 30. Encontrando la gema adecuada
  • 31. Guerra de guerrillas
  • 32. Fase I● Usar jirb como REPL Java● Ant/Maven → Apache Buildr● Scripts en general● Junit/Selenium → RSpec, Cucumber
  • 33. Fase II● Servicios REST con Sinatra● DSLs para facilitar uso de bibliotecas Java● Aplicaciones Web con Ruby on Rails
  • 34. JRuby on Rails
  • 35. JRuby on Rails$ gem install rails$ rails new startechconf
  • 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. Usa modo multithread production.rb# Enable threaded modeconfig.threadsafe!
  • 38. La magia que hay detrás● jruby-rack● activerecord-jdbc-adapter
  • 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. Integración con Spring
  • 41. Integración con Spring● Usa un initializer para cargar el ApplicationContext
  • 42. Deploy en tu appserver preferido
  • 43. $ warble
  • 44. warbler
  • 45. Conclusión
  • 46. Más información
  • 47. Más información● http://jruby.org● @headius● @nicksieger● @janogonzalez O RLY?
  • 48. ¡Gracias!