Mono: la nueva plataforma de desarrollo Open Source

Mono: la nueva plataforma de desarrollo open source Mono: la nueva plataforma de desarrollo Open Source Python y Java Pablo Orduña -aka NcTrunpablo@

2 downloads 96 Views 204KB Size

Story 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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.