CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Java (programmeertaal) - Wikipedia

Java (programmeertaal)

Portaal Javaplatform

Java is een objectgeoriënteerde programmeertaal. Historisch gezien is Java een platformonafhankelijke taal die qua syntaxis grotendeels gebaseerd is op de (eveneens objectgeoriënteerde) programmeertaal C++, die weer op de niet objectgeoriënteerde programmeertaal C gebaseerd is. Java beschikt echter over een uitgebreidere bibliotheek met meer standaardklassen dan C++.

De ontwikkelaars van de taal Java - de 'werknaam' was Oak - waren zo verzot op het stimulerende middel koffie dat ze hun nieuwe taal naar hun favoriete soort genoemd hebben.

Inhoud

[bewerk] Geschiedenis

Java ontstond begin jaren '90 in een klein dochterbedrijf van Sun Microsystems onder leiding van James Gosling. Dat bedrijfje, First Person (met onder meer Arthur van Hoff en Patrick Naughton), had als opdracht: "make something cool". In de beginjaren richtte het bedrijfje zich op software voor settop-boxen. Toen enkele onderhandelingen op het nippertje mislukten begonnen ze aan Java. De werknaam Oak werd gekozen toen men naar buiten keek bij het zoeken naar een naam, en daar een eik (Engels: Oak) zag staan. Er bleek echter al een computertaal met die naam te bestaan.

Na studie bleek dat mensen geïnteresseerd zijn in nieuwe zaken die iets met eten te maken hebben of hen aan eten doen denken. Om deze nieuwe taal te doen aanslaan hebben de ontwikkelaars besloten de naam te kiezen van hun populaire Java Koffie. Java is een koffiesoort uit Indonesië. Later bouwden ze voort op deze terminologie en introduceerden ze JavaBeans (bonen) en jar-archieven (Java ARchive) (een jar is een pot).

Aanvankelijk wilde men Java promoten als programmeertaal voor allerhande elektronische apparaten, zoals televisies, afstandsbedieningen en koelkasten. Maar toen het World Wide Web meer en meer aan populariteit won, bedacht Sun dat ze hun (toen nog steeds niet al te populaire) taal goed konden gebruiken in een webomgeving. Dankzij de open specificatie en de mogelijkheid om een Java-programma als applet in een webpagina in te bedden (ook wel "embedden" genoemd) was de hype al snel gecreëerd.

Het gebruik van Java voor kleine apparaten werd korte tijd later toch gerealiseerd met het uitbrengen, in 1997, van de Java Card technology, waarmee chipkaarten in Java geprogrameerd kunnen worden. Deze techniek werd al gauw na de introductie in de GSM-wereld geadopteerd voor gebruik in de SIM-kaart. Het blijkt aan te slaan en in 2005 wordt deze Java-techniek in meer dan 80% van de uitgegeven SIM-kaarten toegepast.

De volgende generatie Java bood vervolgens de mogelijkheid om Java-programmatuur op servers zelf uit te voeren (Engels: 'server-side'). Dit gebeurt in de vorm van servlets, Enterprise JavaBeans en Java Server Pages. Met name op dit gebied heeft Java de afgelopen jaren zijn kracht bewezen en wordt de taal gezien als een belangrijke omgeving voor webapplicaties. Zie ook Java 2 Enterprise Edition.

Sterk in opkomst is de Java-versie die bedoeld en geschikt is voor apparatuur met een beperkte verwerkingscapaciteit, zoals PDA's en mobiele telefoons. En, eindelijk, ook in de settopbox. Zie hiervoor Java 2 Micro Edition.

[bewerk] Kracht door eenvoud en recycling

Sinds haar introductie heeft Java een enorme vlucht genomen op het gebied van de mogelijkheden van het systeem als geheel. Van een relatief simpele taal met een vrij standaard bibliotheek aan functionaliteit heeft het platform Java (meer dan de taal Java) zich ontwikkeld tot een entiteit die zeer breed ingezet kan worden, in vrijwel alle probleemdomeinen en op vrijwel ieder type platform – van de kleine embedded-processorsystemen tot de grote supercomputers.

De reden van deze enorme veelzijdigheid van het geheel dat Java is, is ongetwijfeld te vinden in de combinatie van een taal die relatief simpel gebleven is met een eeuwig uitdijende bibliotheek van klassen, die daarnaast ook nog eens uitgebreid kan worden met externe bibliotheken.

De taal Java is nauwelijks veranderd sinds het uitbrengen van Java 1.0 in 1995. Er is een klein aantal sleutelwoorden bijgekomen en de syntaxis is wat uitgebreid. Maar in essentie is en blijft de taal Java een geheel dat bestaat uit een relatief klein aantal sleutelwoorden en syntactische toegestane combinaties van die sleutelwoorden. Dit betekent dat het mogelijk is om met een relatief kleine inspanning (het leren van de syntaxis van de basistaal) de mogelijkheden van het hele arsenaal aan mogelijkheden dat Java als platform biedt, aan te boren.

