Jle Inleiding

Doelgroep

Deze initiatiecursus richt zich specifiek tot mensen die hun eerste stappen in Java willen zetten. Wie Java wil leren kennen, doet alvast een financieel goede keuze. Wie over een internetconnectie beschikt, kan Java gratis van het net plukken.

Als je voldoende hebt aan een editor zoals Notepad of Wordpad, kan je na de installatie van de Java Software Development Kit (SDK) al direct aan de slag en javaprogramma’s schrijven. Wie een IDE of ontwikkeltool zoekt, kan eveneens op het net terecht zonder een licentie te moeten betalen. Er zijn diverse IDE’s gratis beschikbaar. In deze cursus hebben we gekozen voor Eclipse.

Als je je applicatie wil uitbreiden met een databank, kan je een beroep doen op MySQL. En ook deze databank is gratis op het internet beschikbaar. Kortom, Java is de gedroomde omgeving voor wie studiewerk wil doen zonder zich blauw te betalen aan licenties.

Java bestaat uit een hele reeks voorgedefinieerde classes en het duurt een hele tijd voor je het grootste deel van die classes onder de knie hebt. Wie een GUI wil bouwen, kan beroep doen op AWT of Swing. Wie voor een web applicatie kiest, kan de schermen bouwen in HTML. Met de nodige java code tussen de HTML tags, heb je een JSP of Java Server Page. Je hebt dus veel sneller een applicatie gebouwd zonder dat je de Swing classes hebt geleerd : kennis van HTML volstaat. Een tweede voordeel van java web applicaties is dat je je applicatie kan aanbieden op het internet. En dus is ze voor iedereen beschikbaar zonder dat ze eerst lokaal geïnstalleerd moet worden. Voor een Java web applicatie heb je een servlet container nodig. Zo’n container is Tomcat en ook deze software kan gratis en legaal van het internet gehaald worden.

Het einddoel van deze cursus is het bouwen van een volledige e-shop of elektronische winkel. Het schoolvoorbeeld van zo’n e-shop is amazon.com dat wereldwijd gekend is. Via het internet kan je produkten kopen en in je winkelkarretje leggen. Aan het einde van je tocht door de internetcatalogus kan je met je aankopen naar de virtuele kassa rijden. Een gelijkaardige applicatie willen we in deze cursus bouwen. Daarvoor maken we gebruik van de volgende software :

  • Java SDK
  • Eclipse
  • MySQL
  • Tomcat

geschiedenis van Java

Star 7

gosling.jpg

In 1991 is een groep van 4 ingenieurs hun eigen toekomst bij Sun aan het overpeinzen : blijven ze bij Sun of willen ze een eigen project opstarten ? Van de directie krijgen ze de toestemming en de tijd om hun ideeën uit te werken. Deze 4 ingenieurs - Frank, Gosling, Naughton en Sheridan - krijgen een lokaal achter een groene deur en noemen hun project daarom “the Green Project”. Nu chips in allerlei toestellen begonnen op te duiken, zoals video recorders, toasters, was het eerste grote idee van deze 4 de ambitie om alle elektronische toestellen met elkaar te verbinden.

Als je met verschillende toestellen wil werken, is het handig om een universele afstandsbediening te hebben die op al deze toestellen kan bedienen. Dit toestel werd “*7” (Star seven) genoemd en James Gosling schreef de applicatie voor dit toestel. Al snel stootte hij op het probleem dat een applicatie moest herschreven worden als je het op verschillende processoren wil laten lopen. Om dit probleem op te lossen startte hij de ontwikkeling van een programmeertaal en een software interpreter. Na enkele weken was de virtuele machine klaar. De programmeertaal werd “oak” genoemd, naar de eik waarop zijn venster uitgaf.

duke3.gif

Het eerste prototype van *7 was een draadloze handcomputer met een groot raakscherm. Als je de applicatie startte door het scherm aan te raken, verscheen er een figuurtje, “duke” genaamd, dat de gebruiker de nodige uitleg gaf bij het gebruik van deze afstandsbediening. Duke is een creatie van Joe Palrang.
In augustus 1992 werd het eerste prototype van *7 getoond aan Scott McNealy, CEO van Sun. Die zag meteen de mogelijkheden van dit toestel : in de toekomst zou je hiermee een TV gids kunnen raadplegen, een programma selecteren, dit naar het ikoon van een videorecorder slepen om het programma op video op te nemen. Het “Green Team” werd een aparte dochteronderneming van Sun en mocht zich voortaan First Person, Inc noemen.

First person

