Java

3.418504901978 (1632)
Geschrieben von tron 03/03/2009 @ 04:09

Tags : java, programmieren, high-tech, indonesien, asien, ausland

Neueste Nachrichten
Handbuch der Java-Programmierung - Studentenausgabe - PC-Welt
Heute ist das eBook "Handbuch der Java-Programmierung - Studentenausgabe"an der Reihe. Aus der Beschreibung des Verlages: Mit der Version 1.5 wurde die Leistungsfähigkeit der beliebten Java-Plattform erneut gesteigert; neue Sprachfeatures versprechen...
Zertifikate für Java Applets in Lotus Domino laufen ab - Heise Newsticker
Die Sicherheitszertifikate, mit denen die Java Applets von Lotus Domino, Quickplace, Quickr und Sametime signiert sind, laufen am kommenden Montag ab. Am Dienstag, den 19. Mai, erhalten dann alle Anwender, die über Web Browser auf diese Server...
Buch-TIPP: Java von Kopf bis Fuß - Erfassung und Verbreitung von Pressemitteilungen aus allen Branchen (Pressemitteilung)
Kathy Sierra und Bert Bates, die Köpfe hinter dem neuen Buchkonzept, arbeiten zumindest hart daran und die deutschen Übersetzer auch: Java von Kopf bis Fuß ist der nächste Wurf in Richtung widerspenstiger Hirnzellen, ein Verführung, mit viel Spaß und...
JavaOne 2009 - Canoo wird Teil der Java Utopia Area - openPR.de (Pressemitteilung)
In der Schweiz gilt die Canoo Engineering AG als Synonym für nachhaltige Business-Lösungen auf Java-Basis und bezieht folgerichtig einen Stand im Herzen der diesjährigen JavaOne. Die neu etablierte „Java Utopia Area“ ist das Herzstück des...
Scala - die Zukunft von Java - openPR.de (Pressemitteilung)
Damit setzt sich WeigleWilczek, bekannt für Exzellenz in Eclipse und OSGi, nun auch an die Spitze dieser neuen Programmiersprache für die Java-Plattform. Scala hat das Potential, die Java-Welt auf den Kopf zu stellen: Als Sprache für die Java Virtual...
Galaga Remix: Arcade-Klassiker auf dem iPhone - Chip Online
Nun gibt es mit "Galaga Remix" eine Umsetzung des Arcade-Klassikers fürs iPhone und den iPod Touch sowie für alle Java-fähigen Handys. Im dem Spiel müssen Sie Ihr Raumschiff sicher durch feindlich gesinnte Schwärme bringen. Dabei kontrollieren Sie Ihr...
Sorge vor Vulkanausbruch in Indonesien - WELT ONLINE
An dem rund 300 Meter hohen Berg auf einer kleinen Insel zwischen Java und Sumatra seien am Dienstag 230 Erschütterungen gemessen worden, teilte die zuständige Behörde am Donnerstag mit. Sie verhängte Alarmstufe drei, womit die Umgebung des Berges zum...
Bankverbindung prüfen mit Java-Modul UniBank - openBroadcast (Pressemitteilung)
Das Java-Modul UniBank prüft die Bankverbindung auf Gültigkeit bevor Fehler auftreten können. Die Prüfroutinen der Deutschen Bundesbank liegen dem Verfahren zugrunde. Zunächst wird die eingesetzte Bankenleitzahl geprüft. Diese Prüfung basiert auf dem...
Sun-Oracle: „Zusammenschluss bietet Chance, bisherige Probleme im ... - Computer Zeitung
von Armin Barnitzke Mit dem Kauf von Sun betritt Oracle kein Java-Neuland. Die Ellison-Company hat hier bereits einiges investiert, berichten Insider der Java User Group Stuttgart (JUGS). Sie erwarten sogar positive Impluse und erhoffen sich eine...
Oracle greift nach Suns Kronjuwelen Solaris und Java - VDI Nachrichten
Larry Ellison, Gründer und Chef von Oracle, erklärte, dass die Programmierplattform Java und das Betriebssystem Solaris für ihn die wichtigsten Erwerbungen bei diesem Deal seien. VDI nachrichten, Düsseldorf, 30. 4. 09, jdb Mit dem Kauf von Sun...

Swing (Java)

Die Widgets von Swing mit dem Ocean Look and Feel (Standard seit Java 1.5)

Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen. Swing wurde von Sun Microsystems für die Programmiersprache Java entwickelt. Seit Java-Version 1.2 (1998) ist es Bestandteil der Java-Runtime. Swing gehört zu den Java Foundation Classes (JFC), die eine Sammlung von Bibliotheken zur Programmierung von grafischen Benutzerschnittstellen bereitstellen. Zu diesen Bibliotheken gehören Java2D, das Accessibility-API, das Drag & Drop-API und das Abstract Window Toolkit (AWT). Swing baut auf dem älteren AWT auf und ist mit den anderen APIs verwoben.

