java-trap.html (15449B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> 2 3 <!--#include virtual="/server/header.es.html" --> 4 <!-- Parent-Version: 1.96 --> 5 <!-- This page is derived from /server/standards/boilerplate.html --> 6 <!--#set var="TAGS" value="essays licensing traps" --> 7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 8 9 <!-- This file is automatically generated by GNUnited Nations! --> 10 <title>Libre pero encadenado. La trampa de Java - Proyecto GNU - Free Software 11 Foundation</title> 12 13 <!--#include virtual="/philosophy/po/java-trap.translist" --> 14 <!--#include virtual="/server/banner.es.html" --> 15 <!--#include virtual="/philosophy/ph-breadcrumb.es.html" --> 16 <!--GNUN: OUT-OF-DATE NOTICE--> 17 <!--#include virtual="/server/top-addendum.es.html" --> 18 <div class="article reduced-width"> 19 20 <h2>Libre pero encadenado. La trampa de Java</h2> 21 22 <address class="byline">por <a href="https://www.stallman.org/">Richard Stallman</a></address> 23 24 <div class="emph-box" style="background: none"> 25 <h3 class="footnote">Nota</h3> 26 <p>Después de que se publicara este artículo, Sun (ahora parte de Oracle) <a 27 href="https://www.fsf.org/news/fsf-welcomes-gpl-java.html">relicenció</a> la 28 mayor parte de la implementación de referencia de su plataforma Java bajo la 29 Licencia Pública General de GNU, de manera que ahora existe un entorno de 30 desarrollo libre para Java. Así pues, el lenguaje Java ya no es una trampa.</p> 31 32 <p>No obstante, debe ser precavido, pues no toda plataforma Java es libre. Sun 33 sigue distribuyendo una plataforma Java ejecutable que no es libre, y 34 también otras compañías lo hacen.</p> 35 36 <p>El entorno libre para Java se denomina «IcedTea» —que es donde se 37 incluye el código fuente liberado por Sun—, de manera que es este el 38 entorno que se debe utilizar. Muchas distribuciones GNU/Linux vienen con 39 IcedTea, pero algunas incluyen plataformas Java que no son libres.(Nota, 40 añadida en octubre de 2015: La implentación libre de Java se denomina 41 OpenJDK en muchas distribuciones GNU/Linux).</p> 42 43 <p>Para tener la seguridad de que sus programas Java funcionarán correctamente 44 en un entorno libre, tiene que escribirlos utilizando IcedTea. En teoría, 45 las plataformas Java deberían ser compatibles, pero no lo son al cien por 46 cien.</p> 47 48 <p>Además, hay programas privativos que incluyen la palabra «Java» en el 49 nombre, como sucede con JavaFX, y existen paquetes Java que uno podría 50 sentirse tentado a utilizar pero que hay que rechazar, pues no son 51 libres. Si utiliza Swing, asegúrese de que sea la versión libre, que viene 52 con IcedTea.(Nota, añadida en octubre de 2015: Se ha publicado un reemplazo 53 libre de JavaFX llamado OpenJFX.)</p> 54 55 <p>Dejando a un lado los aspectos que se refieren específicamente a Java, el 56 asunto general aquí descrito continúa siendo importante, pues cualquier 57 plataforma de programación o biblioteca que no sea libre puede provocar un 58 problema similar. Hemos de aprender de la historia de Java para evitar así 59 otras trampas en el futuro.</p> 60 61 <p>Véase también: <a href="/philosophy/javascript-trap.html">La trampa de 62 JavaScript</a>.</p> 63 </div> 64 <hr class="no-display" /> 65 66 <p><em>12 de abril de 2004</em></p> 67 68 <p> 69 Si su programa es software libre, básicamente es ético, pero hay una trampa 70 a la que debe estar atento. Su programa, aunque en sí mismo sea libre, puede 71 estar limitado por alguna dependencia de software que no es libre. En la 72 actualidad este problema se da sobre todo en los programas Java, por lo que 73 lo llamamos «la trampa de Java». 74 </p> 75 76 <p> 77 Un programa es software libre si sus usuarios tienen ciertas libertades 78 esenciales. Sin entrar en detalles, éstas son: la libertad de ejecutar el 79 programa, la libertad de estudiar y modificar el código fuente, la libertad 80 de redistribuir el código fuente y los binarios, y la libertad de publicar 81 versiones mejoradas (véase la <a href="/philosophy/free-sw.html">Definición 82 de software libre</a>). Que un programa en forma de código fuente sea 83 software libre depende únicamente de los términos de su licencia. 84 </p> 85 86 <p> 87 Que el programa pueda ser usado en el mundo libre por personas que quieren 88 vivir en libertad es una cuestión más compleja. No es algo que esté 89 determinado únicamente por la licencia del programa, porque ningún programa 90 funciona aislado. Todos los programas dependen de otros programas. Por 91 ejemplo, un programa necesita ser compilado o interpretado, por lo tanto 92 depende de un compilador o de un intérprete. Si es compilado en 93 <cite>bytecode</cite>, depende de un intérprete de 94 <cite>bytecode</cite>. Además, necesita bibliotecas para ejecutarse, y 95 también puede invocar a otros programas aparte que se ejecutan en otros 96 procesos. Todos estos programas son dependencias. Las dependencias pueden 97 ser necesarias para poder ejecutar el programa, o pueden ser necesarias 98 solamente para ciertas funciones. En cualquier caso, el programa entero, o 99 alguna parte del mismo, no puede funcionar sin las dependencias. 100 </p> 101 102 <p> 103 Si algunas de las dependencias de un programa no son libres, entonces ese 104 programa o una parte de él no se puede ejecutar en un sistema completamente 105 libre: es inutilizable en el mundo libre. Ciertamente podemos redistribuir 106 el programa y tener copias en nuestras máquinas, pero eso no sirve de mucho 107 si no podemos ejecutarlo. El programa es software libre, pero en la práctica 108 está encadenado por dependencias que no son libres. 109 </p> 110 111 <p> 112 Este problema puede suceder en cualquier tipo de software, en cualquier 113 lenguaje. Por ejemplo, un programa libre que solamente funcione en Microsoft 114 Windows es claramente inútil en el mundo libre. Pero el software que 115 funciona en GNU/Linux también puede ser inútil si depende de otro software 116 que no sea libre. En el pasado, Motif (antes de que tuviéramos LessTif) y Qt 117 (antes de que sus desarrolladores lo convirtieran en software libre) fueron 118 importantes causantes de este problema. La mayoría de las tarjetas gráficas 119 3D solamente funcionan a pleno rendimiento con controladores que no son 120 libres, que también originan este problema. Pero hoy en día la causa 121 principal de este problema es Java, porque los programadores que escriben 122 software libre a menudo se sienten atraídos por Java. Cegados por su 123 atracción hacia el lenguaje, descuidan el problema de las dependencias y 124 caen en la trampa de Java. 125 </p> 126 127 <p> 128 La implementación de Java de Sun no es libre. Las bibliotecas estándar de 129 Java tampoco son libres. Sí que tenemos implementaciones libres de Java, 130 como el <a 131 href="https://objectcomputing.com/resources/publications/sett/january-2003-gcj-the-gnu-compiler-for-java">compilador 132 de GNU para Java</a> (GCJ) y <a href="/software/classpath">Classpath de 133 GNU</a>, pero todavía no tienen todas las funcionalidades. Aún estamos 134 trabajando en ello. 135 </p> 136 137 <p> 138 Si usted escribe un programa Java sobre la plataforma Java de Sun, está 139 expuesto a usar funcionalidades exclusivas de Sun sin ni siquiera 140 advertirlo. Para cuando se dé cuenta, quizás las haya estado usando durante 141 meses, y rehacer el trabajo podría llevarle aún más tiempo. Podría pensar: 142 «Volver a empezar es demasiado trabajo». Entonces su programa habrá caído en 143 la trampa de Java y será inutilizable en el mundo libre. 144 </p> 145 146 <p> 147 La manera más eficaz de evitar la trampa de Java es tener en su sistema 148 solamente una implementación libre de Java. Así, si usted usa una 149 funcionalidad o biblioteca de Java que el software libre todavía no soporta, 150 se dará cuenta enseguida, y podrá reescribir ese código de inmediato. 151 </p> 152 153 <p> 154 Sun continúa desarrollando bibliotecas «estándar» adicionales de Java, y 155 casi ninguna es libre. En muchos casos, incluso la especificación de la 156 biblioteca es un secreto comercial, y la última licencia de Sun para estas 157 especificaciones prohíbe publicar nada que no sea una implementación 158 completa de la especificación (para encontrar ejemplos, véase el <a 159 href="https://jcp.org/aboutJava/communityprocess/JSPA2.pdf"><cite>Java 160 Specification Participation Agreement</cite></a> y <a 161 href="https://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html"><cite>J2ME™ 162 Personal Basis Profile Specification</cite></a>). 163 </p> 164 165 <p> 166 Afortunadamente, la licencia de esa especificación permite publicar una 167 implementación como software libre. A quien reciba la biblioteca se le 168 permite modificarla y no se le exige adherirse a la especificación. Pero el 169 requisito tiene el efecto de prohibir el uso de un modelo de desarrollo 170 cooperativo para producir la implementación libre. El uso de ese modelo 171 implicaría la publicación de versiones incompletas, algo que aquellos que 172 han leído la especificación no están autorizados a hacer. 173 </p> 174 175 <p> 176 Durante los primeros años del Movimiento del Software Libre era imposible 177 evitar la dependencia de programas privativos. Antes de que tuviéramos el 178 compilador C de GNU, todos los programas en C (libres o no) dependían de un 179 compilador C que no era libre. Antes de que tuviéramos la biblioteca C de 180 GNU, todos los programas dependían de una biblioteca C que no era 181 libre. Antes de que tuviéramos Linux, el primer núcleo libre, todos los 182 programas dependían de un núcleo que no era libre. Antes de que tuviéramos 183 BASH, todos los textos para el intérprete de órdenes [<cite>shell 184 scripts</cite>] tenían que ser interpretados por un intérprete de órdenes 185 [<cite>shell</cite>] que no era libre. Era inevitable que nuestros primeros 186 programas se vieran obstaculizados por estas dependencias, pero lo aceptamos 187 porque nuestro plan incluía su posterior rescate. Nuestra meta final, un 188 sistema operativo GNU autosuficiente, incluía sustitutos libres para todas 189 estas dependencias. Si alcanzábamos la meta, todos nuestros programas serían 190 rescatados. Y así sucedió: con el sistema GNU/Linux, ahora podemos ejecutar 191 estos programas en plataformas libres. 192 </p> 193 194 <p> 195 Hoy en día la situación es diferente. Tenemos potentes sistemas operativos 196 libres y muchas herramientas de programación libres. Cualquier tarea que 197 usted quiera hacer, la puede hacer en una plataforma libre; no hay necesidad 198 de aceptar una dependencia que no sea libre, ni siquiera temporalmente. La 199 principal razón por la que la gente cae hoy en la trampa es porque no 200 piensan en ello. La solución más fácil al problema de la trampa de Java es 201 enseñar a reconocerla para que las personas no caigan en ella. 202 </p> 203 204 <p> 205 Para mantener su código Java a salvo de la trampa de Java, instale un 206 entorno de desarrollo Java que sea libre y úselo. De forma más general, 207 cualquiera que sea el lenguaje que use, mantenga los ojos abiertos y 208 compruebe que los programas de los que depende su código sean libres. La 209 manera más fácil de verificar si un programa es libre es buscarlo en el <a 210 href="https://www.fsf.org/directory">Directorio de Software Libre</a>. Si un 211 programa no está en el directorio, puede comprobar si su licencia está en la 212 <a href="/licenses/license-list.html">lista de licencias de software 213 libre</a>. 214 </p> 215 216 <p> 217 Estamos intentando rescatar los programas atrapados en Java, así que si a 218 usted le gusta el lenguaje Java, le invitamos a colaborar en el desarrollo 219 de Classpath de GNU. También es útil probar sus programas con el compilador 220 GJC y con Classpath de GNU, e informar de cualquier problema que encuentre 221 en las clases que ya están implementadas. Sin embargo, finalizar Classpath 222 de GNU tomará tiempo. Si se siguen añadiendo más bibliotecas que no sean 223 libres, es posible que nunca dispongamos de todas las versiones más 224 recientes. Así que, por favor, no encadene su software libre. Cuando escriba 225 una aplicación, escríbala para que funcione desde el principio en entornos 226 libres. 227 </p> 228 229 <h3 class="footnote">Véase también:</h3> 230 <p><a href="/philosophy/sun-in-night-time.html">El curioso incidente de Sun a 231 medianoche</a></p> 232 </div> 233 234 <div class="translators-notes"> 235 236 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 237 </div> 238 </div> 239 240 <!-- for id="content", starts in the include above --> 241 <!--#include virtual="/server/footer.es.html" --> 242 <div id="footer" role="contentinfo"> 243 <div class="unprintable"> 244 245 <p>Envíe sus consultas acerca de la FSF y GNU a <a 246 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Existen también <a 247 href="/contact/">otros medios para contactar</a> con la FSF. <br /> Para 248 avisar de enlaces rotos y proponer otras correcciones o sugerencias, 249 diríjase a <a 250 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 251 252 <p> 253 <!-- TRANSLATORS: Ignore the original text in this paragraph, 254 replace it with the translation of these two: 255 256 We work hard and do our best to provide accurate, good quality 257 translations. However, we are not exempt from imperfection. 258 Please send your comments and general suggestions in this regard 259 to <a href="mailto:web-translators@gnu.org"> 260 261 <web-translators@gnu.org></a>.</p> 262 263 <p>For information on coordinating and contributing translations of 264 our web pages, see <a 265 href="/server/standards/README.translations.html">Translations 266 README</a>. --> 267 El equipo de traductores al español se esfuerza por ofrecer traducciones 268 fieles al original y de buena calidad, pero no estamos libres de cometer 269 errores.<br /> Envíe sus comentarios y sugerencias sobre las traducciones a 270 <a 271 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>. 272 </p><p>Consulte la <a href="/server/standards/README.translations.html">Guía 273 para las traducciones</a> para obtener información sobre la coordinación y 274 el envío de traducciones de las páginas de este sitio web.</p> 275 </div> 276 277 <!-- Regarding copyright, in general, standalone pages (as opposed to 278 files generated as part of manuals) on the GNU web server should 279 be under CC BY-ND 4.0. Please do NOT change or remove this 280 without talking with the webmasters or licensing team first. 281 Please make sure the copyright date is consistent with the 282 document. For web pages, it is ok to list just the latest year the 283 document was modified, or published. 284 285 If you wish to list earlier years, that is ok too. 286 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 287 years, as long as each year in the range is in fact a copyrightable 288 year, i.e., a year in which the document was published (including 289 being publicly visible on the web or in a revision control system). 290 291 There is more detail about copyright years in the GNU Maintainers 292 Information document, www.gnu.org/prep/maintain. --> 293 <p>Copyright © 2004, 2010, 2015, 2021 Richard Stallman</p> 294 295 <p>Esta página está bajo licencia <a rel="license" 296 href="http://creativecommons.org/licenses/by-nd/4.0/deed.es_ES">Creative 297 Commons Reconocimiento-SinObraDerivada 4.0 Internacional</a>.</p> 298 299 <!--#include virtual="/server/bottom-notes.es.html" --> 300 <div class="translators-credits"> 301 302 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 303 <strong>Traducción: Quique, 2004.</strong> Revisiones: Maximiliano Curia, 304 Exal de Jesus Garcia Carrillo, Javier Fdez. Retenaga, Sergi Ruiz Trepat.</div> 305 306 <p class="unprintable"><!-- timestamp start --> 307 Última actualización: 308 309 $Date: 2021/10/01 17:39:49 $ 310 311 <!-- timestamp end --> 312 </p> 313 </div> 314 </div> 315 <!-- for class="inner", starts in the banner include --> 316 </body> 317 </html>