1.27k likes | 1.73k Vues
Trainingsunterlage. Einführung in Java. Teil 1 : Übersicht. Einführung in Java. 1 : Übersicht 2 : Objektorientierte Systembeschreibung 3 : Java als Programmiersprache 4 : Die Java Architektur 5 : Java Releases 6 : Der Java Baukasten 7 : Realisierung verteilter Anwendungen
E N D
Trainingsunterlage Einführung in Java Teil 1 : Übersicht
Einführung in Java • 1 : Übersicht • 2 : Objektorientierte Systembeschreibung • 3 : Java als Programmiersprache • 4 : Die Java Architektur • 5 : Java Releases • 6 : Der Java Baukasten • 7 : Realisierung verteilter Anwendungen • 8 : Peer-to-Peer Netze • 9 : Ausblick
Übersicht • 1.0 : Konzept • 1.1 : Historische Entwicklung • 1.2 : Prozesse zur Standardisierung • 1.3 : Heutige Ensatzgebiete • 1.4 : Zukunftsperspektiven
Was ist Java? • Eine Programmiersprache • Ein Baukasten für Anwendungen • Eine Umgebung für portable Anwendungen • Entwicklungswerkzeuge • Eine Software-Technologie • Nach Bedarf ladbare Anwendungsprogramme
Die Eigenschaften von Java: portabel: ladbarer “Bytecode” wird auf unterschiedlichen Systemen von einer virtuellen Maschine interpretiert robust: Programme bleiben bei einfachen Änderungen stabil sicher: Schutz des Zielsystems vor unerlaubten und unerwünschten Eingriffen durch die geladene Anwendung verteilt: Standardbibliothek enthält Klassen für TCP/IP und HTTP, sowie Unterstützung durch Remote Method Invocation objektorientiert: Java ist auf dem Stand der Technik multithreaded: Unterstützung nebenläufiger Prozesse inkl. Synchronisation und Inter-Prozess-Kommunikation Konzept “Write once, run anywhere”
Wurde ab 1990 bei SUN Mikrosystems entwickelt in einer Gruppe von James Gosling. Ursprüngliches Ziel waren “embedded systems”, d.h. Systeme im Haushalt und in der Consumer-Elektronik (um z.B. den Türknopf mit dem Lichtschalter intelligent zu verbinden) Populär wurde Java durch die “Applets” im Internet (kleine Applikationen, die den Web-Browser interaktiv machen). Applets gibt es seit 1993 und wurden ab 1995 durch den Netcape-Browser unterstützt. Heute: komplette Technologie für Internet-basierende Anwendungen, speziell auch für Software in Unternehmen. Die Geschichte von Java
Offene Organisation von Java Entwicklern und Lizenznehmnern weltweit Ziel: Entwicklung und Weiterentwicklung technischer Spezifikationen, Referenzimplementierungen, sowie Tools und Testspezifikationen für die Kompatibiltität von Java Technologien Von SUN Microsystems 1995 initiiert und inzwischen eine eigenständige Organisation, siehe www.jcp.org Hauptprodukt für Entwickler: Java Specification Requests (JSRs), z.B. JSR-82 für künftige Bluetooth APIs oder JSR-118 über die Programmierung mobiler Telefone (MIDP, mobile independent device profile) Java Community Process
Internet-basierende Anwendungen Client-Applikationen auf Desktop-Systemen Präsentation interaktiver und dynamischer Web-Seiten (Applets, Java Server Pages, Servlets, HTML, XML) Anwendungsprogramme auf dem Server (Geschäfts-logik unterstützt durch standardisierte Funktionen für die Verteilung, Transaktionen und Administration) Datenbandanbindung Beginnender Einsatz auf Mobiltelefonen (vor allem Spiele) und digitalen Set-Top-Boxen (MHP) Heutige Einsatzgebiete
Heute : vorherrschend PC als Desktop-System 100 Mio. vernetze PCs weltweit vorwiegend Client-Server Systeme aber bereits 1000 Mio. Mobiltelefone weltweit Morgen: verteilte Anwendungen auf vielen spezialisierten Geräten Mobiltelefon als persönlicher Universalcomputer viele prozessorgesteuerte, vernetzte Geräte pro Nutzer spontane Peer-to-Peer Netze und verteilte Anwendungen (pervasive Computing, der ursprüngliche Zweck von Java) Die absehbare Entwiclung
Java bietet eine vernünftige Basis für die Anwendungssoftware der Zukunft technologisch z.Zt. am weitesten entwickelte Lösung gesellschaftlich vernünftig, da offene Architektur, kommunale Prozesse zur Spezifikation und technologischen Weiterentwicklung und vorwiegend Open-Source Politik bzw. Wettbewerb für Lösungen und Produkte Zukunftsperspektiven
Trainingsunterlage Einführung in Java Teil 2 : Objektorientierte Systembeschreibung
Einführung in Java • 1 : Übersicht • 2 : Objektorientierte Systembeschreibung • 3 : Java als Programmiersprache • 4 : Die Java Architektur • 5 : Java Releases • 6 : Der Java Baukasten • 7 : Realisierung verteilter Anwendungen • 8 : Peer-to-Peer Netze • 9 : Ausblick
Objektorientierte Systembeschreibung • 2.0 : Objekte, Eigenschaften und Methoden • 2.1 : Objektorientierte Systembeschreibung • 2.3 : Beispiel: der springende Punkt • 2.4 : Objektorientitere Programmierung
Objekte, Eigenschaften und Methoden Auto Telefon wählen, auflegen, annehmen, SMS schicken, ... fahren, anhalten, überholen, Tür öffnen, ... Methoden Methoden TV an, aus, lauter, leiser, Kanal wechseln, ... Eigenschaften Methoden
Entspricht intuitiv unserer Erfahrung im Alltagsleben. Ein Objekt besitzt Eigenschaften (ein Auto z.B. die Motorleistung, die Geschwindigkeit und sonstige im Autoquartett aufgeführten Attribute). Ein Objekt stellt Methoden für den Umgang mit dem Objekt zur Verfügung (mit einem Auto z.B. kann man fahren). Das Objekt enthält auch diejenigen Methoden, mit denen sich Attribute des Objektes beeinflussen lassen (die Methode “beschleunigen” bzw. “bremsen” beeinflusst beispielsweise die aktuelle Geschwindigkeit) Objektorientierte Beschreibung (1)
Ein Objekt ist ein Exemplar seiner Klasse (die Klasse “Auto” ist eine Abstraktion, fahren kann man nur mit Exemplaren von Autos). Unsere Umgebung lässt sich durchgängig objektorientiert beschreiben und als Modell nachbilden. Modelle lassen sich in Bibliotheken dokumentieren. Durch Zugriff auf Bibliotheken ist ein Austausch von Modellen für jeden Anwendungszweck möglich. Objektorientierte Beschreibung (2)
Die objektorientierte Beschreibung lässt sich auf die Systembeschreibung bei der Software-Entwicklung übertragen. Der Entwicklungsprozess erfolgt iterativ und beinhaltet die Beschreibung des Problems und den Entwurf einer Lösung. Aus den in der Software vorgegebenen Klassen und ihren Beziehungen werden zur Laufzeit des Programmes Objekte erzeugt, die miteinander wechselwirken. Durch die Kapselung von Attributen und Methoden innerhalb der Objekte (bzw. Klassen) wird objektorientierte Software sehr modular. Objektorientierte Beschreibung (3)
Module sind leicht einzubinden und zwischen Entwicklern auszutauschen. Dadurch wird die Teamarbeit und der Rückgriff auf bereits vorhandene Komponenten. Speziell bei komplexen Programmen reduziert sich dadurch der Aufwand für die Pflege und Weiterentwiclung. Die Verwendung erprobter Module erhöht die Zuverlässigkeit der Software. Objektorientierte Beschreibung (4)
Der springende Punkt y x Objekt: Punkt Punkt, bewege dich nach rechts! Eigenschaft: Ort (xp,yp) Aufgabe: einen Punkt in der Ebene program-mieren Daten • Methoden: • move • stop • move_a_bit Methode: Aufforderung an das Objekt Prozeduren
Immer mehr elektronische Geräte enthalten einen Mikroprozessor und sind daher softwaregesteuert basieren auf unterschiedlich ausgestatteten Plattformen (Prozessor, Speicher, Betriebssystem) haben ähnliche Komponenten (Display, Tasten und Knöpfe, Schnittstellen zur Vernetzung, Möglichkeiten zur Wiedergabe und Kontrolle von Audio und Video, ...) Ein objektorientierter Ansatz für Software schafft Synergien, sofern es gelingt, eine universelle Plattform für portable Anwendungen zu schaffen. Objektorientierte Programmierung
Trainingsunterlage Einführung in Java Teil 3 : Java als Programmiersprache
Einführung in Java • 1 : Übersicht • 2 : Objektorientierte Systembeschreibung • 3 : Java als Programmiersprache • 4 : Die Java Architektur • 5 : Java Releases • 6 : Der Java Baukasten • 7 : Realisierung verteilter Anwendungen • 8 : Peer-to-Peer Netze • 9 : Ausblick
Java als Programmiersprache • 3.0 : Sprachelemente von Java • 3.1 : Programmieren in Java
Sprachelemente von Java • Anweisungen • Namensräume • Quelltexte • Datentypen • Garbage Collector
Java-Quelltexte werden in Dateien mit der Endung .java abgelegt. Eine Datei darf mehrer Klassen enthalten, jedoch nur eine Klasse vom Typ public, die der Datei dann ihren Namen gibt (z.B. AudioPlayer.java). Der Compiler übersetzt Quelltextdateien in Bytecode. Dabei wird jede Klasse in einer eigenen Datei mit der Endung .class abgelegt. Java verwendet intern den Unicode Zeichensatz. Unicode ist ein international standardisierter Zeichensatz mit 16 Bit pro Zeichen, der den nur 7 Bit breiten ASCII Zeichensatz als Untermenge enthält. Vor der Kompilierung wird ASCII Quelltext in Unicode umgewandelt. Quelltexte
Ein Namensraum ist der Bereich, in dem eine Bezeichnung (z.B. für eine Klasse oder Methode) gültig ist. Grundregel: lokale Bezeichnung überdeckt übergeordnete Bezeichnung. Für Namensräume gilt folgende Hierarchie: Namensraum des Paketes für Klassen Namensraum der Klassen Namensräume der Methoden der Klasse Namensräume der Blöcke innerhalb der Methoden Der Compiler löst Bezeichnungen „von innen nach aussen“ auf bis zum ersten Treffer. Namensräume
Wie andere Programmiersprachen auch gibt es in Java Anweisungen bzw. Anweisungsblöcke, z.B: if (bedingung) { tuDieses(); } Weitere Anweisungen sind switch (Verschachtelung), while, do und for (Schleifen), return (für Methoden mit Rückgabeparameter, d.h. für Methoden, die nicht vom Typ void sind). Ausserdem implementiert Java arithmetrische Operatoren und eine Fehlerbehandlung für numerisch bedingte Laufzeitfehler, sowie mathematische Funktionen. Anweisungen
Java kennt die einfachen Datentypen logisch (boolean) ganze Zahlen (int, byte, short, long), Gleitpunktzahlen (float, double) und Zeichen (char). Konstanten werden mit dem Attribut final deklariert. Zeigertypen (Pointer) gibt es in Java nicht. Datenelemente in Objekten werden automatisch initialisiert. Ausserdem unterstützt Java Operationen auf den Datentypen String (Zeichenketten) und Arrays (Matrizen). Zu den String-Operationen z.B. gehören die Erzeugung, Verkettung, Literale, Konvertierung Umwandlung in einfache Datentypen. Datentypen
Objekte werden in Java mit dem Operator new erzeugt. Um das Aufräumen des Arbeitspeichers (d.h. das löschen nicht mehr benötigter Objekte mit einem eigenen Operator) muss sich der Programmierer allerdings nicht kümmern. Der Garbage Collector ist die Müllabfuhr des Java Interpreters zur Entsorgung nicht mehr benötigter Objekte zur Laufzeit im Arbeitspeicher. Dadurch entfällt eine der grössten Fehlerquellen für Anwendungsprogramme. Garbage Collector
Programmieren mit Java • Vererbung • Konstruktoren • Klassendefinition • Methoden • Interfaces
Die Definition einer Klasse erfolgt in Java durch das Schlüsselwort class, gefolgt vom gewünschten Namen der Klasse. In Klammern eingefasst folgen die Methoden und Datenelemente der Klasse, z.B: public class Punkt { public int x,y; public void moveTo(int posX, int posY) { x = posX; y = posY; } } Die Reihenfolge von Vereinbarungen über Daten und Methode ist beliebig. Klassendefinition (1)
Die Klasse erzeugt ihr Exemplar mit der Anweisung „new“: Punkt myPunkt; (definiert Variable mit Objekttyp Punkt) myPunkt = new Punkt(); (Zuweisung des Exemplars an die Variable) myPunkt ist ein Verweistyp auf das neue Objekt Punkt. Auf Methoden und Datenelemente des neuen Objekts kann zugegriffen werden, indem der Name des Objekts voran-gestellt wird: myPunkt.moveTo(17,4); int xKoordinate = myPunkt.x Der Operator „new“ sorgt dafür, dass für das neue Objekt Speicherbereich belegt wird. „new“ ruft den Konstruktor der Klasse auf, von der das Objekt erzeugt werden soll. Klassendefinition (2)
Konstruktoren versorgen die Datenelemente eines Objektes mit Initialwerten und erledigen sonstige Aktionen im Zusammenhang mit der Initialisierung. Konstruktor haben den Namen ihrer Klasse (siehe myPunkt = new Punkt()). Wird kein Konstruktor explizit definiert, so werden die Datenelemente der Klasse mit den Initialwerten ihrer Datentypen initialisiert. Eine explizite Definition eines Konstruktors wäre z.B: public Punkt() { x = 10; y = 10; } Statische Daten initialistert der Operator „static“. Konstruktoren
Aus einer Klasse kann durch „extends“ eine Unterklasse abgeleitet werden, die die Methoden ihrer Oberklasse erbt. Die neue Klasse kann weitere Methoden und Datenelemente einführen, bzw. Methoden überschreiben. Beispiel: aus dem Punkt wird ein farbiger Punkt abgeleitet public class FarbKlecks extends Punkt { int colour; public FarbKlecks(int x, int y, int colour) { super(x, y); this.colour = colour; } public void setColour(int colour) this.colour = colour; } } Vererbung
Ein Methodenaufruf ist eine Aufforderung an ein Objekt, etwas zu tun. Das Objekt reagiert nur auf Aufforderungen, die es kennt, d.h. die in seinen Methoden abgelegt sind. Eine Methode hat einen Ergebnistyp (Rückgabewert), einen Bezeichner (in Unicode) und eine Parameterliste, z.B. void setX (int x) { this.x = x; } Eine Klasse kann mehrere Varianten einer Methode haben. Eine Methode kann lokale Variable besitzen. Eine Methode wird mit Angabe ihrer Parameter aufgerufen, z.B. setX(42); Methoden
Interfaces sind Schnittstellen im Sinne der Definition von Attributen und Methoden, jedoch ohne deren fertige Implementierung (z.B. werden nur die Namen der Methoden vorgegeben). Interfaces ermöglichen eine Generalisierung (Abstraktion) für unterschiedliche Typen abgeleiteter Klassen. Die Implementierung erfolgt durch den Operator „implements“. Klassen von Punkten, Klecksen, Sprites z.B. könnten aus einer Interface-Klasse graphicObject abgeleitet sein, die eine einheitliche Terminologie für Methodenaufrufe definiert (wie z.B. showObject(), setColor(), hideObject(), moveObject()). Interfaces
Trainingsunterlage Einführung in Java Teil 4 : Die Java Architektur
Einführung in Java • 1 : Übersicht • 2 : Objektorientierte Systembeschreibung • 3 : Java als Programmiersprache • 4 : Die Java Architektur • 5 : Java Releases • 6 : Der Java Baukasten • 7 : Realisierung verteilter Anwendungen • 8 : Peer-to-Peer Netze • 9 : Ausblick
Die Java Architektur • 4.0 : Einführung • 4.1 : Laufzeitumgebung • 4.2 : Spezifikationen für Anwendungen (API)
Eine objektorientierte Sprache. Ein kommunaler Prozess zur Spezifikation objektorientierter Modelle, zur Entwicklung von Konzepten und technologischer Lösungen für alle für die Entwicklung von Software interessanten Bereiche (der Java-Baukasten). Ein Baukasten für Entwickler (Spezifikationen für Application Program Interfaces, Bibliotheken, Quelltexte, Beispiele, Referenzimplementierungen) Eine Software-Umgebung für portable Anwendungen (virtuelle Maschine, ladbarere Bytecode, Absicherung der Systeme durch Beschränkungen der Rechte der Anwendungen) Was ist Java?
Die Java Architektur Java Applications and Applets Java API + Libraries Java Plattform Java Virtual Machine System Plattform Operating Sytem Hardware Drivers Hardware
Spezifikation von Objektklassen, Methoden und Attributen Nach Anwendungspaketen geordnet, wie z.B. graphische Benutzerschnittstellen (z.B. Swing) Kommunikation über Netze Verwendung von Datenbanken (z.B. JDBC) verteilte Anwendungen (z.B. RMI, JINI) Verarbeitung von Medien (z.B. Java Media Framework) Intranet, Internet, Software-Integration in Unternehmen, mobile Endgeräte, TV, Chip-Karten, ... Was ist eine Programmierschnittstelle (API)?
Trainingsunterlage Einführung in Java Teil 5 : Java Releases
Einführung in Java • 1 : Übersicht • 2 : Objektorientierte Systembeschreibung • 3 : Java als Programmiersprache • 4 : Die Java Architektur • 5 : Java Releases • 6 : Der Java Baukasten • 7 : Realisierung verteilter Anwendungen • 8 : Peer-to-Peer Netze • 9 : Ausblick
Java Releases • 5.0 : Einführung • 5.1 : Übersicht über die Java Releases • 5.2 : Anwendungen in Unternehmen • 5.3 : Anwendungen auf Desktop-Systemen • 5.4 : Anwendungen für mobile Geräte und für Geräte im Haushalt
Das geeignete Java Release: für Desktop Anwendungen die Standard Edition für Mobiltelefone und Consumer-Elektronik die Micro Edition für Anwendungen in Unternehmen die Enterprise Edition Laufzeitungebung (Virtual Machine, Compiler, Bibliotheken, Referenzimplementierung, ...) Entwicklungs-Toolkit (Integrierte Tools, Emulatoren, gerätespezifische Tools) Dokumentation (API-Spezifikationen, ...) Was benötigt man für die Anwendungsentwicklung?
Java Releases Workstation Network Computer Communicator Server Mobile phone PC, Notebook Set-Top Box PDA Java 2 Enterprise Edition Point of Sales Screenphone Java 2 Standards Edition Smartcard CDC CLDC Java 2 Micro Edition Java Programming Language Hot Spot JVM KVM Card VM Physical memory: Processor: 10 MB 64 Bit 1 MB 32 Bit 512 kB 32 Bit 32 kB 16 Bit 8 Bit
Zweck der Java Releases ist die Ordnung der mit der Zeit stark gewachsenen APIs nach Anwendungsgruppen. Die Java Standard Edition beinhaltet alles, was zur Entwickung von Client-Anwendungen benötigt wird. Zielsysteme für J2SE sind vorwiegend Desktop-Systeme bzw. mobile Computer und Netzcomputer. J2SE entspricht weitgehend dem Funktionsumfang des Development Kits JDK 1.2 (ca. 1500 Klassen in 1999) und enthält ausserdem die Laufzeitumgebung (JRE). Inzwischen stehen mit JSE 1.4 zusätzliche Funktionen bereit, wie z.B. die HotSpot Virtual Machine und APIs zur Verarbeitung von XML Dokumenten. Was ist die Standard Edition (J2SE)?