Swing wurde erstmals mit dem JDK 1.1.5 als externe Bibliothek ausgeliefert und ist seit JDK 1.2 („Java 2“) fester Bestandteil der Java-Laufzeitumgebung. Swing hatte sehr bald den Ruf, eine schlechte Performance aufzuweisen und für „ernsthafte“ Anwendungen ungeeignet zu sein. Der Standard-Stil (Look&Feel) von Swing-Fenstern fand ebenfalls nicht besonders viele Freunde. Mittlerweile hat sich die Performance durch verbesserte Hardwareunterstützung der Beschleunigungsfunktionen von Grafikkarten und über Performance-Verbesserungen in den Klassenbibliotheken selbst und bei der Java Runtime deutlich verbessert.

Swing ist sehr flexibel, sehr „sauber“, modular und objektorientiert aufgebaut, so dass es sich gerade für die Entwicklung komplexer Anwendungen gut eignet. Durch die Plattformunabhängigkeit entfällt ebenfalls viel Entwicklungs- und Testarbeit.

Hauptkonkurrent von Swing ist das für Eclipse entwickelte SWT.

Swing ist nicht thread-sicher, es kann also zu unerwarteten Wechselwirkungen zwischen verschiedenen Threads kommen, wenn nicht sorgfältig programmiert wird. Statt dessen sind die Swing-Komponenten so implementiert, dass ihre Methoden stets in einem sogenannten Event Dispatch Thread von AWT ausgeführt werden müssen, der die gesamte Ereignisverarbeitung grafisch-interaktiver Java-Anwendungen durchführt. Um dies zu vereinfachen, stellt die Hilfsklasse SwingUtilities (seit Java 1.3 sollte EventQueue bevorzugt werden) zwei Methoden bereit, die aus anderen Threads heraus aufgerufen werden können und ein ausführbares Objekt vom Typ Runnable als Parameter nehmen.

Außerhalb des JRE stellte Sun eine „SwingWorker“ genannte Basisklasse zur Verfügung, die zwei zu überladende Methoden anbietet: Eine die in einem eigenen Thread aufgerufen wird und eine längerdauernde Operation ausführen kann und eine weitere, die nach dieser Operation im Event Dispatch Thread ausgeführt wird und Swing-Komponenten manipulieren darf. Seit Java 1.6 ist sie als javax.swing.SwingWorker im JRE enthalten.

Teile dieses Quellcodes werden von unterschiedlichen Threads ausgeführt. Der Thread, der die Methode main ausführt, ist für gewöhnlich nicht der Event-Dispatch-Thread (EDT). Swingkomponenten sollten jedoch generell nur vom EDT erzeugt und verändert werden (falls in der Dokumentation nicht ausdrücklich anderes steht). Daher wird der Quellcode für die GUI in ein eigenes Runnable-Objekt verpackt. Der Thread, der die Methode main ausführt, erzeugt also nur das Runnable-Objekt und weist Swing an, diesen Quellcode später im EDT auszuführen.

Zum Seitenanfang



Java (Insel)

Karte von Java

Java (indonesisch Jawa) ist eine der vier Großen Sunda-Inseln der Republik Indonesien neben den weiteren Hauptinseln Sumatra, Borneo (Kalimantan) und Sulawesi.

Auf Java liegt auch die indonesische Hauptstadt Jakarta.

Java liegt bei etwa 6° Süd/105° Ost bis ca. 9° Süd/115° Ost südlich von Kalimantan beziehungsweise dem Süden von Borneo und östlich von Sumatra im Indischen Ozean. Die Insel hat eine Fläche von 126.650 km² – mit kleineren vorgelagerten Inseln wie Madura sind es 132.107 km².

Java hat etwa 130 Millionen Einwohner (Stand 2006), mehr als jede andere Insel der Erde. Mit über 1.000 Einwohnern je km² ist die Bevölkerungsdichte eine der höchsten der Welt. Auf Java befindet sich die Hauptstadt der Inselrepublik Indonesien, Jakarta, mit über acht Millionen Einwohnern. Jakarta dehnt sich in der Fläche immer weiter aus und wächst mit den Nachbarstädten Bogor, Tangerang und Bekasi zusammen, wofür inzwischen der Kunstbegriff „Jabotabek“, zusammengesetzt aus den Anfangssilben der Namen der vier Städte, gebräuchlich wurde.

Die Insel ist außerordentlich fruchtbar. Im Westen finden sich noch kleinere Dschungelflächen, während es nach Osten zu allmählich trockener wird. Freie Flächen sind weitgehend kultiviert, wobei von Kaffee über Tabak und Mais zahlreiche Ackerbauprodukte gewonnen werden. Beherrschend aber ist der Reisanbau mit großen Feldern und Reisterrassen.

Neben den zu beobachtenden unterschiedlichsten Erscheinungsformen der Natur (Dschungel, Savannen, Mangrovensümpfen, einer Reihe teils noch aktiver Vulkane und Kraterseen), zeugen zahlreiche Tempelanlagen auf Java von einer wechselvollen Kulturgeschichte vor der Kolonialzeit. Die bedeutendsten sind der buddhistische Tempel von Borobudur sowie der hinduistische Tempel von Prambanan.

Java befindet sich, zusammen mit der größeren nordwestlichen Nachbarinsel Sumatra und den kleineren östlich gelegenen Inseln, an der so genannten Sundarinne bzw. dem Sundagraben. Der Sundagraben wiederum stellt die Subduktionszone nördlich der Australischen Platte dar.

