SlideShare uma empresa Scribd logo
1 de 25
Lenguajes Dinámicos
        en la
Java Virtual Machine

       Por: Óscar López, M.Sc.
       Twitter: @oscar_lopez
Lenguajes Dinámicos
• Permiten realizar en ejecución labores que
    en otros lenguajes se hacen en compilación
•   Sistema de tipos dinámicos (*)
•   Programación funcional
•   Meta-programación y reflexión
•   Scripting, “pegamento”, prototipos
•   Edit-compile-test vs. read-eval-print
•   ¡Es una definición subjetiva!

                   OALP-2010 All Rights Reserved   2
Java Virtual Machine
• Implementación en software de una máquina
    física
•   Portabilidad entre múltiples plataformas, no
    depende específicamente de Java
•   Ejecuta un lenguaje intermedio – bytecode
•   Es una máquina de pila
•   Manejo de memoria, verificador de clases,
    excepciones, seguridad, hilos, GC, JIT
•   ¡Puede implementar otros lenguajes!
•   JSR 223 (Scripting, Java 1.6), JSR 292
    (invokedynamic, Java 1.7), Da Vinci Machine

                      OALP-2010 All Rights Reserved   3
Lenguajes en la JVM
• Ada                                  •     Lisp (Clojure)
• AspectJ                              •     Lua
• AWK                                  •     OCaml
• C                                    •     Oberon
• Cobol                                •     Pascal
• ColdFusion                           •     PHP
• Forth                                •     Python (Jython)
• Groovy                               •     Rexx
• Java                                 •     Ruby (JRuby)
• JavaFX Script                        •     Scala
• JavaScript (Rhino)                   •     Scheme
• LOGO                                 •     Tcl

                       OALP-2010 All Rights Reserved           4
Ejemplo: Torres de Hanoi




          OALP-2010 All Rights Reserved   5
OALP-2010 All Rights Reserved   6
Jython: Características
• Implementación 100% Java del lenguaje Python,
    versión 2.5 (con algunas diferencias)
•   Uso transparente de cualquier clase en Java
•   Compilación a bytecode estática o dinámica
•   Propiedades tipo bean
•   Multi-hilos, resuelve el problema del GIL
•   Usa el GC de Java, no conteo de referencias
•   Desempeño depende de la JVM, pero en general
    es más lento que CPython ó Java
•   Atrasado respecto a CPython (2.7.0 RC, 3.1.2), no
    puede usar módulos escritos en C

                      OALP-2010 All Rights Reserved     7
Jython: Casos de Uso
• Permite correr frameworks populares en
    Python, como Django, Pylons, SQLAlchemy
•   Lenguaje de scripting del WebSphere
    Application Server
•   Parte de las herramientas de desarrollo de
    IBM Rational
•   Lenguaje de programación de JHepWork,
    un framework para análisis de datos
•   Generación de pruebas de carga en The
    Grinder
                   OALP-2010 All Rights Reserved   8
Jython: Ejemplo




          OALP-2010 All Rights Reserved   9
OALP-2010 All Rights Reserved   10
JRuby: Características
• Implementación 100% Java del lenguaje
    Ruby, versión 1.8.7 (con algunas diferencias)
•   Puede correr en modo interpretado o
    compilado (AOT, JIT)
•   Multi-hilos, no GIL, usa el GC de Java
•   Mejor desempeño que la implementación
    de referencia de Ruby 1.8 (pero no mejor
    que Ruby 1.9)
•   Permite usar librerías escritas en C, siempre
    y cuando estén empacadas como gems.
                    OALP-2010 All Rights Reserved   11
JRuby: Casos de Uso
• Permite correr frameworks populares en
    Ruby, como Rake (make), RubyGems
    (paquetes)
•   Desde sus inicios tuvo como objetivo
    soportar por completo Ruby on Rails
•   Las aplicaciones web de RoR pueden ser
    desplegadas en Tomcat, Glassfish, etc.
•   Igualmente, se pueden desplegar
    aplicaciones JRuby en Google App Engine

                  OALP-2010 All Rights Reserved   12
JRuby: Ejemplo




         OALP-2010 All Rights Reserved   13
OALP-2010 All Rights Reserved   14
Scala: Características
• Multiparadigma, diseñado para ser escalable; ¡lo
    mejor de dos mundos!
