From 1ae0306a3cf2ea27f60b2d205789994d260c2cce Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 11 Oct 2020 13:29:45 +0200 Subject: add i18n FSFS --- talermerchantdemos/blog/articles/es/java-trap.html | 289 +++++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 talermerchantdemos/blog/articles/es/java-trap.html (limited to 'talermerchantdemos/blog/articles/es/java-trap.html') diff --git a/talermerchantdemos/blog/articles/es/java-trap.html b/talermerchantdemos/blog/articles/es/java-trap.html new file mode 100644 index 0000000..e7bf979 --- /dev/null +++ b/talermerchantdemos/blog/articles/es/java-trap.html @@ -0,0 +1,289 @@ + + + + + + +Libre pero encadenado. La trampa de Java - Proyecto GNU - Free Software +Foundation + + + +

Libre pero encadenado. La trampa de Java

+ +

por Richard Stallman

+ + +

Nota

+

Después de que se publicara este artículo, Sun (ahora parte de Oracle) relicenció la +mayor parte de la implementación de referencia de su plataforma Java bajo la +Licencia Pública General de GNU, de manera que ahora existe un entorno de +desarrollo libre para Java. Así pues, el lenguaje Java ya no es una trampa.

+ +

No obstante, debe ser precavido, pues no toda plataforma Java es libre. Sun +sigue distribuyendo una plataforma Java ejecutable que no es libre, y +también otras compañías lo hacen.

+ +

El entorno libre para Java se denomina «IcedTea» —que es donde se +incluye el código fuente liberado por Sun—, de manera que es este el +entorno que se debe utilizar. Muchas distribuciones GNU/Linux vienen con +IcedTea, pero algunas incluyen plataformas Java que no son libres.(Nota, +añadida en octubre de 2015: La implentación libre de Java se denomina +OpenJDK en muchas distribuciones GNU/Linux).

+ +

Para tener la seguridad de que sus programas Java funcionarán correctamente +en un entorno libre, tiene que escribirlos utilizando IcedTea. En teoría, +las plataformas Java deberían ser compatibles, pero no lo son al cien por +cien.

+ +

Además, hay programas privativos que incluyen la palabra «Java» en el +nombre, como sucede con JavaFX, y existen paquetes Java que uno podría +sentirse tentado a utilizar pero que hay que rechazar, pues no son +libres. Si utiliza Swing, asegúrese de que sea la versión libre, que viene +con IcedTea.(Nota, añadida en octubre de 2015: Se ha publicado un reemplazo +libre de JavaFX llamado OpenJFX.)

+ +

Dejando a un lado los aspectos que se refieren específicamente a Java, el +asunto general aquí descrito continúa siendo importante, pues cualquier +plataforma de programación o biblioteca que no sea libre puede provocar un +problema similar. Hemos de aprender de la historia de Java para evitar así +otras trampas en el futuro.

+ +

Véase también: La trampa de +JavaScript.

+
+
+ +

12 de abril de 2004

+ +

+ Si su programa es software libre, básicamente es ético, pero hay una trampa +a la que debe estar atento. Su programa, aunque en sí mismo sea libre, puede +estar limitado por alguna dependencia de software que no es libre. En la +actualidad este problema se da sobre todo en los programas Java, por lo que +lo llamamos «la trampa de Java». +

+ +

