Your SlideShare is downloading. ×
  • Like
JRuby al Rescate de J2EE
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 al Rescate de J2EE

  • 1,521 views
Published

Motivación: Usar Java como soporte de aplicaciones y JRuby on Rails como plataforma de desarrollo !...

Motivación: Usar Java como soporte de aplicaciones y JRuby on Rails como plataforma de desarrollo !...

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Interesting!!!
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
1,521
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
22
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
  • Ok, partamos por el mostro !, preguntar cuantos son desarrolladores J2EE.
  • Esto es lo que tenemos con J2EE, una plataforma muy estable, muy escalable encima de la cual construimos aplicaciones usando tambien una plataforma muy estable y muy escalable.
  • Ok, partamos por el mostro !, preguntar cuantos son desarrolladores J2EE.
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar
  • En include LOGGING hablar de commons-logging.jar

Transcript

  • 1. JRuby on Rails al rescate de J2EE jorge.rodriguez@continuum.cl Fundador & CEO de Continuum Jornadas regionales de software libre 2009
  • 2. Java
  • 3. (Java)
  • 4. 18 años de evolución
  • 5. Soporte de gigantes
  • 6. Vendida a muchos clientes
  • 7. plataforma estable y robusta...
  • 8. performance
  • 9. Manejo de la memoria
  • 10. escalable...
  • 11. comunidad apasionada
  • 12. Herramientas, librerías, extensiones
  • 13. J2EE 5
  • 14. Do more with less work...
  • 15. Motivación Capa dinámica (código de aplicación) (Java / J2EE) Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
  • 16. En serio...?
  • 17. Es un poco más...
  • 18. J2EE 5, 6,... Es un poco más...
  • 19. de hecho mucho más...
  • 20. 2.8 Megas de Especificación
  • 21. JAX-WS 2.0 EJB 3.0 JDBC JMX SAAJ JAF 1.1 JAXB 2.0 JNDI JSF 2.1 JAAS JSP 2.1 JTA JMS JSTL
  • 22. Para construir una aplicación...
  • 23. ambientes de desarrollo pesados 200 MB
  • 24. ciclos de desarrollo lentos...
  • 25. diversos frameworks para resolver los mismos problemas...
  • 26. Escribiendo código de más...
  • 27. Clientes: resistencia al cambio...
  • 28. Podemos hacer algo?
  • 29. Yes, we can ! but How?
  • 30. Motivación NO J2EE ! Entonces que ? Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
  • 31. los protagonistas...
  • 32. ¿ Ruby ?
  • 33. • lenguaje abierto
  • 34. •lenguaje abierto • dinámico, flexible y muy expresivo
  • 35. •lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad
  • 36. • lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad • versión 1.9.1
  • 37. • lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad • versión 1.9.1 • bla bla bla...
  • 38. (comparar con Java)
  • 39. “Necesito copiar el contenido de un archivo hacia otro archivo”
  • 40. (java)
  • 41. (después de google)
  • 42. FileInputStream input = null; FileOutputStream output = null; try { try { input = new FileInputStream("/tmp/src.txt"); } catch (IOException io1) { throw new RuntimeException("couldn't open input file", io1); } try { output = new FileOutputStream("/tmp/dest.txt"); } catch (IOException io2) { throw new RuntimeException("couldn't open output file", io2); } byte[] buf = new byte[8192]; int numBytesRead = 0; while ((numBytesRead = input.read(buf)) != -1) { output.write(buf, 0, numBytesRead); } } catch (IOException io) { throw new RuntimeException("couldn't read/write or something", io); } finally {
  • 43. try { if (input != null) { input.close(); } } catch (IOException ignored1) { } try { if (output != null) { output.close(); } } catch (IOException ignored2) { } }
  • 44. (ruby)
  • 45. File.open("/tmp/src.txt") do |input| File.open("/tmp/dest.txt", "w") do |output| output << input.read end end
  • 46. “Quiero buscar todos los usuarios twitters en la oración”
  • 47. (java)
  • 48. (después de google)
  • 49. String x = "@j4rs esta en la @jrsl09 mostrando jruby"; Pattern p = Pattern.compile("@w+"); Matcher m = p.matcher(x); while (m.find()) { System.out.println(m.group()); }
  • 50. (ruby)
  • 51. "@j4rs esta en la @jrsl09 mostrando jruby".scan(/@w+/).each do |t| puts t end
  • 52. “Quiero repetir ‘Hola jrsl09’ n veces...”
  • 53. (java)
  • 54. int n = 5; for (int i = 0; i < n; i++) { System.out.println("Hola"); }
  • 55. (ruby)
  • 56. n = 5 n.times {puts "Hola jrsl09"}
  • 57. “Crear la clase Rectangulo y definir su área”
  • 58. (java)
  • 59. public class Rectangulo { private double a; private double b; public Rectangulo(int a, int b) { this.a = a; this.b = b; } /** * @return the a */ public double getA() { return a; } /** * @param a the a to set */ public void setA(double a) { this.a = a; }
  • 60. /** * @return the b */ public double getB() { return b; } /** * @param b the b to set */ public void setB(double b) { this.b = b; } /** * @return */ public double area() { return a*b; } }
  • 61. (ruby)
  • 62. class Rectangulo attr_accessor :a, :b def initialize(a, b) @a = a; @b = b; end def area() a*b end end
  • 63. “...ruby focus on humans...” “...we are masters, machines are the slaves...”
  • 64. ¿ JRuby ?
  • 65. • Implementación de Ruby 100 % en Java
  • 66. •Implementación de Ruby 100 % en Java • Ruby <=> Java
  • 67. •Implementación de Ruby 100 % en Java • Ruby <=> Java • 5 veces más rapida que C-Ruby
  • 68. •Implementación de Ruby 100 % en Java • Ruby <=> Java • 5 veces más rapida que C-Ruby • Versión estable 1.3 (Comp. Ruby 1.8.7)
  • 69. •Implementación de Ruby 100 % en Java • Ruby <=> Java • 5 veces más rapida que C-Ruby • Versión estable 1.3 (Comp. Ruby 1.8.7) • JRuby 1.4 en Octubre (Comp. Ruby 1.9)
  • 70. (demo: jirb : Swing)
  • 71. (demo: commons-lang)
  • 72. ¿ Rails ?
  • 73. • framework web open source
  • 74. • framework web open source • construido sobre y para Ruby
  • 75. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil
  • 76. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil • una filosofía diferente de crear aplicaciones web
  • 77. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil • una filosofía diferente de crear aplicaciones web • “convención sobre configuración...”
  • 78. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil • una filosofía diferente de crear aplicaciones web • “convención sobre configuración...” • mucho más...
  • 79. cultura alternativa...
  • 80. Libertad...
  • 81. Libertad... No precisamente este tipo de libertad...
  • 82. diversión...
  • 83. (demo: al final)
  • 84. protagonista final...
  • 85. + ¿ JRuby on Rails ?
  • 86. En la unión está la fuerza...
  • 87. Motivación Capa dinámica (código de aplicación) JRuby (Rails) Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
  • 88. (Historia real)
  • 89. El proyecto...
  • 90. 1.Parsear XML
  • 91. 1.Parsear XML 2.Crear prototipo WS-*
  • 92. 1.Parsear XML 2.Crear prototipo WS-* 3.Invocar WS-*
  • 93. 1.Parsear XML 2.Crear prototipo WS-* 3.Invocar WS-* 4.Generar PDFs
  • 94. 1.Parsear XML 2.Crear prototipo WS-* 3.Invocar WS-* 4.Generar PDFs 5.Mensajería asincrona
  • 95. 1.Parsear XML 2.Crear prototipo WS-* 3.Invocar WS-* 4.Generar PDFs 5.Mensajería asincrona 6.HTML + CSS + JS
  • 96. tiempo = 3 días
  • 97. Negociamos con el cliente
  • 98. Única restricción: Debe correr en nuestra Infraestructura: JAVA
  • 99. + JRuby on Rails
  • 100. 24 horas y 150 lineas de código más tarde estaba lista
  • 101. Un secreto: Necesitamos migramos la aplicación a Java en: Una Noche calurosa de Miami
  • 102. demo final: (JRuby on Rails)
  • 103. “Social Todo List”
  • 104. Aplicación Web J2EE
  • 105. > rails stdl
  • 106. > rails stdl > ./script/server
  • 107. > rails stdl > ./script/server > ./script/generate model...
  • 108. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller...
  • 109. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb
  • 110. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb > rake db:migrate
  • 111. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb > rake db:migrate > ./script/server
  • 112. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb > rake db:migrate > ./script/server > include LOGGING
  • 113. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb > rake db:migrate > ./script/server > include LOGGING > jruby -S warble
  • 114. > rails stdl > ./script/server > ./script/generate model... > ./script/generate controller... > jugar un poco con todo_controller e index.html.erb > rake db:migrate > ./script/server > include LOGGING > jruby -S warble > cp stdl.war $TOMCAT/webapps
  • 115. Conclusiones
  • 116. Motivación Capa dinámica (código de aplicación) JRuby, Jython, otro... Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
  • 117. Poliglotas
  • 118. ¿ Preguntas ? http://continuum.cl twitter: j4rs