Java, selbst fast zur Gänze vulkanischen Ursprungs, ist Teil des so genannten Pazifischen Feuerrings, des Vulkangürtels, der den gesamten Pazifischen Ozean umgibt. Auf der Insel gibt es 38 teils erloschene, teils noch aktive Vulkane; in ganz Indonesien beläuft sich die Zahl der aktiven Vulkane auf etwa 130.

Zu den bekanntesten Vulkanen der Insel zählen der Bromo (2.329 m) und der Merapi (ca. 2.985 m), der als einer der gefährlichsten Vulkane der Welt gilt. Südlich des Tengger-Gebirges mit dem Bromo erhebt sich der höchste Berg Javas, der 3.676 m hohe tätige Vulkan Semeru.

Neben Vulkanismus kommt es auf Grund der geologischen Gegebenheiten auch häufig zu Erdbeben. Das letzte schwere Beben mit der Stärke 6,3 auf der Momenten-Magnituden-Skala ereignete sich am 27. Mai 2006 um 5.54 Uhr Ortszeit. Das Hypozentrum lag nach Angaben des USGS etwa 25 km südsüdwestlich der Stadt Yogyakarta in einer Tiefe von circa 10 km. Das Hauptbeben, gefolgt von mehr als 1000 Nachbeben bis zu einer Stärke von 5,2, kostete nach Angaben der UNO vom 5. Juni 2006 annähernd 5.800 Menschen das Leben, bis zu 57.800 wurden verletzt, mehr als 130.000 Häuser wurden zerstört oder schwer beschädigt und bis zu 650.000 Menschen obdachlos. Am schwersten betroffen war die Stadt Bantul, wo allein etwa 2.400 Menschen starben und vier Fünftel der Gebäude zerstört wurden. Schwer beschädigt wurde auch die Tempelanlage Prambanan, die vorerst für Besucher geschlossen wurde. Der nahe gelegene Vulkan Merapi, der in den Wochen zuvor bereits verstärkt Aktivitäten gezeigt hatte, stieß kurz nach dem ersten Beben eine rund 3,5 km hohe Wolke aus Gasen und Asche aus. In den weiteren Tagen nach dem Beben verstärkte sich seine Aktivität noch weiter um mindestens das Doppelte.

Eine weitere Gefahr geht von Seebeben aus, die Tsunamis verursachen können. Das Seebeben vor Java am 17. Juli 2006 mit einer Stärke vom 7,7 auf der Richterskala, dessen Epizentrum rund 400 km vor der Küste lag, verursachte eine Flutwelle, die nach Augenzeugenberichten eine Höhe von bis zu 4 m erreichte. Ihr fielen auch durch einstürzende Gebäude mehr als 660 Menschen zum Opfer, etwa 300 werden noch vermisst. Zudem wurden rund 30.000 Menschen obdachlos. Besonders schwer betroffen war der Ort Pangandaran, der vor allem bei Einheimischen als Urlaubsort beliebt ist.

Im Mai 2006 bohrte die regionale Firma Lapindo ein ca. 3 km tiefes Loch, um auf vermutetes Öl zu stoßen. Jedoch entpuppte sich das Ölvorkommen als ein unterirdisches Wasservorkommen, welches sich nun als Schlammvulkan, einer großen, 140 °C heißen Schlammfontäne bemerkbar macht. Der Schlammvulkan auf Java überflutete bereits viele Dörfer und Städte im Osten Javas. Versuche, den fauligen Schlick in Flüsse zu leiten, schlugen bislang fehl. Geologen vermuten, dass es noch Jahre dauern könnte, bis sich das Wasservorkommen ausreichend geleert hat, dass der Vulkan zum Versiegen kommt. Ob das überhaupt geschehen wird, ist außerdem umstritten. Der neueste Versuch besteht darin, die angebohrte Stelle des Wasservorkommens mit einer schweren Flüssigkeit namens Micromax zu verschließen.

Dass die Insel Java bereits in prähistorischer Zeit besiedelt war, beweist der Fund des „Java-Menschen“, einer Unterart von Homo erectus, der vom niederländischen Anthropologen Eugene Dubois 1891 bei Trinil am Solo-Fluss in der Provinz Jawa Timur gefunden wurde.

Im ersten Jahrtausend nach Christus fassten Buddhismus und Hinduismus auf der Insel Fuß und verschmolzen mit Glaubensvorstellungen der ursprünglichen Bauernkultur. Mehrere Reiche bildeten sich, von denen die mächtigsten Pajajaran und Majapahit waren. Letzteres wurde zwar 1304 vom Sultan von Ternate erobert, kam jedoch 1359 wieder in den Besitz des Monarchen Hayam Wuruk, der in der Folge längere Zeit als Kaiser die ganze Insel beherrschte. Wirtschaftlich profitierte Java von seiner Lage an wichtigen Seehandelswegen nach China. Kulturell blieben aber Übernahmen aus Indien entscheidend. Eine parallele Entwicklung vollzog sich auf der Nachbarinsel Sumatra.

Anfang des 15. Jahrhunderts kamen moslemische Händler aus dem vorderindischen Gujarat auf die Insel, und eine Konversion zum Islam begann.

