summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/es/java-trap.html
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/blog/articles/es/java-trap.html')
-rw-r--r--talermerchantdemos/blog/articles/es/java-trap.html289
1 files changed, 289 insertions, 0 deletions
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 @@
+<!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" -->
+
+<!--#include virtual="/server/header.es.html" -->
+<!-- Parent-Version: 1.77 -->
+
+<!-- This file is automatically generated by GNUnited Nations! -->
+<title>Libre pero encadenado. La trampa de Java - Proyecto GNU - Free Software
+Foundation</title>
+
+<!--#include virtual="/philosophy/po/java-trap.translist" -->
+<!--#include virtual="/server/banner.es.html" -->
+<h2>Libre pero encadenado. La trampa de Java</h2>
+
+<p>por <a href="http://www.stallman.org/">Richard Stallman</a></p>
+
+
+<div class="announcement"><blockquote><h3>Nota</h3>
+<p>Después de que se publicara este artículo, Sun (ahora parte de Oracle) <a
+href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">relicenció</a> 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.</p>
+
+<p>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.</p>
+
+<p>El entorno libre para Java se denomina «IcedTea» &mdash;que es donde se
+incluye el código fuente liberado por Sun&mdash;, 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).</p>
+
+<p>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.</p>
+
+<p>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.)</p>
+
+<p>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.</p>
+
+<p>Véase también: <a href="/philosophy/javascript-trap.html">La trampa de
+JavaScript</a>.</p>
+</blockquote>
+</div>
+
+<p>12 de abril de 2004</p>
+
+<p>
+ 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».
+</p>
+
+<p>
+ 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 <a
+href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>).
+Que un programa en forma de código fuente sea software libre depende
+únicamente de los términos de su licencia.
+</p>
+
+<p>
+ 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
+<cite>bytecode</cite>, depende de un intérprete de
+<cite>bytecode</cite>. 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.
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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 <a href="http://gcc.gnu.org/java/">compilador de GNU para Java</a>
+(GCJ) y <a href="/software/classpath">Classpath de GNU</a>, pero todavía no
+tienen todas las funcionalidades. Aún estamos trabajando en ello.
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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 <a
+href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a>
+y <a
+href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html">http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html</a>).
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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 [<cite>shell
+scripts</cite>] tenían que ser interpretados por un intérprete de órdenes
+[<cite>shell</cite>] 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.
+</p>
+
+<p>
+ 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.
+</p>
+
+<p>
+ 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 <a
+href="http://www.fsf.org/directory">Directorio de Software Libre</a>. Si un
+programa no está en el directorio, puede comprobar si su licencia está en la
+<a href="/licenses/license-list.html">lista de licencias de software
+libre</a>.
+</p>
+
+<p>
+ 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.
+</p>
+
+<h3>Véase también:</h3>
+<p><a href="/philosophy/sun-in-night-time.html">El curioso incidente de Sun a
+medianoche</a></p>
+
+<div class="translators-notes">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
+ </div>
+</div>
+
+<!-- for id="content", starts in the include above -->
+<!--#include virtual="/server/footer.es.html" -->
+<div id="footer">
+<div class="unprintable">
+
+<p>Envíe sus consultas acerca de la FSF y GNU a <a
+href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Existen también <a
+href="/contact/">otros medios para contactar</a> con la FSF. <br /> Para
+avisar de enlaces rotos y proponer otras correcciones o sugerencias,
+diríjase a <a
+href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
+
+<p>
+<!-- TRANSLATORS: Ignore the original text in this paragraph,
+ replace it with the translation of these two:
+
+ We work hard and do our best to provide accurate, good quality
+ translations. However, we are not exempt from imperfection.
+ Please send your comments and general suggestions in this regard
+ to <a href="mailto:web-translators@gnu.org">
+
+ &lt;web-translators@gnu.org&gt;</a>.</p>
+
+ <p>For information on coordinating and submitting translations of
+ our web pages, see <a
+ href="/server/standards/README.translations.html">Translations
+ README</a>. -->
+El equipo de traductores al español se esfuerza por ofrecer traducciones
+fieles al original y de buena calidad, pero no estamos libres de cometer
+errores.<br /> Envíe sus comentarios y sugerencias sobre las traducciones a
+<a
+href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.
+</p><p>Consulte la <a href="/server/standards/README.translations.html">Guía
+para las traducciones</a> para obtener información sobre la coordinación y
+el envío de traducciones de las páginas de este sitio web.</p>
+</div>
+
+<p>Copyright &copy; 2004, 2010, 2015 Richard Stallman</p>
+
+<p>Esta página está bajo licencia <a rel="license"
+href="http://creativecommons.org/licenses/by-nd/4.0/deed.es_ES">Creative
+Commons Reconocimiento-SinObraDerivada 4.0 Internacional</a>.</p>
+
+<!--#include virtual="/server/bottom-notes.es.html" -->
+<div class="translators-credits">
+
+<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
+<strong>Traducción: Quique, 2004.</strong> Revisiones: Maximiliano Curia,
+Exal de Jesus Garcia Carrillo, Javier Fdez. Retenaga, Sergi Ruiz Trepat.</div>
+
+<p class="unprintable"><!-- timestamp start -->
+Última actualización:
+
+$Date: 2019/09/15 21:06:02 $
+
+<!-- timestamp end -->
+</p>
+</div>
+</div>
+</body>
+</html>