Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java 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 Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 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/1 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/2 Anforderungen aus dem Software-Engineering (1) Anforderungen aus dem Software-Engineering (2) Praktischer Einsatz von Software : Ziel: wirtschaftliche Software-Entwicklung • • • • • wiederverwendbar portabel korrekt / fehlerfrei robust sicher auf andere Betriebssysteme/... ( z.B. keine Speicherfehler ) Ausnahme-Behandlung am Ort Vor Java keine durchgängige Technologie dafür • wartbar • anpaßbar z.B. an Sprachen, Geräte, ... • erweiterbar z.B. um zusätzliche Funktionalität Usability-Anforderungen : • lesbar • effizient • leicht verständlich • im Team entwickelbar Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/3 Anforderungen durch das Internet (1) in verschiedenen Anwendungen Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/4 Anforderungen durch das Internet (2) • Client-/Server-Anwendungen • WWW-Zugriff , Unterstützung von URLs • Interaktive Anwendungen und Sitzungen (Session-Konzept) • Zugriff auf entfernte Rechner , HTTP-Unterstützung • verteilbare Anwendungen • Client-/Server-Anwendungen • Transparenz des Ortes (entfernter Methoden-Aufruf) • Flexible Programmierung von Clients (durch Applets) • Flexible Lastverteilung zwischen Client und Server • Sicherheitsstandards für Applets (Sandbox) • Effiziente Programmierung von Servern • Unterschiedliche Grade von Vertrauenswürdigkeit • Sicherheit für den Server Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/5 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/6 1 Java-Applikationen (Programme) Programme übersetzen und ausführen ( = eigenständig, ohne einen Browser ausführbare Programme ) Kunde.java class Kunde { public static void main( String[ ] args ) { String ausgabe = “Herzlich willkommen in unserem Internet-Shop“ ; Java-Programm Java-Compiler Kunde.class Java-Byte-Code Eingabe Byte-Code-Interpreter System.out.println( ausgabe ); // ... weitere Anweisungen } beliebige Zielmaschine } Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/7 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/8 Programme übersetzen und ausführen Bei Java-Programmen in der DOS-Box: C:\java> javac Kunde.java 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) 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: 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 Internationalität von Java Elementare Datentypen in Java Internationaler Zeichensatz 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: - float 32 Bit - double 64 Bit Ausgabe (über 10308) (über 10308) Initialwert: 0.0 Initialwert: 0.0 • Unicode statt Bytes für Zeichen inklusive Umlaute: deutsche, skandinavische, ... , japanische, chinesische Sonderzeichen, ... • C/C++ 8 Bit • Java 16 Bit ==> verbraucht doppelt soviel Speicherplatz, aber bietet 256 mal soviele Zeichen zur Auswahl ==> 256 Zeichen Für logische Werte - boolean false , true Lokale Umgebungen (landesspezifisch) Für Zeichen ==> Portabilität von Anwendungen in andere Staaten/Sprachen - char 16 Bit Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/11 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/12 2 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 ; 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 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/13 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/14 try-Anweisung und Ausnahmen Funktionen in Java try { // // // // } public static void main( String[ ] args ) { // Anweisungen der Funktion } 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 • ähnlich wie in anderen Sprachen (z.B. C/C++) • können ohne (void) oder mit Ergebnis (int/double/...) arbeiten catch ( Exception e ) // fange Ausnahme auf { System.out.println( e.message() ) ; // Ausnahme ausgeben } • 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/15 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/16 „Alles Klasse“ Objekte • 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 ) von jeder Klasse kann man Objekte definieren. ... { Kasse meineKasse ; // 1. Kassenobjekt meineKasse . geld_in_der_kasse = 1000 ; // Variable zugreifen meineKasse . bezahlen( 500 ) ; class Kasse { int geld_in_der_kasse ; void bezahlen( int betrag ) { // Implementierung der Funktion(Methode) bezahlen } ... // weitere Variablen und Methoden // 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/17 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/18 3 Strings in Java 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 ) . Vordefinierte Klasse String String s1 = “abc“ ; String s2 = s1 + “def“ ; // Strings s1 und “def“ aneinanderhängen s2 += “ghi“ ; Übung: Java-Programm schreiben // an s2 hinten “ghi“ anhängen Ungefähr so sieht es aus, wenn es geklappt hat. 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 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/20 Fehlerbehebung beim Java-Programmieren Fehlerbehebung beim Java-Programmieren Wenn Java-Programmierumgebung nicht richtig eingestellt ist: Java-Pfad nicht gefunden! Pfad "path" setzen danach läuft der Compiler Wenn Dateinamen und Klassennamen nicht übereinstimmen: Dateiname falsch Dateiname korrekt Klassenname falsch 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 Einführung in Java im Rahmen der Vorlesung Webbasierte Informationssysteme SS2004 - Prof. Dr. Böttcher S. 5/22 Fehlerbehebung beim Java-Programmieren Webseite mit Java-Programm generieren Reaktionen von Compiler und JVM auf Syntaxfehler: Editieren Umlaute ; 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 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 4