Download Mono: la nueva plataforma de desarrollo Open Source

Document related concepts
no text concepts found
Transcript
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