Sinds de introductie in 1995 hebben de ontwikkelaars er altijd voor gekozen om nieuwe functionaliteit in het platform in te voeren met zo min mogelijk veranderingen aan de taal zelf. In plaats daarvan is al vroeg gekozen voor de optie om de objectgeoriënteerde eigenschappen van Java zo veel mogelijk uit te buiten door het overhevelen van zo veel mogelijk functionaliteit van de taal naar de klassenbibliotheken. Hierdoor wordt het mogelijk om steeds met dezelfde, kleine taalkern de vele en steeds weer nieuwe mogelijkheden van Java te gebruiken door gebruik te maken van objecten die de nieuwe functionaliteit voorstellen – iedereen die de taalkern kent, kan elke functionaliteitsuitbreiding op het platform gebruiken die er ooit was of die er ooit zal zijn en hoeft daarvoor alleen maar te weten wat de nieuwe klassen precies "doen" in plaats van het hoeven leren van hele nieuwe taalconstructies om hetzelfde te bereiken.

Naast het hierboven beschreven principe van "veel uit weinig", is er zonder twijfel ook nog een tweede reden achter de grote vlucht die Java genomen heeft: het feit dat Java totaal niet innovatief is. Er is in het hele, officiële Java-platform niets, niet één ding, te vinden dat niet al eens ergens anders al een keer gedaan is. De meeste software, zeker in zakelijke toepassingen, werd tot 1997 geschreven in C, C++ of Pascal-dialecten. Java bracht enkele vernieuwingen bij de niet-academische softwareontwikkelaar zoals de virtuele machine, de garbage collector en het ontbreken van pointers. Deze ideeën waren echter niet nieuw: in diverse (al dan niet academische) programmeertalen waren ze al te vinden en beproefd.

Wat dat betreft is Java heel duidelijk geen onderzoeksplatform, maar veel meer een praktisch platform – de ontwikkelaars van Java hebben altijd, bij elke nieuwe ontwikkeling, eerst rustig rondgekeken naar de verschillende uitwerkingen van het nieuwe idee voordat ze zelf tot toepassing overgingen. Deze aanpak heeft er weliswaar toe geleid dat Java vaak op bepaalde gebieden achter de feiten aanhobbelt, maar ook dat de uiteindelijke implementatie in Java meestal gebaseerd is op de keuzes die zich in de praktijk bewezen hebben.

Het is overigens bijzonder te noemen dat Java, ondanks deze instelling, door vele onderzoeksgroepen ter wereld nou juist wel gebruikt wordt als basis voor hun eigen onderzoek naar uitbreidingen van programmeertalen. Het is de toepassing van de Virtual Machine – die het makkelijk maakt om aanpassingen aan de taal en de structuur te incorporeren in het runtime systeem – die het platform flexibel genoeg maakt om ook voor deze toepassing bruikbaar te zijn.

[bewerk] Algemeen belang

Gedurende de jaren '90 is Java redelijk populair geworden. In de meeste gevallen leek Java alleen goed voor gebruik in het onderwijs en voor webapplicaties, respectievelijk vanwege de strakke syntaxis en de mogelijkheid "applets" in webpagina's in te bouwen. Door kleine verschillen in Java-versies tussen diverse browsers is het gebruik van applets eigenlijk nooit echt van de grond gekomen, wat geleid heeft tot de introductie van de Java Plug-In: in plaats van een Java virtuele machine door de browserbouwer in te laten bouwen, kan de gebruiker hem zelf downloaden wanneer dat nodig is. Hiermee wordt incompatibiliteit tussen JVM's van verschillende merken omzeild.

Een ander platform waar Java veel wordt gebruikt is de mobiele telefoon. Veel toestellen bieden de mogelijkheid om Java programma's uit te voeren. Deze programma's moeten dan wel voldoen aan de specificaties die zijn vastgelegd in de Java 2 Micro Edition standaard.

Het gebruik van Java-programma's in servers is meer en meer toegenomen sinds het implementeren van Just In Time-compiling, dat op het niveau van de Java Virtual Machine een grote versnelling van de uitvoering met zich meebracht, waardoor de eerder trage Java-programma's nu ook bruikbaar werden voor server-applicaties. Daarnaast bevatten de J2EE (Enterprise Edition) bibliotheken een groot aantal klassen voor het programmeren van (web)server applicaties, het communiceren met gegevensbestanden en het gebruik van allerlei generieke diensten. De meeste Internet-gebaseerde bankdiensten in Nederland bijvoorbeeld draaien inmiddels op Java-technologie. Het open source Content Management Systeem van Nederlandse bodem MMBase, is geheel geschreven in Java.

