Impressum
 VORWORT
  INHALT
  Register
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH


                                   HARRY FELDMANN
              
          HHHHH                                           T M
          HSSSH    HHHHHHHHH HHHH       HHHH   HHHHHHHHH        
          HSSSH    HMMMMMMMHHHCCHH     HHCCH   HGGGGGGGHH          
          HSSSH    HHHHHHHMMHHHCCH     HCCHH   HHHHHHHGGH          
          HSSSH  HHHMMMMMHMMHYHCCHYYYYYHCCH  HHHGGGGGHGGH          
          HSSSHYHHMMMHHHMMMMHRHCCHRRRRRHCCHYHHGGGHHHGGGGH          
   YYYYYYYHSSSHRHMMHHH HHHMMH HCCHH   HHCCHRHGGHHH HHHGGHYYYYY    
 YYYRRRRRHHSSHH HMMH     HMMH HHCCH   HCCHH HGGH     HGGHRRRRYYY  
YYRRR  HHHSSHH  HMMHHH HHHMMHH HCCHHHHHCCH  HGGHHH HHHGGHH  RRRYY 
YRR    HSSSHH   HHMMMHHHMMMMMH HHCCCHCCCHH  HHGGGHHHGGGGGH    RRY 
YRRRR  HHHHH     HHHMMMMMHHHHH  HHHCCCHHH    HHHGGGGGHHHHH  RRRRY 
YR  RRRRRRRR       HHHHHHH        HHHHH        HHHHHHRRRRRRRR  RY 
YRR        RRRRRRRRRRRR                   RRRRRRRRRRRR        RRY 
YYR                   RRRRRRRRRRRRRRRRRRRRR         RRRRRRRRRRRYY 
 YRR                                              RRR         RRYY
 YYRRR                                           RR   RRRRRRR  RRY
  YYYRR                                           RRRRR  RRYR   RY
    YYRRR                                              RRRYYR   RY
     YYYRRRR                                 RRRRRRRRRRRRRRRR  RRY
       YYYYRRRR                             RR                RRYY
          YYYYRRRR                          R  RRRRRRRRRRRRRRRRYY 
             YYYYRRRRRR                   RRRRRRYYYYYYYYYYYYYYYY  
                YYYYYYRRRRRRRRRRRRRRRRRRRRRYYYYYY                 
                     YYYYYYYYYYYYYYYYYYYYYYY

                                   Java PROGRAMMIERUNG


HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL



                                   Ein einführendes Lehrbuch  



Impressum
Verantwortlich für den Inhalt: Prof. Dr. Harry Feldmann 
Privat: Horstweg 4b, 22391 Hamburg
http://www.harry-feldmann.net
Universität Hamburg: Fakultät f.Betriebswirtschaft (BWL) > Emeriti
https://www.bwl.uni-hamburg.de/ueber-die-fakultaet/professuren.html#208878
Personenbezogene Daten werden nicht verarbeitet, genutzt oder erhoben.

Version: 12.Nov.2019 (first 1.Jan.1999), HTML 4.01 Transitional, CSS1, Java Programme

