java-trap.html (14807B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/java-trap.en.html" --> 2 3 <!--#include virtual="/server/header.nl.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>Vrij maar geketend - De Java-valstrik - GNU-project - Free Software 11 Foundation</title> 12 13 <!--#include virtual="/philosophy/po/java-trap.translist" --> 14 <!--#include virtual="/server/banner.nl.html" --> 15 <!--#include virtual="/philosophy/ph-breadcrumb.nl.html" --> 16 <!--GNUN: OUT-OF-DATE NOTICE--> 17 <!--#include virtual="/server/top-addendum.nl.html" --> 18 <div class="article reduced-width"> 19 20 <h2>Vrij maar geketend - De Java-valstrik</h2> 21 22 <address class="byline">door <a href="https://www.stallman.org/">Richard Stallman</a></address> 23 24 <div class="emph-box" style="background: none"> 25 <h3 class="footnote">Mededeling</h3> 26 <p>Sinds publicatie van dit artikel heeft Sun (nu onderdeel van Oracle) het 27 grootste deel van de referentie-implementatie van het Java-platform onder de 28 GNU General Public License <a 29 href="https://www.fsf.org/news/fsf-welcomes-gpl-java.html">uitgebracht</a>, 30 en er is nu een vrij ontwikkelplatform voor Java. Daarmee vormt de 31 Java-programmeertaal niet langer een valkuil.</p> 32 33 <p>Oppassen echter, niet ieder Java platform is hiermee vrij. Sun verspreidt 34 ook nog steeds een uitvoerbare versie die niet vrij is, evenals andere 35 bedrijven.</p> 36 37 <p>De vrij omgeving voor Java heet IcedTea; dit bevat ook de broncode die Sun 38 vrij heeft gegeven. Die moet je dus gebruiken. Veel GNU/Linux-distributies 39 bevatten IcedTea maar sommigen bevatten niet-vrije varianten. (Opmerking in 40 oktober 2015: de vrije implementatie van Java staat in veel 41 GNU/Linux-distributies bekend als OpenJDK.)</p> 42 43 <p>Om te kunnen achterhalen of je Java-programma's goed in een vrije omgeving 44 zullen draaien zul je met IcedTea moeten ontwikkelen. Theoretisch zouden de 45 platformen uitwisselbaar moeten zijn maar dat is nooit voor 100 procent.</p> 46 47 <p>Verder zijn er niet-vrije programma's in omloop met “Java” in 48 hun naam, zoals JavaFX, en zijn er niet-vrije Java-pakketten die je wellicht 49 zou willen gebruiken maar dat niet moet doen. Controleer dus altijd de 50 licenties. Wanneer je Swing gebruikt, vergewis je er dan van dat je de vrije 51 versie gebruikt die in IcedTea zit. (Opmerking in oktober 2015: een vrije 52 vervanging voor JavaFX, OpenJFX genaamd, is uitgebracht.)</p> 53 54 <p>Desalniettemin blijft het hier beschreven probleem relevant omdat andere 55 niet-vrije programmabibliotheken of platformen hetzelfde probleem zouden 56 kunnen bevatten. Laat deze geschiedenis van Java dus een les zijn om 57 toekomstige valstrikken te voorkomen.</p> 58 59 <p>Zie verder: <a href="/philosophy/javascript-trap.html">De 60 JavaScript-valstrik</a>.</p> 61 </div> 62 <hr class="no-display" /> 63 64 <p><em>12 april 2004</em></p> 65 66 <p> 67 Wanneer je programma vrije software is, is het van zichzelf ethisch 68 verantwoord—maar er loert een valstrik waar je voor uit moet 69 kijken. Hoewel je programma zelf vrij is kan het toch beperkingen hebben 70 door andere software waar het van afhankelijk is. Omdat dit probleem vooral 71 speelt bij Java-programma's noemen we het de Java-valstrik. 72 </p> 73 74 <p> 75 Een programma is vrije software wanneer gebruikers ervan bepaalde 76 belangrijke vrijheden krijgen. Grof gezegd zijn dit: de vrijheid een 77 programma te gebruiken, de vrijheid het te bestuderen en de broncode te 78 veranderen, de vrijheid de broncode en binaire code opnieuw te verspreiden 79 en de vrijheid om nieuwe, verbeterde versies ervan te publiceren (zie ook <a 80 href= "/philosophy/free-sw.html">de definitie van vrije software</a>). Of 81 een programma vrij is of niet is geheel afhankelijk van de licentie die erop 82 van kracht is. 83 </p> 84 85 <p> 86 De vraag of het programma gebruikt kan worden in de vrije wereld, door 87 mensen die in vrijheid behoren te leven, is moeilijker te beantwoorden. Dit 88 wordt niet alleen bepaald door de licentie van een programma, want geen 89 enkel programma werkt in totale isolatie. Ieder programma is afhankelijk van 90 andere programma's. Het moet bijvoorbeeld gecompileerd worden of 91 geïnterpreteerd en is daarmee afhankelijk van een compiler of 92 interpretator. Wanneer het gecompileerd wordt naar byte-code is het ook nog 93 eens afhankelijk van een byte-code interpretator. Verder heeft het 94 programmabibliotheken nodig om te draaien en het zou ook nog andere 95 programma's kunnen starten die in andere processen draaien. Al die 96 programma's vormen afhankelijkheden. Die afhankelijkheden kunnen nodig zijn 97 voor het programma om überhaupt te draaien of alleen voor bepaalde 98 stukjes functionaliteit. Hoe dan ook, het programma, in zijn geheel of 99 gedeeltelijk, kan niet draaien zonder de afhankelijkheden. 100 </p> 101 102 <p> 103 Wanneer sommige van die afhankelijkheden van een programma niet vrij zijn, 104 betekent het dat het programma, of een gedeelte daarvan, niet kan draaien op 105 een compleet vrij systeem—het is onbruikbaar in de vrije 106 wereld. Natuurlijk, we kunnen het programma verspreiden en kopieën 107 houden op onze machines maar dat heeft weinig nut als we ze niet kunnen 108 laten draaien. Het programma mag dan vrije software zijn, het wordt bij 109 wijze van spreken geketend door zijn niet-vrije afhankelijkheden. 110 </p> 111 112 <p> 113 Dit probleem kan zich voordoen in alle software, geschreven in welke taal 114 dan ook. Een vrij programma bijvoorbeeld dat alleen op Microsoft Windows 115 draait is duidelijk onbruikbaar in de vrije wereld. Maar software op 116 GNU/Linux kan ook onbruikbaar zijn wanneer het afhankelijk is van andere, 117 niet-vrije, software. In het verleden waren Motif (voordat we LessTif 118 hadden) en Qt (voordat de ontwikkelaars het vrije software maakten) grote 119 veroorzakers van dit probleem. De meeste 3D-videokaarten werken alleen 120 volledig met niet-vrije stuurprogramma's die ook een oorzaak van het 121 probleem vormen. Maar de grootste bron van problemen op dit moment is Java, 122 mede doordat veel mensen die vrije software schrijven Java sexy 123 vinden. Verblind door de aantrekkingskracht van de taal zien ze het probleem 124 van de afhankelijkheden over het hoofd en raken verstrikt in de 125 Java-valstrik. 126 </p> 127 128 <p> 129 De Java-implementatie door Sun is niet vrij. De standaard Java-bibliotheken 130 zijn ook niet vrij. We hebben echter wel vrije versies van Java, zoals de <a 131 href="https://objectcomputing.com/resources/publications/sett/january-2003-gcj-the-gnu-compiler-for-java">GNU-compiler 132 voor Java</a> (GCJ) en <a href= "/software/classpath">GNU Classpath</a>, 133 maar die ondersteunen nog niet alle mogelijkheden. We zijn bezig met een 134 inhaalslag. 135 </p> 136 137 <p> 138 Wanneer je een Java-programma op het Java-platform van Sun ontwikkelt loop 139 je het risico Sun-specifieke dingen te gebruiken zonder dat je het door 140 hebt. Wanneer je daar maanden later achter komt kan het ook weer maanden 141 kosten voordat je die afhankelijkheid eruit hebt. Je zou dan kunnen 142 verzuchten: “Het is teveel werk om opnieuw te beginnen”. Op dat 143 moment is je programma verstrikt geraakt in de Java-valstrik; het is niet 144 meer bruikbaar in de vrije wereld. 145 </p> 146 147 <p> 148 De enige betrouwbare methode om de valstrik te omzeilen is alleen een vrije 149 implementatie van Java op je systeem toe te laten. Wanneer je op die manier 150 iets specifieks gebruikt van Java of een bibliotheek wat nog niet wordt 151 ondersteund, kom je er direct achter en kun je meteen je code aanpassen. 152 </p> 153 154 <p> 155 Sun blijft bezig met het ontwikkelen van nieuwe “standaard” 156 Java-bibliotheken en ze zijn bijna allemaal niet-vrij; in veel gevallen is 157 zelfs de specificatie van de bibliotheek een handelsgeheim en de meest 158 recente versie van de licentie van Sun voor deze specificaties verbiedt 159 zelfs publicatie van implementaties die niet volledig zijn. (Zie <a href= 160 "http://jcp.org/aboutJava/communityprocess/JSPA2.pdf"><i>Java Specification 161 Participation Agreement</i></a> en <a href= 162 "http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html"><i>J2ME™ 163 Personal Basis Profile Specification</i></a> voor voorbeelden). 164 </p> 165 166 <p> 167 Gelukkig laat die licentie wel toe dat er een vrije implementatie 168 uitgebracht kan worden; anderen die deze bibliotheek dan ontvangen mogen hem 169 dan wel veranderen en hoeven niet volledig aan de specificatie te 170 voldoen. Maar deze vereiste beperkt wel de mogelijkheid om via een 171 samenwerkingsmodel een vrije implementatie te maken. In een dergelijk model 172 moet je onvolledige versies publiceren wat diegenen die de specificatie 173 hebben gelezen niet mogen doen. 174 </p> 175 176 <p> 177 In de begintijd van de vrije software beweging was het onmogelijk om geen 178 afhankelijkheden te hebben met niet-vrije programma's. Voordat we de GNU 179 C-compiler hadden was ieder C-programma (vrij of niet), afhankelijk van een 180 niet-vrije C-compiler. Voordat we de GNU C-bibliotheek hadden was ieder 181 programma afhankelijk van een niet-vrije C-bibliotheek. Voordat we Linux 182 hadden, de eerste vrije kernel, was ieder programma afhankelijk van een 183 niet-vrije kernel. Voordat we Bash hadden moest ieder script 184 geïnterpreteerd worden door een niet-vrije shell. Deze beperkende 185 afhankelijkheden waren onvermijdelijk maar dit was acceptabel omdat ons plan 186 was ze in de toekomst hiervan te redden. Ons hogere doel, een zelfstandig 187 besturingssysteem, zou een vrije vervanging hebben voor al deze 188 afhankelijkheden; wanneer we dit doel zouden bereiken zouden al onze 189 programma's gered zijn. Aldus geschiedde: met het GNU/Linux-systeem kunnen 190 we deze programma's laten draaien op een vrij platform. 191 </p> 192 193 <p> 194 Vandaag de dag is het anders. We hebben krachtige vrije besturingssystemen 195 en een hoop vrije programmeer-hulpmiddelen. Wat je ook wilt doen, je kunt 196 het op een vrij platform doen; er is geen reden meer om een niet-vrije 197 afhankelijkheid te accepteren, zelfs niet voor even. Mensen raken 198 voornamelijk nog verstrikt omdat ze er niet goed over nadenken. De simpelste 199 oplossing voor deze Java-valstrik is door mensen aan te leren dit te 200 vermijden. 201 </p> 202 203 <p> 204 Om je Java-code te beschermen tegen de Java-valstrik moet je een vrije 205 Java-ontwikkelomgeving installeren en die gebruiken. Meer in het algemeen, 206 wat voor taal je ook gebruikt, let op en controleer de vrije status van de 207 afhankelijkheden van je programma. De makkelijkste manier om dit na te gaan 208 is door te kijken of het programma in de <a 209 href="https://www.fsf.org/directory">lijst van vrije software</a> staat. Als 210 hij niet in die lijst voorkomt dan kun je altijd nog zijn licentie nagaan op 211 de lijst van vrije licenties (<a href= "/licenses/license-list.html"> 212 http://www.gnu.org/licenses/license-list.html</a>). 213 </p> 214 215 <p> 216 We proberen nu de verstrikte Java-programma's te redden dus als je een zwak 217 hebt voor Java wordt je van harte uitgenodigd om te helpen bij de 218 ontwikkeling van GNU Classpath. Het testen van je programma met de 219 GCJ-compiler en GNU Classpath en problemen met reeds gebouwde klassen 220 rapporteren is ook nuttig. Het afmaken van GNU Classpath vergt echter tijd; 221 indien er meer niet-vrije programmabibliotheken toegevoegd blijven worden 222 zullen we wellicht nooit bij raken. Dus keten je vrije software alsjeblieft 223 niet. Wanneer je nu een applicatie gaat schrijven, doe het dan zo dat het 224 vanaf het begin op vrije voorzieningen draait. 225 </p> 226 227 <h3 class="footnote">Zie ook:</h3> 228 <p><a href="/philosophy/sun-in-night-time.html">Het Merkwaardige Incident van 229 Sun in de Nacht</a></p> 230 </div> 231 232 <div class="translators-notes"> 233 234 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 235 </div> 236 </div> 237 238 <!-- for id="content", starts in the include above --> 239 <!--#include virtual="/server/footer.nl.html" --> 240 <div id="footer" role="contentinfo"> 241 <div class="unprintable"> 242 243 <p>Gelieve algemene vragen over FSF & GNU te sturen naar <a 244 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Er zijn ook nog <a 245 href="/contact/">andere manieren om in contact te komen</a> met de 246 FSF. Foute links en andere correcties graag sturen aan <a 247 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 248 249 <p> 250 <!-- TRANSLATORS: Ignore the original text in this paragraph, 251 replace it with the translation of these two: 252 253 We work hard and do our best to provide accurate, good quality 254 translations. However, we are not exempt from imperfection. 255 Please send your comments and general suggestions in this regard 256 to <a href="mailto:web-translators@gnu.org"> 257 258 <web-translators@gnu.org></a>.</p> 259 260 <p>For information on coordinating and contributing translations of 261 our web pages, see <a 262 href="/server/standards/README.translations.html">Translations 263 README</a>. --> 264 We doen ons best om goede vertalingen te maken maar staan altijd open voor 265 verbeteringen. Suggesties, op- en aanmerkingen sturen aan: <a 266 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> 267 <p>Zie <a href="/server/standards/README.translations.html"> Translations 268 README</a> voor informatie over het onderhoud van vertalingen op deze 269 website.</p> 270 </div> 271 272 <!-- Regarding copyright, in general, standalone pages (as opposed to 273 files generated as part of manuals) on the GNU web server should 274 be under CC BY-ND 4.0. Please do NOT change or remove this 275 without talking with the webmasters or licensing team first. 276 Please make sure the copyright date is consistent with the 277 document. For web pages, it is ok to list just the latest year the 278 document was modified, or published. 279 280 If you wish to list earlier years, that is ok too. 281 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 282 years, as long as each year in the range is in fact a copyrightable 283 year, i.e., a year in which the document was published (including 284 being publicly visible on the web or in a revision control system). 285 286 There is more detail about copyright years in the GNU Maintainers 287 Information document, www.gnu.org/prep/maintain. --> 288 <p>Copyright © 2004, 2010, 2015, 2021 Richard Stallman</p> 289 290 <p>Deze pagina is uitgebracht onder de <a rel="license" 291 href="http://creativecommons.org/licenses/by-nd/4.0/deed.nl">Creative 292 Commons Naamsvermelding-GeenAfgeleideWerken 4.0 Internationaal licentie</a>.</p> 293 294 <!--#include virtual="/server/bottom-notes.nl.html" --> 295 <div class="translators-credits"> 296 297 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 298 <strong>Vertaling:</strong> <a 299 href="//savannah.gnu.org/projects/www-nl">www-nl</a></div> 300 301 <p class="unprintable"><!-- timestamp start --> 302 Bijgewerkt: 303 304 $Date: 2021/10/01 17:39:49 $ 305 306 <!-- timestamp end --> 307 </p> 308 </div> 309 </div> 310 <!-- for class="inner", starts in the banner include --> 311 </body> 312 </html>