De “First Person” ploeg verhuisde naar een nieuw gebouw in Palo Alto. In deze periode was het idee van “information highway” via het internet opgeld aan het maken. De digitale televisie was hier een onderdeel van. En dus werd een nieuw project gestart, genaamd “MovieWood”. Doel van dit project was om een programma via het internet op te zoeken, te selecteren en op de TV te tonen.Hiervoor werd er een Oak browser gemaakt die over een runtime environment beschikte. In deze runtime environment konden kleine applicaties of “applets” lopen.

java-express.jpg

Time Warner, een grote speler op het vlak van media, televisie en film, betoonde interesse maar trok zich na een paar maanden terug. Dit was een grote tegenvaller voor First Person. En blijkbaar was er geen ander bedrijf toen geïnteresseerd in digitale televisie. Hierdoor verliet één derde van de 50 werknemers First Person. En net als het ernaar uitziet dat First Person zal worden opgedoekt door Sun, is er die demonstratie op de TED conferentie in Californië. De demonstratie toont dat voortaan ook beweging mogelijk is in een internet browser.

Hiermee heeft Oak zijn roeping gevonden : het internet. Alleen moet er nog een nieuwe naam gevonden worden voor Oak. Er is namelijk al een bedrijf met de naam Oak Technologies. De oorsprong van de naam “Java” kent verschillende versies. Maar waarschijnlijk heeft men de naam gekozen in een coffeeshop.

Eerste release

De naam “Java” duikt voor het eerst op in een plaatselijke krant in maart 1995. In die periode wordt ook de eerste release van Java via het internet beschikbaar gesteld. En de eerste downloads worden al snel een feit. Het duurt niet lang voor het deel van de website gewijd aan Java meer bezoekers krijgt dan de rest van Sun’s website. Op 23 mei 1995 kondigt Scott McNealy de Java technologie aan op Sunworld Conference. En hij kan de bezoekers al meedelen dat de Netscape navigator in de nabije toekomst met Java wordt uitgerust. Met hard werk wordt deze klus door First Person geklaard.

java_compatible.gif

Eén jaar later komt de grote test : Sun organiseert in San Francisco de eerste JavaOne Conferentie. Maar het voorspellen van het aantal aanwezigen is bijzonder moeilijk. Een vergelijkbare conferentie van Netscape trok 1500 geïnteresseerden aan. Als JavaOne een gelijkaardig aantal zou aantrekken, zou het een succes zijn. En het werd meer dan dat : Sun zag zich genoodzaakt de reservaties te stoppen toen er 5000 inschrijvingen waren. In 1997 waren er 8000 inschrijvingen, in 1998 15.000 en in 1999 werd de maximum capaciteit van 20.000 aanwezigen bereikt.

De slogan “write once, run anywhere” geeft de ambitie van Java goed weer : Java wil alomtegenwoordig zijn. De belofte dat je applicatie op eender welk toestel kan draaien, vereistte wel dat er voor ieder besturingssysteem/processor combinatie een Java Virtual Machine beschikbaar was. En dus moest Sun hierover onderhandelen met de andere groten zoals Microsoft, IBM, Oracle. Om dit te bereiken werd de Java broncode vrij op het internet beschikbaar gezet. Er moest over gewaakt worden dat de bedrijven niet een eigen versie van Java zouden maken . Het logo “java compatible” gaf aan dat Java-applicaties beantwoorden aan de vereisten om op alle JVM te kunnen lopen.

JCPlogo.gif

De alomtegenwoordigheid van Java waar Sun naar streeft, kan niet zonder de samenwerking met andere informatica-bedrijven. Deze samenwerking wordt bewaakt door de Java Community Process, een consortium gesticht door Sun in 1998 waarop bedrijven en particulieren welkom zijn om de javataal te doen evolueren. Wie iets wil wijzigen aan Java, kan hiervoor een JSR of Java Specification Request indienen.
Je kan Java alomtegenwoordig maken door de bestaande applicaties volledig te herschrijven. Of je kan ervoor kiezen je aan te passen aan de reeds bestaande omgevingen en Java hiermee te laten werken. Sun heeft voor de laatste optie gekozen. En zo is JDBC of Java database connectivity ontstaan, een set van API’s om met databanken te kunnen werken. Dit heeft dan aanleiding gegeven tot een verzameling van voorschriften over hoe je een Java applicatie kan doen werken met andere bedrijfsapplicaties. Deze verzameling staat bekend onder de naam J2EE of Java 2 Enterprise Edition. We komen hier later nog op terug.