•   Modelo de compilación similar a Java, bytecode
    casi idéntico al de Java
•   OO puro: todos los valores son objetos, clases,
    traits (con herencia dinámica, múltiple)
•   Funcional: continuaciones, funciones anónimas y
    anidadas, laziness, pattern matching, tail call (*)
•   Sistema de tipos estáticos, genericidad, inferencia
    de tipos (*)
•   Modelos de concurrencia: Actores, CSP
                      OALP-2010 All Rights Reserved       15
Scala: Casos de Uso
• Twitter ha migrado buena parte de su
    backend de Ruby a Scala
•   Lift, un framework de aplicaciones web
    similar a RoR. Puede desplegarse sobre
    cualquier contenedor web
•   Foursquare (red social + localización) usa
    Lift
•   Wattzon (energía, medio ambiente) está
    hecho completamente en Scala

                    OALP-2010 All Rights Reserved   16
Scala: Ejemplo




          OALP-2010 All Rights Reserved   17
OALP-2010 All Rights Reserved   18
Clojure: Características
• Un dialecto moderno de Lisp
• Multiparadigma, aunque favorece el estilo
    funcional de programación
•   Lenguaje compilado, produce bytecode
•   El código se puede tratar como datos
•   Tipos dinámicos, inferencia de tipos
•   Tail call limitada, por medio del operador recur
•   Multimétodos, secuencias lazy
•   Cuenta con un poderoso sistema de macros
•   Concurrencia: agentes reactivos, STM
                      OALP-2010 All Rights Reserved    19
Clojure: Casos de Uso
• Compojure ó Conjure como frameworks
    para aplicaciones web
•   Clojure Contrib: extenso conjunto de
    librerías y utilidades
•   FlightCaster (predicción de demoras en
    vuelos)
•   Usado en Europa en aplicaciones del sector
    salud, finanzas y energía


                   OALP-2010 All Rights Reserved   20
Clojure: Ejemplo




          OALP-2010 All Rights Reserved   21
Bibliografía
Java
1. http://en.wikipedia.org
2. http://java.sun.com/developer/technicalArticles/D
    ynTypeLang
3. http://andrei.gmxhome.de/bytecode/index.html
4. http://openjdk.java.net/projects/mlvm
5. http://www.is-research.de/info/vmlanguages
Jython
6. http://www.jython.org
7. http://pydev.org
8. http://www.jython.org/archive/21/docs/differences
    .html

                    OALP-2010 All Rights Reserved   22
Bibliografía (cont.)
JRuby
9. http://jruby.org
10. http://www.aptana.com/products
11. http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
12. http://kenai.com/projects/jruby/pages/DifferencesBetween
    MriAndJruby
13. http://www.igvita.com/2009/09/23/deploying-jruby-on-
    google-app-engine
Scala
14. http://www.scala-lang.org
15. http://www.assembla.com/wiki/show/scala-ide
16. http://www.artima.com/scalazine/articles/steps.html
17. http://programming-scala.labs.oreilly.com

                        OALP-2010 All Rights Reserved            23
Bibliografía (cont.)
Clojure
18. http://clojure.org
19. http://code.google.com/p/counterclockwise
20. http://clojure.org/compilation
21. http://en.wikibooks.org/wiki/Clojure_Programmin
    g/Tutorials_and_Tips
22. http://kotka.de/blog/2010/02/gen-
    class_how_it_works_and_how_to_use_it.html
23. http://www.ibm.com/developerworks/opensource
    /library/os-eclipse-clojure/index.html
24. http://java.ociweb.com/mark/clojure/article.html

                    OALP-2010 All Rights Reserved   24
Preguntas




            OALP-2010 All Rights Reserved   25

Mais conteúdo relacionado

Destaque

Enseñar A Aprender 25138
Enseñar A Aprender 25138Enseñar A Aprender 25138
Enseñar A Aprender 25138IRMA CHAVEZ
 
Jovenes,consumos culturales y educación
Jovenes,consumos culturales y educaciónJovenes,consumos culturales y educación
Jovenes,consumos culturales y educaciónnelizalde
 
La Vida Es Tan Corta
La Vida Es Tan CortaLa Vida Es Tan Corta
La Vida Es Tan CortaIRMA CHAVEZ
 
