Sie sind auf Seite 1von 6

1

Bevor es losgeht

Ich wei, ich wei Sie sitzen vor ihrem Bildschirm, haben bereits Ihre JavaEntwicklungsumgebung installiert, brennen drauf, Ihr erstes Java-Programm zu
schreiben und sind einigermaen ungehalten, sich erst noch durch ethliche Seiten
theoretischer Ausfhrungen qulen zu mussen. Men Sie nicht! Wenn Sie ihre
Entwicklungsumgebung schon eingerichtet haben und mit Programmerstellung
schon prinzipiell vertraut sind, berspringen sie dieses Kapitel einfach. Nur wenn Sie
ein absoluter Neuling in der Programmierung sind oder von Java nicht viel mehr
wissen, als dass es eine Programiersprache ist, sollten Sie diedes Kapitel unbedingt
vorab durchlesen. Alle anderen knnen nach Bedarf auch noch spter hierher
zurckkehren.

1.1

Was ist Java? I. Teil

Java ist heute eine der fhrenden Programiersprachen, vielleicht die wichtigste
Programiersprache berhaupt. Programmierer weltweit schtzen Java fr seine
Robustheit, seine Vielseitigkeit, die problemlose Portierbarkeit seiner Anwendungen
und, und, und...
Entstanden ist Java 1993 als Forschungsprojekt der Firma Sun, wobei schon auf
diverse Vorarbeiten zurckgegriffen werden konnte. Der konkrete Anlass war der
einsetzende Boom des World Wide Web, das nach einer geeigneten
Programiersprache verlangte. Java ist vor diesem Hintergrund zu betrachten und
quasi ideal fr Einsatz im Internet- sei es, dass man Programme fr Websiten
schreiben mchte ( die sogenannten Applets), oder sei es, dass man ber das
Internet verteilte Anwendungen implantieren mchte(letzteres thema wird in diesem
Buch allerdings nicht behandelt).
Wie steht es in diesem Zusammenhang mit der Verwandschaft von Java zu den
anderen Programiersprachen? Man entwickelt schlielich keinen neue
Programiersprache, ohen die eigenen Erfahrungen mit den etablierten
Programmiersprachen einflieen zu lassen.
Nun, C++-Programierer wird sich freuen zu hren, dass Jav stark an C++ angeleihnt
ist. Die Grnde hierfr sind Zweifellos in der Objektorientierheit, der Schnelligkeit und
der Leistungsfhigkeit von C++ zu suchen, aber natrlich auch in der traditionellen
Bedeutung dieser Sprache.
Programierer, die von Pascal,Basic oder anderen objektorientierten Sprachen
kommen, werden sich dagegen freuen zu hren, dass Java viel unntigen Ballast,
den C++ mit sich schleppt, abgeworfen hat und dadurchwesentlich einfacher zu
erlernen und zu programmieren ist. Diese Entschlanckung dient nich nur der
Entlastung des Programmierers, sondern vor allem

auch die Entwicklung >>sicherer<< Programme gewhrleisten. Natrlich liegt die


