Java - megloff.ch

Werbung
Java
Programmierung mit
> Eine Einführung in eine
Objektorientierte Sprache
Mark Egloff 2006
1
Java
Programmierung mit
Lernziele des Gesamten Kurs
> Sie kennen die Grundlagen der Objektorientierten
Programmierung. Sie erstellen einfache JAVA Programme mit
GUI, Applets und Konsolenapplikationen.
> Sie wissen welche verschiedenen Gebiete durch das Java 2 SE
API abgedeckt werden und können die behandelten Technologien
wirksam einsetzen.
Mark Egloff 2006
2
Java
Programmierung mit
Lernziele Heute
>
Einblick in die Technologie Java
>
Vorteile, Nachteile aufzeigen.
>
Konzept und Arbeitsweise verstehen.
>
1. eigenes Programm erstellen.
Mark Egloff 2006
3
Java
Programmierung mit
Ablauf Heute - Themen
>
>
>
Vorstellung
Überblick Modul „Programmierung mit Java“
Was ist Java ?
>
Einsatzbereiche von Java
>
>
Eigenschaften von Java, Vorteile und Nachteile
Konzept und Arbeitsweise von Java
Mark Egloff 2006
4
Java
Programmierung mit
Vorstellung
Hallo, ich bin der << Mark (Egloff) >>
>
www.megloff.ch [email protected]
>
Gelernter Elektroniker, studierter HTL Elektroingenieur,
zertifizierter Sun Enterprise Architekt und OpenSource
Web-Freak (JSP, PHP, Javascript, HTML, XML …)
>
Arbeite als Business Analyst und Consultant in IT-
Grossprojekten www.logicacmg.com
>
Erfahrung mit Java seit 1998
>
Unterrichte an der TSU seit 2001
>
Andere Kurse „XML mit Java OpenSource“
Mark Egloff 2006
5
Java
Programmierung mit
Überblick Modul „Programmierung mit Java“
1
2
Technologie
Java
01.02.
2006
8
Prüfung
1
3
4
Daten
typen
Prozed.
Progr.
OOP1:
Klassen
Objekte
9
10
11
Collections
1
Collections
2
5
OOP2:
Packg.
Instanzen
12
Excpetions
Prüfung 2
05.04.
6
OOP3:
Sichtb.
Interfaces
7
UML
13
14
GUI1:
AWT
Applets
31.05.
15
GUI2:
SWING
16
17
18
Threads
Serialisierung
Modul
prüfung
12.07.
Mark Egloff 2006
6
Java
Programmierung mit
Überblick Modul Voraussetzungen / Erwartungen
>
>
>
>
>
>
>
>
Wenn möglich Erfahrung mit einer Prozeduralen
Programmiersprache (VB,C,Delphi,PHP,Perl,JavaScript …)
Notebook
(min. 1GHz, 512MB RAM, Windows 2000 oder XP, Linux)
Bereitschaft ca. 2 - 4h pro Woche zusätzlich
Wenn etwas unklar ist bitte Fragen….
Fragen, Fragen, Fragen …
Unterlagen ordnen, Indexieren, Eigene
Zusammenfassungen, Eigene Notizen…
Jederzeit Email oder Telefon  24h Service
[email protected] tel. 079 42 43 41 2
Mark Egloff 2006
7
Java
Programmierung mit
Überblick Modul - Empfohlene Literatur
>
Java ist auch eine Insel (Java Grundlagen)
www.java-tutor.com, Galileo Computing, ISBN 3-89842-304-2
>
Java in a Nutshell (Java Sprach Referenz)
O’Reilly, english ISBN 0-596-00773-6, deutsch ISBN 3-89721-332-x
>
Java Foundation Classes (Java GUI, AWT, Swing Referenz)
O’Reilly, english ISBN 1565924886
>
Objektorientierte Softwareentwicklung (UML und OOP)
Bernd Oestereich, Oldenburg, ISBN 3-486-24787-5
>
Entwurfsmuster (Designpatterns) (OOP)
Erich Gamma, Addison Wesley, ISBN 3-8273-2199-9
Mark Egloff 2006
8
Java
Programmierung mit
Überblick Modul - Links
> Java SUN java.sun.com
> Java API java.sun.com/j2se/1.4.2/docs/api/
> Java ist auch eine Insel (eBook, Einstiegs Ressourcen)
www.java-tutor.com
> Jakarta Projects (OpenSourceKits)
jakarta.apache.org
> Netbeans (free IDE, Development Tools)
www.netbeans.org
> Eclipse (free IDE, Development Tools)
www.eclipse.org
> OOSE (UML und OOP)
www.oose.de
Mark Egloff 2006
9
Java
Programmierung mit
Übersicht Java Technology
> Was ist Java ?
Mark Egloff 2006
10
Java
Programmierung mit
Übersicht Java Technology
> Was ist Java ?
Java ist ….
>
>
>
eine plattformunabhängige OO Programmiersprache ursprünglich von der Firma Sun
Microsystems, entwickelt wurde.
sowie natürlich die Hauptinsel Indonesiens, als
auch eine kleine Insel im Pazifik, deren
Hauptexportprodukt Kaffee ist
und damit der umgangssprachliche Ausdruck für
Kaffee in den USA.
Mark Egloff 2006
11
Java
Programmierung mit
Übersicht Java Technology
> Was kann man mit Java machen ?
… ALLES !!!
>
Animationen, Laufbänder, Chats auf Web-Seiten, Animacons,
Taschenrechner, Spiele, Verschlüsselungs-programme,
interaktive Web-Seiten, Musik, Text-verarbeitungen, kleine
Internet-Applets, riesige Programmpakete,
Bildverarbeitungsprogramme, neuartige
Benutzeroberflächen, Übersetzungsprogramme,
Bestellsysteme, Lernanwendungen, Uhren,
Tabellenkalkulationen, Rechtschreibprüfungsprogramme,
usw. usw.
Mark Egloff 2006
12
Java
Programmierung mit
Übersicht Java Technology
> Was Java NICHT kann…
Kaffee kochen… ;-)
>
Jede Technology hat seine Vor und Nachteile, wie werden
diese gleich kennen lernen (ein paar Folien weiter hinten…)
Mark Egloff 2006
13
Java
Programmierung mit
Übersicht Java Technology - Einsatzbereiche
>
>
>
>
>
Standalone Applikationen (Workstation)
Spiele, Tools, Algorithmen, grafische Anwendungen
Verteilte Systeme (Client / Server)
TCP/IP, Webanwendungen, Integration, Services
Applikations-Server (Enterprise Applications)
Content Mgmt, Workflow, CRM, Rule Engines
Portable Systeme
PDA, Handy, MP3 Player, Camcorder
Embedded Systems
Haushaltgeräte, Multimedia, Automaten, Industrie
Mark Egloff 2006
14
Java
Programmierung mit
Übersicht Java Technology - Geschichte
>
1982 SUN Microsystems
>
1990 Geheimes Projekt „Green“
>
1991 Programmiersprache „Oak“
>
1992 „*7 - Star Seven“ (portabler Minicomputer)
Firmengründung „First Person“
>
1996 „Oak“  „Java“
Firmengründung „JavaSoft“ (www.javasoft.com)
JDK 1.0 & HotJava Browser
>
1997 Java Workshop / 1. verteilte Applikationen mit Applets
JDK 1.1 (Java AWT)
>
1998 JDK 1.2 (Swing, Servlets)
JCP (Java Community Process)
>
1999 J2SE (JDK 1.3) und J2EE 1.0
>
2001 JDK 1.4 beta und J2EE 2.0
>
2004 JDK 1.5
Mark Egloff 2006
15
Java
Programmierung mit
Übersicht Java Technology - Einsatzbereiche
Im Modul
Mark Egloff 2006
16
Java
Programmierung mit
Übersicht Java Technology Java 2 Plattform Übersicht
Im Modul
J2EE
J2SE
Mark Egloff 2006
17
Java
Programmierung mit
Übersicht Java Technology Java 2 Plattform, Standard Edition (J2SE)
Im Modul
Mark Egloff 2006
18
Java
Programmierung mit
Übersicht Java Technology Java Enterprise Edition (J2EE)
Beispiel einer verteilten Basis-Architektur für Businesslösungen
J2SE
Im Modul
Mark Egloff 2006
19
Java
Programmierung mit
Übersicht Java Technology Java Enterprise Edition (J2EE)
SoftwareEngineering Prozess mit Java Enterprise Edition
Mark Egloff 2006
20
Java
Programmierung mit
Merkmale von Java (1/2)
>
Architekturneutral / Plattformunabhängig
Java Interpreter gibt es fast für jede Plattform. Natürlich wird nicht immer alles
unterstützt
>
einfach erlernbare Sprache
Der Syntax von Java ist einfach gehalten, strenge Regeln & Typisierung,
>
Modern
Die Sprache lebt wird ständig erneuert. Java Community Process (JCP)
>
Objektorientiert
streng Objektorientierung, erlaubt strengere Strukturierung der Programme
>
„Dezentral“ (verteilte Systeme)
Die Grundversion von Java bietet schon alles für Netzwerk/Web-Anwendungen
>
Robust & Sicher
Java Appl. laufen in „Containers“, API für Security wie User, Rollen, Rechte…
Mark Egloff 2006
21
Java
Programmierung mit
Merkmale von Java (2/2)
>
"multithread"-fähig
Innerhalb seines „Containers“ kann Java parallele Tätigkeiten (Thread)
ausführen und verwalten. Synchronisation zwischen den Tätigkeiten
>
Dynamisch
Statische Typenbindung, aber späte Methodenbindung, lädt zur Laufzeit
Klassen / Libraries nach und kann diese zur Laufzeit auch austauschen
>
Automatische Speicherverwaltung (Garbage Collector)
Java reserviert und gibt Speicher automatisch frei
>
„Klein“  Embedded Systems ab ca. 4MB
>
grosse umfangreiche Klassenbibliothek (API)
>
„Nahtlos“ Integrierbar mit anderen Technologien
(DCOM, C++, C#, CORBA, XML, Webservices…)
>
„frei“ verfügbar
Mark Egloff 2006
22
Java
Programmierung mit
Sprach Unterschiede zu C++
>
Kein Präprozessor
>
Keine überladenen Operatoren
>
Automatische Speicherverwaltung
>
Speicher kann nicht explizit freigegeben werden
>
Templates (ist aber nun in Java 1.5 enthalten)
>
Kennt nur Referenzen, keine Zeiger
>
Übergabe von Objekten „by Reference“
>
Manipulation von Adressen nicht möglich
>
Strengere Typenprüfung, „wildes“ Casting nicht möglich
>
Security Model
Mark Egloff 2006
23
Java
Programmierung mit
Generelle Unterschiede Java zu MS .NET
Element:
Java (J2EE):
Microsoft .NET:
Entwicklungs- Standard  Java
Prozess
Community Process
Microsoft Product
Hersteller
Microsoft
30+
Compiled Code Java ByteCode
MS IL
Interpreter
JRE (JVM)
CLR
Dynamische
WebPages
JSP, Servlets
ASP.NET
Components
Enterprise Java
Beans
.NET Managed Components
DB Access
JDBC,SQL/J, JDO,
Hibernate EJB 3.0
ADO .NET
Security
Integriert
Who & Code Trust
Integriert
Centralized .Net Password
Mark Egloff 2006
24
Java
Programmierung mit
Konzept von Java
> Wie funktioniert
Java ?
Mark Egloff 2006
25
Java
Programmierung mit
Konzept von Java -
Traditionelle SW Erstellung (1/3)
1) Quellcode
prog
.cc
2) MaschinenCode
GNU CC
prog
.oo
GNU Link
Linker
Compiler
LIBs
3) Prog.exe
LIBs
Libraries / Config
Libraries / Config
Plattform A (z.B. Windows XP SP2)
Mark Egloff 2006
26
Java
Programmierung mit
Konzept von Java -
Traditionelle SW Erstellung (2/3)
Erstellung eines Programms
1)
Mit einer Programmiersprache wird Quellcode erstellt.
2)
Compiler übersetzt Quellcode in Maschinencode (binär und
architekturabhängig). Dabei werden plattformabhängige Ressourcen
verwendet
3)
Der Linker bindet diesen mit den Ressourcen des Betriebssystems
zusammen und erstellt ein ausführbares Programm. (binär und
architekturabhängig).
Das so erstellte Programm ist nur für eine
bestimmte Plattform „brauchbar“
Mark Egloff 2006
27
Java
Programmierung mit
Konzept von Java Traditionelle SW Erstellung (3/3)
prog
.cc
Compiler A
Linker A
Plattform A
Windows XP SP2
prog
.cc
Compiler B
Linker B
Plattform B
Windows NT
Server 4
prog
.cc
Compiler C
Linker C
Plattform C
Linux SuSE 10
Für jede Plattform müssen bestimmte Compiler
und Linker etc. verwendet werden
Mark Egloff 2006
28
Java
Programmierung mit
Konzept von Java -
ByteCode & Interpreter (1/3)
1) Quellcode
2) ByteCode
3)
prog
.java
prog
.class
javac
java
Interpreter
Compiler
LIBs
LIBs
JRE
JRE
Plattform A
z.B. Windows XP SP2)
Plattform B
z.B. Linux SuSE 10
Mark Egloff 2006
29
Java
Programmierung mit
Konzept von Java -
ByteCode & Interpreter (2/3)
Erstellung eines Java Programms
1)
Mit Programmiersprache Java wird Quellcode erstellt.
2)
Compiler übersetzt Quellcode in einen Zwischencode (binär und
plattformunabhängig).
3)
Der Interpreter (Java Virtual Machine - JVM) führt den Zwischencode
auf der jeweiligen Plattform aus. (Der Interpreter selber ist wieder
plattformabhängig)
Der Bytecode kann auf jeder Plattform mit
dem spezifischen Interpreter ausgeführt
werden
Mark Egloff 2006
30
Java
Programmierung mit
Konzept von Java -
ByteCode & Interpreter (3/3)
> Compiler Plattform abhängig
javac
> ByteCode Plattform unabhängig
Plattform A
prog.class
> Interpreter Plattform abhängig
java
Plattform A
Mark Egloff 2006
java
Plattform B
java
Plattform C
31
Java
Programmierung mit
Konzept von Java – Vorteile / Nachteile (1/5)
Vorteil: Plattformunabhängigkeit
>
write once, run everywhere
>
Konfiguration und Deployment wird wesentlich vereinfacht
>
Einfaches Release Management
Nachteil: Geschwindigkeitsverlust, Ressourcenverbrauch
>
Der Bytecode wird vom Interpreter zur Laufzeit im Memory
zu einem Programm umgewandelt  10 – 20 langsamer
>
Interpreter sind komplex und extrem speicherhungrig
Not macht erfinderisch, was wird dagegen
unternommen?
Mark Egloff 2006
32
Java
Programmierung mit
Konzept von Java – Vorteile / Nachteile (2/5)
Abhilfen:
> „Just in Time“ Compiler (JIT)
JIT Compiler übersetzt nur den Code der gerade gebraucht wird.
Geschwindigkeit steigt dadurch um Faktor 3 - 5.
Der JIT ist heute schon im Standard Interpreter integriert („Hotspot“)
> Native Implementationen
Gewisse Teile werden direkt in einer plattformabhängigen Sprache
geschrieben z.B. C++
Eclipse / Netbeans setzen für das GUI eine C++ Version des Java
Swings ein (SWT/GCJ) ww.eclipse.org/swt/
 plattformunabhängigkeit ???
