Mono: la nueva plataforma de desarrollo open source
Mono: la nueva plataforma de desarrollo Open Source Python y Java
Pablo Orduña -aka
[email protected]
Abril 2005 – DotNetGroup ESIDE – Universidad de Deusto
This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Lenguajes en Mono - I ●
Hay una relativamente alta variedad de lenguajes que pueden ser utilizados desde Mono – –
●
C#, VB.NET (vienen con Mono) Usando compiladores de terceros Open Source o no, cuyo objetivo es .NET o Mono o ambos
El código generado debe poder ser independiente de librerías que no funcionen en Mono –
J# utiliza vjslib.dll, que utiliza P/Invoke
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Lenguajes en Mono - II ●
●
Aquí vamos a tratar pocos, todos ellos Open Source que funcionan al menos en Mono Vamos a tratar algunos basados en: ● ●
Java Python
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
IKVM - I ●
●
Para utilizar código y librerías de Java utilizaremos IKVM IKVM incluye: –
Intérprete de Java implementado en Mono/.NET ●
●
como librerías de clases utilizan la implementación del GCJ (GNU Compiler For Java) Importante: no es un compilador de Java a IL – –
Interpreta bytecode de Java O bien hace bytecode de Java accesible desde Mono
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
IKVM - II –
herramientas que facilitan la interoperabilidad entre Java y .NET ●
●
ikvmstub hace accesibles desde IKVM assemblies de Mono
http://www.ikvm.net
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Usos IKVM - I ●
Usos –
Utilizar librerías de terceros escritos en Java y cuyo objetivo era Java ●
–
p.e. Apache FOP (para generar PDFs de XMLs)
Utilizar programas de terceros escritos en Java y cuyo objetivo era Java ● ●
Eclipse Jython
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Usos IKVM - II – –
Reutilizar nuestro código en Java Programar en Mono con Java ●
Podemos programar en Java con componentes escritos en Mono
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Ejemplos IKVM – I ●
Ejecutando una clase hecha en Java –
lenguajes/ikvm/JenM/ ●
Para compilar: –
●
Para ejecutar: –
●
ikvm ClaseA
Para generar un .exe: –
●
javac ClaseA.java (con tu compilador de Java)
ikvmc ClaseA.class (luego mono ClaseA.exe)
Para generar el .dll: –
ikvmc -target:library ClaseA.class ● (luego como una librería cualquiera)
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Ejemplos IKVM – II ●
Utilizando código hecho en Mono desde IKVM –
lenguajes/ikvm/gtk/ ●
Hacer los .dll accesible desde IKVM –
–
ikvmstub archivo.dll (generará archivo.jar) ● Estos .jar no accesibles desde Java, sino desde IKVM En nuestro caso: ● ikvmstub atk-sharp.dll ● ikvmstub glib-sharp.dll ● ikvmstub gtk-sharp.dll ● ikvmstub /usr/lib/mscorlib.dll
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Ejemplos IKVM - III ●
Compilar el .java –
●
Ejecutar el .class –
●
ikvm -cp glib-sharp.jar:gtk-sharp.jar:atksharp.jar:mscorlib.jar:. Demo
Compilar a .exe –
●
javac -classpath glib-sharp.jar:gtk-sharp.jar:atksharp.jar:mscorlib.jar:. Demo.java
ikvmc Demo.class gtk-sharp.jar
Ejecutar el .exe –
mono Demo.exe
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Más IKVM ●
Eclipse ejecutándose en Mono
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Utilizando Python - I ●
Utilizando Python hay 3 enfoques muy diferentes –
Implementar un intérprete de Python en . NET ● ●
–
Implementar un nuevo lenguaje similar a Python pero orientado a .NET ●
–
Python for .NET IronPython
Boo
Hacer uso de lo que ya existe ●
Jython sobre IKVM
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Utilizando Python - II ●
Ha habido varios intentos de hacer un intérprete de Python en .NET –
Dos proyectos parecen tener más fuerza: ● ●
●
Python for .NET IronPython
La idea es similar al IKVM con Java
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
IronPython - I ●
El proyecto más avanzado en este enfoque –
escrito por Jim Hugunin ●
– ●
autor de Jython y Python-numeric, entre otros
más rápido que CPython
Primera versión publicada –
0.6 ● ● ●
Licencia CPL (Open Source) Funciona en .NET 1.1 pocos días después Jim Hugunin empieza a trabajar en Microsoft
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
IronPython - II ●
Siguientes versiones –
0.7.x ● ●
Copyright Microsoft Corp. Funciona en .NET 2 (en beta) –
● ● ● ●
–
incompatible con el Mono estable actual ● compatible con la versión 1.1.X
Licencia Shared Source Necesidad de passport para ver bugs Uso “obligatorio” del foro de gotdotnet Imposibilidad de añadir parches de terceros
Largas discusiones en la lista sobre el apoyo de la comunidad
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
IronPython - III ●
Estado actual –
●
Sólo posibilidad real como intérprete
Ejemplos –
lenguajes/ironpython/ ●
ironpython loquesea.py
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Boo - I ●
Usa otro enfoque – –
.NET tiene muchas cosas que son difíciles de hacer accesibles desde otros lenguajes Implementa un lenguaje para .NET basado en Python ●
Este lenguaje es incompatible con Python – –
●
Un código hecho en Python no puede ser usado con Boo y viceversa No sirve por tanto para acceder a librerías de Python desde .NET
A cambio, tienes muchas de las ventajas de los lenguajes de .NET y muchas de las de Python
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Boo - II ●
Hay quien lo ve una salida interesante ante las nuevas condiciones de IronPython ●
Edd Dumbill, autor de “Mono, a Developer's handbook” (O'Reilly) –
●
dejó de apoyar IronPython y pasó a interesarse por Boo
A pesar de que en ambas listas hay quien las ve como: – –
diferentes herramientas no compiten entre sí
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Boo - III ●
Con Boo vienen 3 ejecutables: –
booish ●
–
booi fichero.boo ●
–
Interpreta el fichero fichero.boo
booc fichero.boo ● ●
●
Para ir introduciendo el código por teclado
Genera el ejecutable fichero.exe mono fichero.exe
Ejemplos en –
lenguajes/boo/
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Jython en Mono - I ●
Jython: – – – –
escrito por Jim Hugunin intérprete de Python hecho 100% en Java acceso nativo a cualquier clase de Java posibilidad de compilar código Python para ejecutarse en máquinas donde no está instalado Jython ni Python ●
–
posibilidad de hacer applets de Java en Jython
proyecto maduro
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Jython en Mono - II ●
●
●
Jython ejecuta Python donde se ejecute Java IKVM ejecuta Java donde se ejecute Mono/.NET Jython + IKVM = Python sobre Mono – – – –
Terriblemente lento Pesada interoperabilidad De Java sólo lo implementado por GCJ Sólo para jugar ;-)
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Jython - III ●
Al ejecutar “jython”, ejecutas: –
●
Para ejecutarlo desde IKVM: –
●
java -Dpython.home="/home/nctrun/dev/jython/jython21" -classpath "/home/nctrun/dev/jython/jython21/jython.jar:$CLASSPATH" "org.python.util.jython" "$@"
Igual, poniendo ikvm en lugar de java
Para añadir librerías (gtk#...): – – –
Primero utilizar ikvmstub para crear los . jar, tal y como se vio en IKVM Luego, añadir esos .jar al classpath Tendremos un script de Python tirando de GTK# a través de Java bajo Mono
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto
Mono: la nueva plataforma de desarrollo open source
Ejemplos Jython sobre Mono ●
Ejemplos –
lenguajes/jython/ ●
Modo interactivo –
●
ikvm ...
Interpretando archivos .py –
ikvm ...
© 2005 – Pablo Orduña (NcTrun)
DotNetGroup – ESIDE – Universidad de Deusto