/[www]/www/philosophy/java-trap.es.html
ViewVC logotype

Contents of /www/philosophy/java-trap.es.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.39 - (show annotations) (download) (as text)
Fri Oct 1 17:39:49 2021 UTC (3 years ago) by gnun
Branch: MAIN
CVS Tags: HEAD
Changes since 1.38: +17 -1 lines
File MIME type: text/html
Automatic update by GNUnited Nations.

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» &mdash;que es donde se
37 incluye el código fuente liberado por Sun&mdash;, 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&trade;
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">&lt;gnu@gnu.org&gt;</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">&lt;webmasters@gnu.org&gt;</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 &lt;web-translators@gnu.org&gt;</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">&lt;web-translators@gnu.org&gt;</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 &copy; 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:02:54 $
310
311 <!-- timestamp end -->
312 </p>
313 </div>
314 </div>
315 <!-- for class="inner", starts in the banner include -->
316 </body>
317 </html>

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26