Vom Autor erschienen bisher:
   #  Einführung       in ALGOL_60 (ISBN 3-528-03315-0, 1972)
   #  Einführung       in ALGOL_68 (ISBN 3-528-03329-0, 1978)
   #  Einführung       in SIMULA   (Rechz. Uni.Hamburg, 1979)
   #  Einführung       in Pascal   (ISBN 3-528-03342-8, 1981)
   #  Programmieren    in Pascal   (ISBN 3-528-05261-9, 1992)
   #  Programmieren   mit Ada      (ISBN 3-528-05205-8, 1992)
   #  Struktur. Progr. in C        (ISBN 3-528-05204-X, 1992)
   #  Struktur. Progr. in C++      (W. Mauke S Hamburg, 1994)
   #  Java Programmierung          (W. Mauke S Hamburg, 1999)





  Alle Rechte dem Autor vorbehalten





























 VORWORT


  Das vorliegende Lehrbuch entstand aus Vorlesungen über die Programmiersprache Java, die der Verfasser seit 1999 an der Universität Hamburg für Wirtschaftswissenschaftler gehalten hat.


  Herausgegeben wurde Java von Sun (Stanford University Network) Microsystems. Der Name "Java" soll durch Assoziation mit wohlschmeckendem Java-Kaffee angenehme Gefühle wecken. Bill Joy, einer der Gründer von Sun, machte James Gosling zum Leiter des Java Design-Teams. 1994 wurde der erste Java WebBrowser, dann ein Java WebRunner und 1996 die erste komplette Entwicklungsumgebung für Java von Sun herausgebracht.

  Java, eine höhere Programmiersprache, ist wie seine nächsten Vorgänger C++, Smalltalk, Ada und seine Urahnen SIMULA und ALGOL68 eine universelle Sprache, hat Blockstruktur, ist Typ/ Methoden-rekursiv, Typ-generisch, Methoden-überladbar, Fehler-tolerant, kann parallele Handlungsfäden (Thread) synchronisieren, ist Paket-orientiert und Klassen-hierarisch. Java hat eine umfassende, hervorragend dokumentierte Programmbibliothek mit Fenster -Graphik-Programmierung im Paket java.awt (Abstract Window Toolkit), mit Sprachelementen zur Beschreibung von Echtzeit-Abläufen (Date) im Paket java.util, mit Applet(s) zur Einbettung in HTML im Paket java.applet, mit Sicherheits-Management im Paket java.security, mit Datenbank-Zugriff im Paket java.sql u.a.m. Neu für Programmiersprachen ist die Zielsetzung, dass auf jeder ans Internet angeschlossenen Maschine eine virtuelle Java-Maschine implementiert sein soll, die vorübersetzten Java-Byte-Code maschinenunabhängig ablaufen läßt. Für Web-Klienten steht die Plattform Java Standard Edition (Java SE) zur Verfügung, für Web-Server die Plattform Java Enterprise Edition (Java EE). Dieses Angebot trifft auf die Nachfrage der Web-Nutzer und führt Java auf seinen Siegeszug um die Welt.
  2010 fusionierte Sun Microsystems mit Oracle. Gosling verließ Oracle/Sun. Oracle übernahm die Weiterentwicklung von Java (Version 1.7), insbesondere für den mobilen Einsatz: "Write-Once, Run-Anywhere". Neben dem Einsatz seines JDeveloper und dem traditionellen Einsatz von Eclipse wird Oracle die von SUN stammende freie Entwicklungsumgebung NetBeans (1.1.2) weiterpflegen und neben seinem kommerziellen SQL-Datenbank-Server Oracle den von SUN unterstützten freien SQL-Datenbank-Server MySQL (15.1) einsetzen.

  C und C++ Programmierer könnten Java für ++C halten, da Java stark an C angelehnt ist ("heavily inspired by C"). Damit wurde im großen Kreis der C-Programmierer erfolgreich für Java geworben. Gestrafft wurden die C und C++ Konzepte für Zeiger, Reihung, Parameterübergabe und Klassenerbschaft.

  Übernommen wurden C-Relikte, wie z.B. Anweisungsstruktur an Stelle von Blockstruktur und fehlende Endzeichen (open end festival) bei If-, While- und For-Anweisung, die durch zusätzliche Vorrangregeln und ggf. Klammersetzung ausgeglichen werden müssen.

  Die in diesem Buch gewählte graphische Grammatik-Notation in Form von Wirth-Syntaxdiagrammen ist für Anfänger erfahrungsgemäß leichter lesbar als die formelmäßige Backus/Naur-Schreibweise in der 'Java Language Specification'. Um Sprachbarrieren abzubauen, wurden alle grammatischen Formulierungen aus dem Englischen ins Deutsche übersetzt und englische Fachausdrücke nur benutzt, wenn auf das englischsprachige Syntaxdiagramm Bezug genommen werden soll. Nach der Devise "Das Beste an der Theorie sind immer die Beispiele" wird neben vielen Kurzbeispielen etwa alle drei Seiten ein vollständiges Programmierbeispiel mit Wiedergabe aller Ein/Ausgabedaten gebracht. Außerdem ist eine Sammlung von Übungsaufgaben mit Lösungshinweisen als Anhang beigefügt. Am Schluß eines jeden Kapitels findet der Leser eine Liste von Testfragen, die ihm eine Kontrolle über seinen Wissensstand ermöglichen. Rechts neben den Fragen sind die Anworten zu finden, die man abdecken kann.

  Ein Literaturverzeichnis der Quellen wird angegeben und es wird auf das aktuelle Informationsangebot aus dem Internet hingewiesen. Das Buch beginnt mit Hinweisen zum Download und zur Installation von Java, mit dem Aufruf von Java-Kommandos bzw. mit dem Aufruf der Entwicklungsumgebung NetBeans und mit dem ersten Programm "HelloWorld".

  Meinen Hörern und studentischen Mitarbeitern, insbesondere Frau B. Lönneker und den Herren M. Berg, N. Boysen und A. Kühl bin ich für kritische Durchsicht des Skripts und für Änderungsvorschläge zu Dank verpflichtet. Für freundliche Hilfe danke ich Herrn Kollegen D. Preßmar (Universität Hamburg), Herrn Dipl.-Kfm. M. Myschik, Herrn Staatsrat Dr. R. Salchow, Herrn Oberregierungsrat B. Warninck und meinem Sohn Lutz. Meiner geliebten Frau Rosemarie danke ich dafür, dass sie mich so lange ertragen hat.

  H. Feldmann





























  INHALTSVERZEICHNIS


  Kap.01:   HALLO Java !
   1.1   Download, Installation und Aufruf                             
   1.1.1    Direkter Aufruf der Java-Kommandos                       
   1.1.2    Aufruf der Entwicklungsumgebung NetBeans                 
   1.2   Einführende Beispiele                                       
   1.2.1    Das erste Text-Programm                                 
   1.2.2    Das erste Graphik-Programm                              
   1.3   Schreibweisen                                               
   1.3.1    Verwendung der Syntax-Diagramme, siehe Syntax              
   1.3.2    Signifikanz von Groß- und Kleinschreibung                
   1.3.3    Namenskonventionen                                      
   1.3.4    Kommentar                                               
   1.4   Testfragen                                                  

  Kap.02:   GRUNDTYPEN, ZEICHENKETTE (String), FORMAT
   2.1   Abfragbare Typ-Eigenschaften, Typ-Konvertierung       
   2.2   boolean Logik       
   2.3   char Unicode-Zeichen       
   2.4   byte/short/int/long Ganzzahlen      
   2.5   float/double Gleitpunktzahlen 
   2.6   String als Referenztyp, Zeichenketten-Literale        
   2.7   Format-String
   2.8   Testfragen     

  Kap.03:   APPLIKATIONEN 
   3.1   Hauptprogramm mit main    
   3.2   Lokale Variablen-Vereinbarungen     
   3.3   System-Programmierung      
   3.4   Graphik als Applikation     
   3.5   Testfragen     

  Kap.04:   AUSDRÜCKE
   4.1   Elementare Ausdrücke     
   4.1.1    Namen       
   4.1.2    Primärausdruck       
   4.2   Operatoren, Separatoren, Prioritäten     
   4.2.1    Inkrement/Dekrement, präfix/postfix     
   4.2.2    Explizite Konvertierung (cast)     
   4.2.3    Ganzzahldivision und Rest     
   4.2.4    Bitweise arbeitende Operatoren     
   4.2.5    Bedingung      
   4.3   Java-Maschinen-Arithmetik     
   4.4   Testfragen


  Kap.05:   ANWEISUNGEN, BLOCKSTRUKTUR

   5.1   Zuweisung               
   5.2   Verzweigungen
   5.2.1    if-Verzweigung
   5.2.2    switch-Verzweigung  
   5.3   Schleifen                                       
   5.3.1    for-Schleife                               
   5.3.2    while-Schleife, do-Schleife                                  
   5.4   Strukturierte Sprünge
   5.4.1    break, continue, ggf. labeled
   5.4.2    exit, return, assert
   5.5   Bereichsschachtelung                   
   5.5.1    vereinbart / sichtbar     
   5.5.2    lokal / global / verdeckt 
   5.5.3    Einschränkung der Namensfreiheit
   5.6   Testfragen



  Kap.06:   REIHUNGEN 

   6.1   Reihungen in mehreren Dimensionen   
   6.2   Reihung als Referenztyp   
   6.3   Aggregat zur Initialisierung     
   6.4   Zuweisung von new-Reihungen      
   6.5   Testfragen       


  Kap.07:   METHODEN

   7.1   Methoden-Vereinbarung (ggf. generisch)       
   7.2   Methoden-Aufruf (ggf. generisch)     
   7.3   Rekursive Methoden     
   7.4   Parameterübergabe (by value)     
   7.4.1    Nur-Eingabe über PrimitiveType-Parameter     
   7.4.2    Ein/Ausgabe über ReferenceType-Parameter     
   7.5   Überladen (overloading) von Methoden     
   7.6   Ergebnis-Typ und Rücksprung (return)     
   7.7   Hauptprogramm mit main, Argumente     
   7.8   Testfragen     


  Kap.08:   DATEIEN (File, Stream)

   8.1   Text -Datei     
   8.2   Binär-Datei     
   8.3   Testfragen



  Kap.09:   KLASSENHIERARCHISCHES PROGRAMMIEREN

   9.1   Klassen (class, ggf. generisch) und Objekte 
   9.1.1    Klassen als Referenztypen, Mitglieder 
   9.1.2    Konstruktoren (ggf. generisch), this
   9.1.3    Superklasse, super(), einfache Erbschaft (extends)
   9.1.4    Abstrakte Klassen 
   9.1.5    Rekursive Typen
   9.1.6    Aufzählung (Enumeration)
   9.2   Schnittstellen (interface, ggf.generisch)
   9.2.1    Schnittstellen als Referenztypen, Mitglieder
   9.2.2    Superschnittst. (extends), mehrf. Erbsch. (implements)
   9.2.3    Anmerkungstyp (Annotation)
   9.3   Testfragen



  Kap.10:   ÜBERSETZUNGEINHEIT, PAKETE, DOKUMENTATION

  10.1   Übersetzungseinheit 
  10.2   Pakete (package) und Import (import)
  10.3   Dokumentation (javadoc) 
  10.4   Testfragen 


  Kap.11:   FEHLERTOLERANTES PROGRAMMIEREN

  11.1   Ausnahmebehandlung (try)    
  11.1.1    Auswerfen einer Ausnahme (throw) 
  11.1.2    Abfangen einer Ausnahme (catch)  
  11.1.3    Das letzte Wort behalten (finally) 
  11.2   Testfragen 


  Kap.12:   FÄDEN (Thread) DES ABLAUFS (Runnable)

  12.1   Einfache Vorrangsteuerung beim Multithreading  
  12.1.1    Thread-Vorrangsteuerung mit sleep(ms)  
  12.1.2    Thread-Vorrangsteuerung mit setPriority(prio)
  12.2   Sychronisiertes (synchronized) Multithreading  
  12.2.1    Synchronisierter Zugriff auf gemeinsames Objekt 
  12.2.2    Synchronisierter Aufruf gemeinsamer Methode 
  12.3   Testfragen



  Kap.13:   HTML-DOKUMENTE, BILDER

  13.1   Einführung in Hypertext Markup Language (HTML) 
  13.1.1    Grundelemente in HTML und XHTML (extensible HTML)
  13.1.2    Cascading Style Sheets (CSS) in HTML-Dokumenten
  13.1.3    HTML-Listen  
  13.1.4    HTML-Tabellen  
  13.1.5    HTML-Verweise (href) auf Namen (name)
  13.2   Bilder (img) in HTML-Dokumenten 
  13.3   Testfragen


  Kap.14:   APPLETS (Applet)

  14.1   Java-Applets in HTML-Dokumenten (applet)
  14.1.1    Text-Graphik 
  14.1.2    Bild-Graphik, Maus 
  14.1.3    Layout 
  14.1.4    Dialog 
  14.1.5    Farben (Color) 
  14.2   Testfragen    


  Kap.15:   VERBINDUNG (Connection) ZU DATENBANKEN

  15.1   Installieren eines SQL-Datenbank-Servers,  z.B. MySQL
  15.2   Einrichtung  einer SQL-Datenbank, z.B. Lager in MySQL
  15.3   Java-DB-Verbindung, z.B. zur Datenbank Lager in MySQL
  15.4   Testfragen










ANHANG


  Syntaxdiagramme 
         Mit Diagramm-Index, deutsch/englisch


  Pakete, Dokumentation (Übersicht)
         Standardpakete, Erweiterungen, Pakete von Dritten


  Uebungsaufgaben              
         Mit Lösungshinweisen


  Literatur                
         Quellen (from the source)


  Register              
         Fachausdrücke