Java ist eine von Sun Microsystems urpsprünglich für die Steuerung von elektronischen Haushaltsgeräten entwickelte Sprache.
Java ist objektorientiert und syntaktisch an C++ angelehnt.
Seitdem Sun ihre Sprache 1995 der Öffentlichkeit als Sprache fürs WWW vorgestellt hat, ist eine wahre Java-Euphorie ausgebrochen. Die meisten modernen Browser verstehen Java und können Applets, das sind Java-Programme speziell fürs Internet, ausführen. Mit ihnen werden viele Aufgaben realisiert:
von der visuellen Darstellung von Kursverläufen und Berechnung der individuellen Vermögensentwicklung, bis hin zu elektronischen Warenkörben, der Anbindung an Datenbanken und Generierung von XML.
Java ist aber mehr als "nur" eine Sprache fürs Internet:
Neben den bekannten Applets gibt es auch Servlets, die wie der Name schon sagt, nicht im Browser des Benutzers, sondern auf dem Server ausgeführt werden. Und last but not least ist Java eine vollwertige Programmiersprache, mit der vom Internet unabhängige Programme geschrieben werden, für alle denkbaren Anwendungsbereiche.
Für den Siegeszug von Java war ihre Plattformunabhängigkeit das entscheidende Merkmal. Allerdings zeichnet sich Java noch durch weitere Eigenarten und Verbesserungen gegenüber anderen Sprachen aus. Sun selbst beschreibt ihre Sprache so:
» Java: A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded and dynamic language.«
Java ist einfacher - und dadurch robuster - als andere objektorientierte Sprachen wie C++ oder Smalltalk: Die Entwickler haben Sprachkonstrukte weggelassen, die häufig zu Fehlern führten, wie z.B. die Zeigerarithmetik aus C und C++, die Mehrfachvererbung aus C++ , die Präprozessoranweisungen aus C und C++ und die manuelle Freigabe des Speichers - in C++ eine beliebte Fehlerquelle.
Java ist entgegen Smalltalk streng typisiert. D.h. der Programmierer muss genau festlegen, welche Typen in einer Variable gespeichert werden können - und muss sich in seinem Programm auch daran halten: Automatische Typkonvertierungen, wie z.B. in C teilweise möglich, gibt es nicht mehr.
Java ist objektorientiert, das heißt, im Gegensatz zur prozeduralen Programmierung besteht das gesamte Programm nur aus Klassen und Objekten, die bestimmte Methoden und Eigenschaften haben.
Dynamisch bedeutet, dass die Klassenobjekte erst zur Laufzeit bei Bedarf geladen werden. Java besitzt mächtige Werkzeuge zur Netzwerkprogrammierung, d.h. Klassen können zur Laufzeit auch über das Netzwerk geladen werden.
Java wird in Byte-Code compiliert, der dann z.B. im Internet an den Browser geschickt wird, der den Byte-Code dann mit seiner integrierten Java-Virutal-Machine interpretiert.
Gerade im Haupteinsatzgebiet von Java, dem Internet, existieren noch viele Sicherheitslöcher. Java versucht, mit speziellen Mechanismen gegen den Missbrauch im Internet anzugehen. Z.B. wird jeder unbekannte Byte-Code von der Java Virtual Machine geprüft, bevor er ausgeführt wird. Die Prüfung stellt sicher, dass der Code korrekt ist, so dass er keinen Über- oder Unterlauf des Stacks veursacht und keinen illegalen Byte-Code enthält.
Weiterhin gab es bis zur Java 2 Plattform das sogenannte "Sandbox-Verfahren". Unbekannter Code wird in einem "Sandkasten" ausgeführt, einer Art sicheren Zone. Der Code darf nur innerhalb seines begrenzten Raumes agieren, und nicht auf andere Ressourcen, wie z.B. das lokale Dateisystem, zugreifen und kann somit auch keinen Schaden anrichten. Mit Java 2 wurde das Sandbox-Verfahren zu Gunsten eines flexibleren Verfahrens, Zugriffsrechte zu gewähren oder zu verweigern, fallengelassen.
Java wird oft nicht nur als Programmiersprache, sondern auch als Plattform, als Betriebssystemersatz, aufgeführt. Denn, vorausgesetzt die Java Virtual Machine ist auf dem Rechner installiert, kann ein und dasselbe Programm sowohl auf einer UNIX-Maschine, als auch auf einem PC oder einem Macintosh-Rechner ausgeführt werden. Die Java-Virtual-Machine dient als Schnittstelle zu dem jeweiligen Betriebssystem. Bei einer Software, die in 100% Java geschrieben wurde, liest man nicht mehr, dass die Software auf Win95, WinNt und MacOs läuft, sondern als Betriebsvoraussetzung ist lediglich eine Java-Plattform vorausgesetzt. D.h. die Java-Virtual-Machine muss auf dem jeweiligen Rechner installiert sein.
Dieses Attribut durfte nach Meinung von Sun's Marketingstrategen wahrscheinlich nicht fehlen, leider ist es im Bezug auf Java (noch) nicht sehr treffend: Java-Code wird interpretiert, d.h. zur Laufzeit wird erst der Code so umgewandelt, dass die jeweilige Plattform etwas damit anfangen kann: Und das dauert immer länger, als bereits für eine spezielle Plattform kompilierten Code aufzurufen und auszuf¨hren.
Allerdings wird an Verbesserungen gearbeitet:
Der JIT-Compiler (Just In Time Compiler) versucht Abhilfe zu schaffen: Der Byte-code wird nun nicht mehr ausschschließich interpretiert, sondern bei seinem ersten Aufruf zur Laufzeit compiliert. Die JVM startet dann den Maschinencode, der viel schneller abläuft als der Java Byte Code. Seit der Version 2.0 (Dezember 1998) ist der JIT-Compiler fester Bestandteil der Java-Entwicklungsumgebung.
Das Thread-Konzept ist in Java fest integriert. Es ermöglicht, dass Programme in mehrere unabhängig voneinander ablaufende Programmstränge (Threads) aufgeteilt und implementiert werden, so dass mehrere Aktivitäten quasi gleichzeitig ausgeführt werden können.
Stehen mehrere Prozessoren zur Verfügung, laufen die einzelnen Threads nicht nur beinahe, sondern real gleichzeitig ab und sorgen so, für eine optimierte Ressourcenauslastung.
Die Entwicklung von Java begann im Jahr 1991 bei Sun Microsystems. Innerhalb eines Projektes namens "Green" sollten Programme zur Steuerung von elektronischen Haushaltsgeräten und für interaktives Fernsehen (Settop Boxen) geschrieben werden.
Die Entwickler fanden schnell heraus, dass bestehende Programmiersprachen wie C oder C++ dafür nicht geeignet waren, da in C oder C++ geschriebene Programme für einen bestimmten Prozessor compiliert werden.
Da die einzelnen Geräte, wie z.B. Toaster und Waschmaschine sich in ihrem Aufbau stark voneinander unterscheiden, die Größen zum Teil sehr klein sind und häufig Komponenten ausgetauscht werden, ist eine Grundanforderung der neu zu entwickelnden Sprache die Plattformunabhängigkeit.
Das Entwicklerteam schuf eine neue, objektorientierte Sprache, die in ihrer Syntax an C++ angelehnt war - allerdings vermieden sie einige fehlerträchtige Sprachkonstrukte aus C++, wie Zeigerarithmetik und Mehrfachvererbung.
Bei der Präsentation der fertig entwickelten Sprache Oak (so hieß Java damals noch, steht für Object Application Kernel), interessierte sich allerdings niemand so recht für die neuen Möglichkeiten, die Oak bot. Die Sprache wäre wohl bald in Vergessenheit geraten, wenn nicht das WWW gewesen wäre:
Ein Web-Browser muss auf den unterschiedlichsten Plattformen arbeiten, stellt also genau die Anforderungen, für die Oak geschaffen wurde. Mit Oak können Programme ausgeführt werden, die für alle Plattformen gleich aussehen, egal ob auf Unix, Mac, dem Pc oder auf einer SunStation. Da bereits eine Computersprache namens "Oak" existierte, nannten die Entwickler Oak kurzerhand in Java um und stellten sie der Internet-Gemeinde vor - Java steht trotz hartnäckiger Gerüchte nicht für "Just Another Vague Acronym", sondern bedeutet im amerikanischen Umgangsenglisch schlicht und ergreifend "Kaffee".
Und plötzlich boomte Java: in den Nachrichten, in Zeitungen und Magazinen, überall war und ist von Java die Rede.
Ein Sun-Entwickler erklärt dieses Phänomen so:
» Java ist eine Lösung, die nur noch auf das passende Problem gewartet hat.«
Mittlerweile ist die Java-Virtual-Machine, = der Interpreter des compilierten Byte-Codes, in den Browsern von Netscape und Microsoft standardmäßig enthalten.
Datum | Ereignis |
---|---|
1991 |
Bei Sun Microsystems in MountainVies, Californien, arbeitet ein Team um James Gosling, Bill Joy und Patrick Naughton für ein Projekt namens "Green" an einer neuen Sprache zur Steuerung von elektronischen Geräten, wie Fernseher, Videorecoder und Audioanlagen.
Eine neue objektorientierte, syntaktisch an C++ angelehnte Programmiersprache entsteht: Oak (Object Application Kernel) |
seit 1991 |
Das Projekt "Green" benutzt die neu entwickelte Sprache OAK bei Ihrer Aufgabe,
neue Benutzerschnittstellen für die Kontrolle der häuslichen Umgebung, also Fernseher, Videorecorder, Beleuchtung, Telefon... zu entwickeln. Die Mitarbeiter de Green Projektes bauten einen tragbaren Computer mit Codenamen *7 (ausgesprochen: Star Seven). Er sah ungefähr wie ein tragbarer Mini-Fernseher aus. Die Benutzerschnittstelle war eine bunte, animierte Wiedergabe des Hauses mit der die Geräte durch Berühren des Bildschirms benutzt werden konnten. Die Software war komplett in Oak geschrieben. Die Benutzerschnittstelle der *7 benutzte animierte Figuren auf dem Bildschirm, um die Geräte zu steuern. ![]() Duke, das jetzige Java-Maskottchen, war eine dieser Figuren. Das Nachfolgeprojekt von *7 war eine video-on-demand Demonstration. Dies zeigte, dass die Zeichentrickwelt des *7 nicht nur zur Kontrolle von Konsum-Elektronik, sondern auch für Interaktives Fernsehen genutzt werden könnte. Beide Projekte kamen nie über das Experimental-Stadium heraus, jedoch halfen sie bei der Entstehung von Java. |
1993 | NCSA führt Mosaic ein, den ersten Browser mit einer graphischen Benutzeroberfläche, so dass UNIX-Kenntnisse für die Navigation im WWW nicht länger notwendig waren. Daraufhin boomt das WWW. Zuvor eher von der Wissenschaft beachtet, war das WWW nun für jedermann leicht zugänglich. |
1994 | Das Green-Projekt wird eingestellt, da niemand OAK lizensieren möchte. Doch die Mitarbeiter von Sun hatten eine zündende Idee: Durch ihre Plattformunabhängigkeit war Oak die ideale Lösung für das WWW. Da zwischenzeitlich bekannt geworden ist, dass bereits eine Computersprache namens "Oak" existiert, wird Oak kurzerhand in Java (in den USA umgangssprachlicher Ausdruck für Kaffee) umbenannt und der Internet-Gemeinde im WWW vorgestellt. |
1995 | Im Frühjahr stellt Sun den ersten www-Browser vor, der in Java geschrieben war: HotJava. Mit der Ankündigung von Netscape, dass ihr Web-Browser Navigator 2.0 Java-Programme in Web-Seiten ausführen wird, kam der ganze große Durchbruch für Java. Seitdem ist Java in aller Munde und ein enormer Bedarf an Java-Entwicklern ist in kürzester Zeit entstanden. |
1996 | Sun veröffentlicht die erste offizielle Entwicklungsumgebung für Java als Version 1.02. |
1997 | Im Mai 1997 erscheint die Java-Version 1.1 |
1998 |
Im Januar veröffentlicht Sun die Beta-Version 1.2 von Java Im Aprill veröffentlicht Sun die JavaVersion 1.1.6 Dezember 1998 wird die JavaVersion 1.2 als offizielle Java Plattform 2 von Sun veröffentlicht. |
1999 | Auf der Entwicklerkonferenz JavaOne in San Francisco im Juni wird die neue Plattformarchitektur vorgestellt. Die mittlere, durchgehende Ebene ist danach Java als Sprache. Darüber sitzen die Klassenbibliotheken, die in drei Ausbaustufen unterteilt sind. Das ehemalige JDK 1.2, mittlerweile als Java 2 bekannt, bildet die Java 2 Standard Edition (J2SE). Die Java 2 Enterprise Edition (J2EE) erweitert die Standardvariante um zusätzliche Server-Dienste (Enterprise Java Beans, Servlets und Java Server Pages). Speziell auf Nicht-PC-Geräte ist die schlanke Java 2 Micro Edition (J2ME) zugeschnitten. |
Ein ausführbares Java-Programm entsteht in zwei Schritten: Zuerst wird der Quellcode des Programmieres von dem Javacompiler javac compiliert, anschließend wird der erzeugte Byte-Code bei Ausführung des Programms interpretiert.
Grafisch sieht der Entstehungsprozess eines Java-Programms so aus:
1.
Zuerst wird mit einem beliebigen Editor ein Java-Programm geschrieben und mit der Endung .java abgespeichert. Der Dateiname entspricht dem Klassennamen in dem Programm.
Bsp:
public class ersteAnwendung
{public static void main(String[] argv)
{system.out.println("**********************");
System.out.println("* Hello World *");
System.out.println("* *********************");
}
}
Gespeichert wird dieses Programm unter dem Namen "ersteAnwendung.java".
2.
Das abgespeicherte Programm ersteAnwendung.java wird dann von einem compiler, z.B. Javac, in eine Datei mit der Endung "class", also ersteAnwendung.class umgewandelt.
Die Datei .class enthält den sogenannten ByteCode. Der Byte Code selbst ist noch kein Maschinencode, so dass ein Rechner mit dem Code noch nichts anfangen könnte.
3.
Der ByteCode wird zur Laufzeit des Programms von der Java Virtual Machine interpretiert und ausgeführt.
Und erst die JavaVirtual Machine wurde speziell für eine Plattform entwickelt und wandelt den systemneutralen Byte-Code in einen plattformspezifischen Maschinencode um.
Voraussetzung für das Ablaufen des Programms ist, dass eine Java Virtual Machine auf dem Rechner installiert ist. In Web-Browsern, wie z.B. Netscape Navigator, InternetExplorer und HotJava ist die Java Virtual machine implementiert. Andere JVM sind z.B. Jview oder Java.
Durch das Verfahren der Java Virtual Machine bleibt es dem Java-Programmierer also erspart, sich mit den Schnittstellen der einzelnen Betriebssysteme herumzuschlagen, er kann auf einer höheren Programmierebene arbeiten. Sein Programmcode sieht für jedes Betriebssystem gleich aus.
![]() |
![]() | Was sind Packages? |