Van in den beginne was het de bedoeling Java aan te bieden op allerlei toestellen. Java is dus mobiel geworden in een dubbele betekenis : Java functioneert niet alleen op computers, van PC tot mainframe, maar is tevens verhuisd naar kleinere toestellen, van de zogenaamde mobieltjes tot PDA’s . En Java is ook aanwezig op de zogenaamde Java smart cards. Het eerste bedrijf dat een smart card maakte, was Axalto. Dit Franse bedrijf maakte een subset van Java die paste op de kleine chip van een smart card.
Een smart card heeft de grootte van een credit card. Deze card bevat een ingebedde microprocessor die voldoende procescapaciteit en geheugen heeft om instructies en gegevens op te slaan.
In 2005 vierde Sun de 10e verjaardag van Java. Op die 10 jaar is Java uitgegroeid tot een programmeertaal die je zowat overal vindt : op computers, gaande van personal computers tot mainframes, op draagbare toestellen zoals GSM’s en PDA’s, op smart cards. En Java heeft het zelfs al gepresteerd om de aarde te verlaten. De Mars rover van NASA kreeg ogen dankzij Java dat de gegevens van de camera omvormde tot beelden.

En dichter bij huis heeft de Belgische regering gekozen voor de Java Card om de Belgische elektronische identiteitskaart mogelijk te maken. We komen verder in dit hoofdstuk nog terug op verschillende toepassingen van Java. Maar één ding is duidelijk : Java is nog zeer levendig op zijn 10e verjaardag.

Java10jaar.jpg

Structuur van Java

JVM, JRE en JDK

De slogan “write once, run anywhere” kan vertaald worden als “schrijf eenmaal, voer eender waar uit”. Dit houdt dus de belofte in dat je een Javaprogramma slechts eenmaal moet schrijven en vervolgens kan uitvoeren op eender welk besturingssysteem : Windows, Unix, Linux, OS/400, om er maar enkele te noemen.

Een C-compiler vertaalt een C-programma in assemblercode of machinetaal. Deze code wordt enkel begrepen door de computer waarvoor de compiler is gebouwd. Een C-compiler onder Windows zal het C-programma vertalen in assembler die door Windows kan uitgevoerd worden. Plaats de assemblercode op een Linuxmachine en de code zal daar niet werken. In dit geval zal je het C-programma moeten hercompileren. En bij deze hercompilatie loop je dan het risico dat bepaalde instructies door de Linux C-compiler niet meer begrepen worden. Met als gevolg dat je deze instructies moet herschrijven. Gevolg : je eindigt met 2 verschillende programma’s die in wezen hetzelfde moeten doen. En bij iedere verhuis naar een ander besturingssysteem heb je hetzelfde probleem.

Een Javacompiler vertaalt het Javaprogramma in Java bytecode. Deze bytecode kan op eender welke omgeving werken zonder dat er een nieuwe compilatie aan te pas komt. Het herschrijven van bepaalde stukken Javacode is eveneens overbodig. Een Javaprogramma werkt op eender welke computer op identiek dezelfde manier.

bytecode_run.png

De Java-omgeving maakt abstractie van de diverse soorten computers. Men gaat er dus van uit dat er slechts één enkele computer is. Die noemt men de Java Virtual Machine of JVM. Voor deze ene computer wordt er bytecode gemaakt. De JVM garandeert dat de code op dezelfde wijze wordt uitgevoerd ongeacht het besturingssysteem dat eronder zit.

Java is een programmeertaal, en net zoals bij menselijke talen is er een syntax, een semantiek, grammatica en een basiswoordenschat. Deze basiswoordenschat zijn de Java API classes. API staat voor Application Program Interface en kan beschouwd worden als de bouwstenen die de programmeur kan gebruiken voor het bouwen van de applicatie. In andere woorden, een API geeft de programmeur de gelegenheid om niet telkens weer het warm water te moeten uitvinden én het zorgt voor een gestandaardiseerde manier van werken. Zo biedt Java de class String aan die de programmeur toelaat om met letterreeksen of woorden te werken. Een andere API is JDBC of Java Database Connectivity. Deze API geeft de programmeur de mogelijkheid om gegevens uit databanken te halen.

Het geheel van de Java Virtual Machine en de Java API classes vormt de Java Runtime Environment of JRE. Het is deze omgeving die je moet installeren op je computer alvorens je Javaprogramma’s kan uitvoeren.

JDK.jpg

De Java Virtual Machine vertaalt de bytecode naar de machinetaal van de computer waarvoor de JVM is gemaakt. Voor iedere combinatie van besturingssysteem en processor is er een JVM gemaakt. Het is de JVM die zorgt voor de uitvoering van de Java bytecode.

