Obwohl Java noch nicht alt ist, hat es bereits eine bewegte Vergangenheit hinter sich. So hat Java Gegner zu gemeinsamen Projekten vereint, die ohne diese revolutionäre Technik sich wahrscheinlich nie an einen Tisch gesetzt hätten. Apple und Microsoft kooperieren beispielsweise seit geraumer Zeit bei der Entwicklung ihrer virtuellen Java-Maschinen. Aber Java erzeugt auch Unfrieden. Bekanntlich laufen diverse Klagen zwischen Sun und Microsoft. Diversen Quellen zufolge ist der Java-Erfinder Sun Gegner Nummer 1 von Microsoft. Dies macht sicher deutlich, wie mächtig Java ist, welches gewaltige Sprengpotenzial sich hinter diesem kleinen Wort verbirgt.
Ob in Kooperation oder ohne Partner - zahlreiche Giganten der Computerbranche setzen mittlerweile auf Java. Die Liste liest sich wie das »Who is who« der EDV-Welt. Aber auch außerhalb der EDV-Kernbranche gibt es mehr und mehr Java-Projekte: Industrie, Banken, Versicherungen, Kreditkartenfirmen. Es gibt wahrscheinlich keine Branche, wo keine großen Java-Projekte laufen. Insbesondere nach der Jahrtausendwende und dem Freiwerden der davor in Altprojekten gebundenen Ressourcen haben Java-Projekte erheblich zugenommen. Java hat sich als eine der wichtigsten Programmiertechniken der Gegenwart etabliert. Und obwohl niemand in die Zukunft sehen kann, riskiert man wohl keine Fehlaussage, wenn man Java als die Programmiersprache der Zukunft bezeichnet.
Bevor wir mit Java als Programmiersprache beginnen, soll auf die Java-Welt und das Java-Umfeld im weiteren Sinn eingegangen werden. Java unterscheidet sich in vielerlei Hinsicht von anderen Programmiersprachen wie COBOL, FORTRAN, BASIC, PASCAL oder aber auch SMALL TALK und C/C++. Die Unterschiede beschränken sich nicht auf die oft als Hauptkriterium genannte Objektorientierung von Java. Die Objektorientierung gilt zwar als eine der herausragenden Eigenschaften von Java und dürfte ein entscheidender Grund für den phänomenalen Erfolg von Java sein. Die Differenzen umfassen jedoch die komplette Java-Welt und das Java-Umfeld selbst. Immerhin gab es auch schon vor Java objektorientierte Sprachen wie Lisp oder Small Talk, die allerdings nie über ein »Mauerblümchendasein« hinaus kamen. Java muss also mehr bieten als nur Objektorientierung. Java ist für eine heterogene Welt, sei es das Internet mit seinen diversen Rechnermodellen, sei es ein PC, ein Mac, ein Unix-Rechner, sei es nur eine Kaffeemaschine oder ein Videorecorder, entwickelt worden. Die damit zusammenhängende Plattformunabhängigkeit ist das zweite wichtige Kriterium, um die Bedeutung von Java einschätzen zu können. Deshalb ist die Beschäftigung mit der Java-Welt sicher ein guter und gewinnbringender Einstieg in die Materie.
Java ist eng mit dem Begriff Internet verbunden. Vielfach wird Java sogar als eine reine Internet-Sprache bezeichnet. So stimmt das aber nicht, zumal Java ursprünglich gar nicht auf das Internet zielte. Internet-Sprache als Charakterisierung für Java fasst einfach nicht das ungeheure Potenzial, das in der Technologie steckt. Das oft zitierte Beispiel eines Java-Betriebssystems für eine Kaffeemaschine oder eine Waschmaschine macht die allgemeinere Bedeutung sicher deutlich.
Trotzdem nimmt das Internet eine zentrale Stelle in der Java-Welt ein. Vielleicht kann man das Internet etwas unseriös als »Hebamme« für die Geburt von Java bezeichnen. Wir wollen uns Java aus diesem Grund über die Geschichte des Internets näheren.
Das Internet und seine Firmenableger - die Intranets - wachsen permanent. Das Internet boomt! Der Computer als eigenständige, unabhängige Recheneinheit gehört selbst im Privatbereich der Vergangenheit an. Kontakt zu einem Netzwerk und/oder zum Internet ist die Regel. Insbesondere sind über das Internet unzählige Rechner unterschiedlichster Bauart und mit den verschiedensten Betriebssystemen zusammengeschlossen. Das World Wide Web und die anderen Internet-Dienste sind ein riesiges, geniales, dezentrales, dynamisches, unstrukturiertes und- im besten Sinn des Wortes - chaotisches System, das sämtliche Bereiche des täglichen Lebens durchdrungen hat. Eine E-Mail-Adresse und eine Homepage sind für jedes wichtigere Unternehmen Pflicht, aber auch im Privatbereich selbstverständlich. Besonders beeindruckend ist vor allem das immer noch anhaltende rasende Wachstum des Internets. Und ein Ende ist noch nicht abzusehen.
Da das Internet immer mehr von Nichtfachleuten genutzt wird, kennen auch prozentual gesehen immer weniger Anwender Details davon. Früher nutzten das Internet hauptsächlich Experten. Heute sind die Experten absolut in der Minderheit. Und so kommt es, dass das Internet von Laien oft mit dem World Wide Web (WWW) gleichgesetzt wird (so wie viele Amerikaner Bayern mit Deutschland gleichsetzen und viele Deutsche Holland mit den Niederlanden :-)). Dies kommt nicht zuletzt daher, dass die Geschichte und die anderen Dienste des Internets kaum bekannt sind. Obwohl das WWW inzwischen unbestreitbar die wichtigste Säule ist, besteht das Internet natürlich aus mehr Diensten, ist mehr als nur das populäre WWW. Das Internet ist ein gigantisches, weltweites Computernetzwerk, das die unterschiedlichsten Dienstleistungen anbietet, die vielfach weit älter sind als das WWW.
Abbildung 2.1: Das News-Fenster des Netscape Navigators
Elektronische Post, Möglichkeiten von weltweiter Werbung und Repräsentation, Diskussionsforen, das Suchen von Informationen in einer riesengroßen Informationsquelle, das Ausführen von Programmen auf entfernten Computern oder das Laden von Dateien und Programmen von - über die ganze Welt verteilten - Rechnern auf den eigenen Computer und wieder zurück sind nur einige dieser Dienste. Dazu kommen Internet-Telefonie, die Verzahnung von Arbeit auf dem lokalen Rechner und permanenten Zugriffen auf Internet-Server, Online-Bankgeschäfte und einkaufen per Internet. Wer will, kann sein ganzes Leben rund um das Internet aufbauen. Viele dieser Möglichkeiten haben primär nichts mit dem WWW zu tun (obwohl sie oft darüber mittels Verweisen genutzt werden können).
Im Internet gibt es natürlich nicht nur Licht. Diverse Probleme werfen dort Schatten. Gerade die Heterogenität der Plattformen und Rechner ist sicher ein Hauptproblem für Software im Internet. Andere wesentliche Probleme betreffen die Interaktion zwischen Anwendern an ihren Clients und den Servern sowie Sicherheitsfragen. Java bietet dafür und für viele andere Internet-Fragen einen wichtigen Lösungsansatz.
Die Geschichte des Internets zeigt eines der wenigen nützlichen Resultate des kalten Kriegs der vergangenen Jahre. Die Furcht amerikanischer Militärs vor einem Atomschlag durch die ehemalige UdSSR veranlasste in den späten Sechzigerjahren die Vereinigten Staaten von Amerika, eine Organisation namens Advanced Research Projects Agency (ARPA) zu beauftragen, für das US-Verteidigungsministerium mit großem finanziellem Aufwand ein Rechnersystem zu entwickeln, das selbst nach einem atomaren Erstschlag der UdSSR noch funktionieren sollte und den Gegenschlag organisieren konnte.
Erstes Resultat war im Jahre 1969 ein Forschungsnetzwerk aus vier miteinander verbundenen Großrechnersystemen. Ein zentraler Großrechner als Mittelpunkt dieses Rechnersystems kam nicht in Frage, weil bei seinem Versagen ein Gesamtausfall des Rechnersystems die Folge gewesen wäre.
Kleinere und unabhängig voneinander aufgebaute Rechnersysteme mussten entwickelt werden. Dabei war es unmöglich, nur homogene Rechnersysteme zu fordern. Die Verbindung von heterogenen Rechnersystemen war notwendig. Diese Verbindung zwischen den einzelnen Systemen sollte unter allen Umständen funktionieren - sogar beim Ausfall eines beliebigen Rechners im Netz. Da feste Standleitungen mit Sicherheit bei einer solchen Katastrophe wie einem Atomschlag zerstört würden, reichten diese als einzige Verbindung nicht aus. Zusätzlich musste das Netzwerk - ursprünglicher Name ARPANET bzw. gelegentlich ARPNET genannt - über flexible Leitungen, etwa Telefonleitungen, kommunizieren können. Für eine maximale Fehlertoleranz und Sicherheit des Netzes sollten immer mehrere Wege zwischen sämtlichen Computern im Netzwerk möglich sein. Nachrichten im Netz mussten in der Lage sein, quasi selbstständig den Weg zum Adressaten zu finden. An jedem Knotenpunkt von Informationswegen sollte eine Nachricht selbstständig den optimalen freien Weg zum nächsten Knotenpunkt finden. Dies erzwang als eine Konsequenz die Zerlegung von Informationen in kleinere Datenpakete, die unabhängig voneinander verschickt werden konnten.
Für die Datenhaltung auf den einzelnen Rechnern sah das ursprüngliche Konzept folgende Logik vor: Die Daten und Funktionalitäten sollten nicht nur auf einem Rechner, sondern auf allen unabhängigen Rechnern gehalten werden (eine Art Backup-Verfahren). In regelmäßigen Abständen sollten die Daten abgeglichen werden. Dabei wurden in der Anfangsphase immer nur komprimierte Datenpakete übermittelt, die man dann offline auswerten musste. Online-Übertragung mit direkter Verwendung der Daten, wie sie heute etwa im WWW praktiziert wird, kannte man in der Anfangszeit des Internets noch nicht. Online-Anwendungen kamen erst später hinzu.
In der Anfangsphase wuchs das ARPANET langsam (was auf Grund der zu dieser Zeit immensen Kosten sicher verständlich ist) und bestand 1972 aus ungefähr 50 Systemen. Insbesondere zwang der Kostendruck die Militärs, das Netz für zivile Zwecke zu öffnen. Besonders die National Science Foundation (NSF), eine Dachorganisation verschiedener Bildungseinrichtungen in den USA, zeigte Interesse am Internet und sorgte dafür, dass im Laufe der Zeit zahlreiche Universitäten und andere Forschungseinrichtungen an das Internet angeschlossen wurden. Damit erlangten immer mehr Personen Zugang zum Netz, die nicht unbedingt als militärisch zuverlässig zu betrachten waren. Die Militärs begannen um die Sicherheit ihrer Geheimnisse zu bangen. Große Teile des militärischen Bereichs wurden deshalb Anfang der Achtzigerjahre in ein eigenes Netz, das MILNET, ausgegliedert. Der zivile Teil wurde Internet genannt.
Da zentrale Ideen des Internets flexible Möglichkeiten der Datenübertragung und die Unterstützung heterogener Rechnerplattformen waren, mussten verschiedene Protokolle entwickelt werden, über die sich die Rechner verständigen konnten und die unabhängig von der eigentlichen Rechnerarchitektur und dem normalen Befehlssatz des jeweiligen Betriebssystems waren.
Andere Protokolle mussten die Verbindung zwischen den Systemen regeln. Es war ja durchaus vorgesehen, dass Verbindungen über unterschiedlichste Wege aufgebaut werden, etwa einen Telefonanschluss. Und da muss beispielsweise ein kontaktierter Rechner einen Anruf eines anderen Rechners von einem Telex-, Fax- oder Sprachanruf unterscheiden können. Zusätzlich Vereinbarungen innerhalb von Protokollen regeln die konkrete Datenübertragung und überprüfen die übertragenen Daten auf Fehlerfreiheit. Da bei jeder Datenübertragung Fehler entstehen können, sind bessere Protokolle ebenfalls in der Lage, fehlerhafte Daten zu erkennen und gegebenenfalls während der Übertragung vom Sender noch einmal anzufordern.
Viele im Internet gebräuchliche Protokolle basieren auf Unix-Protokollen. Grund ist, dass das ursprünglich im ARPANET hauptsächlich verwendete Betriebssystem Unix war und so waren die am Anfang verwendeten Protokolle natürlich Unix-Datenübertragungsprotokolle. 1973 wurde mit IP (Internet Protocol) ein Transportprotokoll präsentiert, das plattformunabhängigen Transport von Daten garantieren sollte. Bereits Anfang 1974 erschien eine Verbesserung - das auf IP basierende Erweiterungsprotokoll TCP (Transmission Control Protocol), das eine noch fehlerfreiere Übertragung gewährleistete.
TCP funktioniert nur mit IP als Unterbau, gibt aber diesem erst seine Übertragungssicherheit. Und so kommt es, dass heute beide Protokolle meist nur noch in Verbindung verwendet werden (TCP/IP). Seit 1983 ist TCP/IP das Internet-Standard-Protokoll für Direktverbindungen und dient sogar zur Definition der Begriffe Internet/Intranet (alle auf dem TCP/IP-Protokoll basierenden Netzwerke). Es löste das bis dahin verwendete Internet-Standard-Protokoll NCP (Network Control Protocol) ab.
TCP/IP ist ein sehr leistungsfähiges Transportprotokoll, aber eben nur ein reines Transportprotokoll. Man kann sich die Situation ganz gut vorstellen, wenn man sie mit dem Eisenbahnverkehr vergleicht. TCP/IP ist in dieser Vorstellung das Schienennetz, über das der eigentliche Verkehr rollt. Auf diesen Schienen rollen in unserem Gedankenmodell also Züge, die als Dienstprotokolle oder Internet-Dienste bezeichnet werden. Je nach Aufgabe gibt es Personenzüge, Güterzüge, Postzüge, Wartungszüge oder kombinierte Varianten. Für verschiedene Aufgaben werden verschiedene Zugarten (Dienste) eingesetzt. Aber so, wie man in einem Personenzug auch Waren transportieren kann, so können manche Dienste im Internet auch vielfältig eingesetzt werden. Vielleicht nicht so effektiv wie die Spezialvariante, aber dennoch mit Einschränkungen möglich.
Auf das Internet bezogen stellt man sich TCP/IP als untere Schicht, Dienstprotokolle als eine Schicht darüber vor.
|
|
Man spricht im Zusammenhang mit dem Internet-TCP/IP-Protokoll auch von einem so genannten Schichtprotokoll. |
Die Dienstprotokolle, die auf dem TCP/IP-»Schienennetz« aufsetzen, sind Dienste wie Telnet, FTP oder auch das WWW. Das aus HTML aufgebaute World Wide Web wurde im Mai 1991 auf den Rechnern des Kernforschungszentrums CERN (European Organisation for Nuclear Research, Genf) erstmals offiziell vorgestellt. Die ersten Ansätze dieses Projekts gehen allerdings bereits bis in den März 1989 zurück. Damals schlug ein Mitarbeiter von CERN, Tim Berners-Lee, ein Hypertext-Projekt für das Internet vor, um darüber verteilte Inhalte miteinander zu verbinden. Es sollte ein vernetztes Hypertext-System geschaffen werden, in dem die vielen Informationsquellen von CERN über eine gemeinsame und vor allem einfach zu bedienende Oberfläche verfügbar sein sollten. Eigens für dieses Projekt wurde eine Organisation namens W3C (http://www.w3.org) gegründet, deren ursprüngliches Ziel es also war, Wissenschaftlern aller Fachbereiche eine leicht zu bedienende Struktur zu schaffen.
Viele Wissenschaftler aus EDV-fremden Sparten waren Ende der Achtzigerjahre nicht in der Lage oder gewillt, sich mit der relativ komplizierten Befehlsstruktur von FTP, Telnet oder den anderen Diensten auseinander zu setzen. Das WWW sollte auch Nicht-EDV-Freaks unter den Wissenschaftlern die Möglichkeit eröffnen, Daten und Informationen auszutauschen und in weltweiten Datenbeständen zu recherchieren. Dabei war von vornherein vorgesehen, über reinen Text hinausgehende Daten mit einzubeziehen. Basis für eine Sprache zu Beschreibung eines solchen Hypertext-Systems war SGML (Standard Generalized Markup Language - siehe: http://www.w3.org/MarkUp/SGML/), eine bereits seit den Sechzigerjahren verwendete Beschreibungssprache zur Darstellung von Inhalten auf unterschiedlichen Plattformen. Daraus entstand die neue Beschreibungssprache HTML (Hypertext Markup Language), die mit einer geeigneten Darstellungssoftware (dem so genannten Browser) diesen Anforderungen genügte. Mit der ersten Version von HTML präsentierte das W3C zwar nur einen aus heutiger Sicht sehr einfachen Standard, in dem zunächst nur die Möglichkeit bestand, relativ simple HyperText-Systeme im Internet aufzubauen. Diese konnten jedoch bereits wie geplant neben einfachem Text und Hyperlinks bereits Grafiken enthalten. Insbesondere war damit das daraus und dem zusätzlich entwickelten Protokoll HTTP (Hypertext Transfer Protocol) entstehende WWW bereits den bisherigen Internet-Diensten in Bezug auf Anwenderfreundlichkeit überlegen.
Richtig populär wurde das Internet freilich erst durch den Mosaic-Browser, den ersten WWW-Browser mit einer grafischen Oberfläche. Die gemeinsame Erfolgsstory von WWW und dem Browser begann im Jahr 1993, als dieser von Marc Andreessen am National Center for Supercomputing Applications (NCSA - http://www.ncsa.uiuc.edu/) an der Universität von Illinois zum ersten Test freigegeben wurde. Erstmals nahm neben den bisherigen Internet-Anwendern (Militärs, Wissenschaftler und EDV-Experten) eine private Öffentlichkeit Notiz vom Internet und begann eine erste Erkundungstour mit diesem Browser. Lange Zeit stand der NSCA-Mosaic als Synonym für die Darstellungssoftware des WWW. Insbesondere ist er der Vorfahr des Netscape Navigators, den Marc Andreessen 1994 entwickelt hatte, nachdem er NSCA verlassen und mit Jim Clark die Firma Netscape gegründet hatte.
HTML ist wie gesagt die Abkürzung für Hypertext Markup Language und wurde aus der in der ISO-Norm 8779:1986 festgeschriebenen Sprache SGML (Standard Generalized Markup Language) entwickelt. HTML ist als Ableger von SGML im Gegensatz zu SGML speziell auf Hypertext-Funktionen ausgerichtet (wie man bereits aus dem Namen ableiten kann).
|
|
HTML ist für die Arbeit mit Java eine zentrale Grundlage, denn die Funktionalität von Java- Applets basiert auf einer Verknüpfung mit HTML. |
HTML ist keine (!) Programmiersprache wie Java, PASCAL oder C/C++, sondern eine so genannte Dokument-Beschreibungssprache (oder Dokumentenformat genannt). Mit einer Dokument-Beschreibungssprache werden die logischen Strukturen eines Dokuments beschrieben und kein Programm im eigentlichen Sinn erstellt. Insbesondere fehlen HTML Variablen und Programmfluss-Anweisungen, die zentrale Bestandteile einer Programmiersprache sind. Im Grunde gibt ein Dokumentenformat nur unverbindliche Empfehlungen an eine Darstellungssoftware (bei HTML Browser genannt), wie eine bestimmte Dokumentenstruktur darzustellen ist, damit sie dem geplanten Layout und der vorgesehenen Funktionalität entspricht. Es gibt allerdings keine absolute Darstellungsvorschrift, weswegen sich Darstellungen von HTML-Seiten in verschiedenen Browsern oft erheblich unterscheiden können (eine Folge der geplanten Plattformunabhängigkeit).
Zu einer durch HTML beschriebenen logischen Dokumentenstruktur gehören Verweise, aber auch Kapitel, Unterkapitel, Absätze usw. HTML-Dateien bestehen dabei aus reinem Klartext. Dadurch bleiben HTML-Dokumente plattformunabhängig. Wie später bei Java war diese Plattformunabhängigkeit neben der extrem einfachen Benutzerführung per Hyperlinks in einer so heterogenen Welt wie dem Internet der wichtigste Schlüssel für den Erfolg des WWW. Plattformabhängig ist im WWW immer nur die Software zum Interpretieren der HTML-Dateien (der Browser).
Da von Anfang an ein in HTML geschriebenes Dokument mit den Texten, Grafiken sowie einigen weiteren multimedialen Elementen (Sound, Video usw.) verknüpft werden sollte, mussten entsprechende Techniken entwickelt werden. Elemente, die jenseits von Textanweisungen zu sehen sind, werden in einer Webseite als Referenz auf eine entsprechende externe Datei notiert. Wenn diese in einer Webseite dargestellt werden soll, muss natürlich die Präsentations-Software entsprechende Softwaremodule und die Hardware die zugehörigen Komponenten (beispielsweise eine Soundkarte für akustische Daten) verfügbar haben.
Eine weitere wichtige Eigenschaft von HTML ist, Verbindungen zu anderen Internet-Diensten in eine Webseite aufnehmen zu können. Diese werden als Referenz in einer Webseite notiert, weshalb unter der Oberfläche des WWW viele Dienste wie E-Mail oder FTP verfügbar gemacht werden können. Es ist sogar eingeschränkt möglich, mit HTML Datenbankabfragen zu formulieren, die Resultate optisch aufzubereiten und Menüstrukturen aufzubauen. Auch Interaktion mit Anwendern ist - allerdings mit erheblichen Einschränkungen - in purem HTML zu realisieren.
|
|
Hinter der Normung von HTML stand und steht auch heute noch das World Wide Web- Consortium (W3C - http://www.w3.org) mit Sitz in Genf. |
HTML beinhaltete in der Version 1.0 nur wenige der heute im Web zu findenden Möglichkeiten. Da bereits der Mosaic-Browser diverse eigene Features implementiert hatte, die von dem einfachen HTML-1.0-Standard stark abwichen, und sich der Browser (und noch einige andere grafische Browser) rasend schnell verbreitete, versuchte das W3C relativ zügig, einen um einige dieser neuen Möglichkeiten erweiterten HTML-Standard zu schaffen.
Der im November 1993 gestartete Versuch - ein Diskussionspapier mit dem Namen »HTML + Discussion Document« - konnte sich allerdings nicht als neuer Standard durchsetzen. Das W3C hatte sich bereits als Forum von unterschiedlichsten Interessengruppen von einer effektiven Arbeit verabschiedet. Erst im September 1995 konnte der nächste HTML-Standard, die Version 2.0, verabschiedet werden.
Dieser 2.0-Standard enthielt eine ganze Menge Gestaltungsmöglichkeiten für das WWW, die sich seit dem 1.0-Standard schon in diversen Browsern als zusätzliche Features etabliert hatten. Dazu gehörten unter anderem die Elemente der äußeren Dokumentenstruktur (zum Beispiel Kopfteil mit Meta- und Titelzeile, die Body-Struktur), verschiedene Arten der Überschrift, Hyperlinks, Hervorhebungen, Befehlsstrukturen zu einer flexiblen Grafikeinbindung, aber auch bereits Tabellen, Listen und Formulare. Dies waren nur ein Teil der potenziellen HTML-Möglichkeiten, denn durch die Trägheit des W3C (in Bezug auf das unglaublich dynamische Internet) hatten sich derweil verschiedenste Browser-spezifische Dialekte gebildet, unter denen eine Standardisierung des WWW auch heute noch krankt. Die nächste HTML-Version (3.0) wurde wegen der mangelnden Konsensfähigkeit der am W3C beteiligten Organisationen und Unternehmen nie offiziell verabschiedet. Allerdings war die Version 3.0 durch viele mehrfach vorhandene, aber syntaktisch unterschiedliche Anweisungen so aufgebläht, dass die in der Ende 1996 offiziell verabschiedete Version 3.2 vorgenommene Straffung dringend notwendig war. Zwar hatte HTML 3.2 nicht mehr alle in 3.0 versuchten Möglichkeiten. Dafür wurde nun offiziell die Fähigkeit integriert, Objekte aus anderen Internet-Techniken in eine Webseite einzubauen. Insbesondere lassen sich seit dem 3.2-Standard Java-Applets in jede beliebige Webseite integrieren.
Der HTML-Standard 3.2 hatte ungefähr ein Jahr Bestand. Ende 1997 fand die offizielle Verabschiedung eines neuen HTML-4.0-Standards statt, der auch heute noch aktuell ist. Dieser neue HTML-Standard beinhaltet einige interessante Details, die in großen Teilen von der Java-Entwicklung beeinflusst wurden oder zumindest parallel dazu gehen.
Abbildung 2.2: Der HTML-4.0-Standard wird auf den W3C-Seiten erstmals postuliert.
Das Internet ist im besten Sinne ein chaotisches System. Das bedeutet, es gibt keine oberste Instanz, kein Kontrollorgan, keine Organisation zur Zensur. Zwar gehören einzelne Teile des Internets (Hosts, WANs, LANs, der private Rechner,...) irgendwelchen Besitzern, jedoch das ganze Netz selbst gehört niemandem. Es gibt keine zentrale Gesellschaft, die das Internet überwacht und lenkt.
Es existieren jedoch einige Gruppen und Organisationen, die sich mit Entwicklungen im Internet befassen, versuchen Standards zu definieren, Absprachen zur Kontrolle zu treffen und das Internet (in gewissen Grenzen) lenken. Sie sind allerdings auf relativ freiwillige Kooperation der Internet-Teilnehmer (vor allem der einflussreichen kommerziellen Unternehmen) angewiesen. Hier ist eine kleine Liste von wichtigen Organisationen (ohne Anspruch auf Vollständigkeit).
Tabelle 2.1: Organisationen im Internet
Unbestritten ist das Internet ein äußerst großes und komplexes Gebilde. Mainframes, eigenständige Netzwerke, einzelne Rechner - alle sind zu dem Netz der Netze zusammengeschlossen. Wie finden Daten in solch einem scheinbaren Chaos den Weg vom Sender zum Empfänger? Und bei einer Anfrage den Weg wieder zurück? Für diese Weiterleitung von Daten gibt es im Internet spezielle Server mit Adressinformationen und einer Weiterleitungsfunktionalität - so genannte Router. Router erledigen die Weiterleitung von Daten durch das Netz, indem sie ein Datenpaket jeweils in die optimale Richtung schicken, damit das Datenpaket dem Ziel »näherkommt«. Wenn die kürzeste Wegstrecke jedoch verstopft ist (also fast immer :-)), kann die optimale Wegstrecke ein Datenpaket physikalisch vom Ziel entfernen. »Näherkommen« ist also in Bezug auf die Ankunftszeit zu sehen und irgendwann kommen die meisten Daten beim Adressat dann doch an. Wie aber sieht die Verarbeitung von Adressinformationen auf den Routern aus? In einem derartig komplizierten Computernetzwerk ist eine Orientierung und Navigation nur dann möglich, wenn es dort ein eindeutiges Adresskonzept gibt. Dabei müssen sowohl die einzelnen Rechner, aber auch die Softwarebestandteile eindeutige Adressen haben.
Zunächst zu den Computern selbst: Für jeden einzelnen Rechner innerhalb eines Netzwerks muss eine eindeutige Zuordnung existieren. Dies gilt selbstverständlich auf für das Internet. Diese Zuordnung geschieht im Internet über eine eindeutige Adresse, die unter dem Transportprotokoll TCP/IP genau vier Byte lang ist. Sie wird als IP-Nummer bezeichnet. Da in einem Byte 256 verschiedene Zeichen binär dargestellt werden können (2 hoch 8 = 256), lässt sich in jedem der vier Byte eine Zahl zwischen 0 und 255 verschlüsseln. Insgesamt sind so also rein theoretisch 4.294.967.296 (256 hoch 4) Computer im Internet adressierbar. Gewöhnlich werden die IP-Nummern im Dezimalsystem darstellt und jedes Byte mit einem Punkt abgetrennt (zur besseren Lesbarkeit).
Eine fiktive IP-Nummer eines Host wäre also so darstellbar: 123.187.111.189
Das Adresskonzept der IP-Nummern sieht eine Gliederung der vier Byte in logische Abschnitte vor. Die Gliederung ist hierarchisch und in zwei wesentliche logische Abschnitte unterteilt. Der erste Teil der vier Byte ist die eindeutige Adresse eines Netzwerks, das mit dem Internet verbunden ist (der so genannte Netzwerkidentifikator). Der zweite Teil ist die eindeutige Adresse des einzelnen Rechners innerhalb dieses von dem ersten Byte eindeutig bestimmten lokalen Netzwerks (Hostidentifikator). Ein Datenpaket wird nur dann in einem lokalen Netzwerk weitergeroutet, wenn der Netzwerkidentifikator korrekt ist.
Wie viele Bytes dabei für die Adresse des Netzwerks und wie viele Bytes für die Adresse des einzelnen Rechners verwendet werden, ist vom Typ des Netzwerks, d.h. der Größe des lokalen Netzwerks, abhängig. Ein weltweit gültiges Regelwerk sorgt für die eindeutige Zuordnung und Klassifizierung. Zwar klingt das im ersten Moment ziemlich kompliziert und willkürlich, es ist dennoch gut durchdacht und bei näherem Hinsehen logisch. Lokale Netzwerke werden im Internet in drei Klassen unterteilt.
Wann eine IP-Adresse welchem Typ zuzuordnen ist, wird durch ein Konzept von Zahlengruppen festgelegt, die das erste Byte betreffen. Es muss ja eindeutig festgelegt sein, ob das zweite und dritte Byte bereits den lokalen Rechner adressiert. Das erste Byte von einem Klasse-A-Netz hat immer einen Wert zwischen 1 und 126. Dementsprechend gibt es maximal 126 verfügbare Netzwerke dieser Klasse. Der B-Netz-Bereich geht von 128 bis 191 (daraus resultieren maximal 16.3841 verfügbare Adressen für B-Netzwerke) und der Wert des ersten Byte von einem C-Netz liegt zwischen 192 und 223, was maximal über zwei Millionen verfügbare Adressen für C-Netzwerke bedeutet. Außer den Nummernkreisen ist keine andere Zuordnung festgelegt.
Durch die hierarchische Struktur der IP-Nummern wird ein Datenblock auf seinem Weg vom Sender zum Empfänger von einem Router zuerst nur in eine Grobrichtung weitergeleitet, die sich aus der ersten logischen Adressangabe (je nach Klasse dem ersten, den ersten beiden oder den ersten drei Bytes) ergibt. Erst wenn der Datenblock an dem Router angekommen ist, zu dem das lokale Netzwerk gehört, werden die genauen Adressangaben von innerhalb des Netzes liegenden Adress-Servern ausgewertet.
Bei fast allen Datenübermittlungen im Internet werden IP-Nummern verwendet, obwohl Anwender sie selten sehen. IP-Nummern sind zwar hervorragend dazu geeignet, in kompakter und eindeutiger Form eine Adressierung von Rechnern vorzunehmen, jedoch für Menschen sind diese abstrakten Zahlenkolonnen oft lästig. Aus diesem Grund wurde den Zahlencodes zusätzlich ein eindeutiger Alias-Name zugeordnet und diese Zuordnung weltweit auf speziellen Namensservern dokumentiert.
In Gegensatz zu der Zuordnung der IP-Nummern auf Grund der Größe der Netzwerktopologie erfolgt die Vergabe der eindeutigen Namen nicht über irgendwelche Größenangaben oder sonstige topologische Eigenschaften, sondern ist ein System von logisch und inhaltlich zusammengehörigen Rechnergruppen.
Dennoch ist auch dieses Namensystem hierarchisch geordnet. Logisch zusammengehörende Bereiche werden Domain genannt, woraus sich der Name für dieses Namenssystem ableiten lässt: Domain-Name-System, kurz DNS. Genau wie bei den IP-Nummern werden die einzelnen Bestandteile eines DNS-Namens mit Punkten getrennt, die hierarchische Wertigkeit der Stufen ist jedoch umgekehrt, also von hinten nach vorne zu lesen. Der hinterste Teil eines solchen Alias-Namens stellt die gröbste logische beziehungsweise inhaltliche Einteilung da (die so genannte Top Level Domain), etwa eine Nation oder eine Organisationsform. Der unter Umständen zweiteilige Mittelteil (die so genannte Local Level Domain (Teil 1 des Mittelteils) und die Second Level Domain (Teil 2 des Mittelteils - von hinten gelesen) ist eine genaue Beschreibung des Rechnerverbandes bzw. des Rechners selbst. Der vorderste Teil bezeichnet direkt den einzelnen Server auf einem Rechner bzw. Rechnerverband.
Gültige Alias-Namen (rein fiktiv) für eine Adressangabe in diesem DNS-Konzept sind:
ftp.cs.tu-muenchen.de www.rjs.de webscripting.de java.sun.com www.mut.de
Der hinterste Teil des DNS-Namens wird für Rechner, die ihren Standort in den USA haben, seit Beginn des Internets nach einem eigenen Regelwerk ausgewählt. In der Regel erfolgt kein direkter Hinweis auf die Nation. Es gibt in diesem nur in den USA gültigen (was bedeuten soll, die Rechner sind dort registriert, adressiert werden können sie von überall her und auch die physikalische Präsens ist davon unberührt) Regelwerk nur sechs (sieben mit dem nachfolgend letztgenannten Spezialfall) logische Bereiche, in die alle Computer in den USA unterteilt werden (daher ist die Nation implizit klar). In der folgenden Tabelle sind sie alphabetisch aufgelistet.
Tabelle 2.2: Top-Level in den USA
Beispiele für gültige Namen für Rechner in den USA sind:
altavista.digital.com www.webcrawler.com ourworld.compuserve.com
Außerhalb den USA werden die Top Level Domain-Namen als Abkürzungen für die Ländernamen genommen. Diese Ländercodes sind in der ISO-3166-Norm (http://www.din.de/gremien/nas/nabd/iso3166ma/) festgelegt. Ein paar wichtige Beispiele folgen:
Tabelle 2.3: Top-Level außerhalb der USA
|
|
Für die USA ist die Top Level Domain us reserviert, obwohl dort ein anderes Konzept priorisiert wird. |
Wie wir bereits diskutiert haben, verwendet das TCP/IP-Protokoll IP-Nummern zur Adressierung. Die DNS-Namen müssen durch spezielle Namens-Server erst in die zugehörigen IP-Nummern übersetzt werden. Da das Internet so groß und komplex ist, übersteigen die gesamten Alias-Namen die Kapazität eines einzelnen Namens-Servers. Sofern ein Alias-Name nicht auf dem zuerst kontaktierten Namens-Server zuzuordnen ist, wird entsprechend der Namenshierarchie in einem komplexen Verfahren der Übersetzungsauftrag an andere Namens-Server weitergeroutet, bis die IP-Nummer vollständig ermittelt ist.
Computer sind über die IP-Nummern beziehungsweise ihre Alias-Namen eindeutig adressiert. Innerhalb des Internets müssen aber alle Daten und Programme in Form von unverwechselbaren Internetadressen adressiert werden. Dabei werden neben der Rechneradresse zusätzlich einige andere Angaben notwendig.
Der Name dieser Internetadressen für konkrete Adressanfragen an Dokumente (im weitesten Sinn) im Internet lautet URL und steht für Uniform Resource Locator, was übersetzt ins Deutsche ungefähr »einheitliches Adressierungsschema für Objekte im Internet« bedeutet (ziemlich ungünstige Übersetzung, aber leider üblich und abgesehen vom Klang recht treffend). Einheitlich deshalb, weil mit einer URL sowohl verschiedenen Dienste wie WWW, FTP, Gopher usw. als auch Rechner selbst oder direkt Dokumente beschrieben werden können.
Der Begriff Objekt steht in diesem Zusammenhang für so ziemlich alles, was Sie im Netz finden. Die exakte Schreibweise ist je nach Dienstprotokoll leicht unterschiedlich, sieht jedoch in der Regel folgendermaßen aus:
<Dienstprotokoll>://<host.domain:port></pfad></datei>
Dienstprotokoll steht beispielsweise für http, ftp, gopher, news, mailto oder wais. Danach folgt ein Doppelpunkt und fast immer zwei Schrägstriche zur Abtrennung (eine Ausnahme ist mailto).
host.domain wird ein Server im Internet adressiert. Dabei kann direkt die IP-Nummer eingegeben werden, was jedoch nicht üblich ist. Meist nimmt man dafür den DNS-Namen in der Form Server.{LocalDomain}.SecondLevelDomain.TopLevelDomain
:port festzulegen, auf welchem Kanal dieser Server angesprochen werden soll.
</pfad></datei>. Dies ist eine übliche Pfad- und Dateiangabe im Rahmen der Verzeichnisstrukturen eines Rechners. Beachten Sie, dass diese gesamten Angaben von Unix abstammen und deshalb als Trennzeichen kein Backslash (wie unter DOS oder Windows), sondern Slash verwendet wird.
Die Geschichte von Java geht bis ins Jahr 1990 zurück, in die Labors der amerikanischen Firma Sun Microsystem. Sun war (und ist) einer der führenden Hersteller von Workstations. Die Sun-Workstations basieren auf dem Unix-Betriebssystem Solaris und Sparc-Prozessoren.
Abbildung 2.3: Die Sun-Homepage
Die Geschäfte der Firma Sun mit Workstations und Mainframes liefen zu dieser Zeit zwar gut, aber Sun-PCs waren eigentlich nicht richtig konkurrenzfähig. Als Reaktion auf den drohenden Einbruch im PC-Markt rief Scott McNealy, der Sun-Chef, auf Anraten eines seiner Programmierer - Patrick Naughton - eine Entwicklergruppe mit Namen »Green« ins Leben, dessen zentrale Mitarbeiter neben Naughton James Gosling und Mike Sheridan waren. In dem hochgeheimen Projekt - niemand außer den obersten Führungskräften von Sun wusste in der Anfangsphase Bescheid - sollte der zukünftige Bedarf an EDV analysiert werden, um einen zukunftsträchtigen Markt für Sun zu lokalisieren. Haupterkenntnis des Green-Projektes war, dass die Computerzukunft nicht im Bereich der Großrechner (soweit nichts Besonderes, denn dies ahnten auch damals schon andere), jedoch auch nicht unbedingt bei den PCs zu sehen ist (und dies war neu und nicht unumstritten). Der Consumerbereich der allgemeinen Elektronik (Telefone, Videorecorder, Waschmaschinen, Kaffeemaschinen und eigentlich alle elektrischen Maschinen, die Daten benötigten) war nach Ansicht des Green-Projektes der Zukunftsmarkt der EDV. Wichtigste Forderungen an ein neues, vollkommen plattformunabhängiges Betriebssystem für dieses Einsatzfeld waren eine erheblich größere Fehlertoleranz, eine leichtere Bedienbarkeit und eine bedeutend bessere Stabilität als bei bisherigen Betriebssystemen.
Im Frühjahr 1991 entwickelte sich aus den Planungen ein konkretes Projekt zur Generierung eines Prototyps für ein solches universales Betriebssystem. Ab August 1991 wurde - hauptsächlich von James Gosling - nach einer geeigneten Programmiersprache dafür gesucht. Allerdings entschieden sich die Green-Entwickler nicht für eine bereits existierende Programmiersprache, denn diese wiesen zu große Schwächen in Hinblick auf die Stabilität auf. Gerade bei Bedienerfehlern - und diese gestand man beim Green-Projekt der potenziellen Zielgruppe, Consumer, im Gegensatz zur gängigen Praxis bei Computeranwendern einfach zu - waren diese Programme einfach zu intolerant. Eine neue, plattformunabhängige und objektorientierte Sprache musste entwickelt werden. Der Name für diese neue Sprache? Nein, noch nicht Java. Oak - zu deutsch Eiche. Warum Oak? Bekannt ist das Gerücht, dass James Gosling einfach kein passender Name einfiel und er beim Brüten über neue Namen permanent auf eine imposante Eiche vor seinem Büro geblickt haben soll. Eine etwas andere Variante verlegt die Eiche in ein an der Wand hängendes Bild. Dieses ist aber alles inoffiziell und sicher nicht so wichtig. Eine seriöse Erklärung für Oak ist, dass es die Abkürzung für »Object Application Kernel« war. Allerdings findet man diesen Begriff in offiziellen Sun-Quellen nicht sofort, was wohl damit zusammenhängt, dass Sun sich nicht so gerne an Oak erinnert (dazu gleich mehr). 1992 präsentierte das Green-Team der Sun-Führung mit Duke, einer kleinen Trickfigur in einem virtuellen Haus, das erste Ergebnis. Und Duke überzeugte. Ein Sun-Tochterunternehmen namens First Person (im Prinzip das Green-Projekt, aber als unabhängige Firma) wurde gegründet, um das Projekt weiter zu entwickeln und der Öffentlichkeit sowie der Elektronik- und Unterhaltungsindustrie bekannt zu machen. Die Zeit war allerdings noch nicht reif für die neue Technik, die ersten Kontakte verliefen im Sand und First Person verzettelte sich zusätzlich in viele Kleinexperimente. 1994 verschwanden Oak und First Person wieder in der Versenkung und das Green-Team kehrte zurück zu Sun. Dann aber bewahrte ein anderes Ereignis Oak vor dem völligen Vergessen - der legendäre Mosaic-Browser. Dieser hatte sich mittlerweile als eine feste Größe im Internet etabliert und mit seinen Möglichkeiten wurde plötzlich das heterogene Internet zu einer möglichen Zielplattform für Oak. William Joy, einem Mitbegründer von Sun, ist es zu verdanken, dass Oak Ende 1994 für das Internet umgearbeitet wurde und zudem entsprechend dem gerade vorexerzierten Netscape-Geschäftsmodell über das Netz frei und umsonst verteilt wurde. Die geniale Theorie hinter diesem besagten Netscape-Geschäftsmodell heißt, Marktanteile ohne Gewinn zu erobern, um dann einen Standard festlegen zu können. Kassiert wird danach. 1995 war es soweit - Oak war zum großen Auftritt im Internet bereit. Allerdings musste aus zwei Gründen ein neuer Name gefunden werden. Marketinggründe waren der eine. Oak war ob der gescheiterten Experimente zu negativ belastet. Es gab gleichfalls juristische Schwierigkeiten, denn der Name Oak war einem anderen Produkt zu ähnlich. Und wieder war die Namensgebung eine schwierige Geburt. Man konnte sich nicht auf einen Namen einigen. Dem Gerücht nach wurde der Name dann außerhalb des eigentlichen Brainstormings in der Cafeteria gefunden. JAVA! Der Name Java ist in Amerika - wie inzwischen wohl allgemein bekannt - eine Bezeichnung (eigentlich altenglisch) für das wichtigste Grundnahrungsmittel von Programmierern: Kaffee, heißen, sehr heißen Kaffee (und ist natürlich ebenfalls eine Insel in Indonesien).
Im März 1995 präsentierte Sun Java und das zugehörige Paket von Entwicklungs-Tools (das JDK) der breiten Internet-Öffentlichkeit. Java schlug dort bekanntlich wie eine Bombe ein. In einem Atemzug mit Java wird bei diesem Datum oft der Begriff HotJava genannt.
Erst die Kombination mit HotJava verschaffte Java die gebührende Aufmerksamkeit. HotJava war die erste komplexe und vollständig in Java geschriebene Anwendung und naheliegenderweise der erste Java-fähige Browser. Und damit die Präsentationsplattform für die ersten Java-Applets. Zudem war er eine wesentliche Ergänzung der ersten Java-Entwicklungstools von Sun - dem Java Development Kit 1.0 oder kurz JDK 1.0 (HotJava gehörte und gehört immer noch nicht zu dem JDK). Dieses Development Kit soll in der neuesten Version2 natürlich noch ausführliches Thema dieses Buchs sein.
Kurz nach Präsentation des JDK 1.0 wurde von der Sun-Tochter Sunsoft mit dem Java-Workshop ein kommerzielles Entwicklungspaket nachgeschoben. Dieser war wie der HotJava-Browser vollständig in Java geschrieben und damit plattformunabhängig. Außerdem bot der Java-Workshop gegenüber dem frei verfügbaren Java Developement Kit statt einer kommandozeilenorientierten Shell, rudimentären Test- und Debug-Möglichkeiten sowie einem Referenzcompiler bereits eine integrierte Entwicklungsumgebung mit Editor, Browser, Project-, Portfolio- und Build-Manager, Debugger, Project-Tester und Online-Hilfe.
Abbildung 2.4: Der 1. Java-Workshop von Sunsoft
Andere Hersteller sollten schnell folgen und heute gibt es eine Vielzahl von integrierten Java-Entwicklungsumgebungen. Alle basieren jedoch auf dem JDK. Meist direkt, indem sie die Tools des JDK einfach aufrufen, oder indirekt, indem sie die Funktionalitäten nachbilden. Natürlich gab es im ersten JDK diverse kleinere Kinderkrankheiten. Einige betrafen die Sicherheit, andere fehlende Funktionalitäten.
Dies ist für ein vollkommen neues Produkt verständlich (und leider in der Softwarebranche üblich, wie die permanenten Schnellschüsse Windows oder die verschiedenen Office-Pakete sehr drastisch zeigen) und dürfen auf keinen Fall als Kritikpunkte an Java missbraucht werden. 1997 folgte deshalb nach einigen kleinen Zwischenversionen das erste bedeutende Update mit der Version 1.1 des JDK, der diverse kleinere Verbesserungen folgen sollten. Neben den für Updates üblichen Fehlerbereinigungen enthielten die Versionen 1.1.x einige entscheidende Neuerungen. Diese machten eine ganze Reihe von neuen Tools für das Java-SDK (Software Development Kit) nötig. Bestehende Tools wurde vielfach überarbeitet und sowohl im Layout als auch im Funktionsumfang verändert.
Bereits Ende 1997 gab es dann die ersten Betaversionen zum JDK 1.2 und Java 1.2, wie nach den damaligen Veröffentlichungen die komplette Plattform heißen sollte. Das Final wurde für das erste, spätestens aber das zweite Quartal 1998 angekündigt. Daraus wurde jedoch nichts. Die Einführung von Java 1.2 und JDK 1.2 wurde immer wieder verschoben. Insgesamt vier Betaversionen fanden den Weg in die Öffentlichkeit. Diese erwiesen sich als recht stabil und allgemein wurde fast täglich die Freigabe der Finalversion erwartet. Aber erst im Dezember 1998 ließ Sun gleich zweimal eine Bombe platzen. Am 4. Dezember 1998 hatte Sun endlich die Finalversion des JDK 1.2 freigegeben. Pikanterweise erfolgte dies unmittelbar, nachdem im Rahmen des Rechtsstreits mit Microsoft um Java die Redmonder eine erneute Niederlage hinnehmen mussten. Ein Schelm, wer vermutet, Sun nutzte die Aufmerksamkeit, um die Beachtung der neuen Java-Plattform zu erhöhen. Die zweite Bombe explodierte kurz danach auf der Java Business Expo. Nicht nur ein neues JDK, sondern ein vollständiges Plattform-Update unter dem Namen Java 2.0 wurde dort offenbart. Entgegen der allgemeinen Erwartung wurde das vollständige Update nicht als Version 1.2 in Umlauf gebracht. Mitte 2000 erschien dann das JDK 1.3, das das JDK 1.2 im Rahmen der Java-2-Plattform ablöste. Die gesamte Plattform wird aber immer noch Java 2 genannt.
Im Gegensatz zu HTML ist Java das Produkt einer Organisation, nicht eines Konsortiums von unterschiedlichsten Interessengruppen. Zudem ist Java vollkommen neu entwickelt worden und muss sich nicht mit Altlasten rumplagen, wie es beispielsweise C++ tun muss. Statt sich immer auf den kleinsten Nenner einigen zu müssen, konnten relativ leicht innovative Ideen und Denkansätze verfolgt und realisiert werden. Dies ist sicher ein Baustein für Erfolg und Leistungsfähigkeit von Java.
Ein weiterer Baustein ist das Umfeld, in dem Java das erste Mal präsentiert wurde. Beim Auftreten von Java gab es einige Merkmale für den einschlagenden Triumph. Dabei waren es für verschiedene Gruppen von Leuten durchaus unterschiedliche Aspekte, die Java zu dem durchschlagenden Erfolg verhalfen.
Für die reinen Anwender waren es sicher im Wesentlichen zwei Dinge: grafische, dreidimensionale Animationen und Interaktionsmöglichkeiten von Internet-Anwendern. Das Auftreten von Java und etwas später seinem Skript-Ableger JavaScript kam für Internet-Anwender einer Revolution gleich. Dem WWW (von den zeilen- oder Menü-orientieren Diensten ganz zu schweigen) fehlten, mit dem bis zu diesem Zeitpunkt realisierten Stand von HTML, einige ganz entscheidende Merkmale: eine dreidimensionale Darstellung von Objekten, eine bewegte Animation und die Möglichkeit einer vernünftigen Interaktion mit dem Anwender. Java rannte mit seinen Multimedia- und Interaktionseigenschaften schon lange geöffnete Türen ein.
Die ziemlich eingeschränkten Interaktionsmöglichkeiten von WWW-Surfern beruhten bis dahin im Wesentlichen auf so genannten Hotspots, sensitiven Elementen auf HTML-Seiten, die beim Anklicken eine Aktion auslösten. Bei der Mausaktion »Klick« muss bei Hotspots die Cursorposition ausgewertet und zum Server zurückgeschickt werden (wie auch immer technisch realisiert). Aber auch eine Tastatureingabe des Anwenders auf einer Webseite musste zum Server übermittelt werden. Auf dem Server wurde die Eingabe verarbeitet und eine neue HTML-Seite zurück zum Client geschickt. Dieser Mechanismus wird CGI (Common Gateway Interface) genannt. Die größte Arbeitslast liegt bei den Servern und den Leitungen des Internets. Der Client steht relativ ungenutzt herum und wartet (meist sehr, sehr lange).
Der Ansatz von Java für die Optimierung dieser Vorgänge lag darin, dem Prozessor des Clients einen Teil der Arbeit zu übertragen. Denn obwohl die Rechner der Internet-Anwender immer leistungsfähiger wurden, lagen sie für die Internet-Arbeit normalerweise ziemlich brach. Der Client wurde zum dummen Terminal aus grauer Großrechner-Urzeit degradiert. Es war eigentlich absolut unlogisch, einen Hochleistungs-PC oder einen vergleichbaren Rechner als Client zu verwenden und ihn mit Aufgaben zu betrauen, die ein ZX81 (Kultrechner Anfang bis Mitte der 80er-Jahre mit Folientastatur und 1-16 KByte Hauptspeicher) zur Not noch zu Wege gebracht hätte. Java-Applets sorgten also mit einer Arbeitsverlagerung auf den Client für Aufsehen.
Das zweite Java-Highlight für die Anwender - die neuen Darstellungsmöglichkeiten - sorgte zum ersten Mal für echtes Multimedia im Internet. Als Java der Öffentlichkeit präsentiert wurde, fanden Anwender bis dahin beim Surfen nur passive Seiten (zudem noch zweidimensional) vor, die weitgehend in HTML 1.0 oder 2.0 geschrieben waren. Selbst wenn es Texte mit Hyperlinks waren und recht komfortabel Effekte wie Grafiken oder Sounds eingebunden werden konnten, die Einschränkung »Text« blieb. Insbesondere die dreidimensionale Darstellung von Objekten war damit nicht zu realisieren. Genauso wenig eine bewegte Animation. Mit Java änderte sich die Situation schlagartig, die dritte Dimension hielt bewegend Einzug ins Netz.
Für die EDV-Spezialisten gab es neben diesen beiden offensichtlichen Knallern jedoch noch andere Gründe. Ein oft genannter Grund ist, dass Java ohne Mitwirkung des »Reichs des Bösen« (liebevoller Kosename für Microsoft - zumindest von allen Nicht-Microsoft-Abhängigen) entstanden ist. Da gab es etwas Neues, Revolutionäres, Innovatives und Bill Gates war nicht dabei. Nicht nur das, Microsoft schätzte als einziges wichtiges EDV-Unternehmen die Internetentwicklung zu dieser Zeit vollkommen falsch ein und ignorierte die ungeheuren Zukunftsperspektiven. Eine in der Computerwelt zu diesem Zeitpunkt einmalige Chance für andere/neue Unternehmen, EDV-Entwicklung zu gestalten, ohne von Microsoft die Richtung angezeigt zu bekommen. Firmen wie Sun oder Netscape nutzten die Gunst der Stunde.
Bald aber hatte Microsoft seine erste Fehleinschätzung revidiert und sich mit Vehemenz in Entwicklungsprojekte rund um das Internet gestürzt. Allerdings schien es lange so, als ob sich Microsoft bei Java ziemlich kooperativ verhalten wollte. Die Partnerschaft mit Apple bzgl. der JVM- und JRE-Entwicklung (JRE - Java Runtime Environment) signalisierten Kooperationsbereitschaft mit anderen Unternehmen. Diverse Aktionen von Microsoft in der jüngeren Vergangenheit verstärkten jedoch wieder die Befürchtungen der Anti-MS-Gemeinde, Bill Gates wolle doch Java und das Internet umarmen und verschlingen. Dazu zählt beispielsweise die Weigerung von Microsoft, die Java Foundation Classes, die Klassenbibliothek zur Erstellung grafischer Oberflächen, als Bestandteil der Sprache Java anzusehen. Damit wähnt sich Microsoft natürlich frei von etwaigen Lizenzbestimmungen, die Microsoft dazu verpflichten würden, die JFC mit jeder Java-VM auszuliefern - und damit in den Internet Explorer und Windows zu integrieren. Microsoft entwickelte statt dessen zwei Gegenentwürfe: Die eigenen AWT-Klassen und J/Direct (Teil der Direct-Technologie von Microsoft), das es Java-Programmen erlaubt, Windows-Routinen zu nutzen. Beides natürlich plattformabhängig an Windows gebunden. Dies und diverse andere Aktionen führten zu mehreren Rechtsstreitigkeiten zwischen Sun und Microsoft, wobei Sun die meisten gewonnen hat. Insbesondere hat Sun erreicht, dass bestimmte Microsoft-Produkte das Java-Logo nicht führen dürfen, wenn sie nicht den Sun-Vorgaben entsprechen.
Aber zurück zu den Erfolgsfaktoren von Java: Die Java-Eigenschaften Objektorientiertheit und Plattformunabhängigkeit waren die weiteren und wohl wichtigsten Gründe für den Erfolg. Und last but not least - die extreme Stabilität von Java.
Java hat - wie jedes gute Kind - offiziell zwei Elternteile. Die Syntax ist im Wesentlichen eine an C/C++ angelehnte Programmiersprache, die Konzeption und die Objektorientiertheit stammen eher von dem anderen Elternteil - Small Talk. Als »Trauzeugen« werden ab und zu noch Eiffel und Objective-C genannt.
Warum aber ist Java so erfolgreich? Eigentlich war es ein einfaches Rezept: Es wurden die Stärken der Vorfahren genommen, die Schwächen ausgemerzt und dann fehlende, sinnvolle Innovationen hinzugefügt. Zwar war einer der Java-Ahnen sowieso objektorientiert (Small Talk), jedoch kaum verbreitet. Dies liegt wohl in der vollständigen Andersartigkeit von Small Talk (gegenüber anderen Programmiersprachen wie C, PASCAL, Basic, COBOL oder FORTRAN). Small Talk ist zwar sehr leicht zu erlernen, jedoch einfach nicht mit gewohnten Befehlsstrukturen vergleichbar. Zumindest aus damaliger Sicht. Java macht nicht den Fehler von Small Talk und vermeidet ein gänzlich neues Befehlskonzept, sondern definiert sich von der Syntax eigentlich als eine Art bessere Untermenge von C++. Der Umstieg von C/C++ auf Java stellt also für die meisten Entwickler keinen großen Aufwand dar.
Von dem anderen Elternteil C/C++ hat sich Java zwar die Syntax geliehen, aber diverser C/C++-Altlasten entledigt und ist erheblich einfacher geworden, ohne viel an Leistungsfähigkeit gegenüber C/C++ zu verlieren. Dies betrifft einmal die Objektorientierung. Obwohl man mit C/C++ objektorientiert programmieren kann, hatte die überwiegende Mehrzahl der Programmierer C/C++ nie so eingesetzt. Die Möglichkeit des prozeduralen (altbekannten) Programmierens untergräbt bei C/C++ den strengen objektorientierten Gedanken. Java lässt einem Programmierer diese Wahl nicht. Man kann nur objektorientiert programmieren. Aber im Gegensatz zu C++ wurde keine Mehrfachvererbung realisiert, was Java-Programme viel besser wartbar macht. Ein weiterer Vorteil von Java gegenüber C/C++ ist, dass die Java-Syntax weniger kompliziert ist. Dies betrifft im Wesentlichen ziemlich üble C/C++-Möglichkeiten wie Zeiger, Operator-Overloading, manuelle Speicherverwaltung (d.h. das Speichermanagement, also das Beschaffen und das Freigeben von Speicher durch den Programmierer), automatische Konvertierung von Datentypen, Headerdateien, Pre-Prozessoren, Strukturen, Variant-Datentypen und multidimensionale Arrays. Auf die genauen Unterschiede soll an einer anderen Stelle im Buch eingegangen werden.
Insbesondere sollte Java nach Erwartung der Java-Väter (und Mütter) einige der wichtigsten Probleme moderner Programmierung lösen. Kernprinzipien von Java sollten die Eigenschaften kompakt, zuverlässig, portierbar, dezentral, echtzeitfähig und integriert sein. Die offizielle Definition von Sun Microsystems zu Java lautet folgendermaßen:
Zusammenfassend kann man sagen, dass Java eine der wohl spannendsten Entwicklungen der letzten Jahre in der EDV war und immer noch ist. Nahezu konkurrenzlos für die Bereiche, wo es auf Plattformneutralität und Stabilität ankommt, hat sich Java zu einer festen Größe entwickelt. Java bietet weit mehr als nur die Möglichkeit, im Internet kleine, bunte »Progrämmchen« zu erstellen. Es ist eine der leistungsfähigsten Entwicklungsumgebungen, die man sich vorstellen kann.
1 2Und auch in älteren Versionen, da es für deren Verwendung immer noch Argumente gibt.
| © Copyright Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH Elektronische Fassung des Titels: Java 2 Kompendium, ISBN: 3-8272-6039-6 Kapitel: 2 Schnuppertour Java |