summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/fr/java-trap.html
blob: 1fad08205aa7679dfaf5f32d38277e09d6431a9f (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
286
287
288
289
290
291
292
293
294
295
<!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" -->

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

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Libre mais entravé - le piège Java - Projet GNU - Free Software Foundation</title>

<!--#include virtual="/philosophy/po/java-trap.translist" -->
<!--#include virtual="/server/banner.fr.html" -->
<h2>Libre mais entravé - le piège Java</h2>

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


<div class="announcement"><blockquote><h3>Note préliminaire</h3>
<p>Depuis la parution de cet article, Sun (qui fait maintenant partie d'Oracle)
a <a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">fait passer
l'essentiel de l'implémentation de référence de sa plateforme Java sous la
licence publique générale GNU</a> ; il y a donc maintenant un environnement
de développement libre pour Java. Ainsi le langage Java n'est plus un piège.</p>

<p>Vous devez faire attention, cependant, parce que toutes les plateformes Java
ne sont pas libres. Sun continue à distribuer une plateforme Java exécutable
qui n'est pas libre et d'autres sociétés font de même.</p>

<p>L'environnement libre pour Java s'appelle IcedTea ; le code source libéré
par Sun y est inclus. C'est donc cet environnement que vous devez
utiliser. Beaucoup de distributions GNU/Linux sont fournies avec IcedTea,
mais certaines contiennent des plateformes Java non libres. (Note ajoutée en
octobre 2015 : l'implémentation libre de Java s'appelle OpenJDK dans
beaucoup de distributions GNU/Linux.)</p>

<p>Pour vous assurer de manière fiable que votre programme Java s'exécutera
correctement dans un environnement libre, vous devez le développer avec
IcedTea. Théoriquement les plateformes Java devraient être compatibles, mais
elles ne le sont pas à 100%.</p>

<p>De plus, il y a des programmes non libres dont le nom contient « Java »,
comme JavaFX, et il y a des paquets Java non libres qui pourraient vous
tenter mais que vous devez rejeter. Donc vérifiez les licences de tout
paquet que vous envisagez d'utiliser. Si vous utilisez Swing, faites en
sorte d'utiliser la version libre, qui est fournie avec IcedTea. (Note
ajoutée en octobre 2015 : un programme libre remplaçant JavaFX a été publié
sous le nom d'OpenJFX.)</p>

<p>Mis à part ces problèmes spécifiques à Java, le problème général décrit ici
demeure important, car toute bibliothèque ou plateforme de programmation non
libre peut causer un problème similaire. Nous devons retenir la leçon de
l'histoire de Java de manière à éviter d'autres pièges à l'avenir.</p>

<p>Veuillez aussi consulter : <a href="/philosophy/javascript-trap.html">Le
piège JavaScript</a>.</p>
</blockquote>
</div>

<p>Le 12 avril 2004</p>

<p>
  Si votre programme est un logiciel libre, il est éthique par nature, mais il
y a un piège dont il faut se méfier. Bien qu'intrinsèque, la liberté de
votre programme peut être restreinte à cause de logiciels non libres dont il
dépend. Comme c'est avec les programmes Java que ce problème est aujourd'hui
le plus évident, nous l'avons nommé le « piège Java ».
</p>

<p>
  Un programme est un logiciel libre si ses utilisateurs possèdent certaines
libertés fondamentales. En gros, il s'agit de : la liberté d'exécuter le
programme, la liberté d'en étudier et modifier le code source, la liberté
d'en redistribuer les fichiers source et binaires, et la liberté d'en
publier des versions améliorées (voir <a
href="/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>).
Qu'un programme donné soit un logiciel libre ne dépend que de la
signification de sa licence.
</p>

<p>
  Que le programme puisse être utilisé dans le monde du Libre, utilisé par des
personnes qui entendent vivre en toute liberté, est une question plus
compliquée. La seule licence du programme ne détermine pas cela, car aucun
programme ne fonctionne en isolement total. Chaque programme dépend d'autres
programmes. Par exemple, il nécessite d'être compilé ou interprété, il
dépend donc d'un compilateur ou d'un interpréteur. S'il est compilé en
pseudo-code binaire, il dépend d'un interpréteur de pseudo-code. Qui plus
est, pour s'exécuter il a besoin de bibliothèques et peut faire appel à
d'autres programmes qui s'exécutent sous d'autres processus. Tous ces
programmes sont des dépendances. Ces dernières peuvent être totalement
indispensables à l'exécution du programme, ou juste nécessaires à certaines
de ses fonctionnalités. D'une façon ou d'une autre, tout ou partie du
programme ne peut pas fonctionner sans elles.
</p>

<p>
  Que certaines des dépendances d'un programme ne soient pas libres signifie
que tout ou partie du programme ne peut s'exécuter sur un système totalement
libre – il est inutilisable dans le monde du Libre. Bien sûr, nous pouvons
distribuer le programme et en avoir des copies sur nos machines, mais cela
ne sert pas à grand-chose s'il ne s'exécute pas. Ce programme est un
logiciel libre, mais il est en fait entravé par des dépendances non libres.
</p>

<p>
  Ce problème peut se produire avec n'importe quel type de logiciel, n'importe
quel langage. Par exemple, un programme libre qui ne fonctionne que sous
Microsoft Windows est parfaitement inutilisable dans le monde du Libre. Mais
des logiciels qui tournent sous GNU/Linux peuvent aussi être inutilisable
lorsqu'ils dépendent d'autres logiciels non libres. Par le passé, Motif
(avant que nous ayons LessTif) et Qt (avant que ses développeurs n'en
fassent un logiciel libre) étaient les causes principales de ce problème. La
plupart des cartes vidéo 3D ne fonctionnent pleinement qu'avec des pilotes
non libres, ceci pose également un problème. Mais en ce moment, la cause
principale de ce problème est Java, parce que certaines personnes qui
écrivent des logiciels libres pense que le langage Java est sexy. Aveuglés
par l'attrait du langage, ils sous-estiment le problème des dépendances et
tombent dans le piège Java.
</p>

<p>
  L'implémentation Java de Sun est non libre. Les bibliothèques Java standard
sont aussi non libres ; c'est une adaptation du code privateur
(propriétaire) de Sun. Les bibliothèques de base de Java sont non libres
aussi. Bien sûr, nous disposons d'implémentations libres de Java, comme le
<a href="http://gcc.gnu.org/java/">compilateur GNU pour Java</a> (GCJ) et <a
href="/software/classpath">GNU Classpath</a>, mais ils ne gèrent pas encore
toutes les fonctionnalités. Nous sommes encore en train de rattraper le
retard.
</p>

<p>
  Si vous développez un programme Java sur la plateforme Java de Sun, vous
êtes voué à utiliser des fonctionnalités Sun exclusives sans même vous en
rendre compte. Vous pourriez les avoir utilisées pendant des mois avant de
le découvrir et reprendre la tâche pourrait prendre plus de mois
encore. Vous pourriez vous dire : « Recommencer demande trop de travail. »
Alors votre programme sera tombé dans le piège Java ; il sera inutilisable
dans le monde du Libre.
</p>

<p>
  Le truc fiable pour éviter le piège Java est de n'avoir qu'une
implémentation libre de Java sur votre système. Ainsi, si vous utilisez une
fonctionnalité ou une bibliothèque que le logiciel libre ne supporte pas
encore, vous vous en rendrez compte immédiatement et vous pourrez réécrire
ce code tout de suite.
</p>

<p>
  Sun continue de créer des bibliothèques « de base » supplémentaires, presque
toutes non libres ; dans bien des cas, même les spécifications de la
bibliothèque sont des secrets de fabrication. De plus, la dernière licence
de Sun concernant ces spécifications interdit la publication d'une mise en
œuvre partielle de ces dernières (voir par exemple <a
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> [en]
et <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> [en]).
</p>

<p>
  Heureusement, la licence de ces spécifications permet d'en publier une mise
en œuvre libre ; ceux qui recevraient une telle bibliothèque peuvent être
autorisés à la modifier et ne sont pas tenus d'en suivre les
spécifications. Mais cette clause a pour effet d'interdire l'utilisation
d'un modèle de développement collaboratif pour produire cette mise en œuvre
libre. L'utilisation d'un tel modèle impliquerait la parution de versions
incomplètes, ce qui est interdit aux personnes ayant lu les spécifications.
</p>

<p>
  Aux premiers jours du mouvement du logiciel libre, il était impossible de ne
pas dépendre de programmes non libres. Avant que nous ne disposions du
compilateur C de GNU, tous les programmes C (qu'ils fussent libres ou non)
dépendaient d'un compilateur C non libre. Avant que nous ne disposions de la
bibliothèque C de GNU, tous les programmes dépendaient d'une bibliothèque C
non libre. Avant que nous ne disposions de Linux, le premier noyau libre,
tous les programmes dépendaient d'un noyau non libre. Avant que nous ne
disposions de BASH, chaque script shell devait être exécuté par un
interpréteur non libre. Il était inévitable que nos premiers programmes
soient initialement sous le joug de ces dépendances, mais ceci était
acceptable car leur sauvetage ultérieur faisait partie de notre plan. Notre
objectif global, un système d'exploitation autonome, comprenait des
remplacements libres à toutes ces dépendances ; si nous atteignions ce but,
tous nos programmes seraient sauvés. Et c'est ce qui se produisit : avec le
système GNU/Linux, nous pouvons à présent exécuter ces programmes sur des
plateformes libres.
</p>

<p>
  La situation est différente aujourd'hui. Nous disposons à présent de
systèmes d'exploitation puissants et de nombreux outils de programmation
libres. Quelle que soit la tâche que vous ayez à exécuter, vous pouvez le
faire sur une plateforme libre ; il n'est plus nécessaire, même
temporairement, d'accepter des dépendances non libres. À ce jour, la raison
principale pour laquelle les gens tombent dans le piège est que cela ne leur
vient pas à l'esprit. La plus simple des solutions concernant le piège Java
est d'apprendre aux gens à ne pas tomber dedans.
</p>

<p>
  Afin de protéger votre code Java du piège Java, installez un environnement
de développement Java libre et utilisez-le. De façon générale, quel que soit
le langage que vous utilisiez, ouvrez l'œil et assurez-vous du statut libre
des programmes dont dépend le code de vos programmes. La façon la plus
simple de vérifier si ce programme est libre est de s'assurer qu'il possède
une entrée dans le répertoire du logiciel libre (<a
href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). Si un
programme n'est pas dans ce répertoire, vous pouvez vérifier si la licence
qui l'accompagne est dans la liste des licences de logiciel libre (<a
href="/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>).
</p>

<p>
  Nous sommes en train d'essayer de sauver les programmes Java piégés, alors
si vous aimez le langage Java, nous vous invitons à nous aider à développer
GNU Classpath. Vous pouvez aussi aider en essayant vos programmes avec le
compilateur GCJ et GNU Classpath. Toutefois, cela prendra du temps pour
terminer GNU Classpath ; si d'autres bibliothèques non libres continuent à y
être ajoutées, il se peut que nous n'ayons jamais les plus récentes. Alors
s'il vous plaît, ne placez pas d'entraves sur vos logiciels libres. Faites
en sorte que l'application que vous écrivez en ce moment soit conçue pour
fonctionner dans un environnement libre dès le départ.
</p>

<h3>Voir également :</h3>
<p><a href="/philosophy/sun-in-night-time.html">Le curieux non-événement de Sun
dans la pénombre</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.fr.html" -->
<div id="footer">
<div class="unprintable">

<p>Veuillez envoyer les requêtes concernant la FSF et GNU à <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Il existe aussi <a
href="/contact/">d'autres moyens de contacter</a> la FSF. Les liens
orphelins et autres corrections ou suggestions peuvent être signalés à <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>. -->
Nous faisons le maximum pour proposer des traductions fidèles et de bonne
qualité, mais nous ne sommes pas parfaits. Merci d'adresser vos commentaires
sur cette page, ainsi que vos suggestions d'ordre général sur les
traductions, à <a href="mailto:web-translators@gnu.org">
&lt;web-translators@gnu.org&gt;</a>.</p>
<p>Pour tout renseignement sur la coordination et la soumission des
traductions de nos pages web, reportez-vous au <a
href="/server/standards/README.translations.html">guide de traduction</a>.</p>
</div>

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

<p>Cette page peut être utilisée suivant les conditions de la licence <a
rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/deed.fr">Creative
Commons attribution, pas de modification, 4.0 internationale (CC BY-ND
4.0)</a>.</p>

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

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
Traduction : Francis Pied.<br /> Révision : <a
href="mailto:trad-gnu&#64;april.org">trad-gnu&#64;april.org</a></div>

<p class="unprintable"><!-- timestamp start -->
Dernière mise à jour :

$Date: 2018/09/07 09:58:14 $

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