Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
2 Java als Sprache und Plattform
Die Programmiersprache Ja va zeichnet sich nic ht nu r d urch ihre klare objektorientie rte Struktur a us , sondern auch durc h die Plattfo rmunabhängigkeit der in ihr gc sehrtebenen Programme: Java-Programme laufen "überall", d.h. unabhä ngig von Betriebssystem und Prozesso r de s Rech ne rs, auf de m sie ausgeführt werden sollen.voraussetze ng dafür ist d ie spezielle Arch itektur der j uva-La ufzenumgcbung. ln deren Zentrum steht die fara Virflwl Machtue (jV!\D.
2.1 Entwicklung der ProgrammiersprachenComputer un d Programmiersprach en wurden erso nne n, um Aufgaben zu bewähtgen, die die menschliche Leistungsfähigkeit überfordern. Der Mensch entwickelt Algorithmen, jedoch IllUSS die praktische zeitraubende Durchfüh rung meist de m Co mpurer üb erlassen werden. Dabei lassen sieh drei Domä nen ausmache n, in de ne n derComputer seine üb erragende Geschwindigk eit ausspielen kann:
• Rechenintensive Aufgabenstell u ngen vo r allem im Bereich der technischwissenschaftlichen Datc nvcrurbclrung.
• ßcarbctrung seh r großer Datenmenge n . vo r allem im Bere ich der betriebewirtschaftlichen Datenverarbeitung. Es entstehe n große Darenb esräncte, in denenman au ch rasch un d gezielt auf Info rmationen zugreifen möc hte.
• Rasche Kommunikation und Vcrsand von Daten übe r große Entfernungenvia Internet. Involviert sind individuelle Nutzer, d ie mittels Einzelplatz-PC undtnrcrnetbrowscr oder auch Small Dcviccs (Handy. Smartpho nc j auf webs-rverzugrei fen, um vc rsducdcnsre Daten und Dienste über IITML-St-' iten abzufragen .Dabe i ist es Aufgabe der auf dem webserver laufenden Programm e, Daten(m eist d urch Zugri ff auf Datenbanken ) 7.ll be sch affen, au fzube reiten und an denanfragend en Nutzer zu senden.
Durch Computer werden große Daten mengen mit tels ko mplexer Algor ithmen bearbeire t. Die e ntsprechenden Programme sind nich t nur umfa ngreich, sondern au chkomplex , d .h. in Ablauf und Wirkung n icht le ich t du rchschaubar.
Letztlich werden Programme durch Pro zessoren ausgeführt. Diese ve rfügen nur übereinen fest definierten Satz elementarer Anweisungen , so dass jedes Programm beise iner Ausführung in eine Menge solcher Hemenrarbefehle übertrugen (übersetzt)werden muss . Ihbei h:lIlde!t es sich um sogen:m nte Maschinensprache :
Unter Maschinensprache versteht man e lementare Anwe isungen, die einbestimmter Pro zessor d irekt au sfü hren kan n. Die Anweisungen werden biliärtsxtten, d.h. als Folge von Nullen un d Einse n - und sind für Mensche n praktisch un verständlich. Maschine ncode für einen bestimmten Prozessor ist in derRegel nicht au f anderen Prozessoren ausführbar , d.h. planformspezifisch. Bei
11 2 lm-a als Sprache und Plattform
der Erzeu gu ng von Maschinencode sp richt man auch von de r J:icfp!au/ormfür die der Masch ine ncode ge ne riert wird. lIöhere Programmiersprachen(wie C++ lind Ja va ) ste llen Anwe isungen zur Verfügung , die erst bei Übersetzung in Masc hmcnsprachc in eine Vielza hl elementarer Maschinenbefehleumgesetzt werden. Die Syntax dieser Hochsprachen ist tlbcrschaubnr lindleicht lesbar - und an menschliche Denkweisen angepasst.
Es war und ist das Ziel der Entwick lung vo n Comp utersprachen . dem Progra mmie rere ine Sprache an d ie Hand zu ge he n, d urch de ren Strukturen Komp lexität red uz iertode r zumindes t beherrschba rer werden so llte. Diesem Ziel folgte e ine fortschreitende stodutanstenmg der Prog rammiersprache n:
ln klar ge kennzeic hneten Modulen (Prog mnuubaustcincn ) so llen bcsrinuutc Datenund die für ihre Bearbeitu ng vorgesehe ne n Algorithmen (Methoden) zusammengefasst rgekapseln werde n. Ungeschützte sogenan nte globale Daten, au f d ie von zahlreichen Ste llen des Prog ramms durch Algorithmen ode r Anweisungen wenverändernd zugegriffen wird , sollen möglichst ve rmiede n werden.
Auch die Kommunikanon zwischen den Modnk-n sollte ge rege lt sei n: j ede s Modulsoll festlegen, Welche se ine r Daten und Methoden von "außen" (durch ande re Modulc ) zllgreif- hzw. aufrufbar s ind - und we lche nur der mod ulinternen Verwe ndungzugänglich sind . Man sp richt vo n etngesch räntser Stcbtbartseit: Nich t vo n augcn ZLl
greifbare Te ilt: eines Moduls sind de m externen Zugriff entzoge n .
Ein gut lesbares, überschaubares Programm so ll s ich als eine Menge zusamme nwirkender Module entwerfe n und implementieren lasse n . Dad urch lässt sich scho nbeim Programme nrwurf e ine ko mplexe Prob lemstellung in ein Vielza hl relativ einfacher Module gliede rn, durc h deren Zusamme nw irken die komplexe Aufgabe bewältigl w ird - ohne dass e in unentwirrbares Geflecht von Date n, Anweisu ngen undKontrollstrukturen entsteh t.
Ziel der Enlwicklung d er Programmiersprachen ist d ie Redukt ion lindBeherrschbarken vo n Komplexität du rch strikte Modularisicrung und Kapselung zusammengehöriger Daten und Algo rithme n. Module enthalten Datenund die mit ihnen arbeitende n Algorithmen. Strikt zu definieren ist , au f wel ehe Daten und Algorithmen eines Mod uls du rch andere Module t'von aulkn")zugegriffen we rden kann.
ln Abbildung 2.1 wird d ie Struktur eines so geg liede rten Programms sc-hemat ischdargestellt. Eine Umsetzung des skizzierte n Ideals wurde erreicht in de n obickrortcnticrtcn Programmrcrsprachcn. In sogenan nten Klassen werden Daten und die für ihre Bearbeitung zus tändigen Methoden zusammengefasst. Die ProgrammierspracheJava zeichnet sich dabei d urch eine besonde rs klare objek torien tierte Struktur aus.
Doch ist es nicht so , als gäbe es die beste Progranuntcrsprachc sch lechthin . JedeProg rammiersprache hat Eigenschafte n, die sie zur Lö sung bestimmter Problemequ alifizieren. Prog ram miersp rach en sind nicht einfach besser oder sch lech ter als an dere, sonde rn s ie müssen adäquat sein, d .h. der Bewältigung bestimmter Aufgabe nange messen. In Abbild ung 2.2 finde! sich e ine grobe Übe rsicht der Historie de r Programmiersprache n . Es lassen sich ve rschiede ne Stränge au smachen , d ie verschiede -
2 Iara als Sprache lind Plattform 15
nc n Programmierparadigme n e ntsp reche n. Die Sprache Java reflekti ert zahlre ich eErke nntnisse vora ngegangener objektorientierte r Vorgänger.
Daten Daten
Al gor ithmen Algori thmen
1 1TDaten Daten
Algori thmen Al gori thmen
Jlod l/ I
~lorJul :
\ lm"rpn,gr.llnrn.
KbsSL" .
Allolurit h m us :
~1<.:lh, ,,Jc ,
Funklion,
I'rozLxlur, .
Abb . 2.1: Struktur modularer Program me
2.2 Java als Sprache und PlattformWiI: aus Abbildung 2.2 zu ersehe n, wurde die Sprach e Java vo n ihrer v orgängcrinC++ insp i riert . Man bemüh te sich, d ie Komplexitä t de r Sprache C++ zu vermeiden :Dazu zählen der große, unübe rsicht liche Sprachu mfang vo n C++, die Verwendu ngex pliziter Po inter und d ie durch den Entwick ler zu handhabende Speicherverwalrung. C++ war der se hr erfo lgreiche Versuch, d ie rein pro zedurale Sprache C um objektor ientierte Eleme nte zu erweitern, so da ss in C++ e ine Mischung aus pro zeduralen und objektor ientierten Ante ilen vo rliegt; man spricht vo n eine r Hybrtdspracheode r heterogenen Sprache.
Dagege n wurde Java vo n Beg inn an objektorientiert ( ho /1/ ogell) entworfe n undzeichnet sich durch ein en sehr iibcrsichtlichc n Sprachumfang au s. Technische Dcta ib wie d ie Spe icherverwaltung werden dem Entwickler be wusst abgenommen Linddurch die Laufzeitumgebung selbst organisie rt. Im Vergleich zu C++ ist juva einfache r, klare r strukturiert, le ich ter zu erlerne n und zu beherrschen, bk-tet aber weni gertechnis che Ko ntrolle über d ie Programmausführu ng - deckt aber Bereiche ab , fürdie C++ weniger geeigne t ist. Nur be züglich der schieren Ausfüh rungsgeschwind igkeit von Programmen hat Java ein we nig das Nachsehe n . Jedoc h ist d ie Performanz(Effizienz de r Abarbeinmg ) vo n java-Progranuucn in der Vielzahl pr aktisch relevan ter Hille ab solut ausre ich end. Java ist vielleicht e twas langsamer au f dem Rechner,aber schne ller und sicherer anwendbar für den Entwickler.
2,2.1 Verfügbarkeit von Java
Die Sprache java iSI ein frei verfügbares Produkt der Firma Sun. Im j ah r 1990 bcgfnn t die Entwick lung de r Sprach e Java d urch deren "Väte r", jamcs Gosling und Billjoy. Eine de utliche Ver ände rung e rfuhr Java 199H mit dem j ava Dcvelopmcnt Kit
16 2 lm-a als Sprache und Plattform
(j DK) 1.2. Die B..: zd ch nung j:lva2 ma rkiert diesen Umbruch. Ist von java die Rede ,so ist damit stets vo n javaz gemeint. Die folgenden JDK-Versio ne n verbessert en Ausfüh rungsgcschwtnd lgken un d grafische Darstel lungsmöglichkeiten.
ABAI' Objects
BCPL
Ic
Obicer PascalABAP/ 4
Java
~(;.
MaschinenspracheAsse ubk-r
I Sim 11:1 67 AI I Lo.ogo go \10
Sma ralk
___ ~r:m Cobol
L1SP ~lg~)l 60 /Basic ?~~ _
PI. 1
IPasca l
Eiffcl
Eifk'I -3Ada-9S
Miranda
lY<;U1')')2
19'":;.]19%]')",H1')(~)
1')621')(141')(,(,19<181')7 01')7219741')761'-)7H19HO19!:l1l ') HOl<)Hl19tH1<)H61')K8lY')Ol y<) 21')<)4191)(,1')') H
llUIzoaz
Abb. 2.2: His to rie der t' rogramnue rsprachcn
Einen Einschnitt marki ert da s Ja hr 2004: Mir dem JD K 1.5 wurden e inige fortgeschrittene Spracbkonsrru kre in die Sprache au fgen ommen . Um d ie Erweiterung der Sprache zu be to nen, änderte Sun die exte rne Releasezählung. D;IS J DK 1.5 hat d ie offizielle Bezeichnun g JD K 5. Auch Änderungen an der Laufzeitumgebung Java Virtua lMachtu e ()VI\I) wurdc n vorge nommen. so dass Code, der mit dem Java L'i-Compilcrüb ersetzt wurde, mit ei ne r JV!VI 1.4 nicht mehr ausgeführt werden ka nn .
1m Laufe dc r Jahre wuchs der eigent liche Sprachkcm nur moderat. Bceindruc-ke ndist jcdoch der Umfang der zuxanuucn mit der Sprache zur Ver fügung gestelltc n Progranumcrblbhorhc kcn: Mit d iesen Bibliothek en hat man alles zur Hand , um auchprofessionel le Anwend ungen im Be reich Internet , Date nban ke n, verteiltc n Systemenun d Netzwe rkzugriff zu entwickeln.
Das aktuelle komplcne JDK ist fre i vo n der Hornepage der Firma Sun downloadbar[SUN061. Im Grunde lassen sich j ava- Programm e allein damit und e ine m e infache nTex ted ito r entwickeln. Allerdings bie ten erst integrierte Pnrwfcklungsumgcbun ge n( Intcgrarcd Dcvclopmcnt Environment = IDE) di.... Möglich keit, auch komplexe JavaProjekte übers ichtlich zu organisieren. Zahlreiche ausgezeichnete kostenlose professionel le Umgcbungen sind verfügbar. Zu nennen sind tve üsea ns von Still selbst[SUN061 und ticttpse [ECUl61. lnstallunon un d Ko nflgurution des JDK un d Eclipsewird im Zusatzmalerial unserer \X.'eb.seite erläutert.
2 Iara als Sprache lind Plattform 17
Java ist ei ne großart ige Sprache , mit der sich objektorientiertes Programmieren klarlind einfach erle rnen lässt. Die typischen ob jekto rient ierte n Strukturen von java finden sich auch in anderen objektorientie rten Sprachen . w er java beherrscht , der wirdsich auch rasch in verwandre Sprachen (wie C++ und CI>") ei narbeiten k önnen.
2.2.2 Warum ist Java mehr als nur eine Sprache?
Java a ls Programmiersprache
Natürlich ist Java eine echte I'rogrammt crsprachc mit folgende n Eigenschaften:
• Ein übe rschaubarer homogener Sprachumfang mit klare r Syntax.
• Ein (fast) durc hgäng ig ob jekto rientiertes Sprachdesign.
• Komplex e und schwer beherrschbare Sprachelemente (w ie in C++) w urden vonvornhe rei n nicht in die Sprache aufgeno mmen.
• Die Speiebe rverwaltung muss nicht vom Entwickler programmiert werden, son-dern wird weitgehend vom java-Laufzclrsysrem gele istet.
• Eine der besten Sprach en für internetbasie rte Anwendungen.
Java Klassenbibliotheke n
Darüber hinaus jedoch wird mit der re inen Sprache Java auch e ine Menge fertigerKlassenbibliotheken als Tei l des JDK ausgeliefert, de ren Fun ktion alitdr sich in se ihstgesc hr iebenen java-Progr.unmen nutzen lässt. Diese Klassen-! 'a k le könne n (wie Ja va-Programme üb er ha upt) plauformübergreffend verwe ndet werden.
Java-Editionen
Die viclfälngen Einsatz möglichkeiten von Java spiegeln sich in versch iedene n faroEd itione n. Jede der Ed itionen hat e inen and eren Anwe ndungsfokus.
1. Die J ava Stan da rd Edition (javaSE ) dient der Entwicklung eigenständiger Java Applikationen, die typischerweise auf e inem gewöhnliche n pe zur Anwendungko mmen. Die SE ist im JDK der Firma Sun enthalten : das JDK enthält a lles wa s manbe n ötigt , um Java-Programme zu entwickeln, ablauffähig zu machen und ausz uführen. Dazu ge hö rt u.a . e in Compiler , d ie Java Virtual Machinc un d umfangreicheKlassenbibliotheken. \X'ir vc rv....ende...n da s JDK. Auf der Sun-Webst... itewww.java.sun .com find et sich nicht nur das JDK zum Download . sondern auch dieblose Laufze trumgebung. die J avaS E Runtime Env iro nment URE). Dari n ist einekomplette JV.\! ( inklusive JavaSE-Klassenbibliothek en l entha lte n, um fertige j avaApplikationen ablau fe n zu lassen , jedoch kein e Entw icklungswerkzeuge zum Ko mpilie ren von Ja va- Prog rammen .
2. Die J ava Micro Ed it io n (javaME l stellt e ine stark red uzierte, teilw eise aberdurch besond ere Pakete e rgänzte Variante der Standard-Edit ion dar un d dient de rProgrammierun g mobiler Konununikationsnuttc l (Handy ctc.) , d ie nu r über bcsch ränkten Speicherplatz. Prozessorleistu ng und grafische Möglichkeiten vcrfügcn[ESC02]. Ebenso wie d ie SE kann auch die ME mitsamt nü tzlichen Tools Iu.a. Emulatorcn ) als)avaME wtrclcss Toolk ir bei Sun herunte r ge laden werden.
18 2 lm-a als Sprache un d Plattform
3. Die jav.l Entcrprtse Edition (javaEEl ist eine von SUIl entwo rfene Spez ifikation,die durc h zertifizie rte I Icrstcllc r imp lementie rt lind als ko mme rzielles Produkt an gebot e n wird. Sin n der .Iava EE ist d ie Entwicklung vo n Kompo nenten fü r Servo rapplikntioncn. Da runter ve rsteht ma n Programme, die au f au sre ichend lei stun gsstarke nRechnern (Servern) laufe n, au f de ren Funk tionen via Netzwerk zahlreic he Einzelplatzrechne r (Clk-nts) gleic hzeitig zugreifen. Es handelt sich um Applikationsserverhandeln, die z.B. be triebswirtschuft liehe Transaktione n du rch führen . Dabei wirdauch au f Datenbanken zugegriffen - lind es muss sicherges tell t se in, dass die Darenbeständ e ko nsiste nt un d aktuell ge ha llen we rden. Die Java EE definie rt Progranuustru krurcn un d Ablaufszena rie n. durch d ie sich diese sire ngen Anfo rderungenprogramnuech msch umse tze n lassen . Die Handhabung der javal-E geht üb er de nRah men dieses Buches deutlich hinau s, jedoch so llte auf se ine r Basis e ine Einarbcl tung nicht sch wer fallen l.\lER041. Eine kostenlose Rcfcrcnzimplcmcntlcrung steht heiSun zur v erfüguog.
VerschiedeneJava-Laufzeitumgebungen
Java d ient nicht nur dazu, Programm e auf Einzelplatzrechnern auszu führen, so ndernauch andl' re Laufzeitumgehungen sind für Java-Progr:.lmme vo rgesehe n.
Eine Laufzeltumgebung ist d ie Menge aller tedmischen Rahmenprogramme .auf deren Grundlage z.B. in java geschriebene Programme selbst ausgefü hrtun d abgea rbelre t werden. Die Laufzeitumgebung ste llt da s software tech nischeUmfe ld dar , in dem sieh die Ausführung e ines Programms vo llzieht.
Die Laufze itumgebun g für Java-Progra mme ist stets d ie [ara Virtua l Macbine UVM).Unterschiede bestehen in der An der Anwend ung und der Sysrcm umgebung.
1. Cncnt JRE für komple tte Java-App likationen , d ie au f eine m lokalen voll Einzelplatz rechnet (far d ient) aus geführt werden: Es handelt sieh um vo llständ ige JavaProgramm e. Alternativ könn te auch um ein mobiles Gerät (small dcvioc) wie Handyoder Smartphonc vo rliegen. Hier kommt eine spezielle JVM-VarianTl' zur Anwcndung, d ie K VM (Kilo Virtual Mach inc ), die :HKh au f Ge räten mit klein em Haup tspeieher lauffähig ist.
2. Webbrowser mit Applets. Applet s stel len Java-Programme vorgegebener Struktur dar, d ie in kom p ilierter Fonn zusammen mit H'l'M l -Seircn in den Browser ge laden und aufgerufen werden. Browscr verfüge n über eine integ rierte JVM, die d ieAusfüh run g übernimmt. Applcrs sind strenge n Sicherhe itsrestriktionen unterworfen.Informationen zur Applc t-Programmtcrung finden s ich au f der Wehseite des Buches.
3. Wcbserver mit Scrvici z n gtn c. Durch \Vebserve r werden entwe der fe rtig vorliegen de statische Interne tseiren an den an fo rdernden Clk-nt versendet od er Seiteninhalt e vor (k m Versende n dynami sch zusammengeste llt. Um Inhalte dynamisch anzupassen d iene n Scrvlcts - spezielle Java-Klassen, durch die IIT.\H. ge ne riert wird .Eine verwa ndte Techn ik nu tzt Java Server Pagcs ( JSP): Hierbei wird Java Code direktin die IIT;\IL-Seite geschrieben, vo r dem Versenden der Seite auf dem Webse rverausgefü hrt un d dadurch der Inh alt der HTML-Seite dynamisch angepa sst (Server SkkScriprin g).
2 Iara als Sprache lind Plattform 19
4. Bn te rp rfsc Applikations Server mit En tcrp ri sc Java Beans (FJU): Es hande ltsich um )avaEE-Aowcnduogen, die au f eine m Serve r ablaufen lind häufig bc tricbswirt schaftlic-h a usgerich tete Dienste für e ine Vielzahl von Clic nts bereitstellen.
Pat Cl ient Browser-Client
r'ronrendberetcle
Cllenranwendungen
)avaSE
)avaME
Mlddlcwarcbc['ckh:
Verbin dungsd iensteim Cllcnr-Scrvcr-
Umfeld
)avaSE
ßackendbcreich:
Serveranwendungen
JavaEE
) V1\1 integriertin w cbbrowscr
Hanlwu .....'
Appl.server
I
Wcbbrowser
Java-FJH-Scrvcr
I lk1ridlSsysll'm I
II
I11;lf<.lw:,rc
I Enrerp r;,;c .1"":1 [kom I
I .laI'<! Vinu"l1>behine I
I [,,,dw,,,,.:
I
Ilardw:lR'
I
Webserver
1l<.·lrid lSSr S1, 'm
1\101 ",.'nhihli, ahckcn
java-Webserver
Java "[nu;!1 ,\b chine
.I<1V'1 Virtual I\b d lim:
Abb. 2.3: Varianten der java-Laufzcttumgcbung und -Edit ioncn
Neben e ine r Klassifikat ion nach Lanfzcirumgcbungcn Hisst sich da s Anwe ndungsfeldvo n java-Progranuncn auch "Anwc ndungsortcn'' zuordnen:
• Prontend-Ijereich. Gemeint sind typische, voll auxgcsrartcre Einzelplatzrechner(local rat dient) indiv id ueller Nutze!" oder nicht ortsgebunde ne Small Dcvtces ,d ie nur über e ine bcgren zrc Hardwareausstauung ve rfüge n (mob ile sJim d ient) ,
20 2 lm-a als Sprache und Plattform
• Hackend -Bereich: Hierbei ha nde lt es sich um Serverrechner. deren Dienste viaNetzwerk vo n zahlrc k-hcn Clicnrs angefordert werden.
• Midd lcware-ßereich: Unter Middlcwarc versteht man Vermittlungsdienste invert eilten Systemen, d. h. die Menge aller Programme , d urch d ie Kommunikationund Datenaustausch zwischen verschiedenen Programmen hzw. räumlic h getrennten Rech nern (z.B. zwisc hen Frontend lind Backend ) erst ermöglicht wird.Dazu zählen au ch der Zugr itf auf Datenbanken und sogenannte Rcmorc Proccdurc Calls (HPe), bei dene n aus einem Program m he raus Funktione n andererProgranune typisc-herweise via Netzwerk aufgerufen werden.
Abbildung 2.3 ste llt j ava-La ufzcilumgebungcn lind -Editionen e inande r gegenüber ,
Chcnt-Scrven Durch d ie Begr iffe Client und Server wird ein Die nstle istungsvcrhältn is zwischen zwei Softwa re-Kompone nten lx-schrieben (Abb. 2.4).Dabei handelt es sich typisc-herwe -i se Utll zwe i verschiedene Prog nuu rne bzw.Prozesse (&if!II'(JIV-OriC/lticl1C Sichll: Ein Prog ramm erbringt einen Service(Die nstle istung), der durch ein anderes in Anspruch genommen wird, Auchinnerhalb eines Programms lassen sich Clicnt-Scrvcr-Strukrurc n identifizieren.
wenn die Softwa re-Komponenten auf verschiedenen Rech nern laufe n, dannwerden mit de n Begriffen Client und Server (oder: Hosn au ch die e ntsprechende n Rechner bezeichnet cttardu-are-ortenttene Stctu). Via Netzwerk greiftder Client auf die Diensie des Servers W. Me ist ist ein Server da zu vorgesehen , die Anfragen vieler Clients zu bearbeiten. Klassisches Be ispiel iSI derwebserver, der an den Clientrechner angeforde rte HTML-Seiten versendet.
Software-orienti erte Sicht :
ClientA.lfim ft'1"I/ eil/er D ie' lsl/d.<IIOIM
Server
Prozess 1 li ,.hr i ' ''''' /1 d ,"'" I )1" >I.<t l,'I<I" " " Prozt:ss 2servke -lJiL"n~r ~' i rw r Soli wu......-K, »uponcnrc .
Hardware -orie nti e rte Sich t :
Clie n t•~A nfordern ennr n ielisl/eisfll ,IM
Netzwerk: IAN I W AN
f.H'riI/Mt''1 eiller nie'lsl/eisIIlIIM
Komponente •
PT<lI.~'SS oder Gruppe"on 1>T<l~~'ss~'n
Abb. 2.4 : Das Clicnt-Scrvcr-Prinz ip
Deutlich wird, dass ein Aspekt der plarrformübcrgrcueodcn Verwendbarkeit von Java bereits dar in besteht, dass java-Progranunc "übe rall" ve rwe nde t werden kö nnen:Vom Han dy bis zum mächngcn Applikationsserver. Durch die \X'ahl der Sprach t: JaV: I billt man sich alle Optionen hinsichtlich mög licher Anwendungsfelder offen. ImGrunde ist Java also deutlich mehr als nur e int' Sprache: Dahinter ste ht zugleich ein
2 Iara als Sprache lind Plattform 21
Verb un d aufeinander abgestimm ter Tech nolog je n. d ie gcc tgnct sind, professionelleverteilte , vielschichtige Systeme zu entwickeln .
Dadurch unte rstützt d ie javu-Tcchnologlc e in fü r die In fo rmatik , Insbesondere abe rd ie Wirtschaftsinformatik zen trales Anliegen: trueg ration reneiner svueme auf derBasis einer möglichst ei nheitlichen Technologie . Fortschritte im Bereic h der Hardlind Softw aretechnik inn erhalb de r le tzten zwei fahrzehnte führten zu e ine r Abke hrvo n ze ntrali sierten Mainframc-Gro8rcd m c r-Stmkturc n . Ziel ist es, bei de r Realisationkomplexe r ve rt eilter Anwen dungen mit möglich st we nig ve rschiedene n Tcc hnologtcn und auch r'rogrammtcrsp rachen aus zukommen und sich doch nicht auf bcstimmte IIardworcplatrformcn und Betriebssysteme festlegen zu müssen.
java ist jedoch au ch deshalb universell verwe ndba r weil Iava-I'rogramm c ohne Ändcrung und Neuerstellung auf allen rele van ten Bcrrlcbssvstcmcn ab lauffähi g sind .Dieser Planformun abhängigkeit verdankt die Sprache j ava ihren Erfolg, insbesondereim Bereich inte rnetorientie rter betrieb liche r Anwendungen.
Die Plauformunabh ängfgken von J a va-Programmen
Die plarrfo rmunabh ängtgc Konzeption der Sprache java Hisst sich im Slogan urueo nce - rlf ll ereryuhere zusammenfassen. Im Grunde bringt java in Fonu der Ja vaVirt uul Machirte ste ts sei ne e igene (abs trakte) Ausfüh run gsplanform mit, die für allewic htige n Prozessoren und Bet riebssysteme verfügbar ist.
Der Entwickler e ines Java-Programms muss sich keine Gedanken über Hardwareode r Betriebssystem des Rechners mac hen, auf dem das fertige Ja va-Program m ausge füh rt werden so ll: Es kann z.B. un ter Linux entwickelt und getes tet werden, wä hrend das weite rgegebene oder zum Downloa d zur Ve!fügung gestellte Programmspäter auf Windows-Rcchncm ge nutzt wird . Grun dsätzlich sorgt d ie j Vtl-1 dafür, dasseinmal gesehrtebene java-I' rogrannuc o hne Änderung auf allen HardwarePlattformen und Betriebssystemen ab lauffähig sind , für d ie ei ne JVM ve rfügbar undinstallie rt ist. Die JVI\1 ste llt ei ne Art Zu-iscb euscbicbt dar, die das konkrete Bet riebssystem und die Hardware des Rechners vor der Iava-Anwcndung verb irgt.
Somit fun giert die JVM als eigenständige zwische ngeschaltete Plattfo rm, durch diealle Java-Programme ausgefüh rt werden. Aus Sicht des Ja va-Programms erscheint sieals Ausfüh rungsmaschtnc, d ie ihre eigene n Befehle kenn t und interpretiert . Aus Sichtder Plattform (des Rechners au f dem das java-Progranuu läuft) se tzt sie das javaProgramm in plattformspezifische Anweisungen um:
• Ein in j ava geschriebenes Programm muss zuerst vo m j ava-Compilc r in spezielles Codtng für die .I V,V, üb ersetzt werden . Dabei handelt es sich um den sogcnantcn .I(/l '(/ -}~I·I('C{)de. Dieser Bytecode cruhäh keiner lei pla ttformspezifische Inhalte. Er be steht ausschltekltch au s elementaren Anweisungen , d ie ZUIll Spr ach umfang de r .JVt\I ge hö ren. Der Bytecode ist absol ut planformun abhängig. Er istdie Maschinenspruche der .IV~1 un d nur an diese r ausgerichte t. (Info rmationenzur Bytecode-Struk tur finden sich auf de r Webseite des Buches.)
• Dieser Bytecode kan n vo n jeder java-VM d irekt Interpre tiert und ausgefüh rtwe rde n und läuft somit auf jeder Plattform für die d ie passende JVI\! be reitsteht.Die .IVM üb ersetzt alle Bytecode-Anweisungen des java-Programms d irekt bei
22 2 lm-a als Sprache und Plattform
J ...-r Au-führung in e lementa re Befe hle (Maschinensp rache) für die kon kre t vo rliegende Bcutebssysrem- un d llardware-Platrfo rm.
• Beim Wechsel von ein em Rechner zum and eren, von ein em Betriebssystem zumande ren ist kein er lei Änd erung am ursprü ngltchcn Java-Code nötig lind au chkein Anpassen OUI,.'f gar Neuerstel len des e inmal kompilierten Bytecodes.
Die Planfornumabhän gtgkctt der Sprache Java wird so mit d urch de n Umweg derBytecode-Erzeugung erre icht. Erst de r Bytecode wird d urch die jV"1 in platrfo rmspezifixchc biniire (rein dual cod ierte ) Maschinensprach e (native codc) umgese tzt, wä hrcnd der Ja va-Entwickler sich m it d iese r Aus füh run gsschich t seines Programms nic htauseinan derse tzen muss. 1\1:111 programmiert "fü r" die JVl\'l - un d für alle wichtigenBetriebssysteme Lind Hardwareplattfo rme n srcht e ine angepasste JVM bereu , die dieplattformspezifische Umse tzu ng des gene rierten Bytecodes besorgt . Momentan un torst ützt die .!:lvaSE L1 .:I . d iverse Ausprägungen der Betriebssysteme ü n tx/Ltnux lindauf vcrsch tcdenc n Prozessoren.
C++ Compiler für Windows
Kompilierte konventione lle Prog rammiersp rache Inlel -I'<:
r;,::;;;;::;;;;:;klf--_ -.:"I;s, \Vin.!-Io \\"s
.l~:-.'::':':~~~~:~:':'-J--1 Ma,,<."hi 'K"Ill",><k,I' für Windows
QuellcodeV:Jri:Jlllen
C++ Compiler für Linux
Alrha - I'roz~'s"< ,rLinux
jvxt-Byrecode Arch itektur vo n j ava
JavaQuellcode
java CompilerBytecode
1'1:ll rfonnu" :Jhh;inl! il!
JVMfür l.inux
1\ l rha-l'n )z~'s"' >r
Linux
Ahb. 2.5: Vergle ich kompilierte r Programmiersprachen mit der JVM-Architektur
ln Abbildung 2.5 ist die JVM-Infrastm ktur de n Verhält nissen ko nvent ionel le r kompilie rter Sprachen wie C oder C++ gegenübergestel lt: Ein in C++ geschri ebe nes Programm, dass zur Ausfüh rung unter wtndows gesch rieben wurde , muss eventuell imCoding ve rän dert werden , wenn es auch un ter Linux lauffähig sein soll. Ganz IX'stimmt jedoch ist dazu eine Neuübersetzung mittels eines Linux-spczt fischcn Compllcrs erforderlich. Denn Com pile r konventionelle r Sprachen erzeuge n beim Übersetzcn dl.'s Programms direkt plattformspezifi schen binä ren Maschi ne ncode. der im
2 Iara als Sprache lind Plattform
Normalfa ll au f kein em anderen Bcmcbssystcm ausführbar ist. Somit gilt hie r: u-riteonce » compilc ereryubere. d .h. für jede weitere benöt igte Au-führungsplatrform.
Ganz anders sieht d ie j ava-w elr aus: Ein e inmal geschriebe nes Java-Progra mm mu ssnu r e inmal in Bytecode über set zt werden - und diese r Bytecode ist d irekt auf allenBetrtcbssysremcn un d jeder Hardwa re ausführba r, fü r die e ine JVt.l bereit ste ht. Hie rgih: u-nte oncc - compite anyubere - 11/ 11 ereryubere.
Der Inte rprctattousvoegang d er JVM
Die Bytecode-Aus füh rung durch die j VI\1 ist ei n Interpre tationsvorgang. d.h . d ie einze ine n eleme ntare n Bytecode-Anweisungen werden nacheinander ausgewert et Lindin planformspezifische Syste maufrufe um gesetzt (Inte rpretiert ). Doch hebt sich dieInterpretationsleistun g der JVM von jener voll inte rpretierte r Sprachen deutlich ab :Ein konven tion eller Interpreter be arbe ite t den Programmtext Ze ile für Zeile o hneOprimtcrungsletsrung. Selbst we nn dieselbe Anweisun gsfolge mehrfach auftritt (z .B.in Schleifen ) find et ste ts vo n Neuern diese r Übersetzungsvorgang starr. Konvemioncllc Inte rpre tersprachen sind notorisch langsam.
Die Java-Bytecode-Archit ektur ist jedoch durch ein e Zweitei lung der Programmausführurig ge ke nnze ichnet - durch ein optimiertes Zusammenspiel von Co mpiler LindInterpreter , weshal b man Java auch als semi-tsompiliene Sprache bezeichnet .
• Im I. Schr itt findet das Parsen und Analysieren des Programmtext es durch denJava-Compiler statt. Seine Optim ierung erze ugt möglichst kompakt en Bytecode.
• Im 2. Sc-hritt we rden die JVI\I-Anwd stlllgen des o ptimie rten Bytecodes d urchden Inter pre ter de r JVl\I mittels JUSI In Time Compilation (I r r) effizient ausgeführt: Der JVM-JIT-Co mpiler analysie rt den Bytecode un d erkennt wiederholtauszuführende Programmteile (ho tspots), die die Austührungszctt stark lx-einflussen . Diese werden als Ganzes vor dem restlichen weni ge r pe rfo rman zkritischen Bytecode in Masc hinensprache übersetzt und h innen im späterenverlauf dir ekt ohne ze itraubend e Ne uin te rpretation ausgeführt we rden.
So kombiniert die .IVM-l~rf('(.w/('-A rcbil('kfl/r die Vorte ile interpretierte r lind kompilie rter Sprachen und minimiert deren Nach teile. Im Erge bnis iSI Java als SC'lI1 i
kompilierte Sprache viel sch neller als rein e tnrc rpn..-tc rsp rachcn, aber dennoc-h e twaslangsa mer als reine Compilersprachen (wie C ode r C++ ). Dies ist begründet in derJV;\1 a ls zusätzlicher Schiebt zwische n dem java-Progranun lind de r Hardware desausführenden Rech ners. Die se parate Intc rpn..-tarion des kompilierten Bytecodes kostet Zeit. Auch cfne jrt-opomtcrte .IV"l wird in de r Inter pre tation des Bytecodes nieso schne ll sei n können wie eine direkte Ausführun g von Maschinencode.
jedoch ist de r Geschwindigkeitsunte rschied oft nicht gravie ren d: Java-Programmesind seh neil gel/ llg zur Ausführung der meisten typischen Aufgaben. Somit üb erwie ge n die Vortei le der jvst-Archnekrur, iSI sie doch Grund lage de r sysrem - und schichrennbergreuende Verwendbarkeit vo n j ava als Sprache , Tech nolegte un d Plattform.
Zu.sa m men fassu ng: Warum J ava ?
Wir können nun die konzeptionellen VOlleile von Java umreisen. Laut Sun isl Java:
• ein fach: Komplizierte Sprachstruk ture n w urden ve rmieden. Der Sprachumfangist klein, dafür sie be n umfangre iche Klassenbibliotheken zur Verfügun g.
21 2 lm-a als Sprache und Plattform
• ob jektorientiert: Iava-Progrannnc lx-stehen ausschließlich aus Klasse n; Erfahrungen mit viele n objckroricnricrtcn Sprachen wurden berücksicht igt.
• verteilt : Nerzbasierte. mehrsduchrtge , verteilte Anwendun gen sind real isierba r.
• i n terpretativ: Der Bytecode-Ansatz ve rbindet die Vorteile interpretiert.... r undkompilierte r Sprachen . Java ist e ine sc rui-kompilicrtc Sprache.
• rohus t: Fehlerquellen du rch komplizierte Sprachkonstru kte werden vermieden,die Spc k-hc rvcrwa hun g wird weitgehend vom j ava- La ufzcnsvsrcm übernommen.
• s icher: Stcherhcnsmcchantsmc n verhindern die Ausfü hrung unsicheren Codes.
• a rcfaitc ktur-, ( p fattform-) unabh ängig: Die JVM und de r Bytecode abst rahi e ren von Hardware lind speziellem Betriebssystem.
• port ie rbar: Die .IV!,,\ interpretiert identischen Bytecode auf allen unterstütztenPlattformen, so dass Pla tt form -Offe nhei t herrscht.
• lei s tungs stark: Zwar etwas langsa mer als C++, aber meist schn ell ge nug .
• Th read -unterst ürzcnd. Struk turen zur Synchronisatio n parallel laufe nde r Ausführungsstränge (Th rcuds ) in eine m Programm (Prozess) sind Tei l der Sprach e.
• dy namisch : Ben öt igte Bibliotheksklassen werden auto matisch zur Laufzeit desProgramm (dy namisch) hinzu geladen.
Kenn zeic hne nd für d ie JV!\I-Philosophie ist der Gedanke der Transpa renz. Plattformspezifische Details und komplexe interne Vorgänge sind in der JV1\l für den .1;1va-Entwicklcr verborgen, der dadurch entlas tet wird. Dies erleichtert d ie Reali sationkomplexer Anw endungen.
Nachde m wir uns mit dem Java-Umfeld vertraut ge macht hab en, untersuchen wir dieSchritte und w erkzcuge zur Erste llung und Ausfüh rung von Java-Programmen. Auchhierin unterscheidet sich j ava von and eren Sprachen.