Verantwortung fr die Sicherheit der Anwendungen deswegen letzendlich immer
noch beim Programmierer. Je komplizierter und undursichtiger die Konzepte einer
Sprache aber sind, umso wahrscheinlicher ist es, dass der Programmierer
unbeabsichtig Fehler einbaut. In Java hat man dies erkannt und beispielweise die
gesamte Zeiger-Programmierung und die dynamische Speicherverwaltung aus den
Hnden des Programmierers genommen und Compiler und Interpreter bertragen.
Falls Sie schon eine andere Objektorientierte Programmiersprache, wie z.B. Python,
beherrschen die folgende Konzepte gibt es in Java nicht:
1.Zeiger(die dynamische Speicherverwaltung wird intern vorgenommen)
2. Funktionen (statt allein stehender Funktionen gibt ees nur noch Methoden
(Elementfunktionen) von Klassen)
3. Strukturen und Unions
4. Arrays und Zeichenfolgen gibt es nur noch als Objekte
5. Typendefinitionen( typedef )
6. Merfachvererbung (nur in gemigter Form)
7.berladungen von Operatoren
Java deshalb als Schmalspur C++ zu bezeichnen, wre vllig falsch. Von der
Leistungsfhigkeit her steht Java C++ kaum in etwas nach. Betrachtet man obige
Liste etwas genauer, lsst sich feststellen, dass viele Konzepte, die C++ von C
bernommen hat, zugunsten einer konsequenteren objektorientierten
Programmierung aufgegeben wurden (dies betrifft Sprachelemente 2 bis 5, die alle
im Klassenkonzept aufgegangen sind). Java ist daher mittlerweile die
Standardprogramiersprache an allen US-amerikanischen Universitten und auch an
deutschen Universitten allgegenwrtig.
Anderseits wurde auf bestimmte objektorientierte Konzepte, die Im wesentlichen der
Wiederverwertung OO Quellcodes dienen, aber fr Einsteiger(aund auch ofn noch
fr Fortgeschrittene) manchmal schwierig zu handhaben sind, verzichtet. Was
geblieben ist, ist eine relativ leicht zu erlernende, konsequent OO Sprache, die Ihnen
einiges zu bieten hat:
-OO
-Statische Typbindung, aber spte Methodenbindung
-Multithreading
-Exception-Behandlung

1.2

Was ist ein Prigramm?

Prinzipiell sind Programme nichts anderes als eine Folge von Befehlen, die an
einem Computer gerichtet sind und von diesem befolgt werden. Im Grunde
genommen funktionieren Programme also genauso wie Kochrezepte. Sie als
Programmierer sind der Koch, der das Buch schreibt. Jedes Kochrezept entspricht
einem Programm und der Computer, der Ihre Programme ausfhrt ist der Leser.
Leider ist die Realittwie blich komplizierter als das Modell. Im Fall des Kochrezepts
knnen wir einfach davon ausgehen, dass Schreiber und Leser die gleiche Sprache
sprechen, Im falle des Programmierers und des Computers ist dies natrlich nicht
der Fall, denn Sie als Programmirer sprechen an sich Deutsch und der Computer
spricht... ja, welche Sprache versteht eigentlich ein Computer?
Ich wnschte sie htten diese Frage nicht gestellt, denn die Antwort ist uerst
unerfreulich. Der Computer, in diesem Fall sollte man genauer von dem Prozessor
des Computers sprechen, versteht nur einen ganz begrenzten Satz elementarer
Befehle den Sogenannten Maschienencode, die zu allem Unglck noch binr
codiert ist und daher als eine Folge von Nullen und einsen vorliegt. Knnen sie sich
vorstellen, Ihre Programme als folge von Nullen und Einsen zu schreiben?
Wahrscheinlich genausowenig wie Ihr Computer in der Lage ist, Deutsch zu lernen.
Wir haben also ein echtes Verstndnisproblem. Um dieses zu lsen, mssen Sie
als der Intelligentere dem Computer schon entwas entgegenkommen.
Kehren wir nochmal zu unserem Kochbuch zurck und stellen Sie sich vor, ein
Chinese wrde ein kochbuch schreiben, das auf dem deutschen Buchmarkt
erschienen soll. Zwar findet der Chinese keinen geeigneten bersetzer, der das
Buch ordentlich com Chinesischen ins Deutsche bersetzen knnte, aber er erinnert
sich seiner Englischkenntnisse, die fr ein Kochbuch absolut ausreichend sein sollte.
Er schreibt also sin Buch in englich und lsst es dann von einem bersetzer ins
Deutsche bringen. Gleiches geschiet auch bei der Programmierung. Anstatt ihre
Programme in Deutsch aufzusetzen bedienen sie sicheiner Programmiersprache, fr
die es passende bersetzer gibt(Compiler), der Ihre anweisungen in
Maschienencode umwandeln kann.
Ich denke dass ist jetzt schon etwas klarer. Was aber genau ist jetzt das Programm?
Die noch in Deutsch formulierte Befehle? Die in Java formulierte Befehle? Oder die
binr codierten Maschienenanweisungen? Im weitesten Sinne knnen Sie in allen
drei Fllen von Ihrem Programm reden. Wwenn Sie es dagegen genau nehmen
wollen, bezeichnen Sie die noch in Ihrer Sprache aufgesetzte Befehlsfolge als
Algorithmus, die in Java formulierte Version des Algorithmus als Quelltext Ihres
Programms und erst den vom Compiler erzeugten Maschienencode als Ihr
Programm.
Mehr oder weniger unbeabsichtlich sind wir damit bereits in die Programmerstellung
abgeglitten, die im nchsten abschnitt noch einmal zusammengefat wird.