Java is door de eenvoud en webbased-mogelijkheden ook erg populair als programmeertaal voor computerspellen. Een erg mooi voorbeeld hier van is RuneScape.

[bewerk] Java versus C++

Java wordt gecompileerd naar byte-code voor een virtuele machine. Dit soort virtuele machines zijn beschikbaar voor allerlei verschillende soorten computers. Hierdoor is de gecompileerde byte-code platform-onafhankelijk. Er is dus maar één (virtueel) platform: de JVM (Java Virtual Machine).

C/C++ broncode wordt meestal direct naar machinetaal gecompileerd waardoor de uitvoerbare bestanden slechts op één doelplatform draaien. De Java-byte-code wordt JIT (Just In Time dus op het laatst mogelijke moment) gecompileerd naar machinetaal. Bij deze JIT-compilatie worden ook de dynamische eigenschappen van een programma meegenomen. Het kan gebeuren dat veelgebruikte byte-code opnieuw wordt gecompileerd omdat in een gebleken situatie met een iets andere compilatie grote snelheidswinsten te boeken zijn.

Hierdoor zal een Java programma in eerste instantie langzamer draaien dan vergelijkbare programma's die direct naar machinetaal gecompileerd zijn. In de begintijd van de programmeertaal Java was het JIT-compileren ook nog niet volledig geïmplementeerd. Hierdoor heeft Java een serieus imagoprobleem opgelopen dat nog steeds voortduurt, ondanks het feit dat Java tegenwoordig competitief presteert.

Daarnaast wordt van Java ten opzichte van C++ soms als nadeel aangemerkt dat voor de taal C++ onafhankelijke ISO/ANSI-comitées bestaan, terwijl Java nog steeds in handen lijkt te zijn van Sun Microsystems. Anderen beweren dat daar tegenover staat dat Java nog de mogelijkheid heeft om te groeien, zich aan te passen en nieuwe ontwikkelingen in te bouwen, terwijl C++ door standaardisatie verstard is en dus aan alle kanten door allerlei ontwikkelingen ingehaald wordt.

In Java wordt de programmeur beter tegen zichzelf beschermd dan in C++ en C. Zo is er in Java bijvoorbeeld geen pointer-manipulatie. Dit is een voordeel omdat fouten bij het gebruik van pointers moeilijk te traceren zijn, maar het is ook een nadeel omdat het de vrijheid van de programmeur beperkt.

Een ander belangrijk verschil tussen Java en C++ is het ontbreken van expliciet geheugenbeheer in Java: Java houdt zelf bij welke objecten met de new-operator zijn aangemaakt en verwijdert deze automatisch zodra er geen referenties meer naar die objecten zijn. Daarnaast is exceptionhandling grondiger en correcter geregeld dan in C++.

Net als C++ ondersteunt Java (vanaf versie 5) ook generiek programmeren. Belangrijk verschil tussen C++ en Java is dat geparametriseerde types in C++ alleen voor de compiler bestaan, en in Java ook at runtime. In C++ is het dus niet mogelijk om bijvoorbeeld een bibliotheek te schrijven met geparametriseerde klassen die pas at runtime gekoppeld worden. Een List<T> klasse die in een bepaalde bibliotheek zit moet opnieuw worden gecompileerd als deze wordt geparametriseerd voor een type en de parametrisatie daarvan niet in de bibliotheek al is voorgecompileerd. Dat is ook de reden waarom STL, de standaardbibliotheek van C++, vrijwel alleen in header-files gedefinieerd is: de applicatie die STL gebruikt, zal eigen versies van de klassen moeten compileren.

Sommigen vinden Java een iets overzichtelijkere taal dan C++, maar dat is een kwestie van smaak: het schrijven van totaal onbegrijpelijke programma's is met C(++) gemakkelijker dan met Java. Veel C++-programmeurs missen zaken die in Java bewust zijn weggelaten zoals destructors, operator overloading en pointermanipulatie. Verder klagen ze over het feit dat de garbage-collector de ongebruikte objecten niet snel genoeg vrijgeeft hetgeen voor bepaalde situaties inderdaad zo is.

[bewerk] Java en JavaScript

