Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 1 Ausgewählte Quellen zu Java • Java gibt es kostenlos von Sun unter http://java.sun.com/j2se/1.4.2/downloads/index.html • Online-Dokumentation zu Java ebenfalls unter http://java.sun.com/j2se/1.4.2/docs/index.html • empfohlenes Einführungsbuch zu Java: Bell / Parr: Java für Studenten, Pearson 2003. • (es tut aber auch fast jedes andere Einführungsbuch zu Java) Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 2 1 Anforderungen aus dem Software-Engineering (1) Praktischer Einsatz von Software : • • • • portabel korrekt / fehlerfrei robust sicher auf andere Betriebssysteme/... ( z.B. keine Speicherfehler ) Ausnahme-Behandlung am Ort Vor Java keine durchgängige Technologie dafür Usability-Anforderungen : • effizient • leicht verständlich Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 3 Anforderungen aus dem Software-Engineering (2) Ziel: wirtschaftliche Software-Entwicklung • wiederverwendbar in verschiedenen Anwendungen • wartbar • anpaßbar z.B. an Sprachen, Geräte, ... • erweiterbar z.B. um zusätzliche Funktionalität • lesbar • im Team entwickelbar Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 4 2 Anforderungen durch das Internet (1) • WWW-Zugriff , Unterstützung von URLs • Zugriff auf entfernte Rechner , HTTP-Unterstützung • Client-/Server-Anwendungen • Flexible Programmierung von Clients (durch Applets) • Sicherheitsstandards für Applets (Sandbox) • Unterschiedliche Grade von Vertrauenswürdigkeit Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 5 Anforderungen durch das Internet (2) • Client-/Server-Anwendungen • Interaktive Anwendungen und Sitzungen (Session-Konzept) • verteilbare Anwendungen • Transparenz des Ortes (entfernter Methoden-Aufruf) • Flexible Lastverteilung zwischen Client und Server • Effiziente Programmierung von Servern • Sicherheit für den Server Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 6 3 Java-Applikationen (Programme) ( = eigenständig, ohne einen Browser ausführbare Programme ) class Kunde { public static void main( String[ ] args ) { String ausgabe = “Herzlich willkommen in unserem Internet-Shop“ ; System.out.println( ausgabe ); // ... weitere Anweisungen } } Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 7 Programme übersetzen und ausführen Kunde.java Java-Programm Java-Compiler Kunde.class Java-Byte-Code Eingabe Byte-Code-Interpreter Ausgabe beliebige Zielmaschine Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 8 4 Programme übersetzen und ausführen Bei Java-Programmen in der DOS-Box: C:\java> javac Kunde.java erzeugt Kunde.class erfordert, dass der Java-Compiler im Pfad PATH enthalten ist, z.B. durch C:\java> SET PATH = C:\j2sdk1.4.0_01\bin C:\java> java Kunde startet Kunde.class erfordert, dass die Java-Bibliothek(en) und das aktuelle Verzeichnis im Klassenpfad CLASSPATH enthalten sind, z.B. durch C:\java> SET CLASSPATH = .;C:\j2sdk1.4.0_01\lib\dt.jar;C:\j2sdk1.4.0_01\lib\tools.jar Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 9 Portabilität von Java • Einheitliche virtuelle Maschine (Interpreter) für alle Zielmaschinen ( statt Maschinen-Code ) • Einheitliche Datentypen (anders als in C/C++), z.B. immer 32 Bit für Integerzahlen (int) ==> Portabilität: Byte-Code: Betriebssystem-übergreifend lauffähige Programme Write once run everywhere • Applets sind über das Internet in jeden Java-fähigen Browser ladbar. Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 10 5 Elementare Datentypen in Java Für ganze Zahlen: - byte 8 Bit -128, ..., 0, ..., 128 - short 16 Bit -32768, ..., 0, ..., 32767 - int 32 Bit -231, ..., 0, ..., 231-1 - long 64 Bit -263, ..., 0, ..., 263-1 (über 1018) Initialwert: 0 Initialwert: 0 Initialwert: 0 Initialwert: 0 Für Kommazahlen: (über 10308) (über 10308) - float 32 Bit - double 64 Bit Initialwert: 0.0 Initialwert: 0.0 Für logische Werte - boolean false , true Für Zeichen - char 16 Bit Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 11 Internationalität von Java Internationaler Zeichensatz • Unicode statt Bytes für Zeichen inklusive Umlaute: deutsche, skandinavische, ... , japanische, chinesische Sonderzeichen, ... • C/C++ 8 Bit ==> 256 Zeichen • Java 16 Bit ==> verbraucht doppelt soviel Speicherplatz, aber bietet 256 mal soviele Zeichen zur Auswahl Lokale Umgebungen (landesspezifisch) ==> Portabilität von Anwendungen in andere Staaten/Sprachen Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 12 6 Operatoren in Java • Rechenoperatoren: + , - , * , / , ... • Vergleichsoperatoren: < , > , == , != , >= , <= • logische Operatoren: && (und) , || (oder) , ! (nicht) • Zuweisungsoperatoren: = , += , ... z.B. x+=4 Kurzform für x=x+4 • Typumwandlung, z.B. x = ( int ) 3.14 ; und ein paar weitere Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 13 Kontrollstrukturen in Java • if ( Bedingung ) { Anweisung1 ; ... ; AnweisungN ; } else { Anweisung ; ... } • for ( InitialisierungsAnweisung ; Bedingung ; SchrittAnweisung ) { Anweisung ; ... } • while ( Bedingung ) { Anweisung ; ... } • do { Anweisung ; ... } while ( Bedingung ) ; und ein paar weitere ( switch, break, continue, return ) Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 14 7 try-Anweisung und Ausnahmen try { // // // // } Anweisungen, die (höchstens) 1x ausgeführt werden. Falls eine Ausnahme auftritt (Division durch 0, Datei (Datenbank,Klasse) nicht da, ...), wird der try-Block vorzeigt beendet: Sprung zu catch catch ( Exception e ) // fange Ausnahme auf { System.out.println( e.message() ) ; // Ausnahme ausgeben } Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 15 Funktionen in Java public static void main( String[ ] args ) { // Anweisungen der Funktion } • ähnlich wie in anderen Sprachen (z.B. C/C++) • können ohne (void) oder mit Ergebnis (int/double/...) arbeiten • 2 Arten: normale Funktionen (static) und Methoden (nicht static) Wo eine Anweisung stehen darf, darf auch ein Funktionsaufruf stehen. Wo ein Wert stehen darf, darf auch F.-Aufruf mit Ergebnis stehen. Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 16 8 „Alles Klasse“ • jede Funktionen steht in einer Klasse • Klassen bieten diese Funktionen an (liefern eine Implementierung) • jede Variable ist in einer Funktion oder einer Klasse definiert ( es gibt keine globalen Variablen , Klassen verstecken Variablen ) class Kasse { int geld_in_der_kasse ; void bezahlen( int betrag ) { // Implementierung der Funktion(Methode) bezahlen } ... // weitere Variablen und Methoden } Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 17 Objekte von jeder Klasse kann man Objekte definieren. ... { Kasse meineKasse ; // 1. Kassenobjekt meineKasse . geld_in_der_kasse = 1000 ; // Variable zugreifen meineKasse . bezahlen( 500 ) ; // Funktion aufrufen Kasse meineKasse2 ; // 2. Kassenobjekt meineKasse2 . geld_in_der_kasse = 2000 ; // Variablenzugriff meineKasse2 . bezahlen( 600 ) ; // Funktionsaufruf } Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 18 9 Strings in Java Vordefinierte Klasse String String s1 = “abc“ ; String s2 = s1 + “def“ ; // Strings s1 und “def“ aneinanderhängen s2 += “ghi“ ; // an s2 hinten “ghi“ anhängen System.out.println( s2 ) ; // String s2 ausgeben String s3 = s2.substring( 2, 4 ) ; // Teilstring herausholen Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 19 Übung: Java-Programm schreiben Schreiben Sie ein Java-Programm Willkommen.java , das Ihren Namen ausgibt. Übersetzen Sie es ( mit javac Willkommen.java ) und führen Sie es in der DOS-Box aus ( mit java Willkommen ) . Ungefähr so sieht es aus, wenn es geklappt hat. Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 20 10 Fehlerbehebung beim Java-Programmieren Wenn Java-Programmierumgebung nicht richtig eingestellt ist: Java-Pfad nicht gefunden! Pfad "path" setzen danach läuft der Compiler Programm läuft nicht Pfad "classpath" setzen danach läuft es evtl. Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 21 Fehlerbehebung beim Java-Programmieren Wenn Dateinamen und Klassennamen nicht übereinstimmen: Dateiname falsch Dateiname korrekt Klassenname falsch Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 22 11 Fehlerbehebung beim Java-Programmieren Reaktionen von Compiler und JVM auf Syntaxfehler: ; fehlt am Ende des Befehls } fehlt am Ende des Blocks Funktion hinter ^ (println) ist falsch geschrieben main-Funktion fehlt Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 23 Webseite mit Java-Programm generieren Editieren Umlaute Compilieren und ausführen ausführen mit Ausgabeumleitung und im Browser ansehen Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/ 24 12