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: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> |