Veel mensen verwarren Java met JavaScript, maar in feite hebben de twee talen weinig met elkaar te maken. Ondanks het feit dat beide talen op het eerste gezicht qua syntaxis op elkaar lijken, zijn er grote verschillen:

  • Uitvoerbaarheid: JavaScript is bedoeld als scripting-taal en wordt daarom vaak geïnterpreteerd. Java wordt vaak (niet altijd!) eerst naar bytecode gecompileerd en daarna door een virtuele machine (VM) uitgevoerd.
  • Relatie tot browser: Een scripttaal dient meestal als hulpmiddel bij een programma. In het geval van een browser dient JavaScript als middel om statische webpagina's te manipuleren. Java-applets zijn echter afzonderlijke programma's die in principe geen band hebben met de webpagina waarin ze verschijnen: ze draaien in een soort 'zandbak' ('sandbox') waar ze niet uit kunnen.
  • Strong-typed vs. Weak-typed: JavaScript kent geen sterk getypeerde variabelen, wat betekent dat iedere gedeclareerde variabele ieder gegevenstype kan bevatten. In Java moet vooraf worden aangegeven welk gegevenstype een variabele kan bevatten, en als er een verkeerd gegevenstype wordt toegewezen aan een variabele wordt daar tijdens het compileren melding van gemaakt. Bij het programmeren van kleine eenvoudige applicaties vermindert het niet hoeven opgeven van datatypen de complexiteit van het coderen, en daarom is JavaScript meer geschikt voor korte, kleine applicaties. In grote applicaties is het belang van strong types veel groter, omdat het de programmeur in staat stelt in een vroeg stadium fouten op te sporen met betrekking tot verkeerd gebruik van gegevenstypen en onnodige conversies daartussen zelf in de hand kan houden.

[bewerk] Java vs .NET

Het concept van de Virtuele Machine is ouder dan Java zelf. In de jaren 70 was er de P-Code virtuele machine om Pascal programma's platform onafhankelijk mee uit te voeren. Ook Microsoft creëerde zijn eigen Virtuele Machine ofwel de Common Language Runtime of CLR, de basis van .NET. Hèt grote verschil echter tussen de Java VM van Sun en de CLR van Microsoft is dat die van Sun op verschillende operating systemen kan draaien, terwijl die van Microsoft beperkt is tot de diverse Windows versies van Microsoft. Echter er zijn inmiddels door de open source gemeenschap al een aantal succesvolle .NET runtimes voor Linux uitgebracht, waarvan Mono de meest bekende is, waarmee ook .NET code op andere operating systemen kan draaien.

[bewerk] Java en open-source

Vaak wordt Java genoemd in verband met open-source en open standaarden en op 13 november 2006 kondigde Sun Microsystems aan Java vrij te geven onder de GNU General Public License.

Al eerder had Sun het beheer van het Java Platform in handen gelegd van een onafhankelijke organisatie, het Java Community Process. Dit samenwerkingsverband van Sun met andere bedrijven, instellingen en individuele personen bepaalt welke APIs en andere standaarden onderdeel gemaakt worden van het platform. Ook bepaalt de JCP de richting van het kernplatform zelf -- welke klassen opgenomen worden in de standaardbibliotheek, welke veranderingen er doorgevoerd worden in de taal zelf. Over veranderingen in het kernplatform heeft Sun echter een veto binnen het JCP.

Sun heeft destijds een Javaontwikkelomgeving uitgebracht, Netbeans, die later vrij gegeven is in de open-sourcegemeenschap en nu door een open-sourcegemeenschap verder wordt ontwikkeld en beheerd. Ook kun je in de open-sourcewereld veel tools en software vinden voor Java en/of in Java geschreven, die worden uitgebracht onder een van de vele open-Source licentievormen.

[bewerk] Voorbeeldprogramma

Het bekende Hello world programma in Java kan er zo bijvoorbeeld uit zien:

public class HelloWorld {
 public static void main(String[] args) {
   System.out.println("Hello, world!");
 }
} 

Voor op een website (een 'applet') ziet het er zo uit:

import java.applet.*; 
import java.awt.*; 
public class HelloWorld extends Applet { 
 public void paint(Graphics g) { 
  g.drawString("Hello World!", 20, 20);   
 } 
}

[bewerk] Zie ook

[bewerk] Externe links

Wikibooks Wikibooks heeft een Cursus over dit onderwerp: Programmeren in Java
Overzicht van programmeertalen

Industrieel:
Ada | AWK | Assembler | C | C++ | C# | COBOL | Fortran | F# | Java | JavaScript | Lisp | Object Pascal | Pascal | Perl | PHP | Python | Visual Basic
Academisch:
Eiffel | Haskell | Logo | ML | Prolog | Scheme | Smalltalk
Historisch:
ALGOL | APL | BASIC | Clipper | MUMPS | PL/I | PowerBuilder | Simula


[bewerk] Bronnen

Bron(nen):
     
    Static Wikipedia 2008 (no images)

    aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

    Static Wikipedia 2007 (no images)

    aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

    Static Wikipedia 2006 (no images)

    aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

    Sub-domains

    CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

    Other Domains

    https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com