Hola a todos,
no me he leido el hilo entero, no se si habreis comentado tal o cual pero mi opinión es la siguiente:
¿Es lícito utilizar una tecnología no-libre para crear software libre?
Es lícito, pero no es lo más recomendable. Basar nuestros programas en lenguajes
propietarios nos ata de forma prácticamente irremediable a una sola opción, por muy gratis que sea. Esa sola opción puede ser desde el sistema operativo hasta la compañía que desarrolla dicho lenguaje.
Para realizar una
máquina
virtual JAVA hay que leerse muy bien las licencias del propietario del lenguaje,
Sun Microsystems. En este caso nos encontramos con sorpresas desagradables. Una de ellas es que se deben cumplir ciertas normas (especificaciones), de las cuales no se conocen todas... aunque no es del todo cierto: hay libros en las que estan escritas y descritas, aunque por gente que las ha "investigado", no por la propia Sun. Pero ahí no acaba todo: Sun puede hacer en cualquier momento que tu implementación sea "ilegal", alegando copia o plagio... y el motivo da igual. Inmediatamente debes dejar el proyecto de lado, o te cae un puro bastante hermoso.
Otro tema sobre las MV de JAVA que te puedas hacer tu, es que no puedes implementarlo como te dé la gana. Esto es bueno y malo.
Microsoft hizo una implementación de JAVA en la que incluia cosas que sólo funcionaban con la MV de MS y, obviamente, únicamente bajo Windows. Esto es una mala jugada: rompes el
estándard de facto creado por Sun y pierdes portabilidad. Esto hizo que Sun denunciara a MS... ganando los primeros y obligando a MS retirar de todos sus Windows dicha máquina virtual (que venía de serie en Win98, por cierto). Si os fijáis, los primeros que vieron el gran potencial de "encerrar" a todos los desarrolladores en un sistema operativo mediante el lenguaje fué MS, como no. De esta última idea salió .NET, no me extenderé, que fué creado diciendo "os dejaré que lo implementeis donde querais", pero luego no suelta prenda de la parte más importante, las Windows.Forms, atando a todo el mundo a un único sistema operativo. Ya lo dijo Tolkien, Uno Para Dominarlos a Todos.
Tu máquina virtual puede incorporar propiedades que no estén en la de Sun, siempre y cuando sea compatible con esta a nivel de Bytecode mientras no hacemos uso de estas caracterísiticas nuevas y mientras las marquemos muy bien (con neones de colores prácticamente). Por lo general la gente no implementa nada que se salga del
estándard de facto creado por Sun, debido a la gran presión que suelen sufrir.
El lenguaje como tal está bastante bien pensado, es ágil y funciona sin volver a compilar en todas las máquinas que tengan una máquina virtual... y encima gratis. Pero, ligar nuestro software a algo que depende de una sola empresa y que encima no podamos hacer nada nosotros en caso de "quiebro", o en caso de que esta decida cobrar por JDK (Java Development Kit), o en... miles de hipotéticos "o", nuestro software quedará cerrado en la inopia del software y ya nos podemos despedir. No creais que es tan "paranoico-cospiratorio"... he ido a muchos bancos (a pedir, pero no... nunca me dan

) y muchos de estos tienen su gestión en JAVA (únicamente hay que ver la interfaz tan
alien de JAVA), no creo que todos estos no paguen las licencias que hagan falta (seguro que les sale más barato que migrar a otros lenguajes). Pero... ¿que pasará con el software gratuito o libre? No es muy lógico desde este punto de vista, entonces, utilizar un lenguaje propietario.
Hay gente que opina que si una tecnología software la crea una empresa, por definición es "malo" (éticamente hablando). Esto es un extremismo muy grande... pero que tiene algo de cierto: si ese software es propietario, estas a su merced. No hay nada de malo en utilizar software propietario, siempre y cuando el formato de salida sea estándard o libre. Si el lenguaje de desarrollo es propiertario y no es ni estándard (recordemos que JAVA no forma parte de ningún estándard y que C# desde poco después de su creación fué ECMA), no es ético ni, en cuanto a hacer programas con él, práctico a la larga.
A favor de estas tecnologías diré: tienen un momento y un lugar. Por ejemplo, la tecnología derivada de JAVA que más provecho le podemos sacar (aunque me parece anticuada y tosca) es J2ME... JAVA para dispositivos empotrados (móviles, por ejemplo). Yo desarrollo juegos en J2ME... están destinados a un cierto tipo de móviles y para remunerarse inmediatamente. Ahora es su momento, y los móviles de la generación actual son su lugar. Mañana esos juegos/programas estarán desfasados y no se utilizarán, y habrán dado el rendimiento económico que debieron dar.
Si queremos desarrollar algo que nos dure "toda la vida", con espectativas a poder mejorarlo durante tiempo indeterminado y lograr que llegue al mayor número de sistemas y personas posibles y sin restricciones... no debemos utilizar tecnologías propietarias.
A mi me gusta mucho lo que han hecho con un programa que utilizo muy amenudo: iPodder Lemon, un gestor de podcasts programado en JAVA... pero que en su versión para Linux utilizan Python. Obviamente, las dos versiones son distintas en cuanto a fondo, pero en cuanto a las
features son lo mismo. El Look'n'Feel es muy similar entre ellas... pero la velocidad es mucho más alta en Linux... y lo he comprobado yo mismo sorprendiéndome gratamente. A decir verdad, no se si es por Linux o por Python... pero fué lo que me hizo mirar de forma muy distinta este último lenguaje como substituto del JAVA para aplicaciones de escritorio y varios.
Como he dicho JAVA es un lenguaje muy potente, pero últimamente las mejoras son sólo parches sobre estructuras antiguas... y estas mejoras no dejan de ser remiendos para que .NET no le coma terreno, cosa que Sun no está logrando porque se nota que son arreglos. Con mono y python yo creo que se pueden crear aplicaciones más que buenas para substituir a JAVA... teniéndolo libre, para que ir a soluciones privativa.
Recuerdo que con mono y Python pueden crear aplicaciones propietarias si se quiere... no sólo software libre.
Un saludo!
Links
http://www.java.com/en/download/license.jsp
Licencia de usuario final (no para desarrollar MV compatibles)
http://ipodder.sourceforge.net/index.php
Ipodder Lemon