Mark Egloff 2006
33
Java
Programmierung mit
Konzept von Java – Vorteile / Nachteile (3/5)
C++ vs. Java Performance (bigger is better):
Der Java Interpreter wurde
extrem „ge-tunet“, bei gewissen
Algorithmen hat Java die Nase
vorn
Mark Egloff 2006
34
Java
Programmierung mit
Konzept von Java – Vorteile / Nachteile (4/5)
C# vs. Java Performance (bigger is better):
Java
C#
October 2004
www.shudo.net/jit/perf/
Mark Egloff 2006
35
Java
Programmierung mit
Konzept von Java – Vorteile / Nachteile (5/5)
> Wofür ist Java nun nicht geeignet ?
… wenn plattformspezifische Eigenschaften benötigt werden
>
Wenn Echtzeit gefragt ist muss dies unterstützt werden
>
Anzahl freier Bytes im Dateisystem, Laufwerkstyp erkennen,
CD auswerfen, Datei Verknüpfungen folgen
>
Windows Desktop z.B. Applikationen mit einem Tray Icon ausstatten
>
Zugriff auf Hardware Schnittstellen z.B. USB oder Firewire
… wenn Speicherverwaltung ein Problem darstellt
>
Speicherverbrauch lässt sich in Java nicht 100%ig kontrollieren
>
Java ist speicherhungrig
Mark Egloff 2006
36
Java
Programmierung mit
Konzept von Java – Die Java Virtual Machine
Aufgabe der JVM
>
Interpretation & Ausführung
>
Dynamisches Laden
>
Sicherheitsprüfungen
JVM
java
interpreter
Betriebssystem
Hardware
Mark Egloff 2006
37
Java
Programmierung mit
Konzept von Java – Die Java Virtual Machine
Dynamisches Laden
Java
Applet
Datei
MyApplet.class
1
WWW-Browser
2
Datei
Bluber.class
3
Library der
JVM
Internet
HTTP- Server
Server
Client A
1)
Der ByteCode für das Applet wird geladen und es wird gestartet.
2)
Werden weitere Applikationsklassen gebraucht, so werden die vom
Client über das Netz zur Laufzeit nachgeladen.
3)
Werden Library Klassen benötigt, so werden diese von der lokalen
Maschine geladen.
Mark Egloff 2006
38
Java
Programmierung mit
Konzept von Java – Die Java Virtual Machine
Sicherheitskonzept
Java besitzt ein 4 stufiges Sicherheitskonzept
>
Unterste Ebene: die Programmiersprache selbst, durch
Ausschluss von Zeigern und strenger Typenprüfung.
>
Zweite Ebene: Der geladene ByteCode wird überprüft.
Schutz vor manipuliertem ByteCode.
>
Dritte Ebene: Der Class - Loader überprüft die Zugriffsrechte innerhalb des Javaprogramms
>
Vierte Ebene: Überwachungen zur Laufzeit
Mark Egloff 2006
39
Java
Programmierung mit
Das Java Development Kit (JDK)
> Wie verwende ich
Java ?
Mark Egloff 2006
40
Java
Programmierung mit
Das Java Development Kit (JDK)
JDK = Java Development Kit
(JSDK = Java Software Development Kit)
>
frei verfügbar
>
Bezugsquelle: http://java.sun.com
>
Das JDK ist in der JSE (Java Standard Edition)
enthalten.
>
Aktuell ist JDK 1.5
Mark Egloff 2006
41
Java
Programmierung mit
Das Java Development Kit (JDK)
Übersicht JDK (ab v1.3)
>
Konsolenapplikationen
>
Applets & GUI (AWT, Swing)
>
Netzwerk, TCP/IP (Sockets)
>
Komprimierung & Dynamisches Laden (Archive)
>
Laufzeit Untersuchungen (Reflection)
>
Sicherheit & Verschlüsselung (Security)
>
Datenbankanbindung (JDBC via ODBC, SQL)
>
Anbindung für Verteilte Systeme (Beans, RMI, IDL, Corba)
Mark Egloff 2006
42
Java
Programmierung mit
Das Java Development Kit (JDK)
Übersicht JDK 1.4
Ordner:
Inhalt:
bin
Development Tools
jre
Java Runtime Environment
lib
Additional Libraries
demo
Demo Applets and Applications
include
C header Files
Include-old
Old Native Interface Headers
docs
Documentation
src.jar/.zip
Source Code Packages
Mark Egloff 2006
43
Java
Programmierung mit
Übungen Heute
>
Installation JDK 1.4
>
Kennen lernen des JDK 1.4, Demos
>
CSV  XML  HTML Transformation
>
„Hello World“
>
Quadrat.java
>
Ein & Ausgabe
Mark Egloff 2006
44
Java
Programmierung mit
Aufbau eines Java Programmes
Beispiel einer „Hello World“ Applikation:
public class HalloWelt
Klasse
{
public static void main (String[] args)
Methode
{
System.out.println("Hallo Welt");
Ausgabe
}
}
Mark Egloff 2006
45
Java
Programmierung mit
Aufbau eines Java Programms
Dateinamen und Klassennamen:
public class HalloWelt
{
Klasse
HalloWelt
.java
...
}
Die erste Klasse muss mit dem Namen der
Datei übereinstimmen (CaseSensitive !)
Mark Egloff 2006
46
Java
Programmierung mit
Aufbau eines Java Programms
Die „main“ Methode:
public class HalloWelt
{
public static void main (String[] args)
Methode
{
...
}
}
Der Syntax und Name der Hauptmethode „main“ ist
fest vorgeschrieben
Nur so ist gewährleistet, dass diese Methode beim
Start automatisch vom System gefunden wird.
Mark Egloff 2006
47
Java
Programmierung mit
Aufbau eines Java Programms
Syntax der „main“ Methode:
Element:
Kategorie:
Bedeutung:
public
Zugriffsschutz
Kann von überall aufgerufen werden
static
Klassenmethode
Methode wird nicht an ein Objekt /
Instanz gebunden
 „Globale“ Methode
