java-trap.html (15126B)
1 <!--#set var="PO_FILE" 2 value='<a href="/philosophy/po/java-trap.pl.po"> 3 https://www.gnu.org/philosophy/po/java-trap.pl.po</a>' 4 --><!--#set var="ORIGINAL_FILE" value="/philosophy/java-trap.html" 5 --><!--#set var="DIFF_FILE" value="/philosophy/po/java-trap.pl-diff.html" 6 --><!--#set var="OUTDATED_SINCE" value="2015-10-03" --> 7 8 <!--#include virtual="/server/header.pl.html" --> 9 <!-- Parent-Version: 1.77 --> 10 11 <!-- This file is automatically generated by GNUnited Nations! --> 12 <title>Wolne, lecz w okowach - pułapka Javy - Projekt GNU - Fundacja Wolnego 13 Oprogramowania (FSF)</title> 14 15 <!--#include virtual="/philosophy/po/java-trap.translist" --> 16 <!--#include virtual="/server/banner.pl.html" --> 17 <!--#include virtual="/server/outdated.pl.html" --> 18 <h2>Wolne, lecz w okowach - pułapka Javy</h2> 19 20 <p><a href="http://www.stallman.org/">Richard Stallman</a></p> 21 22 23 <div class="announcement"><blockquote><h3>Konspekt</h3> 24 <p>Od czasu gdy ten artykuł został opublikowany po raz pierwszy Sun 25 <a href="http://www.fsf.org/news/fsf-welcomes-gpl-java.html">zmienił 26 licencję</a> swojej implementacji platformy Java na Powszechną 27 Publiczną Licencję GNU i istnieje teraz wolne środowisko 28 programistyczne dla Javy. Z tego względu język Java nie jest już 29 pułapką.</p> 30 31 <p>Należy jednak być ostrożnym, nie każda platforma Java jest wolna. Sun 32 nadal rozpowszechnia środowisko uruchomieniowe Java, które jest 33 niewolne. Inne firmy też to robią.</p> 34 35 <p>Wolne środowisko dla Java nazywa się IcedTea i zawiera kod źródłowy, 36 który uwolnił Sun. Właśnie tego powinno sie używać. Wiele dystrybucji 37 GNU/Linux zawiera IcedTea, ale niektóre nadal posługują się niewolnymi.</p> 38 39 <p>Aby być pewnym, że Twoje programy napisane w Java będą dobrze 40 działać w wolnym środowisku należy tworzyć je za pomocą 41 IcedTea. Teoretycznie wszystkie platformy powinny być kompatybilne, 42 ale nie jest tak w 100 procentach.</p> 43 44 <p>Co więcej, istnieją niewolne programy zawierające „Java” 45 w nazwie, takie jak JavaFX, a także niewolne pakiety Java, które 46 mogą być kuszące, ale należy je odrzucić. Sprawdzaj więc licencję 47 każdego pakietu, którego planujesz używać. Jeśli używasz Swing upewnij się, 48 że jest to wolna wersja, która dołączona jest do IcedTea.</p> 49 50 <p>Odkładając na bok konkretną sprawę Java, ogólny problem opisany tutaj 51 pozostaje istotny, ponieważ każda niewolna biblioteka 52 czy platforma programowa spowoduje ten sam problem. Musimy wyciągnąć 53 naukę z historii Java abyśmy mogli uniknąć podobnych pułapek 54 w przyszłości.</p> 55 56 <p>Zobaczcie też: <a href="/philosophy/javascript-trap.html">Pułapka 57 JavaScript</a>.</p> 58 </blockquote> 59 </div> 60 61 <p>12 kwietnia 2004</p> 62 63 <p> 64 Jeśli Wasz program jest wolnym oprogramowaniem, to zasadniczo jest dobry 65 etycznie – ale istnieje pułapka, której musicie się 66 strzec. Wasz program, choć sam w sobie wolny, być może ograniczany 67 jest przez niewolne oprogramowanie, od którego 68 zależy. Ponieważ problem ten najbardziej widoczny jest obecnie 69 w przypadku programów napisanych w Javie, nazywamy go Pułapką 70 Javy. 71 </p> 72 73 <p> 74 Program jest wolny, kiedy jego użytkownicy mają pewne kluczowe 75 swobody. Z grubsza rzecz ujmując, są to: wolność uruchamiania programu, 76 wolność studiowania go i zmiany jego kodu źródłowego, wolność 77 redystrybucji źródeł i binariów oraz wolność publikowania 78 poprawionych wersji (zob. <a 79 href="http://www.gnu.org/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>). 80 To, czy dany program jest wolnym oprogramowaniem, zależy wyłącznie 81 od jego licencji. 82 </p> 83 84 <p> 85 To, czy program może być używany w Wolnym Świecie, przez ludzi, 86 którzy zamierzają żyć w wolności, jest pytaniem bardziej złożonym. Nie 87 decyduje o tym licencja samego programu, gdyż żaden program nie działa 88 w odosobnieniu. Każdy program zależy od innych programów. Musi 89 na przykład zostać skompilowany lub zinterpretowany, 90 więc zależy od kompilatora czy interpretera. Jeśli jest 91 kompilowany do kodu bajtowego, zależy od interpretera tego 92 kodu. Ponadto, do działania potrzebuje bibliotek, a może też 93 wywoływać inne odrębne programy działające jako osobne procesy. Dany program 94 może zależeć od innych, żeby w ogóle działać lub wymagać ich 95 tylko dla pewnych funkcji. Tak czy owak, cały program lub jego 96 część nie mogą funkcjonować bez oprogramowania, od którego są 97 zależne. 98 </p> 99 100 <p> 101 Jeżeli niektóre z wymaganych przez program elementów nie są wolne, 102 to znaczy, że całość lub część programu nie dadzą się uruchomić 103 w całkowicie wolnym systemie – nie nadaje się on 104 do używania w Wolnym Świecie. Jasne, możemy rozprowadzać ten 105 program i trzymać kopie w swoich komputerach, ale niewiele 106 z tego pożytku, jeśli nie będzie działał. Taki program jest wolnym 107 oprogramowaniem, lecz w praktyce został spętany przez niewolne 108 oprogramowanie, od którego jest uzależniony. 109 </p> 110 111 <p> 112 Ten kłopot może się pojawić w każdego rodzaju oprogramowaniu, 113 w dowolnym języku. Na przykład, wolny program działający tylko 114 w Microsoft Windows jest ewidentnie bezużyteczny w Wolnym 115 Świecie. Ale program działający na GNU/Linuksie także może być 116 bezużyteczny, jeśli zależy od innego niewolnego 117 oprogramowania. W przeszłości główną przyczyną takich kłopotów były 118 Motif (zanim powstał LessTif) oraz Qt (zanim twórcy tej biblioteki 119 uczynili ją wolnym oprogramowaniem). Większość kart graficznych 3D 120 wykorzystuje w pełni swoje możliwości tylko z niewolnymi 121 sterownikami, co także powoduje tego rodzaju problemy. Ale głównym 122 źródłem tego problemu jest obecnie Java, gdyż osoby piszące wolne 123 oprogramowanie często uważają, że Java jest sexy. Zaślepieni przez 124 swoje zafascynowanie językiem, przeoczają kwestię zależności i wpadają 125 w Pułapkę Javy. 126 </p> 127 128 <p> 129 Wykonana przez firmę Sun implementacja Javy nie jest wolna. Blackdown także 130 nie jest wolne, jest przeróbką zastrzeżonego kodu Suna. Standardowe 131 biblioteki Javy też nie są wolne. Mamy wolne implementacje Javy, takie jak 132 <a href="http://gcc.gnu.org/java/">GNU Compiler for Java</a> (GCJ) i <a 133 href="/software/classpath">GNU Classpath</a>, ale nie udostępniają one 134 jeszcze wszystkich funkcji. Nadal to nadganiamy. 135 </p> 136 137 <p> 138 Gdy piszecie program w Javie na platformie Javy oferowanej przez 139 Suna, jesteście podatni na nieświadome wykorzystywanie funkcji 140 występujących tylko w implementacji Suna. Kiedy się zorientujecie, może 141 się okazać, że korzystacie z nich od miesięcy, a ponowne 142 wykonanie pracy zajęłoby kolejne miesiące. Moglibyście wtedy powiedzieć: 143 „To za dużo roboty, żeby zaczynać 144 od początku”. Wówczas Wasz program wpadnie w Pułapkę Javy, 145 stanie się nieużywalny w Wolnym Świecie. 146 </p> 147 148 <p> 149 Niezawodną metodą uniknięcia Pułapki Javy jest posiadanie w systemie 150 wyłącznie wolnej implementacji Javy. Wtedy, jeśli skorzystacie 151 z jakiejś cechy Javy lub biblioteki, której wolne oprogramowanie 152 jeszcze nie obsługuje, zorientujecie się od razu i natychmiast 153 będziecie mogli przepisać kod. 154 </p> 155 156 <p> 157 Sun nadal rozwija dodatkowe „standardowe” biblioteki Javy, 158 a niemal wszystkie z nich są niewolne. W wielu przypadkach 159 nawet specyfikacja biblioteki jest tajemnicą handlową. Zaś ostatnia 160 licencja Suna dotycząca specyfikacji bibliotek zakazuje wydawania 161 implementacji częściowych, czegokolwiek mniej niż pełna implementacja 162 specyfikacji. (Zob. np. <a 163 href="http://jcp.org/aboutJava/communityprocess/JSPA2.pdf">http://jcp.org/aboutJava/communityprocess/JSPA2.pdf</a> 164 oraz <a 165 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>) 166 </p> 167 168 <p> 169 Na szczęście, ta licencja pozwala na wydanie implementacji jako 170 wolnego oprogramowania – temu, kto otrzyma taką bibliotekę, wolno 171 ją zmienić i nie musi się trzymać specyfikacji. Jednak efektem tej 172 klauzuli jest zakaz korzystania z modelu wspólnej pracy 173 nad projektem do wytworzenia wolnej implementacji. Zastosowanie 174 tego modelu pociągałoby za sobą publikowanie niekompletnych wersji, 175 czego nie wolno robić tym, którzy przeczytali specyfikację. 176 </p> 177 178 <p> 179 W pionierskim okresie ruchu wolnego oprogramowania uniknięcie 180 zależności od niewolnych programów było niemożliwe. Zanim mieliśmy 181 do dyspozycji kompilator GNU C, każdy program napisany w C (wolny 182 czy nie) zależał od niewolnego kompilatora C. Zanim 183 dysponowaliśmy biblioteką GNU C, każdy program zależał 184 od niewolnej biblioteki C. Zanim mieliśmy Linuksa, pierwsze wolne 185 jądro, każdy program zależał od niewolnego jądra. Zanim mieliśmy BASH, 186 każdy skrypt powłoki musiał być interpretowany przez niewolną powłokę. To, 187 że nasze pierwsze programy początkowo były skrępowane przez owe 188 zależności, było nie do uniknięcia, ale zaakceptowaliśmy to, gdyż 189 planowaliśmy stopniowe ich uwalnianie. Nasz ostateczny cel, samodzielny 190 system operacyjny GNU, mieścił w sobie wolne zamienniki dla wszystkich 191 tych zależności. Jeśli osiągnęlibyśmy ten cel, oswobodzilibyśmy wszystkie 192 nasze programy. I tak się stało: mając system GNU/Linux, możemy teraz 193 uruchamiać je na wolnych platformach. 194 </p> 195 196 <p> 197 Obecnie sytuacja wygląda inaczej. Mamy potężne wolne systemy operacyjne 198 i wiele wolnych narzędzi programistycznych. Każde zadanie, jakie 199 chcecie wykonać, możecie wykonać na wolnej platformie – 200 bez konieczności akceptowania choćby tymczasowej zależności 201 od niewolnego oprogramowania. Główną przyczyną tego, że obecnie 202 ludzie wpadają w pułapkę, jest to, że się nad tym nie 203 zastanawiają. Najłatwiej rozwiązać problem Pułapki Javy ucząc ludzi, żeby 204 do niej nie wpadali. 205 </p> 206 207 <p> 208 Żeby uchronić swój napisany w Javie kod przed Pułapką Javy, 209 zainstalujcie wolne środowisko programistyczne Javy i używajcie 210 go. Ogólnie rzecz biorąc: jakiegokolwiek języka programowania używacie, 211 miejcie oczy otwarte i sprawdzajcie status programów, od których 212 zależy Wasz kod. Najprostszym sposobem zweryfikowania, czy dany program 213 jest wolny jest poszukanie go w Katalogu Wolnego Oprogramowania (<a 214 href="http://www.fsf.org/directory">http://www.fsf.org/directory</a>). 215 Jeżeli nie ma go w katalogu, możecie porównać jego licencję 216 z listą licencji wolnego oprogramowania (<a 217 href="http://www.gnu.org/licenses/license-list.html">http://www.gnu.org/licenses/license-list.html</a>). 218 </p> 219 220 <p> 221 Próbujemy oswobodzić schwytane w pułapkę programy Javy, więc jeśli 222 lubicie język Java, zachęcamy Was do pomocy w rozwijaniu zbioru 223 bibliotek GNU Classpath. Wypróbowanie działania swoich programów 224 z kompilatorem GCJ i GNU Classpath i zgłoszenie kłopotów 225 z klasami już zaimplementowanymi, też jest pomocne. Niemniej jednak, 226 zbudowanie GNU Classpath wymaga czasu; jeśli wciąż dodawane będą kolejne 227 niewolne biblioteki, to pewnie nigdy nie będziemy mieć wszystkich 228 najnowszych. Dlatego, prosimy, nie nakładajcie swoim wolnym programom 229 kajdan. Kiedy piszecie dziś jakiś program użytkowy, napiszcie go tak, 230 aby od początku działał korzystając z wolnego oprogramowania 231 wspomagającego. 232 </p> 233 234 <h3>Zobacz też:</h3> 235 <p><a href="/philosophy/sun-in-night-time.html">Dziwny przypadek Suna nocną 236 porą</a></p> 237 238 <div class="translators-notes"> 239 240 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 241 </div> 242 </div> 243 244 <!-- for id="content", starts in the include above --> 245 <!--#include virtual="/server/footer.pl.html" --> 246 <div id="footer"> 247 <div class="unprintable"> 248 249 <p>Pytania dotyczące GNU i FSF prosimy kierować na adres <a 250 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Istnieją także <a 251 href="/contact/contact.html">inne sposoby skontaktowania się</a> 252 z FSF. <br /> Informacje o niedziałających odnośnikach oraz inne 253 poprawki (lub propozycje) prosimy wysyłać na adres <a 254 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> 255 256 <p> 257 <!-- TRANSLATORS: Ignore the original text in this paragraph, 258 replace it with the translation of these two: 259 260 We work hard and do our best to provide accurate, good quality 261 translations. However, we are not exempt from imperfection. 262 Please send your comments and general suggestions in this regard 263 to <a href="mailto:web-translators@gnu.org"> 264 265 <web-translators@gnu.org></a>.</p> 266 267 <p>For information on coordinating and submitting translations of 268 our web pages, see <a 269 href="/server/standards/README.translations.html">Translations 270 README</a>. --> 271 Staramy się, aby tłumaczenia były wierne i wysokiej jakości, 272 ale nie jesteśmy zwolnieni z niedoskonałości. Komentarze odnośnie 273 tłumaczenia polskiego oraz zgłoszenia dotyczące chęci współpracy 274 w tłumaczeniu prosimy kierować na adres <a 275 href="mailto:www-pl-trans@gnu.org">www-pl-trans@gnu.org</a>. <br /> 276 Aby zapoznać się z informacjami dotyczącymi tłumaczenia 277 i koordynowania tłumaczeń artykułów, proszę odwiedzić stronę <a 278 href="/server/standards/README.translations.html">tłumaczeń</a>.</p> 279 </div> 280 281 <p>Copyright © 2004, 2010 Richard Stallman</p> 282 283 <p>Ten utwór objęty jest licencją Creative Commons Uznanie autorstwa-Bez 284 utworów zależnych 3.0 Stany Zjednoczone. Aby zobaczyć kopię niniejszej 285 licencji przejdź na stronę <a rel="license" 286 href="http://creativecommons.org/licenses/by-nd/3.0/us/">http://creativecommons.org/licenses/by-nd/3.0/us/</a> 287 lub napisz do Creative Commons, 171 Second Street, Suite 300, San 288 Francisco, California 94105, USA.</p> 289 290 <!--#include virtual="/server/bottom-notes.pl.html" --> 291 <div class="translators-credits"> 292 293 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 294 Tłumaczenie: Wojciech Kotwica 2005, 2006, 2007, Daniel Oźminkowski 2010; 295 poprawki: Jan Owoc 2012, 2013.</div> 296 297 <p class="unprintable"><!-- timestamp start --> 298 Aktualizowane: 299 300 $Date: 2021/07/18 10:02:30 $ 301 302 <!-- timestamp end --> 303 </p> 304 </div> 305 </div> 306 </body> 307 </html>