Wil je zelf ook Javaprogramma’s schrijven, dan heb je niet voldoende aan de JRE. In dat geval moet je de JDK of Java Development Kit installeren. Indien je de JDK installeert, krijg je de Javacompiler erbij. Deze compiler spreek je aan met het commando javac gevolgd door het javaprogramma dat je wil compileren. Ieder Javaprogramma heeft de extensie “.java”. Compileren betekent het omzetten naar de bytecode die de extensie “.class” heeft. Om de bytecode uit te voeren, roep je de JVM aan met het commando “java” gevolgd door de naam van het bytecode bestand. De installatie en het gebruik van de compiler worden later nog uitvoerig behandeld.

diverse Javasmaken

javaHazelnut.gif

Net zoals de Javakoffie, komt de Java-omgeving in verschillende smaken. Er is de standaard omgeving, de omgeving voor bedrijven, de omgeving voor mobiele toestellen. En er is een Javaversie voor interactieve digitale televisie. Deze omgevingen worden voorgesteld door hun respectievelijke letterwoorden : J2SE, J2EE, J2ME en MHP.
J2SE staat voor Java 2 Standard Edition. Deze standaard editie wordt als volgt voorgesteld op de webstek van Sun (http://java.sun.com/j2se/overview.html).

j2se5.gif

De J2 SDK komt in 2 soorten. Je kan ervoor kiezen genoegen te nemen met de Java Runtime Environment : in dat geval kies je voor de Java Virtual Machine en de Java API’s, de basisklassen die tot de Java-omgeving behoren. Of je kiest voor de Java Development Kit zodat je ook zelf je eigen Javaprogramma’s kan ontwikkelen.

Voor eenvoudige Java-applicaties volsta je ruimschoots met J2SE. Wil je daarentegen applicaties ontwikkelen voor bedrijven, dan moet je een beroep doen op Java 2 Enterprise Edition of J2EE. J2EE is een verzameling van technieken en praktijken die voorschrijven hoe je een multi-tier applicatie kan ontwikkelen.

Een multi-tier of meerlagige applicatie verwijst naar het aantal lagen waarin een applicatie is onderverdeeld. Bij een 2-tier ontwerp zijn er 2 lagen : de applicatie en de database. Bij een 3-tier ontwerp zijn er 3 lagen : de user interface, de bedrijfslogica en de database.

Javalagen.jpg
Javacard.jpg

J2EE reikt de ontwikkelaar een aantal technieken en praktijken aan die hem/haar helpen bij het ontwikkelen van een meerlagige applicatie. Java is ook beschikbaar voor draagbare toestellen zoals een GSM, een PDA, een GPS. De subset van Java die voor dit soort toestellen ontworpen is, noemt men J2ME of Java 2 Mobile Edition. Overigens mag je “draagbaar” zeer ruim nemen : J2ME richt zich voornamelijk op wat men in het Engels “consumer electronics” noemt. Daar horen dus ook TV-toestellen bij. Binnen J2ME heb je ook MHP of Multimedia Home Platform. Dit is de subset van Java die zich richt tot het programmeren van applicaties voor iDTV .

En dan is er ook de Java Card, waarmee je applicaties kan maken voor zogenaamde smart cards, met beperkt geheugen en processor capaciteit.

versies

De versienummering bij Java is niet altijd even duidelijk en dat is historisch zo gegroeid. Java is gestart in 1995 met versie 1.0. Vanaf versie 1.2 is de 2 blijven hangen in letterwoorden zoals J2SE, J2EE, J2ME. Versie 1.3 kwam uit in 2000 en versie 1.4 zag het licht in 2002.

JavaTiger.jpg

In oktober 2004 werd Java 1.5.0 gereleased. Het is vanaf dan dat er meerdere versienummers voor eenzelfde versie van Java gebruikt werden. Java 1.5.0 wordt ook genummerd als Java 5.0. En er is ook een codewoord voor : Java Tiger.
De hele geschiedenis van nummering en het synoniem gebruik van Java 5.0 en Java 1.5.0 kan je nalezen op http://java.sun.com/j2se/j2se-namechange.html. Hier lees je ook dat Sun de “2” in de letterwoorden J2SE, J2EE en J2ME laat wegvallen. Je leest dus meer en meer over JEE, JSE en eventueel wordt er dan de “5” aan toegevoegd die verwijst naar Java 5.0. Momenteel zijn er zeker nog bedrijven die werken met Java 1.4 en zelfs Java 1.3. Sun wil de klanten echter overhalen om in de nabije toekomst over te stappen naar Java 5.0. En wie al daar is aanbeland, kan het beste overstappen naar de opvolger van Java 5.0, met name Java 6.0 mustang.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License