Avances tecnológicos del siglo XXI y ejemplos de estos
JRuby: Ruby en un mundo enterprise
1. JRuby
Ruby en un mundo enterprise
Jano González
Desarrollador
http://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
22. 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?
23. 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 }
24. 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]
25. 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 }
26. 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(:+)
27. 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
28. Modificando clases ya existentes
# Monkey patching
class Range
def even
self.select { |n| n % 2 == 0 }
end
end
(1..100).even
29. Accediendo a clases Java
# Importando clases Java
require 'java'
java_import 'java.util.date'
d = Date.new
d.to_gmt_string
30. Accediendo a clases Java
Date d = new Date(); => d = Date.new
d.toGMTString() => d.to_gmt_string