Java is een object-georiënteerde programmeertaal. Historisch gezien is Java een platformonafhankelijke taal die qua syntaxis grotendeels gebaseerd is op de (eveneens object-georiënteerde) programmeertaal C++, die weer op de niet-objectgeöriënteerde programmeertaal C gebaseerd is. Java beschikt echter over een uitgebreidere bibliotheek met 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.
Java ontstond begin jaren '90 bij 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 een koffiesoort uit Indonesië. Later bouwden ze voort op deze terminologie en introduceerden de 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 in populariteit groeide, 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.
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. Zie hiervoor Java 2 Micro Edition.
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 processor systemen tot de grote supercomputers.
De reden van deze enorme versatiliteit 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 mogelijke veranderingen aan de taal zelf. In plaats daarvan is al vroeg gekozen voor de optie om de object-geörië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 in de praktijk gebleken zijn goed te werken.
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.
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.
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++.
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.
Het concept van de Virtuele Machine is natuurlijk 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 sucesvolle .NET runtimes voor Linux uitgebracht, waarvan Mono de meest bekende is, waarmee ook .NET code op andere operating systemen kan draaien.
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); } }
جافا | Java | Llenguatge Java | Java | Java (programmeringssprog) | Java (Programmiersprache) | Java | Java programming language | Java | Lenguaje de programación Java | Java | زبان برنامهنویسی جاوا | Java | Java (langage) | Linguaxe Java | Java | Java (programski jezik) | Java programozási nyelv | Java | Java (forritunarmál) | Java (linguaggio) | Java言語 | Java პროგრამული ენა | 자바 프로그래밍 언어 | Java (kalba) | Java (valoda) | Јава (програмски јазик) | Java (programmeringsspråk) | Java | Java (linguagem de programação) | Java | Java | Programski jezik Java | Java | Java (programspråk) | ஜாவா நிரலாக்க மொழி | ภาษาจาวา | Java programlama dili | Мова програмування Java | Java (ngôn ngữ lập trình) | Java
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Java (programmeertaal)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world