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++
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)
Historie: 4.1 Java-Grundlagen 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
Historie: 4.1 Java-Grundlagen 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
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
Verteilt: Pakete = packages, Modularität Funktionen für den Netzwerkzugriff integriert (http, FTP) Aufruf über mitgelieferte Bibliotheken, ähnlich den Header-Dateien
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
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
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
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 vor dem ersten include
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
Portabel: Größe der Basisdatentypen unabhängig von der Prozessorarchitektur (nicht C++ int) Einfache Datentypen: bool Wahrheitswert 1 Byte true / false byte ganzzahlig 1 Byte -128.. +127 short ganzzahlig 2 Byte -32768... +32767 int ganzzahlig 4 Byte -2,14 *10 9... +2,14 *10 9 long ganzzahlig 8 Byte -9,22 *10 18... +9,22 *10 18 float Fließkomma 4 Byte +/- 3,40 *10 +/-38 double Fließkomma 8 Byte +/- 1,80 *10 +/-308 char Unicode 2 Byte incl. ASCII
Multithreaded: 4.1 Java-Grundlagen 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
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
Dynamisch: Objekt-Klassen werden zur Laufzeit von Java- Anwendungen referenziert diese können jederzeit verändert werden JDK: Java Developement Kit (bzw. neu SDK) kostenlos zu beziehen über http://java.sun.com