Zwar hatten die Portugiesen bereits 1579 erste Handelsverbindungen geknüpft, sie wurden aber bald von den erstmals 1594 gelandeten Niederländern verdrängt. Am 1. Juni 1619 eroberten die Niederländer Jakarta, das sie unter dem Namen Batavia zum Zentrum ihres Kolonialreiches in Asien machten. Auf Java selbst beschränkten sie sich vorerst auf die Herrschaft über die Stadt. 1629 belagerte Sultan Agum von Mataram die niederländische Kolonie, blieb aber erfolglos. Der javanische Adel fühlte sich durch Agum ebenfalls bedroht und griff auf Waffenhilfe der technisch überlegenen Niederländer zurück. Als Gegenleistung mussten sie der Niederländischen Ostindien-Kompanie (VOC) Land abtreten. Dadurch übernahm die VOC im Verlauf des 17. Jahrhunderts die Kontrolle über die ganze Insel. Java lag im Knotenpunkt der asiatischen Seerouten und erlaubte den Niederländern dadurch eine weitgehende Kontrolle des Handels außerhalb des von England dominierten Indien.

Gleichzeitig mit der Durchsetzung der Kolonialherrschaft breitete sich auch der Islam auf Java aus. Popularität gewann er vor allem, weil er von vielen Einheimischen als Gegengewicht zur Kultur der Europäer verstanden wurde. Auf der anderen Seite unternahmen die Niederländer kaum christliche Missionierungsversuche.

Die Niederländer setzten Chinesen als Händler und Steuereintreiber ein, wodurch diese sich bei der einheimischen Bevölkerung unbeliebt machten. Auch zwischen Niederländern und Chinesen wuchsen die Spannungen, weil die Kolonialherren die unkontrollierte Zuwanderung aus China zunehmend als Gefahr betrachteten. 1740 wurden tausende Chinesen in einem Pogrom in Batavia umgebracht. An den Morden beteiligten sich sowohl die lokale moslemische Bevölkerung als auch die niederländischen Kolonialtruppen. Ein Jahr später gab die Kolonialverwaltung offiziell alle Chinesen auf Java zum Abschlachten frei, was weitere Pogrome zur Folge hatte.

Am Anfang des 19. Jahrhunderts übernahm der niederländische Staat die direkte Kontrolle über die Kolonie, nachdem die VOC am 31. Dezember 1799 für insolvent erklärt worden war, und verstärkte in Zusammenarbeit mit dem javanesischen Adel die wirtschaftliche Ausbeutung der Landbevölkerung. Nach dem Britisch-Niederländischen Krieg um Java im Spätsommer 1811 fiel die Insel an die Briten, wurde jedoch nach Ende der Napoleonische Kriege wieder an die Niederlande zurückgegeben.

1825-1830 kam es zu einem Volksaufstand gegen die Niederländer wegen einer neuen Abgabe, die die Einheimischen auf die Reisernte entrichten mussten. Den Kämpfen fielen über 200.000 Javaner und 8.000 Europäer zum Opfer.

1830 wurde das sogenannte cultuurstelsel eingeführt. Statt Pacht zu zahlen, sollten die Bauern nunmehr ein Fünftel ihres Bodens zur Verfügung stellen, um auf diesem Land von der Regierung bestimmte Gewächse anzubauen. Zu diesem System gehörte auch, dass sie ihre Arbeitskraft 66 Tage im Jahr zugunsten der Regierung einsetzten. In der Praxis gingen die Belastungen für die Bauern häufig weit über die offiziellen Vorgaben hinaus. Die Waren wurden nach Europa verschifft und dort gewinnbringend verkauft. Dieses System kritisierte der niederländische Schriftsteller und ehemalige Kolonialbeamte Eduard Douwes Dekker in seinem 1860 unter dem Pseudonym Multatuli veröffentlichten Buch Max Havelaar.

Im Zweiten Weltkrieg wurde die Insel von den Truppen des japanischen Kaiserreichs besetzt. Seit der Ausrufung der Unabhängigkeit ist Java Teil des Staatsgebietes der Republik Indonesien.

Neben der Amtssprache Bahasa Indonesia wird im mittleren und östlichen Teil Javas die javanische Sprache gesprochen. Im westlichen Teil Javas ist die sundanesische Sprache vorherrschend.

Wie auf Sumatra (90 %) stellen Muslime auch in Java die Bevölkerungsmehrheit. Java wurde im 15. und 16. Jahrhundert islamisiert, so dass heute rund 91 % der Javaner und 97 % der Sundanesen Muslime sind.

Um 1815 schickten die Niederlande erstmals christliche Missionare nach Java. In der Folge traten viele Chinesen zum Christentum über, ebenso einige wenige Javaner, die noch nicht den Islam angenommen hatten.

Im Süden von Zentraljava gibt es einige christliche Gemeinden, die jedoch zum Großteil von Angehörigen der chinesischen Minderheit bewohnt sind.

58 % der moslemischen Javaner bezeichnen sich als Abangan, d.h. sie verstehen die Scharia symbolisch-mystisch, nicht als unmittelbar gültiges Gesetz. Die übrigen sind Santri, die eine eher orthodoxe Auslegung des Islams vertreten.

