summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/pl/java-trap.html
blob: 29ef2c5f5dd5a4724b67b4fec7b80af6d504762c (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
296
297
298
299
300
301
302
303
304
305
306
307
<!--#set var="PO_FILE"
 value='<a href="/philosophy/po/java-trap.pl.po">
 http://www.gnu.org/philosophy/po/java-trap.pl.po</a>'
 --><!--#set var="ORIGINAL_FILE" value="/philosophy/java-trap.html"
 --><!--#set var="DIFF_FILE" value="/philosophy/po/java-trap.pl-diff.html"
 --><!--#set var="OUTDATED_SINCE" value="2015-10-03" -->

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

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Wolne, lecz&nbsp;w okowach - pułapka Javy - Projekt GNU - Fundacja Wolnego
Oprogramowania (FSF)</title>

<!--#include virtual="/philosophy/po/java-trap.translist" -->
<!--#include virtual="/server/banner.pl.html" -->
<!--#include virtual="/server/outdated.pl.html" -->
<h2>Wolne, lecz&nbsp;w okowach - pułapka Javy</h2>

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


<div class="announcement"><blockquote><h3>Konspekt</h3>
<p>Od&nbsp;czasu gdy ten artykuł został opublikowany po&nbsp;raz pierwszy Sun
<a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">zmienił
licencję</a> swojej implementacji platformy Java na&nbsp;Powszechną
Publiczną Licencję GNU i&nbsp;istnieje teraz wolne środowisko
programistyczne dla Javy. Z&nbsp;tego względu język Java nie jest już
pułapką.</p>

<p>Należy jednak&nbsp;być ostrożnym, nie każda platforma Java jest wolna. Sun
nadal rozpowszechnia środowisko uruchomieniowe Java, które jest
niewolne. Inne firmy też to robią.</p>

<p>Wolne środowisko dla Java nazywa się IcedTea i&nbsp;zawiera kod źródłowy,
który uwolnił Sun. Właśnie tego powinno sie używać. Wiele dystrybucji
GNU/Linux zawiera IcedTea, ale&nbsp;niektóre nadal posługują się niewolnymi.</p>

<p>Aby&nbsp;być pewnym, że&nbsp;Twoje programy napisane w&nbsp;Java będą dobrze
działać w&nbsp;wolnym środowisku należy tworzyć je za&nbsp;pomocą
IcedTea. Teoretycznie wszystkie platformy powinny być kompatybilne,
ale&nbsp;nie jest tak w&nbsp;100 procentach.</p>

<p>Co więcej, istnieją niewolne programy zawierające &bdquo;Java&rdquo;
w&nbsp;nazwie, takie jak JavaFX, a&nbsp;także niewolne pakiety Java, które
mogą być kuszące, ale&nbsp;należy je odrzucić. Sprawdzaj więc&nbsp;licencję
każdego pakietu, którego planujesz używać. Jeśli używasz Swing upewnij się,
że&nbsp;jest to wolna wersja, która dołączona jest do&nbsp;IcedTea.</p>

<p>Odkładając na&nbsp;bok konkretną sprawę Java, ogólny problem opisany tutaj
pozostaje istotny, ponieważ&nbsp;każda niewolna biblioteka
czy&nbsp;platforma programowa spowoduje ten sam problem. Musimy wyciągnąć
naukę z&nbsp;historii Java abyśmy mogli uniknąć podobnych pułapek
w&nbsp;przyszłości.</p>

<p>Zobaczcie też: <a href="/philosophy/javascript-trap.html">Pułapka
JavaScript</a>.</p>
</blockquote>
</div>

<p>12 kwietnia 2004</p>

<p>
  Jeśli Wasz program jest wolnym oprogramowaniem, to zasadniczo jest dobry
etycznie&nbsp;&ndash; ale&nbsp;istnieje pułapka, której musicie się
strzec. Wasz program, choć&nbsp;sam w&nbsp;sobie wolny, być może ograniczany
jest przez niewolne oprogramowanie, od&nbsp;którego
zależy. Ponieważ&nbsp;problem ten najbardziej widoczny jest obecnie
w&nbsp;przypadku programów napisanych w&nbsp;Javie, nazywamy go Pułapką
Javy.
</p>

<p>
  Program jest wolny, kiedy jego użytkownicy mają pewne kluczowe
swobody. Z&nbsp;grubsza rzecz ujmując, są to: wolność uruchamiania programu,
wolność studiowania go i&nbsp;zmiany jego kodu źródłowego, wolność
redystrybucji źródeł i&nbsp;binariów oraz&nbsp;wolność publikowania
poprawionych wersji (zob. <a
href="http://www.gnu.org/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>).
To, czy&nbsp;dany program jest wolnym oprogramowaniem, zależy wyłącznie
od&nbsp;jego licencji.
</p>

<p>
  To, czy&nbsp;program może być używany w&nbsp;Wolnym Świecie, przez ludzi,
którzy zamierzają żyć w&nbsp;wolności, jest pytaniem bardziej złożonym. Nie
decyduje o&nbsp;tym licencja samego programu, gdyż żaden program nie działa
w&nbsp;odosobnieniu. Każdy program zależy od&nbsp;innych programów. Musi
na&nbsp;przykład zostać skompilowany lub&nbsp;zinterpretowany,
więc&nbsp;zależy od&nbsp;kompilatora czy&nbsp;interpretera. Jeśli jest
kompilowany do&nbsp;kodu bajtowego, zależy od&nbsp;interpretera tego
kodu. Ponadto, do&nbsp;działania potrzebuje bibliotek, a&nbsp;może też
wywoływać inne odrębne programy działające jako osobne procesy. Dany program
może zależeć od&nbsp;innych, żeby w&nbsp;ogóle działać lub&nbsp;wymagać ich
tylko dla pewnych funkcji. Tak czy&nbsp;owak, cały program lub&nbsp;jego
część nie mogą funkcjonować bez&nbsp;oprogramowania, od&nbsp;którego są
zależne. 
</p>

<p>
  Jeżeli&nbsp;niektóre z&nbsp;wymaganych przez program elementów nie są wolne,
to znaczy, że&nbsp;całość lub&nbsp;część programu nie dadzą się uruchomić
w&nbsp;całkowicie wolnym systemie&nbsp;&ndash; nie nadaje się on
do&nbsp;używania w&nbsp;Wolnym Świecie. Jasne, możemy rozprowadzać ten
program i&nbsp;trzymać kopie w&nbsp;swoich komputerach, ale&nbsp;niewiele
z&nbsp;tego pożytku, jeśli nie będzie działał. Taki program jest wolnym
oprogramowaniem, lecz&nbsp;w&nbsp;praktyce został spętany przez niewolne
oprogramowanie, od&nbsp;którego jest uzależniony.
</p>

<p>
  Ten kłopot może się pojawić w&nbsp;każdego rodzaju oprogramowaniu,
w&nbsp;dowolnym języku. Na&nbsp;przykład, wolny program działający tylko
w&nbsp;Microsoft Windows jest ewidentnie bezużyteczny w&nbsp;Wolnym
Świecie. Ale&nbsp;program działający na&nbsp;GNU/Linuksie także może być
bezużyteczny, jeśli zależy od&nbsp;innego niewolnego
oprogramowania. W&nbsp;przeszłości główną przyczyną takich kłopotów były
Motif (zanim powstał LessTif) oraz&nbsp;Qt (zanim twórcy tej biblioteki
uczynili ją wolnym oprogramowaniem). Większość kart graficznych 3D
wykorzystuje w&nbsp;pełni swoje możliwości tylko z&nbsp;niewolnymi
sterownikami, co także powoduje tego rodzaju problemy. Ale&nbsp;głównym
źródłem tego problemu jest obecnie Java, gdyż osoby piszące wolne
oprogramowanie często uważają, że&nbsp;Java jest sexy. Zaślepieni przez
swoje zafascynowanie językiem, przeoczają kwestię zależności i&nbsp; wpadają
w&nbsp;Pułapkę Javy. 
</p>

<p>
  Wykonana przez firmę Sun implementacja Javy nie jest wolna. Blackdown także
nie jest wolne, jest przeróbką zastrzeżonego kodu Suna. Standardowe
biblioteki Javy też nie są wolne. Mamy wolne implementacje Javy, takie jak
<a href="http://gcc.gnu.org/java/">GNU Compiler for Java</a> (GCJ) i&nbsp;<a
href="/software/classpath">GNU Classpath</a>, ale&nbsp;nie udostępniają one
jeszcze wszystkich funkcji. Nadal to nadganiamy.
</p>

<p>
  Gdy piszecie program w&nbsp;Javie na&nbsp;platformie Javy oferowanej przez
Suna, jesteście podatni na&nbsp;nieświadome wykorzystywanie funkcji
występujących tylko w&nbsp;implementacji Suna. Kiedy się zorientujecie, może
się okazać, że&nbsp;korzystacie z&nbsp;nich od&nbsp;miesięcy, a&nbsp;ponowne
wykonanie pracy zajęłoby kolejne miesiące. Moglibyście wtedy powiedzieć:
&bdquo;To za&nbsp;dużo roboty, żeby zaczynać
od&nbsp;początku&rdquo;. Wówczas Wasz program wpadnie w&nbsp;Pułapkę Javy,
stanie się nieużywalny w&nbsp;Wolnym Świecie.
</p>

<p>
  Niezawodną metodą uniknięcia Pułapki Javy jest posiadanie w&nbsp;systemie
wyłącznie wolnej implementacji Javy. Wtedy, jeśli skorzystacie
z&nbsp;jakiejś cechy Javy lub&nbsp;biblioteki, której wolne oprogramowanie
jeszcze nie obsługuje, zorientujecie się od&nbsp;razu i&nbsp;natychmiast
będziecie mogli przepisać kod. 
</p>

<p>
  Sun nadal rozwija dodatkowe &bdquo;standardowe&rdquo; biblioteki Javy,
a&nbsp;niemal wszystkie z&nbsp;nich są niewolne. W&nbsp;wielu przypadkach
nawet specyfikacja biblioteki jest tajemnicą handlową. Zaś&nbsp;ostatnia
licencja Suna dotycząca specyfikacji bibliotek zakazuje wydawania
implementacji częściowych, czegokolwiek mniej niż pełna implementacja
specyfikacji. (Zob. np. <a
href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a>
oraz&nbsp;<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>
  Na&nbsp;szczęście, ta licencja pozwala na&nbsp;wydanie implementacji jako
wolnego oprogramowania&nbsp;&ndash; temu, kto otrzyma taką bibliotekę, wolno
ją zmienić i&nbsp;nie musi się trzymać specyfikacji. Jednak&nbsp;efektem tej
klauzuli jest zakaz korzystania z&nbsp;modelu wspólnej pracy
nad&nbsp;projektem do&nbsp;wytworzenia wolnej implementacji. Zastosowanie
tego modelu pociągałoby za&nbsp;sobą publikowanie niekompletnych wersji,
czego nie wolno robić tym, którzy przeczytali specyfikację. 
</p>

<p>
  W&nbsp;pionierskim okresie ruchu wolnego oprogramowania uniknięcie
zależności od&nbsp;niewolnych programów było niemożliwe. Zanim mieliśmy
do&nbsp;dyspozycji kompilator GNU C, każdy program napisany w&nbsp;C (wolny
czy&nbsp;nie) zależał od&nbsp;niewolnego kompilatora&nbsp;C. Zanim
dysponowaliśmy biblioteką GNU&nbsp;C, każdy program zależał
od&nbsp;niewolnej biblioteki&nbsp;C. Zanim mieliśmy Linuksa, pierwsze wolne
jądro, każdy program zależał od&nbsp;niewolnego jądra. Zanim mieliśmy BASH,
każdy skrypt powłoki musiał być interpretowany przez niewolną powłokę. To,
że&nbsp;nasze pierwsze programy początkowo były skrępowane przez owe
zależności, było nie do&nbsp;uniknięcia, ale&nbsp;zaakceptowaliśmy to, gdyż
planowaliśmy stopniowe ich uwalnianie. Nasz ostateczny cel, samodzielny
system operacyjny GNU, mieścił w&nbsp;sobie wolne zamienniki dla wszystkich
tych zależności. Jeśli osiągnęlibyśmy ten cel, oswobodzilibyśmy wszystkie
nasze programy. I&nbsp;tak się stało: mając system GNU/Linux, możemy teraz
uruchamiać je na&nbsp;wolnych platformach. 
</p>

<p>
  Obecnie sytuacja wygląda inaczej. Mamy potężne wolne systemy operacyjne
i&nbsp;wiele wolnych narzędzi programistycznych. Każde zadanie, jakie
chcecie wykonać, możecie wykonać na&nbsp;wolnej platformie&nbsp;&ndash;
bez&nbsp;konieczności akceptowania choćby tymczasowej zależności
od&nbsp;niewolnego oprogramowania. Główną przyczyną tego, że&nbsp;obecnie
ludzie wpadają w&nbsp;pułapkę, jest to, że&nbsp;się nad&nbsp;tym nie
zastanawiają. Najłatwiej rozwiązać problem Pułapki Javy ucząc ludzi, żeby
do&nbsp;niej nie wpadali. 
</p>

<p>
  Żeby uchronić swój napisany w&nbsp;Javie kod przed Pułapką Javy,
zainstalujcie wolne środowisko programistyczne Javy i&nbsp;używajcie
go. Ogólnie rzecz biorąc: jakiegokolwiek języka programowania używacie,
miejcie oczy otwarte i&nbsp;sprawdzajcie status programów, od&nbsp;których
zależy Wasz kod. Najprostszym sposobem zweryfikowania, czy&nbsp;dany program
jest wolny jest poszukanie go w&nbsp;Katalogu Wolnego Oprogramowania  (<a
href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>).
Jeżeli&nbsp;nie ma go w&nbsp;katalogu, możecie porównać jego licencję
z&nbsp;listą licencji wolnego oprogramowania (<a
href="http://www.gnu.org/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>).
</p>

<p>
  Próbujemy oswobodzić schwytane w&nbsp;pułapkę programy Javy, więc&nbsp;jeśli
lubicie język Java, zachęcamy Was do&nbsp;pomocy w&nbsp;rozwijaniu zbioru
bibliotek GNU Classpath. Wypróbowanie działania swoich programów
z&nbsp;kompilatorem GCJ i&nbsp;GNU Classpath i&nbsp;zgłoszenie kłopotów
z&nbsp;klasami już zaimplementowanymi, też jest pomocne. Niemniej jednak,
zbudowanie GNU Classpath wymaga czasu; jeśli wciąż dodawane będą kolejne
niewolne biblioteki, to pewnie nigdy nie będziemy mieć wszystkich
najnowszych. Dlatego, prosimy, nie nakładajcie swoim wolnym programom
kajdan. Kiedy piszecie dziś jakiś program użytkowy, napiszcie go tak,
aby&nbsp;od początku działał korzystając z&nbsp;wolnego oprogramowania
wspomagającego.
</p>

<h3>Zobacz też:</h3>
<p><a href="/philosophy/sun-in-night-time.html">Dziwny przypadek Suna nocną
porą</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.pl.html" -->
<div id="footer">
<div class="unprintable">

<p>Pytania dotyczące GNU i&nbsp;FSF prosimy kierować na&nbsp;adres <a
href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>. Istnieją także <a
href="/contact/contact.html">inne sposoby skontaktowania się</a>
z&nbsp;FSF. <br /> Informacje o niedziałających odnośnikach oraz&nbsp;inne
poprawki (lub propozycje) prosimy wysyłać na&nbsp;adres <a
href="mailto:web-translators@gnu.org">&lt;web-translators@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>. -->
Staramy się, aby&nbsp;tłumaczenia były wierne i&nbsp;wysokiej jakości,
ale&nbsp;nie jesteśmy zwolnieni z&nbsp;niedoskonałości. Komentarze odnośnie
tłumaczenia polskiego oraz&nbsp;zgłoszenia dotyczące chęci współpracy
w&nbsp;tłumaczeniu prosimy kierować na&nbsp;adres <a
href="mailto:www-pl-trans@gnu.org">www-pl-trans@gnu.org</a>. <br />
Aby&nbsp;zapoznać się z&nbsp;informacjami dotyczącymi tłumaczenia
i&nbsp;koordynowania tłumaczeń artykułów, proszę odwiedzić stronę <a
href="/server/standards/README.translations.html">tłumaczeń</a>.</p>
</div>

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

<p>Ten utwór objęty jest licencją Creative Commons Uznanie autorstwa-Bez
utworów zależnych 3.0 Stany Zjednoczone. Aby&nbsp;zobaczyć kopię niniejszej
licencji przejdź na&nbsp;stronę <a rel="license"
href="http://creativecommons.org/licenses/by-nd/3.0/us/">http://creativecommons.org/licenses/by-nd/3.0/us/</a>
lub&nbsp;napisz do&nbsp;Creative Commons, 171 Second Street, Suite 300, San
Francisco, California 94105, USA.</p>

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

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
Tłumaczenie: Wojciech Kotwica 2005, 2006, 2007, Daniel Oźminkowski 2010;
poprawki: Jan Owoc 2012, 2013.</div>

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

$Date: 2016/01/13 21:35:41 $

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