JAVA - Einführung Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt man ein JAVA Programm ? Entwicklungsumgebungen © [email protected] JAVA gestern Green Projekt von SUN, OAK Umgebung für embedded controller Plattformunabhängigkeit James Gosling Internet Anwendungen Interaktive Applets in Webseiten Allgemein verwendbare Programmiersprache Große Projekte mit grafischer Oberfläche Office Pakete,... gescheitert ! © [email protected] heute Internet Anwendungen Verteilte Systeme RMI, CORBA, Agenten,... Integration Auf Serverseite Servlets XML Java Beans Allgemein verwendbare Programmiersprache Performance zu schlecht für grafische Oberflächen spielt bei Datenbanken, verteilten Systemen,... keine Rolle © [email protected] und morgen ? The Network is the computer ! Heute Standalone PCs/große Applikationspakete Separate Installationen pro PC Hoher Administrationsaufwand Morgen Network Computer (NC) + zentraler Server Software (in Java) nur auf Server Download ‚just-in-time‘ Browser ist „Betriebssystem“ auf Clients © [email protected] JAVA – The Language Einfache, moderne Programmiersprache ähnlich C/C++ einfach komplexe Eigenschaften von C++ fehlen (Mehrfachvererbung, operator overloading, templates,...) automatische Speicherverwaltung (garbage collection) streng typisiert modern objektorientiert multi-threaded plattformunabhängig © [email protected] Warum JAVA ? andere Sprachen haben diese Eigenschaften auch ! Smalltalk, Perl (?), Python, Ruby,... Einfach zu lernen zu verwenden mächtige, standardisierte Bibliotheken #define Spekulation ON Markt nicht Microsoft #define Spekulation OFF "gute Mischung" © [email protected] Unterschiede C++/JAVA kein Präprozessor keine Pointer keine Mehrfachvererbung keine alleinstehenden Funktionen (alles innerhalb von Klassen) kein goto kein Operator Overloading keine automatische Typumwandlung keine Templates usw. © [email protected] JAVA Programme Applikation Applet läuft im Browser ab, grafische Oberfläche Restriktionen zur Sicherung (Sandbox) Servlet "normales" Programm, Textmode oder grafische Oberfläche läuft im (Web-) Server ab erzeugt bel. Ausgabe (oft HTML, aber auch beliebige Daten möglich) Bean wiederverwendbare Komponente © [email protected] Hello World // Hello World in JAVA public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World"); } } Alles innerhalb Klassen (hier HelloWorld) System.out.println schreibt auf die Standardausgabe Jedes Java Programm verwendet automatisch das Package java.lang objektorientiert ? © [email protected] Hello World II // Hello World objektorientiert public class HelloWorldOOP { public void hallo() { System.out.println("Hello World"); } } public static void main(String args[]) { HelloWorldOOP mg = new HelloWorldOOP(); mg.hallo(); } main ist zwar innerhalb der Klasse programmiert, kann (und sollte) aber als Teil eines anderen Objekts betrachtet werden Erklärung später © [email protected] Erstellung von Programmen Bytecode Verifier Java Source Class Loader Java Compiler Interpreter Bytecode JIT Compiler JVM Hardware © [email protected] Übersetzen Java Quellcode-Dateien haben Endung .java Name der Datei ist GENAU der Name der Klasse Genau eine Klasse pro Datei Übersetzen mit javac <Dateiname> dabei wird Bytecode erzeugt, Endung .class, hier also HelloWorld.class Ausführen mit java <Klassenname> z.B. Klasse HelloWorld in Datei HelloWorld.java nicht in helloworld.java,.... hier also: java HelloWorld Annahme: Alle Dateien im aktuellen Verzeichnis © [email protected] Bibliotheken Java Libraries sind als packages organisiert (hierarchisch) Alle Programme verwenden automatisch java.lang Andere müssen explizit importiert werden z.B. grafische Objerflächen im package java.awt import java.awt.*; Wichtige packages: java.io java.util java.net java.math java.awt java.swing Ein-/Ausgabe Algorithmen/Datenstrukturen TCP/IP grafische Oberfläche (alt) grafische Oberfläche (neu) © [email protected] Dokumentation © [email protected] JVM virtuelle Maschine könnte aber auch real (Hardware) sein verarbeitet (interpretiert) Bytecode enthält i.w. alle Komponenten einer realen CPU Befehlssatz Speicherverwaltung Register Stacks Heap (mit garbage collection) Bytecode wird vor Ausführung überprüft © [email protected] Performance Java Programme sind "relativ" langsam (Interpreter) Beschleunigung durch JIT Compiler Bytecode wird zunächst in nativen Maschinencode übersetzt und dann ausgeführt Maschinencode wird nach Ausführung vernichtet (plattformunabhängigkeit) Carbage collection Entwicklung schneller, Ausführung langsamer erleichtert Programmierung/vermeidet Fehler, aber kostet Performance macht Einsatz bei RT Systemen schwierig/unmöglich geeignete Programmiertechniken © [email protected] Entwicklungsumgebung JDK (Java Development Kit) von SUN Referenzimplementierung kostenlos http://java.sun.com Kommandozeilen Werkzeuge javac (Compiler) java (JVM) jre (Java Runtime Environment) javadoc usw. grafische IDEs Borland JBuilder IBM Visual Age for Java Microsoft VJ++ (nicht mehr) usw. © [email protected]