summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/it/java-trap.html
blob: 143de2a99e5b187d063c2b4049d020230d876f5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
<!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" -->

<!--#include virtual="/server/header.it.html" -->
<!-- Parent-Version: 1.77 -->

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Libero ma incatenato - La trappola Java - Progetto GNU - Free Software
Foundation</title>

<!--#include virtual="/philosophy/po/java-trap.translist" -->
<!--#include virtual="/server/banner.it.html" -->
<h2>Libero ma incatenato - La trappola Java</h2>

<p>di <a href="http://www.stallman.org/">Richard Stallman</a></p>


<div class="announcement"><blockquote><h3>Nota</h3>
<p>Dalla prima pubblicazione di questo articolo le cose sono cambiate: Sun (ora
parte di Oracle) ha <a
href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">rilasciato sotto
licenza GNU GPL</a> la maggior parte del suo codice sorgente per la
piattaforma Java, ed ora esiste un ambiente di sviluppo Java libero. Quindi
il linguaggio Java in sé non è più una trappola.</p>

<p>Tuttavia bisogna prestare attenzione quando lo si usa, perché non tutte le
piattaforme Java sono libere. Sun continua a distribuire una piattaforma
Java in forma binaria che non è software libero, e così fanno anche altri.</p>

<p>L'ambiente Java libero si chiama IcedTea e comprende il codice sorgente
rilasciato da Sun.  Dovete quindi usare IcedTea, che è incluso in molte
distribuzioni GNU/Linux, anche se alcune includono anche piattaforme Java
non libere. (Nota di ottobre 2015: in molte distribuzioni GNU/Linux questa
implementazione libera di Java è denominata OpenJDK).</p>

<p>Per essere certi che i vostri programmi Java si possano utilizzare
correttamente un un ambiente libero, dovete svilupparli con IcedTea. In
teoria le piattaforme Java dovrebbero essere compatibili fra loro, ma la
compatibilità non è perfetta al 100%.</p>

<p>Inoltre ci sono molti programmi non liberi con &ldquo;Java&rdquo; nel nome,
some JavaFX, e ci sono pacchetti Java non liberi che possono sembrare comodi
ma che sono da rifiutare. Quindi dovete controllare la licenza di qualsiasi
pacchetto vogliate usare. Se usate Swing, accertatevi di usare la versione
libera, che è inclusa in IcedTea. (Nota di ottobre 2015: è ora disponibile
un sostituto libero di JavaFX che si chiama OpenJFX).</p>

<p>A parte il caso specifico di Java, il problema generale qui descritto rimane
importante, perché qualsiasi libreria o piattaforma di sviluppo non libera
può creare problemi simili. La storia di Java ci deve servire di lezione per
evitare trappole simili in futuro.</p>

<p>Vedere anche: <a href="/philosophy/javascript-trap.html"> La trappola
JavaScript</a>.</p>
</blockquote>
</div>

<p>12 aprile 2004</p>

<p>
  Se un vostro programma è software libero è, in linea di principio,
accettabile, ma c'è una trappola a cui dovete stare attenti. Il vostro
programma, benché libero di per sé, può subire restrizioni a causa di
software non libero da cui dipende. Dato che l'esempio classico di questo
problema è oggi quello dei programmi Java, diamo a questo problema il nome
di "trappola Java".
</p>

<p>
  Un programma è software libero se i suoi utenti hanno alcune libertà
cruciali. Per farla breve, intendiamo: la libertà di eseguire il programma,
la libertà di studiare e modificare il codice sorgente, la libertà di
redistribuire il codice sorgente e il programma in formato binario, e la
libertà di pubblicare versioni migliorate. (Si veda <a
href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.it.html</a>).
È esclusivamente la licenza a determinare se uno specifico programma,
fornito in forma di codice sorgente, sia o meno software libero.
</p>

<p>
  È tutto un altro problema, invece, determinare se il programma possa essere