China, Beiging, Teatro Nacional
China, Beiging, Teatro NacionalChina, Beiging, Teatro Nacional
China, Beiging, Teatro NacionalIRMA CHAVEZ
 
CURSO 2008-2009
CURSO 2008-2009CURSO 2008-2009
CURSO 2008-2009entretodos
 
Disgenesias gonadales fenotipo fem.
Disgenesias gonadales fenotipo fem.Disgenesias gonadales fenotipo fem.
Disgenesias gonadales fenotipo fem.Yesenia Huizar
 
Els Ritmes De La Bruixa
Els Ritmes De La BruixaEls Ritmes De La Bruixa
Els Ritmes De La BruixaMARTA FIGUERAS
 
Reencuentro con la_virgen_dolorosa_del_colegi_ovf
Reencuentro con la_virgen_dolorosa_del_colegi_ovfReencuentro con la_virgen_dolorosa_del_colegi_ovf
Reencuentro con la_virgen_dolorosa_del_colegi_ovferomeroc1
 
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescryptPsic Karina Bautista
 
Construccion de un_modelo_de negocio_innovador
Construccion de un_modelo_de negocio_innovadorConstruccion de un_modelo_de negocio_innovador
Construccion de un_modelo_de negocio_innovadorJavier Gonzalez
 
Votado Como El Mejor Mail 2008
Votado Como El Mejor Mail 2008Votado Como El Mejor Mail 2008
Votado Como El Mejor Mail 2008Carlos1953
 
Linux tips-como
Linux tips-comoLinux tips-como
Linux tips-comoreivaj1984
 
Dispositivo De Comunicacion Zoop
Dispositivo De Comunicacion ZoopDispositivo De Comunicacion Zoop
Dispositivo De Comunicacion Zoopzooop
 
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACION
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACIONPRACTICA Nº 4: PORTAFOLIO DE PRESENTACION
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACIONDETICS SRL
 
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...min4ev
 
Anuncio XIV en Campust Tecnológico de Guadalajara
Anuncio XIV en Campust Tecnológico de GuadalajaraAnuncio XIV en Campust Tecnológico de Guadalajara
Anuncio XIV en Campust Tecnológico de GuadalajaraKandu Tapia
 

Destaque (20)

Silencio
SilencioSilencio
Silencio
 
Enseñar A Aprender 25138
Enseñar A Aprender 25138Enseñar A Aprender 25138
Enseñar A Aprender 25138
 
Jovenes,consumos culturales y educación
Jovenes,consumos culturales y educaciónJovenes,consumos culturales y educación
Jovenes,consumos culturales y educación
 
La Vida Es Tan Corta
La Vida Es Tan CortaLa Vida Es Tan Corta
La Vida Es Tan Corta
 
China, Beiging, Teatro Nacional
China, Beiging, Teatro NacionalChina, Beiging, Teatro Nacional
China, Beiging, Teatro Nacional
 
CURSO 2008-2009
CURSO 2008-2009CURSO 2008-2009
CURSO 2008-2009
 
Disgenesias gonadales fenotipo fem.
Disgenesias gonadales fenotipo fem.Disgenesias gonadales fenotipo fem.
Disgenesias gonadales fenotipo fem.
 
Els Ritmes De La Bruixa
Els Ritmes De La BruixaEls Ritmes De La Bruixa
Els Ritmes De La Bruixa
 
Reencuentro con la_virgen_dolorosa_del_colegi_ovf
Reencuentro con la_virgen_dolorosa_del_colegi_ovfReencuentro con la_virgen_dolorosa_del_colegi_ovf
Reencuentro con la_virgen_dolorosa_del_colegi_ovf
 
El sistema solar
El sistema solarEl sistema solar
El sistema solar
 
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt
27868226 no-es-posible-curarse-sin-aprender-a-vivir-undescrypt
 
Construccion de un_modelo_de negocio_innovador
Construccion de un_modelo_de negocio_innovadorConstruccion de un_modelo_de negocio_innovador
Construccion de un_modelo_de negocio_innovador
 
PoesíA Del Alma
PoesíA Del  AlmaPoesíA Del  Alma
PoesíA Del Alma
 