1.3

Wie werden Programme erstellt?

Die Entwicklung von den Computerprogrammen luft unabhngig von der


verwendeten Sprache blicherweise nach folgendem Muster ab:
1. Man hat ein Problem, eine Idee, eine Aufgabe, zu deren Lsung man einen
Computer einsetzen Mchte
2. Als Nchstes wird die Aufgabe als Algorithmus, also als Folge von Bafehlen
formuliert. Grere Probleme werden dabei in Teilaufgaben und Teilaspekte
aufgeteilt.
3. Der Algorithmus wird in fr den Coputer verstndliche Anweisungen einer
Programmiersprache umgesetzt. Dies ergint den sogenannte Quelltext oder
Quellcode
4. Dieser Quelltext muss dann durch ein spezielles Programm, den Compiler, in
Maschienenanweisungen bersetzt werden , die das eigentliche Herz des
Computers der Prozessor- versteht und ausfhren kann.
5. Das ausfhrbare Programm wird gestartet, das heit in den Hauptspeicher
geladen und vom Prozessor ausgefhrt.

1.4

Von Compilern und Interpretern

Bei einigen Programmiersprachen fallen die Schritte 4 und 5 zusammen. Es wird


also nicht das ganze Programm erst bersetzt ( kompiliert) und dann bei Bedarf
ausgefhrt. Stattdessen wird bei der ausfhrung des Programms der quelltext Zeile
fr Zeile eingelesen, bersetzt und ausgefhrt. In diesem Fall spricht man von
Interpreter-Sprachen, weil das Programm nicht als ausfhrbare Datei, sondern blo
als Quelltext vorliegt, der nur mithilfe eines speziellen Programms( des Interpreters),
welches die zeilenweise bersetzung whrend des Programmlaufs bernimmt,
ausgefhrt werden kann. In dem Beispiel aus Abschnitt 1.2 wrde dies bedeuten,
dass der chinesische Kochs eine kochknste nicht in Bucform sondern als
Hrkassette herausgegeben hat und Sie mit einem Dolmetscher (Interpreter) an der
Seite diese Kassette abspielen und die rezepte nachkochen.
Abgesehen davon, dass Sie wahrscheinlich niemals auf die Idee kommen werden,
sich eine chinesische Kassette mit Kochrezepten zub kaufen, haften interpretierte
Programmen zwei wesentliche Nachteile an:
-

Da die erzeugung des maschienencodes erst whrend der Ausfhrung


vorgenommen wird, drfte klar sein, dass solche Programme wesentlich
langsamer ablaufen als Kompilierte Programme.
Da diese Programme als Quelltext vertrieben werden, sind der
nichtautorisierten Nutzung des Programmtextes und der fr das Programm
entwickelten Algorithmen Tr und Tor geffnet.