usato nel Mondo Libero, da persone intenzionate a vivere nella
libertà. Questo non è determinato dalla sola licenza del programma, perché
nessun programma funziona da solo: ogni programma dipende da altri
programmi. Ad esempio, un programma deve essere compilato o interpretato,
perciò dipende da un compilatore o da un interprete; se compilato in
bytecode, ha bisogno di un interprete bytecode; inoltre ha bisogno di
librerie per essere eseguito, e a sua volta potrebbe chiamare altri
programmi che girano in altri processi.  Tutti questi programmi si chiamano
dipendenze: le dipendenze possono essere indispensabili per l'esecuzione di
un programma, oppure possono essere necessarie solo per alcune funzioni. In
ogni modo un programma non è pienamente funzionale senza le sue dipendenze.
</p>

<p>
  Se alcune delle dipendenze di un programma non sono libere, quel programma è
inutilizzabile in tutto o in parte su sistemi completamente liberi, non è
utilizzabile nel Mondo Libero. Certo, potremmo comunque ridistribuirlo e
copiarlo sui nostri computer, ma non serve a molto se è impossibile
eseguirlo.  Quel programma, pur essendo software libero, è di fatto
incatenato ai suoi requisiti non liberi.
</p>

<p>
  Questo problema può manifestarsi in ogni tipo di software, in ogni
linguaggio. Per esempio un programma che funziona solo su Microsoft Windows
è chiaramente inutile nel Mondo Libero. Ma anche il software per GNU/Linux
può essere inutile se richiede software non libero: in passato Motif (prima
che avessimo LessTif) e Qt (prima che i suoi sviluppatori lo rendessero
software libero) hanno causato problemi del genere. Molte schede grafiche 3D
funzionano al meglio solo con driver non liberi, altra tipica situazione
problematica. Ma la causa principale di questo problema di questi tempi è
Java, perché chi scrive software libero spesso trova Java attraente:
accecati dalla loro attrazione per questo linguaggio, non badano alla
questione dei requisiti e cadono nella trappola Java.
</p>

<p>
  L'implementazione di Java realizzata da Sun non è libera. Anche Blackdown
non è libera, è un adattamento di codice proprietario di Sun. E anche le
librerie Java standard non sono libere. Implementazioni libere di Java
esistono (ad esempio <a href="http://gcc.gnu.org/java/">GCJ</a>, il
compilatore GNU per Java e <a href="/software/classpath">GNU Classpath</a>),
ma non supportano ancora tutte le caratteristiche; stiamo ancora inseguendo.
</p>

<p>
  Se sviluppate un programma Java sulla piattaforma Java di Sun, potreste
finire per usare caratteristiche esclusive di Sun senza nemmeno
accorgervene, e prima di scoprirlo potreste averle usate per mesi, al punto
che sarebbero necessari mesi per rifare il lavoro. Potreste concludere che è
troppo tardi per ricominciare, e a quel punto il vostro programma sarà
caduto nella trappola Java: sarà inutilizzabile nel Mondo Libero.
</p>

<p>
  L'unico modo affidabile di evitare la trappola Java è quello di avere
esclusivamente un'implementazione libera di Java sul vostro sistema: in
questo modo vi accorgerete immediatamente se state usando una libreria o una
caratteristica di Java che il software libero ancora non supporta, e potrete
riscrivere quel codice subito.
</p>

<p>
  Sun continua a sviluppare nuove librerie aggiuntive Java "standard", quasi
tutte non libere: in molti casi sono un segreto commerciale anche le
specifiche di una libreria, e l'ultima licenza di Sun per queste specifiche
proibisce di distribuire qualsiasi cosa diversa da una piena implementazione
delle specifiche: si vedano, ad esempio, <a
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a>
e <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>
  Per fortuna, quella licenza permette di distribuire un'implementazione come
software libero; altri che ricevono la libreria possono essere autorizzati a
cambiarla e non devono necessariamente aderire alla specifica. Ma la
richiesta ha l'effetto di proibire l'uso di un modello di sviluppo
cooperativo per produrre l'implementazione libera. L'uso di quel modello
costringerebbe alla pubblicazione di versioni incomplete, cosa che quelli
che hanno letto la specifica non possono fare.
</p>

<p>
  Agli albori del movimento del Software Libero era inevitabile dipendere da