+ Un programa es software libre si sus usuarios tienen ciertas libertades +esenciales. Sin entrar en detalles, éstas son: la libertad de ejecutar el +programa, la libertad de estudiar y modificar el código fuente, la libertad +de redistribuir el código fuente y los binarios, y la libertad de publicar +versiones mejoradas (véase http://www.gnu.org/philosophy/free-sw.html). +Que un programa en forma de código fuente sea software libre depende +únicamente de los términos de su licencia. +

+ +

+ Que el programa pueda ser usado en el mundo libre por personas que quieren +vivir en libertad es una cuestión más compleja. No es algo que esté +determinado únicamente por la licencia del programa, porque ningún programa +funciona aislado. Todos los programas dependen de otros programas. Por +ejemplo, un programa necesita ser compilado o interpretado, por lo tanto +depende de un compilador o de un intérprete. Si es compilado en +bytecode, depende de un intérprete de +bytecode. Además, necesita bibliotecas para ejecutarse, y +también puede invocar a otros programas aparte que se ejecutan en otros +procesos. Todos estos programas son dependencias. Las dependencias pueden +ser necesarias para poder ejecutar el programa, o pueden ser necesarias +solamente para ciertas funciones. En cualquier caso, el programa entero, o +alguna parte del mismo, no puede funcionar sin las dependencias. +

+ +

+ Si algunas de las dependencias de un programa no son libres, entonces ese +programa o una parte de él no se puede ejecutar en un sistema completamente +libre: es inutilizable en el mundo libre. Ciertamente podemos redistribuir +el programa y tener copias en nuestras máquinas, pero eso no sirve de mucho +si no podemos ejecutarlo. El programa es software libre, pero en la práctica +está encadenado por dependencias que no son libres. +

+ +

+ Este problema puede suceder en cualquier tipo de software, en cualquier +lenguaje. Por ejemplo, un programa libre que solamente funcione en Microsoft +Windows es claramente inútil en el mundo libre. Pero el software que +funciona en GNU/Linux también puede ser inútil si depende de otro software +que no sea libre. En el pasado, Motif (antes de que tuviéramos LessTif) y Qt +(antes de que sus desarrolladores lo convirtieran en software libre) fueron +importantes causantes de este problema. La mayoría de las tarjetas gráficas +3D solamente funcionan a pleno rendimiento con controladores que no son +libres, que también originan este problema. Pero hoy en día la causa +principal de este problema es Java, porque los programadores que escriben +software libre a menudo se sienten atraídos por Java. Cegados por su +atracción hacia el lenguaje, descuidan el problema de las dependencias y +caen en la trampa de Java. +

+ +

+ La implementación de Java de Sun no es libre. Las bibliotecas estándar de +Java tampoco son libres. Sí que tenemos implementaciones libres de Java, +como el compilador de GNU para Java +(GCJ) y Classpath de GNU, pero todavía no +tienen todas las funcionalidades. Aún estamos trabajando en ello. +

+ +

+ Si usted escribe un programa Java sobre la plataforma Java de Sun, está +expuesto a usar funcionalidades exclusivas de Sun sin ni siquiera +advertirlo. Para cuando se dé cuenta, quizás las haya estado usando durante +meses, y rehacer el trabajo podría llevarle aún más tiempo. Podría pensar: +«Volver a empezar es demasiado trabajo». Entonces su programa habrá caído en +la trampa de Java y será inutilizable en el mundo libre. +

+ +

+ La manera más eficaz de evitar la trampa de Java es tener en su sistema +solamente una implementación libre de Java. Así, si usted usa una +funcionalidad o biblioteca de Java que el software libre todavía no soporta, +se dará cuenta enseguida, y podrá reescribir ese código de inmediato. +

+ +

+ Sun continúa desarrollando bibliotecas «estándar» adicionales de Java, y +casi ninguna es libre. En muchos casos, incluso la especificación de la +biblioteca es un secreto comercial, y la última licencia de Sun para estas +especificaciones prohíbe publicar nada que no sea una implementación +completa de la especificación (para encontrar ejemplos, véase http://jcp.org/aboutJava/communityprocess/JSPA2.pdf +y http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html). +

+ +

+ Afortunadamente, la licencia de esa especificación permite publicar una +implementación como software libre. A quien reciba la biblioteca se le +permite modificarla y no se le exige adherirse a la especificación. Pero el +requisito tiene el efecto de prohibir el uso de un modelo de desarrollo +cooperativo para producir la implementación libre. El uso de ese modelo +implicaría la publicación de versiones incompletas, algo que aquellos que +han leído la especificación no están autorizados a hacer. +

+ +

+ Durante los primeros años del Movimiento del Software Libre era imposible +evitar la dependencia de programas privativos. Antes de que tuviéramos el +compilador C de GNU, todos los programas en C (libres o no) dependían de un +compilador C que no era libre. Antes de que tuviéramos la biblioteca C de +GNU, todos los programas dependían de una biblioteca C que no era +libre. Antes de que tuviéramos Linux, el primer núcleo libre, todos los +programas dependían de un núcleo que no era libre. Antes de que tuviéramos +BASH, todos los textos para el intérprete de órdenes [shell +scripts] tenían que ser interpretados por un intérprete de órdenes +[shell] que no era libre. Era inevitable que nuestros primeros +programas se vieran obstaculizados por estas dependencias, pero lo aceptamos +porque nuestro plan incluía su posterior rescate. Nuestra meta final, un +sistema operativo GNU autosuficiente, incluía sustitutos libres para todas +estas dependencias. Si alcanzábamos la meta, todos nuestros programas serían +rescatados. Y así sucedió: con el sistema GNU/Linux, ahora podemos ejecutar +estos programas en plataformas libres. +

+ +

+ Hoy en día la situación es diferente. Tenemos potentes sistemas operativos +libres y muchas herramientas de programación libres. Cualquier tarea que +usted quiera hacer, la puede hacer en una plataforma libre; no hay necesidad +de aceptar una dependencia que no sea libre, ni siquiera temporalmente. La +principal razón por la que la gente cae hoy en la trampa es porque no +piensan en ello. La solución más fácil al problema de la trampa de Java es +enseñar a reconocerla para que las personas no caigan en ella. +

+ +

+ Para mantener su código Java a salvo de la trampa de Java, instale un +entorno de desarrollo Java que sea libre y úselo. De forma más general, +cualquiera que sea el lenguaje que use, mantenga los ojos abiertos y +compruebe que los programas de los que depende su código sean libres. La +manera más fácil de verificar si un programa es libre es buscarlo en el Directorio de Software Libre. Si un +programa no está en el directorio, puede comprobar si su licencia está en la +lista de licencias de software +libre. +

+ +

+ Estamos intentando rescatar los programas atrapados en Java, así que si a +usted le gusta el lenguaje Java, le invitamos a colaborar en el desarrollo +de Classpath de GNU. También es útil probar sus programas con el compilador +GJC y con Classpath de GNU, e informar de cualquier problema que encuentre +en las clases que ya están implementadas. Sin embargo, finalizar Classpath +de GNU tomará tiempo. Si se siguen añadiendo más bibliotecas que no sean +libres, es posible que nunca dispongamos de todas las versiones más +recientes. Así que, por favor, no encadene su software libre. Cuando escriba +una aplicación, escríbala para que funcione desde el principio en entornos +libres. +

+ +

Véase también:

+

El curioso incidente de Sun a +medianoche

+ +
+ + +
+ + + + + + + + -- cgit v1.2.3