Administrativ ist Java in die Provinzen Banten, Jawa Barat (Westjava), Jawa Tengah (Mitteljava), Jawa Timur (Ostjava) und das autonome Fürstentum Yogyakarta unterteilt. Die Stadt Jakarta untersteht unmittelbar der Zentralregierung.

Zum Seitenanfang



Java (Programmiersprache)

Java-Logo.svg

Java ist eine objektorientierte Programmiersprache und als solche ein eingetragenes Warenzeichen der Firma Sun Microsystems. Sie ist eine Komponente der Java-Technologie.

Java-Programme werden in Bytecode übersetzt und dann in einer speziellen Umgebung ausgeführt, die als Java-Laufzeitumgebung oder Java-Plattform bezeichnet wird. Deren wichtigster Bestandteil ist die Java Virtual Machine (Java-VM), die die Programme ausführt, indem sie den Bytecode interpretiert und bei Bedarf kompiliert (Hotspot-Optimierung).

Java-Programme laufen in aller Regel ohne weitere Anpassungen auf verschiedenen Computern und Betriebssystemen, für die eine Java-VM existiert. Sun selbst bietet Java-VMs für die Betriebssysteme Linux, Solaris und Windows an. Andere Hersteller lassen ihre Java-VM für ihre Plattform zertifizieren, zum Beispiel die Firma Apple für Mac OS X.

Von Portierung spricht man bei Java in der Regel, wenn Quelltext oder Bytecode auf den Stand einer anderen Java-Version angepasst werden soll. Meistens sind Java-Programme nur für bestimmte Java-Versionen getestet oder zertifiziert.

Der Entwurf der Programmiersprache Java strebte im Wesentlichen fünf Ziele an.

Die Sprache Java gehört zu den objektorientierten Programmiersprachen. Die Grundidee der objektorientierten Programmierung ist die softwaretechnische Abbildung in einer Art und Weise, wie wir Menschen auch Dinge der realen Welt erfahren. Die Absicht dahinter ist, große Softwareprojekte einfacher verwalten zu können und die Qualität der Software zu erhöhen. Ein weiteres Ziel der Objektorientierung ist ein hoher Grad der Wiederverwendbarkeit von Softwaremodulen.

Ein neuer Aspekt von Java gegenüber den objektorientierten Programmiersprachen C++ und Smalltalk ist die explizite Unterscheidung zwischen Schnittstellen und Klassen, die durch entsprechende Schlüsselwörter interface und class zur Geltung kommt. Java unterstützt keine direkte Mehrfachvererbung (wie z. B. C++ oder Eiffel), wobei einige Problemstellungen, die damit gelöst werden, durch den Einsatz mehrerer Schnittstellen angegangen werden können. Dabei werden nur die Methodensignaturen an die abgeleiteten Klassen weitergegeben, jedoch keine Attribute und keine Implementierungen der Methoden.

Java ist nicht vollständig objektorientiert: Die Grunddatentypen (int, boolean usw.) sind keine Objekte (siehe auch unter Java-Syntax).

Java bietet eine Reflection-API als Bestandteil der Laufzeitumgebung. Damit ist es möglich, zur Laufzeit auf Klassen und Methoden zuzugreifen, deren Existenz oder genaue Ausprägung zur Zeit der Programmerstellung nicht bekannt war.

Mit Java 5 hat Sun die Programmiersprache um Annotations erweitert. Annotations erlauben die Notation von Metadaten und ermöglichen bis zu einem gewissen Grad benutzerdefinierte Spracherweiterungen. Sinn der Annotations ist unter anderem die automatische Erzeugung von Code und anderen in der Software-Entwicklung wichtigen Dokumenten für wiederkehrende Muster anhand möglichst kurzer Hinweise im Quelltext. Bislang wurden in Java dafür ausschließlich Javadoc-Kommentare mit speziellen JavaDoc-Tags verwendet, die von Doclets wie zum Beispiel dem XDoclet ausgewertet wurden.

Annotations können auch in den kompilierten Class-Dateien enthalten sein. Der Quelltext wird also für ihre Verwendung nicht benötigt. Insbesondere sind die Annotationen auch über die Reflection-API zugänglich. So können sie zum Beispiel zur Erweiterung des Bean-Konzeptes verwendet werden.

Java bietet die Möglichkeit, Klassen zu schreiben, die in unterschiedlichen Ausführungsumgebungen ablaufen. Beispielsweise lassen sich Applets in Webbrowsern, die Java unterstützen, ausführen. Das Sicherheitskonzept von Java kann dazu eingesetzt werden, dass unbekannte Klassen dabei keinen Schaden anrichten können, was vor allem bei Applets wichtig ist (siehe auch Sandbox). Beispiele für in entsprechenden Ausführungsumgebungen ausführbare Java-Module sind Applets, Servlets, Portlets, Midlets, Xlets, Translets, und Enterprise Java Beans.

Der Objektzugriff in Java ist über Referenzen implementiert. Aus Sicherheitsgründen ist es nicht möglich, deren Speicheradresse zu modifizieren. So genannte Zeigerarithmetik ist mit der Sprache also ausgeschlossen. Per Design können so Fehler, welche häufig in anderen Programmiersprachen auftreten, von vornherein ausgeschlossen werden.