programmi non liberi. Prima che avessimo il compilatore C GNU, ogni
programma in C (libero o no) richiedeva un compilatore C non libero. Prima
che avessimo la libreria GNU C, ogni programma dipendeva da una libreria C
non libera. Prima che avessimo Linux (il primo kernel libero) ogni programma
dipendeva da un kernel non libero. Prima che avessimo BASH, ogni script per
shell doveva essere interpretato da una shell non libera.  Era inevitabile
che i nostri programmi all'inizio avessero queste dipendenze, ma abbiamo
accettato questa situazione perché il nostro progetto prevedeva di rimediare
in seguito: il nostro obiettivo, un sistema GNU completo, comprendeva
alternative libere per tutte quelle dipendenze; una volta raggiunto lo scopo
avremmo recuperato tutti i nostri programmi. E così è successo: col sistema
GNU/Linux, ora possiamo eseguire tutti questi programmi su piattaforme
libere.
</p>

<p>
  Oggi la situazione è diversa: ora abbiamo potenti sistemi operativi liberi e
molti strumenti liberi per la programmazione. Qualsiasi cosa vogliate fare,
potete farla su una piattaforma libera e non c'è bisogno di accettare una
dipendenza non libera, nemmeno provvisoriamente.  Il principale motivo per
cui alcuni oggi cadono nella trappola è semplicemente che non ci pensano; la
soluzione più facile al problema è insegnare alla gente a riconoscere la
trappola e a non cascarci.
</p>

<p>
  Per tenere il vostro codice Java al sicuro dalla Trappola Java, installate e
usate un ambiente di sviluppo libero per Java. In generale, qualsiasi
linguaggio usiate, tenete gli occhi aperti, e accertatevi dello stato libero
dei programmi da cui dipende il vostro codice. Il modo più semplice di
verificare che un programma è libero è quello di cercarlo nell'Elenco del
Software Libero (<a
href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Se un
programma non è in elenco, potete comunque cercare la sua licenza nella
lista delle licenze software libere (<a
href="/licenses/license-list.html">http://www.gnu.org/licenses/license-list.it.html</a>).
</p>

<p>
  Stiamo cercando di salvare i programmi Java intrappolati, quindi se vi piace
Java per favore aiutate lo sviluppo di GNU Classpath. E' utile anche provare
i vostri programmi con il compilatore GCJ e GNU Classpath, e comunicare gli
eventuali problemi che riscontrate nelle classi già implementate. Comunque,
ci vorrà tempo per finire GNU Classpath; se continueranno ad essere aggiunte
altre librerie non libere, potremmo non avere mai le ultime versioni. Quindi
per favore non incatenate il vostro software libero: se scrivete
un'applicazione ora, fatelo su fondamenta libere.
</p>

<h3>Vedere anche:</h3>
<p><a href="/philosophy/sun-in-night-time.html">The Curious Incident of Sun in
the Night-Time</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.it.html" -->
<div id="footer">
<div class="unprintable">

<p>Per informazioni su FSF e GNU rivolgetevi, possibilmente in inglese, a <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Ci sono anche <a
href="/contact/">altri modi di contattare</a> la FSF. Inviate segnalazioni
di link non funzionanti e altri suggerimenti relativi alle pagine web 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>. -->
Le traduzioni italiane sono effettuate ponendo la massima attenzione ai
dettagli e alla qualità, ma a volte potrebbero contenere imperfezioni. Se ne
riscontrate, inviate i vostri commenti e suggerimenti riguardo le traduzioni
a <a
href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>
oppure contattate direttamente il <a
href="http://savannah.gnu.org/projects/www-it/">gruppo dei traduttori
italiani</a>.<br/>Per informazioni su come gestire e inviare traduzioni
delle nostre pagine web consultate la <a
href="/server/standards/README.translations.html">Guida alle traduzioni</a>.</p>
</div>

<p>Copyright &copy; 2004, 2010, 2015 Richard Stallman</p>

<p>Questa pagina è distribuita secondo i termini della licenza <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons
Attribuzione - Non opere derivate 4.0 internazionale</a> (CC BY-ND 4.0).</p>

<!--#include virtual="/server/bottom-notes.it.html" -->
<div class="translators-credits">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
Tradotto originariamente da Andrea Pescetti.</div>

<p class="unprintable"><!-- timestamp start -->
Ultimo aggiornamento:

$Date: 2018/04/21 17:31:08 $

<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>