Votado Como El Mejor Mail 2008
Votado Como El Mejor Mail 2008Votado Como El Mejor Mail 2008
Votado Como El Mejor Mail 2008
 
Linux tips-como
Linux tips-comoLinux tips-como
Linux tips-como
 
Dispositivo De Comunicacion Zoop
Dispositivo De Comunicacion ZoopDispositivo De Comunicacion Zoop
Dispositivo De Comunicacion Zoop
 
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACION
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACIONPRACTICA Nº 4: PORTAFOLIO DE PRESENTACION
PRACTICA Nº 4: PORTAFOLIO DE PRESENTACION
 
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...
Varnenche.com- experiencias turisticas de Varna y reserva de servicios turist...
 
Anuncio XIV en Campust Tecnológico de Guadalajara
Anuncio XIV en Campust Tecnológico de GuadalajaraAnuncio XIV en Campust Tecnológico de Guadalajara
Anuncio XIV en Campust Tecnológico de Guadalajara
 
Suite Miró
Suite MiróSuite Miró
Suite Miró
 

Semelhante a Lenguajes dinámicos en la JVM

Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Javapbcanessa
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scalajose diaz
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMVíctor Leonel Orozco López
 
[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma JavaEudris Cabrera
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaJacob
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 
10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacionChristian Morales
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go LangArkhotech
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a FondoAndres Almiray
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaNelson Rivera
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaNelson Rivera
 

Semelhante a Lenguajes dinámicos en la JVM (20)

1.introduccion java
1.introduccion java1.introduccion java
1.introduccion java
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 
JRuby Al Rescate J2EE
JRuby Al Rescate J2EEJRuby Al Rescate J2EE
JRuby Al Rescate J2EE
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
 
[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java[ES] Primeros pasos con la Plataforma Java
[ES] Primeros pasos con la Plataforma Java
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
10 lenguajes de programacion
10 lenguajes de programacion10 lenguajes de programacion
10 lenguajes de programacion
 
An Evening with... Go Lang
An Evening with... Go LangAn Evening with... Go Lang
An Evening with... Go Lang
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a Fondo
 
Introducción a Ceylon
Introducción a CeylonIntroducción a Ceylon
Introducción a Ceylon
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Mi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de PreferenciaMi Lenguaje de Programacion de Preferencia
Mi Lenguaje de Programacion de Preferencia
 
Mi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferenciaMi lenguaje de programacion de preferencia
Mi lenguaje de programacion de preferencia
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 

Mais de campus party

¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? campus party
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas vocescampus party
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilcampus party
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contrerascampus party
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contrerascampus party
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminalcampus party
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallercampus party
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1campus party
 
Theremin Alfredo Vargas
Theremin Alfredo Vargas Theremin Alfredo Vargas
Theremin Alfredo Vargas campus party
 
Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon campus party
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés BautistaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautistacampus party
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés FonsecaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonsecacampus party
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPcampus party
 
Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping campus party
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticacampus party
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...campus party
 

Mais de campus party (20)

Titulo
Titulo Titulo
Titulo
 
¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad? ¿Qué es SCADA y cómo me afecta su (in)seguridad?
¿Qué es SCADA y cómo me afecta su (in)seguridad?
 
Producción del largometraje pequeñas voces
Producción del largometraje pequeñas vocesProducción del largometraje pequeñas voces
Producción del largometraje pequeñas voces
 
Conferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvilConferencia: Aplicaciones y el reto del desarrollo móvil
Conferencia: Aplicaciones y el reto del desarrollo móvil
 
Liminal Bluevia 1
Liminal Bluevia 1Liminal Bluevia 1
Liminal Bluevia 1
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel ContrerasComo sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
Como sería un viaje a la velocidad de la luz - Miguel Ángel Contreras
 
X taller bluevialiminal
X taller bluevialiminalX taller bluevialiminal
X taller bluevialiminal
 
X liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-tallerX liminal buevia 2 (dllo.)-taller
X liminal buevia 2 (dllo.)-taller
 
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
X elalgoritmodelamemoria maria juliana soto (social media) (1) 1
 
Theremin Alfredo Vargas
Theremin Alfredo Vargas Theremin Alfredo Vargas
Theremin Alfredo Vargas
 
Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon Sonido y cine Ricardo Escallon
Sonido y cine Ricardo Escallon
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés BautistaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Bautista
 
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés FonsecaPhotoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
Photoshop para fotógrafos. Del cuarto oscuro al cuarto digital - Andrés Fonseca
 
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASPAseguramiento de Vulnerabilidades Web con tecnologías OWASP
Aseguramiento de Vulnerabilidades Web con tecnologías OWASP
 
Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping Mundos virtuales inmersivos y social shopping
Mundos virtuales inmersivos y social shopping
 
Creación transmediática y comunidades en práctica
Creación transmediática y comunidades en prácticaCreación transmediática y comunidades en práctica
Creación transmediática y comunidades en práctica
 
Android+Arduino
Android+ArduinoAndroid+Arduino
Android+Arduino
 
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
Implementación de Cloud Computing con Software Libre y medidas de seguridad p...
 
Linux en caja
Linux en cajaLinux en caja
Linux en caja
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Último (13)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Lenguajes dinámicos en la JVM

  • 1. Lenguajes Dinámicos en la Java Virtual Machine Por: Óscar López, M.Sc. Twitter: @oscar_lopez
  • 2. Lenguajes Dinámicos • Permiten realizar en ejecución labores que en otros lenguajes se hacen en compilación • Sistema de tipos dinámicos (*) • Programación funcional • Meta-programación y reflexión • Scripting, “pegamento”, prototipos • Edit-compile-test vs. read-eval-print • ¡Es una definición subjetiva! OALP-2010 All Rights Reserved 2
  • 3. Java Virtual Machine • Implementación en software de una máquina física • Portabilidad entre múltiples plataformas, no depende específicamente de Java • Ejecuta un lenguaje intermedio – bytecode • Es una máquina de pila • Manejo de memoria, verificador de clases, excepciones, seguridad, hilos, GC, JIT • ¡Puede implementar otros lenguajes! • JSR 223 (Scripting, Java 1.6), JSR 292 (invokedynamic, Java 1.7), Da Vinci Machine OALP-2010 All Rights Reserved 3
  • 4. Lenguajes en la JVM • Ada • Lisp (Clojure) • AspectJ • Lua • AWK • OCaml • C • Oberon • Cobol • Pascal • ColdFusion • PHP • Forth • Python (Jython) • Groovy • Rexx • Java • Ruby (JRuby) • JavaFX Script • Scala • JavaScript (Rhino) • Scheme • LOGO • Tcl OALP-2010 All Rights Reserved 4
  • 5. Ejemplo: Torres de Hanoi OALP-2010 All Rights Reserved 5
  • 6. OALP-2010 All Rights Reserved 6
  • 7. Jython: Características • Implementación 100% Java del lenguaje Python, versión 2.5 (con algunas diferencias) • Uso transparente de cualquier clase en Java • Compilación a bytecode estática o dinámica • Propiedades tipo bean • Multi-hilos, resuelve el problema del GIL • Usa el GC de Java, no conteo de referencias • Desempeño depende de la JVM, pero en general es más lento que CPython ó Java • Atrasado respecto a CPython (2.7.0 RC, 3.1.2), no puede usar módulos escritos en C OALP-2010 All Rights Reserved 7
  • 8. Jython: Casos de Uso • Permite correr frameworks populares en Python, como Django, Pylons, SQLAlchemy • Lenguaje de scripting del WebSphere Application Server • Parte de las herramientas de desarrollo de IBM Rational • Lenguaje de programación de JHepWork, un framework para análisis de datos • Generación de pruebas de carga en The Grinder OALP-2010 All Rights Reserved 8
  • 9. Jython: Ejemplo OALP-2010 All Rights Reserved 9
  • 10. OALP-2010 All Rights Reserved 10
  • 11. JRuby: Características • Implementación 100% Java del lenguaje Ruby, versión 1.8.7 (con algunas diferencias) • Puede correr en modo interpretado o compilado (AOT, JIT) • Multi-hilos, no GIL, usa el GC de Java • Mejor desempeño que la implementación de referencia de Ruby 1.8 (pero no mejor que Ruby 1.9) • Permite usar librerías escritas en C, siempre y cuando estén empacadas como gems. OALP-2010 All Rights Reserved 11
  • 12. JRuby: Casos de Uso • Permite correr frameworks populares en Ruby, como Rake (make), RubyGems (paquetes) • Desde sus inicios tuvo como objetivo soportar por completo Ruby on Rails • Las aplicaciones web de RoR pueden ser desplegadas en Tomcat, Glassfish, etc. • Igualmente, se pueden desplegar aplicaciones JRuby en Google App Engine OALP-2010 All Rights Reserved 12
  • 13. JRuby: Ejemplo OALP-2010 All Rights Reserved 13
  • 14. OALP-2010 All Rights Reserved 14
  • 15. Scala: Características • Multiparadigma, diseñado para ser escalable; ¡lo mejor de dos mundos! • Modelo de compilación similar a Java, bytecode casi idéntico al de Java • OO puro: todos los valores son objetos, clases, traits (con herencia dinámica, múltiple) • Funcional: continuaciones, funciones anónimas y anidadas, laziness, pattern matching, tail call (*) • Sistema de tipos estáticos, genericidad, inferencia de tipos (*) • Modelos de concurrencia: Actores, CSP OALP-2010 All Rights Reserved 15
  • 16. Scala: Casos de Uso • Twitter ha migrado buena parte de su backend de Ruby a Scala • Lift, un framework de aplicaciones web similar a RoR. Puede desplegarse sobre cualquier contenedor web • Foursquare (red social + localización) usa Lift • Wattzon (energía, medio ambiente) está hecho completamente en Scala OALP-2010 All Rights Reserved 16
  • 17. Scala: Ejemplo OALP-2010 All Rights Reserved 17
  • 18. OALP-2010 All Rights Reserved 18
  • 19. Clojure: Características • Un dialecto moderno de Lisp • Multiparadigma, aunque favorece el estilo funcional de programación • Lenguaje compilado, produce bytecode • El código se puede tratar como datos • Tipos dinámicos, inferencia de tipos • Tail call limitada, por medio del operador recur • Multimétodos, secuencias lazy • Cuenta con un poderoso sistema de macros • Concurrencia: agentes reactivos, STM OALP-2010 All Rights Reserved 19
  • 20. Clojure: Casos de Uso • Compojure ó Conjure como frameworks para aplicaciones web • Clojure Contrib: extenso conjunto de librerías y utilidades • FlightCaster (predicción de demoras en vuelos) • Usado en Europa en aplicaciones del sector salud, finanzas y energía OALP-2010 All Rights Reserved 20
  • 21. Clojure: Ejemplo OALP-2010 All Rights Reserved 21
  • 22. Bibliografía Java 1. http://en.wikipedia.org 2. http://java.sun.com/developer/technicalArticles/D ynTypeLang 3. http://andrei.gmxhome.de/bytecode/index.html 4. http://openjdk.java.net/projects/mlvm 5. http://www.is-research.de/info/vmlanguages Jython 6. http://www.jython.org 7. http://pydev.org 8. http://www.jython.org/archive/21/docs/differences .html OALP-2010 All Rights Reserved 22
  • 23. Bibliografía (cont.) JRuby 9. http://jruby.org 10. http://www.aptana.com/products 11. http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby 12. http://kenai.com/projects/jruby/pages/DifferencesBetween MriAndJruby 13. http://www.igvita.com/2009/09/23/deploying-jruby-on- google-app-engine Scala 14. http://www.scala-lang.org 15. http://www.assembla.com/wiki/show/scala-ide 16. http://www.artima.com/scalazine/articles/steps.html 17. http://programming-scala.labs.oreilly.com OALP-2010 All Rights Reserved 23
  • 24. Bibliografía (cont.) Clojure 18. http://clojure.org 19. http://code.google.com/p/counterclockwise 20. http://clojure.org/compilation 21. http://en.wikibooks.org/wiki/Clojure_Programmin g/Tutorials_and_Tips 22. http://kotka.de/blog/2010/02/gen- class_how_it_works_and_how_to_use_it.html 23. http://www.ibm.com/developerworks/opensource /library/os-eclipse-clojure/index.html 24. http://java.ociweb.com/mark/clojure/article.html OALP-2010 All Rights Reserved 24
  • 25. Preguntas OALP-2010 All Rights Reserved 25