Zusammengehörige Klassen werden in Paketen (englisch packages) zusammengefasst. Diese Pakete ermöglichen die Einschränkung der Sichtbarkeit von Klassen, eine Strukturierung von größeren Projekten sowie eine Trennung des Namensraums für verschiedene Entwickler. Die Paketnamen sind hierarchisch aufgebaut und beginnen meist mit dem (umgekehrten) Internet-Domainnamen des Entwicklers. (Pakete, die von Sun erstellt werden, beginnen z. B. mit „com.sun.“) Klassennamen müssen nur innerhalb eines Paketes eindeutig sein. Hierdurch ist es möglich, Klassen von verschiedenen Entwicklern zu kombinieren, ohne dass es zu Namenskonflikten kommt. Die Hierarchie der Paketnamen hat allerdings keine semantische Bedeutung. Bei der Sichtbarkeit zwischen den Klassen zweier Pakete spielt es keine Rolle, wo sich die Pakete in der Namenshierarchie befinden. Klassen sind entweder nur für Klassen des eigenen Paketes sichtbar oder für alle Pakete.

Weiter unterstützt die Sprache Threads (nebenläufig ablaufende Programmteile) und Ausnahmen (englisch exception) und Java beinhaltet auch eine automatische Speicherbereinigung (englisch garbage collector), die nicht (mehr) referenzierte Objekte aus dem Speicher entfernt.

Bemerkenswert ist auch die explizite Unterscheidung von Schnittstellen und Klassen. Eine Klasse kann beliebig viele Schnittstellen implementieren, hat aber stets genau eine Basisklasse. Java unterstützt keine Mehrfachvererbung, da lediglich Schnittstellen, jedoch keine Klassen „mehrfach“ vererbt werden können. Funktionen (in der Java-Welt „Methoden“) werden nur von der Basisklasse übernommen. Alle Klassen sind – direkt oder indirekt – von der Wurzelklasse Object abgeleitet.

Zu Java gehört eine umfangreiche Klassenbibliothek. Dem Programmierer wird damit eine einheitliche, vom zugrunde liegenden Betriebssystem unabhängige Schnittstelle (Application programming interface, API) angeboten.

Mit Java 1.2 wurden die Java Foundation Classes (JFC) eingeführt, die unter anderem Swing bereitstellen, das zur Erzeugung plattformunabhängiger grafischer Benutzerschnittstellen (GUI) dient und auf AWT basiert.

Syntax/Grammatik und Semantik von Java sind in der Java Language Specification (Java-Sprachspezifikation) von Sun Microsystems dokumentiert. Das folgende Beispielprogramm gibt die unter Programmierern klassische Meldung „Hallo Welt!“ auf dem Ausgabemedium aus.

Herkunft und Entwicklung der Programmiersprache Java sowie mit ihr verwandter Technik sind im Artikel Java (Technik) beschrieben.

Neben Sun kümmert sich eine Vielzahl von Einzelpersonen, kleiner und großer Unternehmen, wie Apple, IBM, Hewlett-Packard und Siemens beim Java Community Process (JCP) unter anderem um die Weiterentwicklung der Java-Sprachspezifikation. Der JCP wurde 1998 von Sun Microsystems ins Leben gerufen.

Sun hat zugesichert, sein JDK unter der GNU General Public License zu veröffentlichen. Am 13. November 2006 wurden bereits mit dem Compiler javac und der Hotspot Virtual Machine erste Teile als Open Source veröffentlicht. Zudem wurde eine Community-Seite eröffnet, mit deren Hilfe die Entwicklung koordiniert werden soll. Am 8. Mai 2007 folgten dann große Teile des „Java SE“-Quellcodes zum Erstellen eines JDK. Eine Ausnahme stellt solcher Code dar, für den Sun nicht die nötigen Rechte besitzt, um ihn freizugeben. Dieser liegt somit nur in kompilierter Form vor. Ebenfalls kündigte Sun an, dass Entwicklungen auf Grundlage des OpenJDK das „Java Compatible“-Logo führen dürfen, wenn sie nach dem „Technical Compatibility Kit“ (JCK) zertifiziert sind.

Zuvor wurde der Quelltext von Java unter anderem bei jedem JDK mitgeliefert und ermöglichte so zwar Einsicht, er durfte aber nicht beliebig modifiziert werden. Deswegen gibt es neben den offiziellen JCP auch diverse unabhängige Vereinigungen, die es sich zum Ziel gesetzt haben, ein unter eine freie Open-Source-Lizenz gestelltes Java bereitzustellen. Die bekanntesten dieser Projekte sind Apache Harmony, Kaffe und das GNU-Classpath-Projekt.

Java ist nicht mit der Skriptsprache JavaScript zu verwechseln, die vornehmlich in HTML-Seiten zur eingebetteten Programmierung verwendet wird. Sie hat eine ähnliche Syntax, unterscheidet sich jedoch in vielerlei Hinsicht von Java und wird nur selten zur Konstruktion größerer Anwendungen verwendet.

