4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen Highlights: objektorientierte Sprache Plattformunabhängigkeit bei Hardware und Betriebssystem optimale Einbindung im Internet und Intranet sprachliche Nähe zu C++ Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Historie: 1991 Ingenieure bei Sun Microsystems zu Integration verteilter Informationstechnologie in elektronischen Geräten: „Green Project“ unter James Gosling zu Grundanforderungen wie Zuverlässigkeit, Bedienbarkeit, Sicherheit... Erweiterung der benutzten C++ Compiler Erkenntnis: unpassend Folge: „Green Team“ Softwaresystem für elektronische Verbrauchergeräte zu entwickeln, Name „Oak“ (später aus urheberrechtlichen Gründen in „Java“ umbenannt) Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Historie: Herbst ‘92 Patrick Naughton präsentiert System *7 (starseven), in Oak geschrieben, sollte Betriebssystem mit Programmiersprache und Entwicklungsumgebung für neue Hardwareplattformen sein dann Stagnation, aber 1994 WWW war etabliert Naughton und Jonathan Payne mit Idee, einen Web-Browser in Java zu schreiben Java entwickelt für architektur-neutrale, echtzeitfähige, zuverlässige und sichere Client/Server - Anwendungen Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Historie: Java entwickelt für architektur-neutrale, echtzeitfähige, zuverlässige und sichere Client/Server Anwendungen ideal als Werkzeug für die Programmierung im WWW Folge: Arbeit an Web-Runner-Browser ,später in Hot-Java umbenannt, begann Java wurde selbst noch einmal neu in Java geschrieben (offiziell auf der SunWorld95 im Mai ’95 vorgestellt, mit der kostenlosen Verfügbarkeit aus dem Internet java.sun.com) der DURCHBRUCH Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Objektorientiert: Klassen, die Daten und Methoden(Verhalten) enthalten Klasse als Schablone, aus der viele Objekte generiert werden können Datenkapselung (Einzel-) Vererbung Schnittstellen können implementiert werden Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Verteilt: Pakete = packages, Modularität Funktionen für den Netzwerkzugriff integriert (http, FTP) Aufruf über mitgelieferte Bibliotheken, ähnlich den Header-Dateien Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Robust: Überprüfungsroutinen (beim Compilieren und Ausführen) dadurch auch Vermeidung von Laufzeitfehlern in Anwendungen Speichermanagement nicht dem Entwickler überlassen, wird über die JVM (Java Virtual Machine) realisiert Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: … Robust: keine Pointerarithmetik, direkte Adressierung über Pointer nicht möglich Integer kann nicht zum Pointer gecastet werden (geringere Fehleranfälligkeit beim Programmieren) if(object != null) notwendig, if(object) geht nicht, nur wenn object boolean wäre Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Sicher: geladener Code entspricht den Java-Regeln wird beim Laden über das Netz nicht manipuliert Schutz vor potentiellen Viren, da nicht Compiler, sondern hardwareabhängiges Runtime-System kein Zugriff auf physikalischen Speicherplatz keine Manipulationen Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: … Sicher: lokaler Code kann nicht durch importierten Code überschrieben werden keine Möglichkeit für Java-Anwendungen, direkt auf Systemressourcen zuzugreifen private bleibt private, anders in C++: #define private public Softwareentwicklung / Programmierung II vor dem ersten include Wellnitz 4.1 Java-Grundlagen Eigenschaften: Architekturunabhängig: auf jeder Hardware- und Betriebssystemplattform lauffähig Compiler produziert keine maschinenspezifischen Instruktionen, sonder einen neutralen Byte Code Byte Code wird über einen Java Interpreter auf jeder Plattform ausgeführt oder von einem Just-in-Time-Compiler beim Start der Anwendung übersetzt Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Portabel: Größe der Basisdatentypen unabhängig von der Prozessorarchitektur (nicht C++ int) Einfache Datentypen: bool byte short int long float double char Wahrheitswert ganzzahlig ganzzahlig ganzzahlig ganzzahlig Fließkomma Fließkomma Unicode Softwareentwicklung / Programmierung II 1 Byte 1 Byte 2 Byte 4 Byte 8 Byte 4 Byte 8 Byte 2 Byte true / false -128 .. +127 -32768 ... +32767 -2,14 *109 ... +2,14 *109 -9,22 *1018 ... +9,22 *1018 +/- 3,40 *10+/-38 +/- 1,80 *10+/-308 incl. ASCII Wellnitz 4.1 Java-Grundlagen Eigenschaften: Multithreaded: Threads = parallele Ablaufpfade in einem Programm, die gleichzeitig ausgeführt werden erlaubt z.B. Darstellung von Animationen und gleichzeitiges Abspielen von Musik, während eine Internetseite gescrollt wird Threads = Klasse, aus denen neue Thread-Objekte generiert werden können Methoden zum Starten, Ausführen und Anhalten von Threads, Abfrage des Thread-Zustandes Echtzeitfähigkeit Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Garbage Collection (Speicherplatz-Management): keine Gedanken über Speicherplatzbelegung seines Byte-Codes Programmierer müssen nicht permanent Speicher freigeben malloc() und free() fehlen Speicher wird freigegeben, wenn Objekte nicht mehr referenziert werden Softwareentwicklung / Programmierung II Wellnitz 4.1 Java-Grundlagen Eigenschaften: Dynamisch: Objekt-Klassen werden zur Laufzeit von JavaAnwendungen referenziert diese können jederzeit verändert werden JDK: Java Developement Kit (bzw. neu SDK) kostenlos zu beziehen über http://java.sun.com Softwareentwicklung / Programmierung II Wellnitz