1 |
<!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> |
2 |
|
3 |
<!--#include virtual="/server/header.it.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>Libero ma incatenato - La trappola Java - Progetto GNU - Free Software |
11 |
Foundation</title> |
12 |
|
13 |
<!--#include virtual="/philosophy/po/java-trap.translist" --> |
14 |
<!--#include virtual="/server/banner.it.html" --> |
15 |
<!--#include virtual="/philosophy/ph-breadcrumb.it.html" --> |
16 |
<!--GNUN: OUT-OF-DATE NOTICE--> |
17 |
<!--#include virtual="/server/top-addendum.it.html" --> |
18 |
<div class="article reduced-width"> |
19 |
|
20 |
<h2>Libero ma incatenato - La trappola Java</h2> |
21 |
|
22 |
<address class="byline">di <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>Dalla prima pubblicazione di questo articolo le cose sono cambiate: Sun (ora |
27 |
parte di Oracle) ha <a |
28 |
href="https://www.fsf.org/news/fsf-welcomes-gpl-java.html">rilasciato sotto |
29 |
licenza GNU GPL</a> la maggior parte del suo codice sorgente per la |
30 |
piattaforma Java, ed ora esiste un ambiente di sviluppo Java libero. Quindi |
31 |
il linguaggio Java in sé non è più una trappola.</p> |
32 |
|
33 |
<p>Tuttavia bisogna prestare attenzione quando lo si usa, perché non tutte le |
34 |
piattaforme Java sono libere. Sun continua a distribuire una piattaforma |
35 |
Java in forma binaria che non è software libero, e così fanno anche altri.</p> |
36 |
|
37 |
<p>L'ambiente Java libero si chiama IcedTea e comprende il codice sorgente |
38 |
rilasciato da Sun. Dovete quindi usare IcedTea, che è incluso in molte |
39 |
distribuzioni GNU/Linux, anche se alcune includono anche piattaforme Java |
40 |
non libere. (Nota di ottobre 2015: in molte distribuzioni GNU/Linux questa |
41 |
implementazione libera di Java è denominata OpenJDK).</p> |
42 |
|
43 |
<p>Per essere certi che i vostri programmi Java si possano utilizzare |
44 |
correttamente un un ambiente libero, dovete svilupparli con IcedTea. In |
45 |
teoria le piattaforme Java dovrebbero essere compatibili fra loro, ma la |
46 |
compatibilità non è perfetta al 100%.</p> |
47 |
|
48 |
<p>Inoltre ci sono molti programmi non liberi con “Java” nel nome, some JavaFX, |
49 |
e ci sono pacchetti Java non liberi che possono sembrare comodi ma che sono |
50 |
da rifiutare. Quindi dovete controllare la licenza di qualsiasi pacchetto |
51 |
vogliate usare. Se usate Swing, accertatevi di usare la versione libera, che |
52 |
è inclusa in IcedTea. (Nota di ottobre 2015: è ora disponibile un sostituto |
53 |
libero di JavaFX che si chiama OpenJFX).</p> |
54 |
|
55 |
<p>A parte il caso specifico di Java, il problema generale qui descritto rimane |
56 |
importante, perché qualsiasi libreria o piattaforma di sviluppo non libera |
57 |
può creare problemi simili. La storia di Java ci deve servire di lezione per |
58 |
evitare trappole simili in futuro.</p> |
59 |
|
60 |
<p>Vedere anche: <a href="/philosophy/javascript-trap.html"> La trappola |
61 |
JavaScript</a>.</p> |
62 |
</div> |
63 |
<hr class="no-display" /> |
64 |
|
65 |
<p><em>12 aprile 2004</em></p> |
66 |
|
67 |
<p> |
68 |
Se un vostro programma è software libero è, in linea di principio, |
69 |
accettabile, ma c'è una trappola a cui dovete stare attenti. Il vostro |
70 |
programma, benché libero di per sé, può subire restrizioni a causa di |
71 |
software non libero da cui dipende. Dato che l'esempio classico di questo |
72 |
problema è oggi quello dei programmi Java, diamo a questo problema il nome |
73 |
di “trappola Java”. |
74 |
</p> |
75 |
|
76 |
<p> |
77 |
Un programma è software libero se i suoi utenti hanno alcune libertà |
78 |
cruciali. Per farla breve, intendiamo: la libertà di eseguire il programma, |
79 |
la libertà di studiare e modificare il codice sorgente, la libertà di |
80 |
redistribuire il codice sorgente e il programma in formato binario, e la |
81 |
libertà di pubblicare versioni migliorate. (Si veda <a |
82 |
href="/philosophy/free-sw.html">la definizione di software libero</a>). È |
83 |
esclusivamente la licenza a determinare se uno specifico programma, fornito |
84 |
in forma di codice sorgente, sia o meno software libero. |
85 |
</p> |
86 |
|
87 |
<p> |
88 |
È tutto un altro problema, invece, determinare se il programma possa essere |
89 |
usato nel Mondo Libero, da persone intenzionate a vivere nella |
90 |
libertà. Questo non è determinato dalla sola licenza del programma, perché |
91 |
nessun programma funziona da solo: ogni programma dipende da altri |
92 |
programmi. Ad esempio, un programma deve essere compilato o interpretato, |
93 |
perciò dipende da un compilatore o da un interprete; se compilato in |
94 |
bytecode, ha bisogno di un interprete bytecode; inoltre ha bisogno di |
95 |
librerie per essere eseguito, e a sua volta potrebbe chiamare altri |
96 |
programmi che girano in altri processi. Tutti questi programmi si chiamano |
97 |
dipendenze: le dipendenze possono essere indispensabili per l'esecuzione di |
98 |
un programma, oppure possono essere necessarie solo per alcune funzioni. In |
99 |
ogni modo un programma non è pienamente funzionale senza le sue dipendenze. |
100 |
</p> |
101 |
|
102 |
<p> |
103 |
Se alcune delle dipendenze di un programma non sono libere, quel programma è |
104 |
inutilizzabile in tutto o in parte su sistemi completamente liberi, non è |
105 |
utilizzabile nel Mondo Libero. Certo, potremmo comunque ridistribuirlo e |
106 |
copiarlo sui nostri computer, ma non serve a molto se è impossibile |
107 |
eseguirlo. Quel programma, pur essendo software libero, è di fatto |
108 |
incatenato ai suoi requisiti non liberi. |
109 |
</p> |
110 |
|
111 |
<p> |
112 |
Questo problema può manifestarsi in ogni tipo di software, in ogni |
113 |
linguaggio. Per esempio un programma che funziona solo su Microsoft Windows |
114 |
è chiaramente inutile nel Mondo Libero. Ma anche il software per GNU/Linux |
115 |
può essere inutile se richiede software non libero: in passato Motif (prima |
116 |
che avessimo LessTif) e Qt (prima che i suoi sviluppatori lo rendessero |
117 |
software libero) hanno causato problemi del genere. Molte schede grafiche 3D |
118 |
funzionano al meglio solo con driver non liberi, altra tipica situazione |
119 |
problematica. Ma la causa principale di questo problema di questi tempi è |
120 |
Java, perché chi scrive software libero spesso trova Java attraente: |
121 |
accecati dalla loro attrazione per questo linguaggio, non badano alla |
122 |
questione dei requisiti e cadono nella trappola Java. |
123 |
</p> |
124 |
|
125 |
<p> |
126 |
L'implementazione di Java realizzata da Sun non è libera. Anche Blackdown |
127 |
non è libera, è un adattamento di codice proprietario di Sun. E anche le |
128 |
librerie Java standard non sono libere. Implementazioni libere di Java |
129 |
esistono (ad esempio <a |
130 |
href="https://objectcomputing.com/resources/publications/sett/january-2003-gcj-the-gnu-compiler-for-java">GCJ</a>, |
131 |
il compilatore GNU per Java e <a href="/software/classpath">GNU |
132 |
Classpath</a>), ma non supportano ancora tutte le caratteristiche; stiamo |
133 |
ancora inseguendo. |
134 |
</p> |
135 |
|
136 |
<p> |
137 |
Se sviluppate un programma Java sulla piattaforma Java di Sun, potreste |
138 |
finire per usare caratteristiche esclusive di Sun senza nemmeno |
139 |
accorgervene, e prima di scoprirlo potreste averle usate per mesi, al punto |
140 |
che sarebbero necessari mesi per rifare il lavoro. Potreste concludere che è |
141 |
troppo tardi per ricominciare, e a quel punto il vostro programma sarà |
142 |
caduto nella trappola Java: sarà inutilizzabile nel Mondo Libero. |
143 |
</p> |
144 |
|
145 |
<p> |
146 |
L'unico modo affidabile di evitare la trappola Java è quello di avere |
147 |
esclusivamente un'implementazione libera di Java sul vostro sistema: in |
148 |
questo modo vi accorgerete immediatamente se state usando una libreria o una |
149 |
caratteristica di Java che il software libero ancora non supporta, e potrete |
150 |
riscrivere quel codice subito. |
151 |
</p> |
152 |
|
153 |
<p> |
154 |
Sun continua a sviluppare nuove librerie aggiuntive Java “standard”, quasi |
155 |
tutte non libere: in molti casi sono un segreto commerciale anche le |
156 |
specifiche di una libreria, e l'ultima licenza di Sun per queste specifiche |
157 |
proibisce di distribuire qualsiasi cosa diversa da una piena implementazione |
158 |
delle specifiche: si vedano, ad esempio, <a |
159 |
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">“Java |
160 |
Specification Participation Agreement”</a> e <a |
161 |
href="http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html">“J2ME™ |
162 |
Personal Basis Profile Specification”</a>. |
163 |
</p> |
164 |
|
165 |
<p> |
166 |
Per fortuna, quella licenza permette di distribuire un'implementazione come |
167 |
software libero; altri che ricevono la libreria possono essere autorizzati a |
168 |
cambiarla e non devono necessariamente aderire alla specifica. Ma la |
169 |
richiesta ha l'effetto di proibire l'uso di un modello di sviluppo |
170 |
cooperativo per produrre l'implementazione libera. L'uso di quel modello |
171 |
costringerebbe alla pubblicazione di versioni incomplete, cosa che quelli |
172 |
che hanno letto la specifica non possono fare. |
173 |
</p> |
174 |
|
175 |
<p> |
176 |
Agli albori del movimento del Software Libero era inevitabile dipendere da |
177 |
programmi non liberi. Prima che avessimo il compilatore C GNU, ogni |
178 |
programma in C (libero o no) richiedeva un compilatore C non libero. Prima |
179 |
che avessimo la libreria GNU C, ogni programma dipendeva da una libreria C |
180 |
non libera. Prima che avessimo Linux (il primo kernel libero) ogni programma |
181 |
dipendeva da un kernel non libero. Prima che avessimo BASH, ogni script per |
182 |
shell doveva essere interpretato da una shell non libera. Era inevitabile |
183 |
che i nostri programmi all'inizio avessero queste dipendenze, ma abbiamo |
184 |
accettato questa situazione perché il nostro progetto prevedeva di rimediare |
185 |
in seguito: il nostro obiettivo, un sistema GNU completo, comprendeva |
186 |
alternative libere per tutte quelle dipendenze; una volta raggiunto lo scopo |
187 |
avremmo recuperato tutti i nostri programmi. E così è successo: col sistema |
188 |
GNU/Linux, ora possiamo eseguire tutti questi programmi su piattaforme |
189 |
libere. |
190 |
</p> |
191 |
|
192 |
<p> |
193 |
Oggi la situazione è diversa: ora abbiamo potenti sistemi operativi liberi e |
194 |
molti strumenti liberi per la programmazione. Qualsiasi cosa vogliate fare, |
195 |
potete farla su una piattaforma libera e non c'è bisogno di accettare una |
196 |
dipendenza non libera, nemmeno provvisoriamente. Il principale motivo per |
197 |
cui alcuni oggi cadono nella trappola è semplicemente che non ci pensano; la |
198 |
soluzione più facile al problema è insegnare alla gente a riconoscere la |
199 |
trappola e a non cascarci. |
200 |
</p> |
201 |
|
202 |
<p> |
203 |
Per tenere il vostro codice Java al sicuro dalla Trappola Java, installate e |
204 |
usate un ambiente di sviluppo libero per Java. In generale, qualsiasi |
205 |
linguaggio usiate, tenete gli occhi aperti, e accertatevi dello stato libero |
206 |
dei programmi da cui dipende il vostro codice. Il modo più semplice di |
207 |
verificare che un programma è libero è quello di cercarlo nell'<a |
208 |
href="https://www.fsf.org/directory">Elenco del Software Libero</a>. Se un |
209 |
programma non è in elenco, potete comunque cercare la sua licenza nella <a |
210 |
href="/licenses/license-list.html">lista delle licenze software libere</a>. |
211 |
</p> |
212 |
|
213 |
<p> |
214 |
Stiamo cercando di salvare i programmi Java intrappolati, quindi se vi piace |
215 |
Java per favore aiutate lo sviluppo di GNU Classpath. E' utile anche provare |
216 |
i vostri programmi con il compilatore GCJ e GNU Classpath, e comunicare gli |
217 |
eventuali problemi che riscontrate nelle classi già implementate. Comunque, |
218 |
ci vorrà tempo per finire GNU Classpath; se continueranno ad essere aggiunte |
219 |
altre librerie non libere, potremmo non avere mai le ultime versioni. Quindi |
220 |
per favore non incatenate il vostro software libero: se scrivete |
221 |
un'applicazione ora, fatelo su fondamenta libere. |
222 |
</p> |
223 |
|
224 |
<h3 class="footnote">Vedere anche:</h3> |
225 |
<p><a href="/philosophy/sun-in-night-time.html">The Curious Incident of Sun in |
226 |
the Night-Time</a></p> |
227 |
</div> |
228 |
|
229 |
<div class="translators-notes"> |
230 |
|
231 |
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> |
232 |
</div> |
233 |
</div> |
234 |
|
235 |
<!-- for id="content", starts in the include above --> |
236 |
<!--#include virtual="/server/footer.it.html" --> |
237 |
<div id="footer" role="contentinfo"> |
238 |
<div class="unprintable"> |
239 |
|
240 |
<p>Per informazioni su FSF e GNU rivolgetevi, possibilmente in inglese, a <a |
241 |
href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Ci sono anche <a |
242 |
href="/contact/">altri modi di contattare</a> la FSF. Inviate segnalazioni |
243 |
di link non funzionanti e altri suggerimenti relativi alle pagine web a <a |
244 |
href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> |
245 |
|
246 |
<p> |
247 |
<!-- TRANSLATORS: Ignore the original text in this paragraph, |
248 |
replace it with the translation of these two: |
249 |
|
250 |
We work hard and do our best to provide accurate, good quality |
251 |
translations. However, we are not exempt from imperfection. |
252 |
Please send your comments and general suggestions in this regard |
253 |
to <a href="mailto:web-translators@gnu.org"> |
254 |
|
255 |
<web-translators@gnu.org></a>.</p> |
256 |
|
257 |
<p>For information on coordinating and contributing translations of |
258 |
our web pages, see <a |
259 |
href="/server/standards/README.translations.html">Translations |
260 |
README</a>. --> |
261 |
Le traduzioni italiane sono effettuate ponendo la massima attenzione ai |
262 |
dettagli e alla qualità, ma a volte potrebbero contenere imperfezioni. Se ne |
263 |
riscontrate, inviate i vostri commenti e suggerimenti riguardo le traduzioni |
264 |
a <a |
265 |
href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a> |
266 |
oppure contattate direttamente il <a |
267 |
href="http://savannah.gnu.org/projects/www-it/">gruppo dei traduttori |
268 |
italiani</a>.<br/>Per informazioni su come gestire e inviare traduzioni |
269 |
delle nostre pagine web consultate la <a |
270 |
href="/server/standards/README.translations.html">Guida alle traduzioni</a>.</p> |
271 |
</div> |
272 |
|
273 |
<!-- Regarding copyright, in general, standalone pages (as opposed to |
274 |
files generated as part of manuals) on the GNU web server should |
275 |
be under CC BY-ND 4.0. Please do NOT change or remove this |
276 |
without talking with the webmasters or licensing team first. |
277 |
Please make sure the copyright date is consistent with the |
278 |
document. For web pages, it is ok to list just the latest year the |
279 |
document was modified, or published. |
280 |
|
281 |
If you wish to list earlier years, that is ok too. |
282 |
Either "2001, 2002, 2003" or "2001-2003" are ok for specifying |
283 |
years, as long as each year in the range is in fact a copyrightable |
284 |
year, i.e., a year in which the document was published (including |
285 |
being publicly visible on the web or in a revision control system). |
286 |
|
287 |
There is more detail about copyright years in the GNU Maintainers |
288 |
Information document, www.gnu.org/prep/maintain. --> |
289 |
<p>Copyright © 2004, 2010, 2015, 2021 Richard Stallman</p> |
290 |
|
291 |
<p>Questa pagina è distribuita secondo i termini della licenza <a rel="license" |
292 |
href="http://creativecommons.org/licenses/by-nd/4.0/deed.it">Creative |
293 |
Commons Attribuzione - Non opere derivate 4.0 Internazionale</a> (CC BY-ND |
294 |
4.0).</p> |
295 |
|
296 |
<!--#include virtual="/server/bottom-notes.it.html" --> |
297 |
<div class="translators-credits"> |
298 |
|
299 |
<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> |
300 |
Tradotto originariamente da Andrea Pescetti.</div> |
301 |
|
302 |
<p class="unprintable"><!-- timestamp start --> |
303 |
Ultimo aggiornamento: |
304 |
|
305 |
$Date: 2021/10/01 17:02:54 $ |
306 |
|
307 |
<!-- timestamp end --> |
308 |
</p> |
309 |
</div> |
310 |
</div> |
311 |
<!-- for class="inner", starts in the banner include --> |
312 |
</body> |
313 |
</html> |