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
© till.haenisch@gmx.de
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 !
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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"
© till.haenisch@gmx.de
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.
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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 ?
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
Erstellung von Programmen
Bytecode
Verifier
Java
Source
Class
Loader
Java
Compiler
Interpreter
Bytecode
JIT
Compiler
JVM
Hardware
© till.haenisch@gmx.de
Ü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
© till.haenisch@gmx.de
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)
© till.haenisch@gmx.de
Dokumentation
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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
© till.haenisch@gmx.de
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.
© till.haenisch@gmx.de