void
Rückgabetyp
Die Methode liefert keinen
Rückgabewert.
main
Methodenname
Der Name „main“ bewirkt, dass diese
Methode nach dem Programmstart
aufgerufen wird.
String[] args
Übergabeparameter
In diesem Parameter bekommt die
Methode alle ev. eingegebenen
Comandline Parameter
Mark Egloff 2006
48
Java
Programmierung mit
Aufbau eines Java Programms
Ausgabe der „Hello World“ Applikation:
public class HalloWelt
{
public static void main (String[] args)
{
System.out.println("Hallo Welt");
}
}
Klasse
als Namespace
statisches Objekt
Methode
Übergabeparameter
Es wird von einem static (=„globalen“) Objekt
„System.out“ eine Methode „println()“ aufgerufen,
„System.out“ ist die Standardausgabe des Prozesses
Mark Egloff 2006
49
Java
Programmierung mit
Compilieren des Java Programms
Aufruf des Java Compilers:
Syntax: javac [FileName]
Für die Compilierung wird das Programm „javac.exe“
benötigt. Als Parameter Filenamen (mit Endung)
eingeben.Bei Windows muss der Aufruf nicht
CaseSensitive sein
Mark Egloff 2006
50
Java
Programmierung mit
Compilieren des Java Programms
Datei HalloWelt.java
public class
HalloWelt
Datei
HalloWelt.class
javac
------------------------------
Datei
MyClass.class
class MyClass
------------------------------
Für Jede Klasse erzeugt der Compiler ein
eigenes *.class File.
Mark Egloff 2006
51
Java
Programmierung mit
Ausführen des Java Programms
Aufruf des Java Interpreters:
Syntax: java [ClassName]
Für die Ausführung wird das Programm „java.exe“
benötigt. Klassennamen (CaseSensitive!) als
Parameter angeben (ohne *.class!)
Mark Egloff 2006
52
Java
Programmierung mit
Compilieren des Java Programms
Häufige „Beginnerfehler“ beim Kompilieren:
>
Befehl „javac“ nicht gefunden, „PATH“ nicht gesetzt
D:\> javac hallowelt.java
Der Befehl "javac" ist entweder falsch geschrieben
oder konnte nicht gefunden werden.
>
Dateiendung ist nicht „*.java“
D:\> javac hallowelt.txt
hallowelt.txt is an invalid option or argument.
>
Dateinamen ungleich Klassennamen:
D:\> javac hallowelt_übung1.java
class HalloWelt is public, should be declared in a
file named HalloWelt.java
Mark Egloff 2006
53
Java
Programmierung mit
Ausführen des Java Programms
Häufige „Beginnerfehler“ beim Ausführen:
>
Dateiname anstelle Klassennamen
D:\> java HalloWelt.class
Exception in thread "main"
java.lang.NoClassDefFoundError: helloworld/class
>
„main“ Methode hat falscher Syntax oder fehlt
Exception in thread "main"
java.lang.NoSuchMethodError: main
>
„CLASSPATH“ Variable existiert, aber kein „.“
D:\> java HalloWelt
Exception in thread "main"
java.lang.NoClassDefFoundError: HalloWelt
D:\>echo %CLASSPATH%
aaaa.jar;bbbb.jar;cccc.jar;dir1;dddd.jar;dir2
Mark Egloff 2006
54
Java
Programmierung mit
Konzept von Java
> Was ist der
„CLASSPATH“ ?
Mark Egloff 2006
55
Java
Programmierung mit
Der CLASSPATH
Standardmässig kennt Java nur Klassen aus dem
JRE (Java Runtime Environment)
z.B. „C:\jdk1.5.0_06\jre\lib\rt.jar“
Bei der Kompilierung oder Ausführung eines
Programms werden alle anderen Klassen nach
einer bestimmten Vorgehensweise gesucht. Dabei
wird der so genannte „CLASSPATH“ verwendet.
1. Suche in “rt.jar” (Bootstrap classes)
2. Suche in „jre\lib\ext“ (Extension classes)
3. Suche in CLASSPATH (own/third parties)
Mark Egloff 2006
56
Java
Programmierung mit
Der CLASSPATH
Wird eine Klasse nicht gefunden so wird eine
entsprechende Exception (Fehler) ausgelöst
z.B.
D:\uebung1>java HelloWorld
Exception in thread "main"
java.lang.NoClassDefFoundError:
HelloWorld
Mark Egloff 2006
57
Java
Programmierung mit
Der CLASSPATH
Der CLASSPATH ist eine Pfadangabe (Textzeile) und
besteht aus Angaben von Libraries (*.jar) oder
Verzeichnissen. Durch „ ; “ getrennt.
Bei der Suche wird jeder Eintrag von vorne nach
hinten abgearbeitet um die Klasse zu finden
z.B.
CLASSPATH = java\myclasses;
lib\xalan.jar;lib\xercesImpl.jar;.
Einträge sind oft relativ. Der „ . “ bedeutet das
aktuelle Verzeichnis!
Mark Egloff 2006
58
Java
Programmierung mit
Der CLASSPATH
Falls kein Wert für den CLASSPATH angegeben
wurde so ist es das aktuelle Verzeichnis „ . “
Der CLASSPATH kann entweder als Systemvariable
oder als Parameter angegeben werden. Parameter
sollte bevorzugt werden um Kollisionen mit
anderen Java Programmen zu vermeiden.
z.B.
SET CLASSPATH=java\myclasses;.
java MyAppClass
javac –classpath java\myclasses;. MyApp.java
java –classpath java\myclasses;. MyAppClass
Mark Egloff 2006
59
Java
Programmierung mit
Der CLASSPATH
Crash Course – System Variablen in Windows Shell:
>
Variable für die jeweilige Shell setzen (kein abstand bei „=“)
D:\> set CLASSPATH=wert
>
Variable ausgeben oder testen ob gesetzt
D:\>echo %CLASSPATH%
wert
%CLASSPATH%
>
 Variable gesetzt
 Variable nicht vorhanden
Variable löschen
D:\> SET CLASSPATH=
Für diesen Kurs empfehle ich die Variable nicht zu
verwenden und falls vorhanden in der
Systemsteuerung zu löschen!!
Mark Egloff 2006
60
Java
Programmierung mit
Der CLASSPATH
Bekannte Probleme beim CLASSPATH bzw. Java
Einträge (Datei, Verzeichnis) werden nicht auf Ihre
Existenz bei der Suche geprüft. Schreibfehler im
CLASSPATH können deshalb FATAL sein!
Java kennt keine interne Versionierung bei Klassen,
sollte eine Klasse (= gleicher Name) mehrfach im
CLASSPATH existieren so wird die erste genommen!
FATAL bei verschiedenen Versionen!
Java kommt seit 1.4 mit eingebauten Third Party
Libraries (Endorsed) z.B. „Xalan“.
 Das führt oft zu Versionskonflikten!
Mark Egloff 2006



61
Herunterladen