JRuby Al Rescate J2EE

2,227 views

Published on

JRuby on Rails al rescate de J2EE: Encuentro Linux 2009, Valparaiso, Chile.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,227
On SlideShare
0
From Embeds
0
Number of Embeds
849
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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.
  • JRuby Al Rescate J2EE

    1. 1. JRuby on Rails al rescate de J2EE jorge.rodriguez@continuum.cl Fundador & CEO de Continuum http://twitter.com/j4rs Encuentro Linux 2009
    2. 2. Banana Boy !
    3. 3. Banana Boy !
    4. 4. jorge.rodriguez@continuum.cl Fundador & CEO http://twitter.com/j4rs
    5. 5. si eres entusiasta de Rails...
    6. 6. info@continuum.cl
    7. 7. Esta presentación esta basada en hechos reales...
    8. 8. 18 años de evolución
    9. 9. Soporte de gigantes
    10. 10. Vendida a muchos clientes
    11. 11. plataforma estable y robusta...
    12. 12. performance
    13. 13. Manejo de la memoria
    14. 14. escalable...
    15. 15. comunidad apasionada
    16. 16. Herramientas, librerías, extensiones
    17. 17. excelente lenguaje...
    18. 18. J2EE
    19. 19. Aplicaciones Web entre otras cosas...
    20. 20. portable, robusta, escalable, blablabla...
    21. 21. Do more with less work...
    22. 22. Capa dinámica (código de aplicación) (J2EE / Java) Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
    23. 23. una buena idea...?
    24. 24. uhmm...
    25. 25. JEE es un poco más...
    26. 26. Para construir una aplicación...
    27. 27. 2.8 Megas de Especificación
    28. 28. 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
    29. 29. ambientes de desarrollo pesados 200 MB
    30. 30. ciclos de desarrollo lentos...
    31. 31. yo estuve allí...
    32. 32. diversos frameworks para resolver los mismos problemas...
    33. 33. mucho código...
    34. 34. muchas versiones...
    35. 35. J2EE para desarrollar ágilmente
    36. 36. Podemos hacer algo?
    37. 37. Yes, we can !
    38. 38. NO J2EE ! Entonces que ? Capa Estable (servidores de aplicaciones), Alto desempeño (Java) http://olabini.com/blog/2008/01/language-explorations/
    39. 39. los protagonistas...
    40. 40. ¿ Ruby ?
    41. 41. • lenguaje abierto
    42. 42. •lenguaje abierto • dinámico, flexible y muy expresivo
    43. 43. •lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad
    44. 44. • lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad • versión 1.9.1
    45. 45. • lenguaje abierto • dinámico, flexible y muy expresivo • enfocado en la simplicidad y productividad • versión 1.9.1 • bla bla bla...
    46. 46. comparar con java...
    47. 47. “Necesito copiar el contenido de un archivo hacia otro archivo”
    48. 48. java
    49. 49. ?
    50. 50. después de google...
    51. 51. 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 {
    52. 52. try { if (input != null) { input.close(); } } catch (IOException ignored1) { } try { if (output != null) { output.close(); } } catch (IOException ignored2) { } }
    53. 53. ruby
    54. 54. File.open("/tmp/src.txt") do |input| File.open("/tmp/dest.txt", "w") do |output| output << input.read end end
    55. 55. “Quiero buscar todos los patrones twitters en la sentencia”
    56. 56. java
    57. 57. después de google...
    58. 58. String x = "@j4rs en @encuentrolinux mostrando jruby"; Pattern p = Pattern.compile("@w+"); Matcher m = p.matcher(x); while (m.find()) { System.out.println(m.group()); }
    59. 59. ruby
    60. 60. "@j4rs en @encuentrolinux mostrando jruby".scan(/@w+/).each do |t| puts t end
    61. 61. “Quiero repetir ‘Hola EL2009’ 5 veces...”
    62. 62. java
    63. 63. for (int i = 0; i < 5; i++) { System.out.println("Hola EL2009"); }
    64. 64. ruby
    65. 65. 5.times {puts "Hola EL2009"}
    66. 66. “Crear la clase Rectángulo y definir su área”
    67. 67. java
    68. 68. 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; }
    69. 69. /** * @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; } }
    70. 70. ruby
    71. 71. class Rectangulo attr_accessor :a, :b def initialize(a, b) @a = a; @b = b; end def area() a*b end end
    72. 72. “...ruby focus on humans...” “...we are masters, machines are the slaves...”
    73. 73. but so?, esto es java, de que me sirve ruby?
    74. 74. próximo protagonista
    75. 75. ¿ JRuby ?
    76. 76. • Implementación de Ruby 100 % en Java
    77. 77. •Implementación de Ruby 100 % en Java • 5 veces más rapida que C-Ruby
    78. 78. •Implementación de Ruby 100 % en Java • 5 veces más rapida que C-Ruby • Versión estable 1.3 (Comp. Ruby 1.8.7)
    79. 79. •Implementación de Ruby 100 % en 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)
    80. 80. •Implementación de Ruby 100 % en 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) • Instalación: jruby.jar
    81. 81. Java <=> Ruby
    82. 82. demo: Java Swing
    83. 83. demo: probar lib java sin main()
    84. 84. próximo protagonista
    85. 85. ¿ Rails ?
    86. 86. • framework web open source
    87. 87. • framework web open source • construido sobre y para Ruby
    88. 88. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil
    89. 89. • framework web open source • construido sobre y para Ruby • orientado al desarrollo ágil • una filosofía diferente de crear aplicaciones web
    90. 90. • 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...”
    91. 91. • 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...
    92. 92. cultura alternativa...
    93. 93. Libertad...
    94. 94. Libertad... No precisamente este tipo de libertad...
    95. 95. diversión...
    96. 96. demo: al final
    97. 97. último protagonista...
    98. 98. + ¿ JRuby on Rails ?
    99. 99. En la unión está la fuerza...
    100. 100. 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/
    101. 101. una historia de éxito...
    102. 102. un cliente estratégico...
    103. 103. el proyecto...
    104. 104. 1. Parsear XMLs
    105. 105. 1. Parsear XMLs 2. Crear prototipo WS-*
    106. 106. 1. Parsear XMLs 2. Crear prototipo WS-* 3. Consumir WS-*
    107. 107. 1. Parsear XMLs 2. Crear prototipo WS-* 3. Consumir WS-* 4. Generar PDFs
    108. 108. 1. Parsear XMLs 2. Crear prototipo WS-* 3. Consumir WS-* 4. Generar PDFs 5. Mensajería asíncrona vía MQ Series
    109. 109. 1. Parsear XMLs 2. Crear prototipo WS-* 3. Consumir WS-* 4. Generar PDFs 5. Mensajería asíncrona vía MQ Series 6. Mucho de HTML + CSS + JS
    110. 110. tiempo = 3 días
    111. 111. Negociamos con el cliente: No lo logramos con J2EE
    112. 112. Única restricción: Debe correr en nuestra Infraestructura: java
    113. 113. + JRuby on Rails
    114. 114. 3 días y 150 lineas de código más tarde estaba lista
    115. 115. Un secreto: Problemas de performance Necesitamos migrar la aplicación a Java
    116. 116. Tiempo: Una Noche calurosa de Miami
    117. 117. demo final: JRuby on Rails
    118. 118. Aplicación: “Social Todo List”
    119. 119. Conclusiones
    120. 120. 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/
    121. 121. Poliglotas
    122. 122. ¿ Preguntas ? http://continuum.cl http://twitter.com/j4rs

    ×