Smalltalk ist eine der ältesten objektorientierten Programmiersprachen überhaupt. Java erbt von Smalltalk die grundsätzliche Konzeption eines Objektbaumes, in den alle Objekte eingehängt werden und von einem einzigen Mutterobjekt abstammen (java.lang.Object). Außerdem wurde das Konzept der automatischen Speicherbereinigung (garbage collector) und der virtuellen Maschine übernommen sowie eine Vielzahl weiterer Merkmale der Sprache Smalltalk.

Smalltalk kennt jedoch keine primitiven Datentypen wie zum Beispiel int – selbst eine einfache Zahl ist ein Objekt. Dieses Konzept wurde nicht nach Java übernommen.

Java lehnt seine Syntax an die der Programmiersprache C++ an. Im Gegensatz zu C++ fanden jedoch komplexe Konstrukte wie Mehrfachvererbung oder die fehleranfällige Zeigerarithmetik keinen Einzug. Die interne Speicherverwaltung wird dem Java-Entwickler weitgehend abgenommen; dies erledigt die automatische Speicherbereinigung. Deshalb ist Java in vielen Fällen leichter zu handhaben als C++. Allerdings garantiert auch dieser Mechanismus nicht den vollständigen Ausschluss von Speicherlecks. Letztlich muss der Programmierer dafür sorgen, dass nicht mehr verwendete Objekte nirgends mehr referenziert werden.

Im Gegensatz zu C++ ist es in Java nicht möglich, Operatoren (zum Beispiel arithmetische Operatoren wie + und -, logische Operatoren wie && und ||, oder den Index-Operator ) zu überladen, das heißt in einem bestimmten Kontext mit neuer Bedeutung zu versehen. Dies sorgt einerseits für eine Vereinfachung der Sprache an sich und verhindert, dass Quellcodes mit Operatoren, die mit schwer nachvollziehbarer Semantik überladen werden, unleserlich gemacht werden. Andererseits können benutzerdefinierte Typen mit überladenen Operatoren in C++ eher wie eingebaute Typen erscheinen und vor allem numerischer Code ist mitunter einfacher nachzuvollziehen. Die Sprachdefinition von Java definiert jedoch typabhängiges Verhalten der Operatoren + (Addition bei arithmetischen Operanden, andernfalls zur Verkettung von Zeichenketten („string concatenation“)) sowie &, | und ^ (logisch für boolean und bitweise für arithmetische Operanden). Das lässt diese Operatoren zumindest wie teilweise überladene Operatoren erscheinen.

Das C++-Konstrukt der „Templates“, die es erlauben, Algorithmen oder sogar ganze Klassen unabhängig von den darin verwendeten Datentypen zu definieren, wurde in Java nicht übernommen. Seit Version 1.5 unterstützt Java aber sogenannte „Generics“, die zwar keinerlei Metaprogrammierung erlauben, aber ähnlich wie C++-Templates typsichere Container und ähnliches ermöglichen.

Die von Microsoft entwickelte Programmiersprache C# (engl. C sharp; Aussprache ) kann als Konkurrenzprodukt zu Java gesehen werden. Mit der Spezifikation von C# hat Microsoft im Rahmen seiner .NET-Strategie versucht, den Spagat zwischen der Schaffung einer neuen Sprache und der leichten Integration bestehender Komponenten zu schaffen.

Konzeptionelle Unterschiede zu Java bestehen insbesondere in der Umsetzung von Callback-Mechanismen. C# implementiert hierzu die Unterstützung von Delegaten (engl. delegates), einem Konzept, das mit Funktionszeigern vergleichbar ist. Hierbei kommt ein Beobachter-Entwurfsmuster zum Einsatz – Objekte können sich für Ereignisse registrieren bzw. diese delegieren. C# kennt ebenso wie Java eine Unterscheidung zwischen Werttypen (engl. value types; zum Beispiel int, struct) und Referenztypen (engl. reference types, zum Beispiel class), allerdings sind auch die elementaren Datentypen objektbasiert. Außerdem unterstützt C# sogenannte Attribute (attributes), die es erlauben, die Funktionalität der Sprache über Metadaten im Code zu erweitern (eine ähnliche Funktionalität wurde in Form der oben beschriebenen Annotations in Java 5.0 übernommen). C# enthält auch Bestandteile der Sprachen VisualBasic, zum Beispiel Eigenschaften („properties“), sowie Konzepte aus C++. In C# hingegen ist es nicht notwendig und möglich, Ausnahmen (exceptions) zu einer Methode zu deklarieren. In Java können Ausnahmen so deklariert werden, dass sie auch verarbeitet werden müssen (checked Exception).

Um auch systemnahe Programmierung zu ermöglichen, besteht in .NET die Möglichkeit, über platform invoke Systembefehle und unmanaged code aufzurufen, ähnlich Javas JNI.

Geschwindigkeitskritische Programmteile können in C# in sogenanntem unsicheren unsafe code geschrieben werden, was ähnlich zu Inline-Assembler in C-Programmen zu sehen ist. Java kennt hierfür keine Entsprechung.

Es gibt eine große Vielfalt von Entwicklungsumgebungen für Java, sowohl kommerzielle als auch freie (Open Source). Die meisten Entwicklungsumgebungen für Java sind selbst ebenfalls in Java geschrieben.

Die bekanntesten Open-Source-Umgebungen sind das von der Eclipse Foundation bereitgestellte Eclipse und das von Sun entwickelte NetBeans.

