SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Lenguajes Dinámicos
        en la
Java Virtual Machine

       Por: Óscar López, M.Sc.
        olopez@heinsohn.com.co
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
•   Modelos de 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

Contenu connexe

En vedette

Colecciones de Orden Superior en Java
Colecciones de Orden Superior en JavaColecciones de Orden Superior en Java
Colecciones de Orden Superior en JavaÓscar Andrés López
 
Autorización Basada en Reglas con Drools
Autorización Basada en Reglas con DroolsAutorización Basada en Reglas con Drools
Autorización Basada en Reglas con DroolsÓscar Andrés López
 
Why we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingWhy we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingMario Fusco
 
If You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are WrongIf You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are WrongMario Fusco
 
Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...Mario Fusco
 
From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modelingMario Fusco
 

En vedette (9)

Go 101: Primeros Pasos
Go 101: Primeros PasosGo 101: Primeros Pasos
Go 101: Primeros Pasos
 
Colecciones de Orden Superior en Java
Colecciones de Orden Superior en JavaColecciones de Orden Superior en Java
Colecciones de Orden Superior en Java
 
Autorización Basada en Reglas con Drools
Autorización Basada en Reglas con DroolsAutorización Basada en Reglas con Drools
Autorización Basada en Reglas con Drools
 
Why we cannot ignore Functional Programming
Why we cannot ignore Functional ProgrammingWhy we cannot ignore Functional Programming
Why we cannot ignore Functional Programming
 
Programación Funcional con Scheme
Programación Funcional con SchemeProgramación Funcional con Scheme
Programación Funcional con Scheme
 
If You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are WrongIf You Think You Can Stay Away from Functional Programming, You Are Wrong
If You Think You Can Stay Away from Functional Programming, You Are Wrong
 
Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...
 
From object oriented to functional domain modeling
From object oriented to functional domain modelingFrom object oriented to functional domain modeling
From object oriented to functional domain modeling
 
Monadic Java
Monadic JavaMonadic Java
Monadic Java
 

Similaire à Lenguajes Dinámicos en la Java Virtual Machine

Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Javapbcanessa
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java jmosorio777
 
[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
 
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
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scalajose diaz
 
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
 

Similaire à Lenguajes Dinámicos en la Java Virtual Machine (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
 
[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
 
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
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
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
 

Dernier

dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Dernier (20)

dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Lenguajes Dinámicos en la Java Virtual Machine

  • 1. Lenguajes Dinámicos en la Java Virtual Machine Por: Óscar López, M.Sc. olopez@heinsohn.com.co
  • 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 • Modelos de 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