JAVA - Eigenschaften

Werbung
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]
Herunterladen