Auf der anderen Seite Haben diese Programme den Vorteil, dass sie sehr gut zu
portiern sind, das heit, die bertragung von einem computer auf den anderen ist
unproblematisch.
Jetzt fragen sie sich sicherlich wo Java einzuordnen ist.
1.5 Was ist Java? II. Teil
Ist Java nun eine Compiler- oder eine Interpreter-Sprache? Nun, die Einteilung ist
hier nicht ganz so klar. Man kann zwar vielorts lesen, es sei eine Interpreter-Sprache,
aber das wird der Lage nicht ganz gerecht, denn tatschlich ist Java beides.
Java-Quellcode wird zunchst mit einem compiler(er heit javac) bersetzt,
allerdings nicht in den Maschienencode des jeweiligen Prozessors, sondern in
Sogenannten Bytecode. Man kann sich deisen Bytecode als einen Maschienecode
eines virtuellen Prozessors vorstellen, das heit eines prozessors den es gar nicht
gibt.
Damit der Bytecode nun von einem echten Prozessor ausgefhrt erden kann, muss
er whrend des Programmlaufs in dessen Maschienencode umgewandelt werden,
das heit der Interpreter ist zum abspielen des Programms notwendig, den man
einfach wie Sprache getauft hat, also java.
Warum diese seltsame Mischung aus Compiler und Interpretersprache? Die Antwot
liegt auf der Hand. Es geht darum, die Vorteile beider Systeme miteinander zu
verbinden.
- Die vorkompilierte Bytecode kann wesentlich schneller interpretiert werden
- Die bersetzung in Bytecode schtzt Ihre Algorithmen vor unerwnschter
Nnachahmung
- Der Bytecode ist platformunabhngig. Gleichgltig auf welcher Computer der
Bytecode erstellt ist, er wird immer identisch aussehen. Es ist dadurch mglich,
Bytecode von einem Rechner zum nchsten zu transferieren (z.B. ber das internet)
und dort ausfhren zu lassen ohne die geringste nderung vornehmen zu mssen.
Der Interpreter hat die Mglichkeit, die Programmausfhrung zu berwachen und
beispielweise (absichtlich oder unabsichtlich) unkorrekte Speicherzugriffe oder
Datenmanipulation zu erkennen und direkt mit einer Fehlermeldung abzufangen.
Dies ist insbesondere unter Sicherheitsaspekten interessant. Da Java fr das
Internet und somit fr den beliebigen Datenaustasch konzipiert ist, muss weitgehend
sicergestellt werden, dass ein Java-Programm, das man mit seinem Browser durch
einen mehr oder weniger achtlosen Klick startet, nicht irgendwelche blen Sachen
anstellt. Ein Interpreter der Stndig darauf achtet was ein Java-Programm gerade tun
will, ist dafrein geeigneter Ansatz.

Zusammenfassend lsst sich sagen, dass Java-Programme aufgrund des Compiler/


Interpreter-Ansatzes hardwareunabhngig und somit portabel sind und gleichzeitg ei
relativ hohes Ma an sicherheit vor Manipulation bieten. Diese Vorteile gehen jedoch
zu Lasten der Geschwindiggkeit. Interpretierte Java-Programme sind trotz Bytecodee
langsamer als vergleichbare C/C++ Programme. Dies sollte Sie aber nicht
abschrecken. Moderne Prozessoren sind schnell genug und viele Programmen
verbringen die meiste Zeit sowieso mit warten auf Benutzereingaben sodass der
Gschwindigkeitsnachteil gar nicht zum tragen kommt. Zudem verwenden modernen
Java-Interpreter spezielle Techniken, wie z.B. die sogennante Just-in-timeCompilation(JIT) um den Geschwindigkeitsnachteil minimal zu halten.
1.5

Vorbereitung zum Programmieren

Bevor wir im nchsten Kapitel voll in die Programmierung einsteigen , sollten Sie
ihren Computer vorbereitet haben. Folgende Zuteten sind fr das erstelliung von
Java-Programmen notwendig:
-Die Java-Entwicklungsumgebung (JDK)
-Die JDK besteht aus einer Sammlung aller fr Programmierung notwendigen
Tools(Compiler, Interpreter, Debugger, AppletViewer, etc.), den zu Java gehrenden
Standardbibliotheken und einer reihe von Beispielprogrammen. Die JDK-Tools
werden von der Konsole aus aufgeruffen. Linuxanwender fen hierzu einen
Terminalfenster, windows-Anwender die Eingabeauffrderung.
-Texteditor
-Webbrowser(wie z.B UC Browser), Opera, oder Firefox
Den browser bentigen sie einerseits zum Studiu der Java Klassendokumentatione,
anderseiteits zum testen von selbst erstellten Applets.