Unter den kommerziellen Entwicklungsumgebungen sind das auf Netbeans basierende Sun ONE Studio von Sun, IntelliJ IDEA von JetBrains, JBuilder von Borland sowie JCreator am verbreitetsten. Außerdem gibt es noch eine, um einige hundert Plugins erweiterte Version von Eclipse, die von IBM unter dem Namen WebSphere Studio Application Developer („WSAD“) vertrieben wurde und seit Version 6.0 Rational Application Developer („RAD“) heißt.

Apple liefert mit Mac OS X ab Version 10.3 die Entwicklungsumgebung Xcode aus, die verschiedene Programmiersprachen unterstützt und einen Schwerpunkt auf Java setzt. Xcode wird mit jedem Apple (-Betriebssystem) mitgeliefert, Aktualisierungen sind darüber hinaus nach Registrierung für jedermann kostenlos erhältlich.

Wer lieber einen Texteditor verwendet, findet in Emacs zusammen mit der JDEE (Java Development Environment for Emacs) ein mächtiges Werkzeug. Ein vielseitiger und erweiterbarer in Java geschriebener Editor ist jEdit. Für andere Editoren wie Vim, Jed oder Textpad gibt es ebenfalls entsprechende Modi.

Ein Java-Compiler übersetzt Java-Quellcode (Dateiendung .java) in einen ausführbaren Code. Grundsätzlich unterscheidet man zwischen Bytecode- und Nativecode-Compilern. Einige Java-Laufzeitumgebungen verwenden einen JIT-Compiler, um zur Laufzeit den Bytecode häufig genutzter Programmteile in nativen Maschinencode zu übersetzen.

Im Normalfall übersetzt der Java-Compiler die Programme in einen nicht direkt ausführbaren Bytecode (Dateiendung .class), den die Java Runtime Environment (JRE) später ausführt. Die aktuelle HotSpot-Technologie kompiliert den Bytecode zur Laufzeit in nativen Prozessorcode und optimiert diesen abhängig von der verwendeten Plattform. Diese Optimierung findet dabei nach und nach statt, so dass der Effekt auftritt, dass Programmteile nach mehrmaliger Abarbeitung schneller werden. Andererseits führt diese Technik, die ein Nachfolger der Just-In-Time-Compilierung ist, dazu, dass Java-Bytecode theoretisch genau so schnell wie native, kompilierte Programme ausgeführt werden könnte.

Die HotSpot-Technik ist seit der JRE Version 1.3 verfügbar und wurde seitdem stetig weiter verbessert.

Es existieren auch Compiler für Java, die Java-Quelltexte oder Java-Bytecode in normalen Maschinencode übersetzen können, sogenannte Ahead-Of-Time-Compiler. Nativ kompilierte Programme haben den Vorteil, keine JavaVM mehr zu benötigen, aber auch den Nachteil, nicht mehr plattformunabhängig zu sein.

Als weitere Möglichkeit kann das Java-Programm in ein anderes Programm „eingepackt“ (englisch to wrap) werden; diese äußere Hülle dient dann als Ersatz für ein Java Archive. Sie sucht selbständig nach einer installierten Java-Laufzeitumgebung, um das eigentliche Programm zu starten, und informiert den Benutzer darüber, wo er eine Laufzeitumgebung herunterladen kann, sofern noch keine installiert ist. Es ist also immer noch eine Laufzeitumgebung nötig, um das Programm starten zu können, aber der Anwender erhält eine verständliche Fehlermeldung, die ihm weiterhilft.

Java Web Start ist ein etwas eleganterer und standardisierter Ansatz für diese Lösung – er ermöglicht die einfache Aktivierung von Anwendungen mit einem einzigen Mausklick und garantiert, dass immer die neueste Version der Anwendung ausgeführt wird. Dadurch werden komplizierte Installations- oder Aktualisierungsprozeduren vermieden.

Zum Seitenanfang



Java Plug-in

Das Java Plug-in ist eine Softwarekomponente mit der man Java-Applets in einem Webbrowser ablaufen lassen kann.

Es stellt die Verbindung zwischen verschiedenen Browsern (Mozilla Firefox, Mozilla, Netscape Navigator, Opera, Internet Explorer) und dem auf dem Computer installierten Java Development Kit (JDK) dar. Damit wird es möglich, durch <object>- oder <applet>-Tags in einer HTML-Seite Java Applets zu starten.

Das Java Plug-in besteht grundsätzlich aus einem nativen und einem in Java geschriebenen Codeanteil. Der native Codeanteil stellt die Verbindung zu dem jeweiligen Browser her und ist im Falle des Internet Explorers z. B. ein ActiveX Control (jpishare.dll, jpicom32.dll, RegUtils.dll, jpiexp32.dll, npjpi142_08.dll). Der Java-Code-Anteil befindet sich in einem Java Archive namens „plugin.jar“.

Der Start bzw. die Initialisierung des Java-Applets erfolgt mittels des Plugins in einem dreistufigen Prozess. Dieser Ablauf soll hier am Beispiel des Internet Explorers und einer Seite mit <object>-Tag erläutert werden.

Zum Seitenanfang



Source : Wikipedia