550 likes | 687 Views
PI Burgenland Java und JavaScript 1. Teil. Güssing, Oktober 1999 Martin Weissenböck. Java. Eigenschaften Wurzeln Sprachelemente Entwicklungswerkzeuge Didaktische Qualität Zusammenfassung. Java: objektorientiert .
E N D
PI BurgenlandJava und JavaScript1. Teil Güssing, Oktober 1999 Martin Weissenböck
Java • Eigenschaften • Wurzeln • Sprachelemente • Entwicklungswerkzeuge • Didaktische Qualität • Zusammenfassung
Java: objektorientiert • Datenkapselung:Datenelemente und Unterprogramme (Methoden) in einer Klasse vereinigt • Vererbung:Übernahme von Daten und Methoden, Ergänzung bzw. Überschreiben von Methoden • Polymorphie:alle Klassen sind „virtuell“
Java: verteilt • Java-Bibliotheken sind über das Internet erreichbar • Java-Bibliotheken können auch in einem lokalen Netz zur Verfügung gestellt werden • Verwendetes Protokoll: TCP/IP
Java: robust • Keine Pointer-Arithmetik (wie in C), daher kein illegaler Speicherzugriff möglich • Prüfung von Array-Indizes; damit wird die Überschreitung von Grenzen verhindert • Ausnahmebehandlungen („exception“) müssen vorgesehen werden
Java: sicher • Java-Programme werden über das Netz verteilt • Byte-Code schützt vor Verfälschungen und Virenbefall • Kontrolle durch Prüfsummen • Zugriffe auf das Dateisystem nur in der vorgesehenen Weise erlaubt
Java: architekturunabhängig • Byte-Code erlaubt den Einsatz auf allen Systemen, sofern das Laufzeitsystem vorhanden ist: Einsatz einer „virtuellen Maschine“ • Beispiele: UNIX, Windows 9*, Windows NT, OS/2, Apple, Sun... • Wirtschaftliche Bedeutung, Rechtsstreitigkeiten!
Java: portierbar • Alle Datentypen sind intern immer gleich dargestellt • Beispiele: • int ist immer eine 32-Bit-Zahl, mit Vorzeichen • float ist immer eine 32-Bit-Zahl gemäß IEEE-754-Spezifikation
Java: interpretiert • Byte-Code wird interpretiert • Kein Linken von Programmteilen • Keine Make-Prozeduren • Klassen können unabhängig von einander geändert werden • Neuübersetzung des gesamten Programms bei Änderungen nicht notwendig
Java: hohe Rechenleistung • Byte-Code ist dem Maschinencode schon sehr ähnlich • Einfaches Realisieren von Multithreading-Tasks • Dadurch Geschwindigkeitssteigerung • Weitere Beschleunigung durch Just-in-time-Compiler (Übersetzung des Byte-Code auf der Zielmaschine in deren Maschinencode)
Java: multithreadfähig • Quasi-paralleles Abarbeiten unterschiedlicher Aufgaben bringt Geschwindigkeitsvorteile • Einfache Realisierung von Threads durch die Ableitung einer neuen Klasse
Java: dynamisch • Werden in einer Superklasse neue Methoden oder Instanzvariablen eingeführt, müssen die Subklassen nicht geändert werden • Speicherplatz wird mit new angefordert • Speicherplatz wird automatisch freigegeben.
Java: kompakt • Keine Include-Dateien (Header-Files) • Alle Informationen in einer Datei • Übersichtliche Größe durch das Teilen in einzelne Dateien (Teilen in Klassen)
Java: Eigenschaften (1) • Applets: in HTML-Dateien eingebettet • Interaktion • Animation • Interpreter: • Netscape, Internet Explorer o.ä. • Appletviewer • PlattformunabhängigWin95/98, Win NT/2000, Mac OS 7.5, Solaris, Win 3.1x
Java: Eigenschaften (2) • Applications:Selbständige JAVA-Programme • Laufzeitinterpreter (*.CLASS) • Compiler (*.EXE) • Kostenlose Nutzung: • Compiler, Interpreter, Library, Dokumentation • Internetadresse http://java.sun.com
Java: Wurzeln • C/C++: Syntax, Kontrollstrukturen, Variablen, Gültigkeitsbereiche • Objective-C: Interface-Konzept • C++: Klassenkonzept • Small-Talk: Erweiterbarkeit zur Laufzeit,dynamische Speicherverwaltung,Multithreading
Java: Sprachelemente • Grundlegender Aufbau • Verzweigungen, Schleifen • Einfache Datentypen • Strukturierte Datentypen • Unterprogramme • Klassen • Exceptions
Java: Grundlegender Aufbau (1) • Variablennamen (Unicode), Kommentare, Groß-/Kleinschreibung wie in C/C++ • Klassen “überall” • System-Klasse immer verwendbar public class Hallo { public static void main(String[] args) { System.out.println(“Hallo”); } }
Java: Grundlegender Aufbau (2) • Ein- und Ausgabe, Variablenvereinbarung: import myio; public class b03 { public static void main(String[] arg) { int zahl1, zahl2, ergebnis; zahl1=myio.readInt(); zahl2=myio.readInt(); ergebnis=zahl1+zahl2; System.out.println(ergebnis); } }
Java: Grundlegender Aufbau (3) • Eine Applet-Referenz: import java.applet.Applet;//Anweisung import java.awt.Graphics; // Directory-Struktur public class HalloAp extends Applet //Klasse { publicvoid paint (Graphics g) //Minimum! { g.drawString(“Hallo”,50,25); } }
Java: Grundlegender Aufbau (4) • Das zugehörige HTML-File: <title>Hallo Testprogramm</title> <hr> <applet code=“HalloAp.class” width=250 height=80> </applet> <hr>
Java: Grundlegender Aufbau (5) • Keine externen Variablen/Funktionen • Konstanten • C/C++ -Schreibweise: const int a=5; • Java-Schreibweise:private final static int a=5; • Kommentare • /* und */, ferner // • /** zur Dokumentation
Java: Applets • Kein main-Programm • eingebettet in einer public class, die von Applet abgeleitet ist • einepublic-Methode paint • Applet-Referenz in einer HTML-Datei • Parameterübergabe von der HTML-Datei an das Java-Programm möglich
Java: Verzweigungen, Schleifen • if-, switch-Anweisung wie in C/C++ • kein goto • while-, do/while- und for-Schleifen wie in C/C++ • lokale Vereinbarung der Laufvariablen • Marken vor geschachtelten Schleifen:break und continue “von innen” möglich
Java: Einfache Datentypen • Gleitkomma: float, double • Ganzzahlig: byte, short, int, long • Logisch: boolean • Zeichen: char • ...alle auch mit Initialisierung • Operatoren wie in C/C++, ferner:Shift+zero extension: x>>>y, x>>>=yString concatenation: +
Java: Operatoren Höchste Priorität: • ( ) [ ] . • ++ -- ~ ! • * / % • + - • >> >>> << • > >= < <= instanceof • == !=
Java: Operatoren • & • ^ • | • && • || • ?: • = op= • ,
Java: Strukturierte Daten (1) • Felder: int[ ] feld; // oder int feld[ ];// nur Zeiger, keine Speicherreservierung • feld = new int [5];Alternative:int[ ] feld = new int [5]; • kein “free” • int[ ] feld = {1, 2, 3+4, 5, 6};
Java: Strukturierte Daten (2) • Klassen: Konstruktoren, Methoden und Daten wie in C++ • Modifikatoren für den Zugriff:private nur von der eigenen Klassefriendly vom selben Modul ausprivate protected nur von abgeleiteten Klassenprotected auch von abgeleiteten Klassenpublic von allen Klassen möglich
Java: Variablen/Modifikatoren • static Kennzeichen für Klassenvariable • final Wert kann nicht geändert werden (Konstanten!) • transient Daten nicht persistent • volatile Asynchrone Änderung möglich; keine Optimierung, die Variable bleibt im Speicher
Java: Unterprogramme, Klassen • Keine Pointerparameter • Keine Referenzen für einfachen Datentypen • Ergebnistyp: beliebig • Überlagerung möglich (wie in C++) • Konstruktoren ähnlich zu C++ • super und this zum Zugriff auf die Basis-Klasse und die eigene Klasse • keine Destruktoren, aber finalize()
Java: Klassen • static in einer Klasse leitet eine Initialisierung ein • Vererbung:class B extends A {...} • keine Mehrfachvererbung(daher auch keine virtuellen Basis-Klassen) • statt dessen: interface
Java: Exceptions (1) • try { /* das Programm */ } catch (BesondererFehler e) { /* Fehlerbehandlung 1 */ }catch (Exception e) { /* Fehlerbehandlung 2 */ } • Auslösen:thrownew BesondererFehler (a, b);
Java: Exceptions (2) • try { /* das Programm */ } finally { /* immer ausführen */ } • Exceptions, die von einem Unterprogramm ausgelöst werden können:public static void Bsp() throws BesondererFehler, FehlerX { /* Unterprogramm */ }
Java: Entwicklungswerkzeuge • Java Developer’s Kit (Sun, Vers. 1.2) • Java Café Lite(Symantec) • C++ (Vers. 5.0 von Inprise) mit Java-Compiler • J-Buider (Inprise) • Visual J++ (Vers. 6.0 von Microsoft, Visual Studio) • JDK (frei nutzbar) + WinEdit (Shareware) • Sybase, PowerJ (V2.1 für Schulen gratis, V2.5, V3)
Vorteile: Ausstieg aus Schleifen Verwendung von Exceptions Schwerpunkt OOP Dynamische Variablen Viele Klassen Multithreading Interface-Konzept statt Mehrfachvererbung Nachteile: Hoher Aufwand beim Einstieg nur char-Eingabe nur call-by-value bei einfachen Datentypen Komplizierte Syntax Java: Didaktische Qualität (3)
Java Applets für Webseiten Applications (selbständ.) Compiler,Just-in-time-Compiler Byte-Code Strenge Typprüfung JavaScript Nur in WebseitenAusnahme: Server Side JavaScript Nur Interpreter Source-Text Keine Datentypen Java und JavaScript
Java: Zusammenfassung • für professionelle HTML-Präsentationen bald ein “Muß“ • gute C/C++-Vorkenntnisse sind nützlich • in vielen Punkten einfacher als C++ • didaktisch trotzdem nicht optimal • gute Entwicklungswerkzeuge schon verfügbar
Java: Literatur • Java by example: Jerry R. Jackson, Allan L. McClellanSunSoft Press, 1996. ISBN 0-13-565763-3Mit CD. In englischer Sprache.Guter Überblick über die Sprache mit vielen Beispielen
Java: Literatur • Java HandbookPatrick NaughtonOsborne McGraw-Hill, 1996ISBN 0-07-882199-1, $2795Empfehlenswerte Einführung mit vielen Beispielen Programmbeispiele unter http://www.osborne.com zu finden
Java: Literatur • Visual J++, Version 1.1Markus Linke, Markt&Technik, 1997ISBN 3-8272-5257-1Kompaktes Nachschlagewerk, speziell für die Microsoft-Java-Variante • Java 1.2Ralph Steyer, Markt&Technik, 1998ISBN 3-8272-5435-3Kompaktes Nachschlagewerk, neueste Java-Version
Java: Literatur • Java: Kai Baufeldt, Rolf MäurersData Becker, 1996ISBN 3-8158-1553-3 (ATS 147,-) • Preiswerte, systematische Einführung. Keine Vorkenntnisse erforderlich. HTML-Einführung im Anhang.
Java: Literatur • Java oder: wie steuere ich meine Kaffeemaschine?Bernhard Davignon, Georg Edelmanntewi-Verlag 1996 (ATS 145,-)ISBN: 3-89362-459-7Noch eine preiswerte Einführung, allerdings geringerer Tiefgang. Keine Anhänge zum Nachschlagen
Java: Literatur • Learn Java NowStephen R. Davis, Microsoft Press 1996In englischer SpracheEmpfehlenswert für den Umstieg von C++ auf Java, keine grundlegenden Erläuterungen von einfachen Sprachelementen
Java: Literatur • Das Einsteigerseminar JavaFrank Knobloch, Michael Seeboerger-Weichselbaum (ATS 145,-)bhv 1997, ISBN 3-89360-925-3Einführung samt Zusammenstellung der wichtigsten Klassen. Anhänge