Programmierkurs Java

Werbung
Programmierkurs Java
Grundlagen
Prof. Dr. Stefan Fischer
Institut für Telematik, Universität zu Lübeck
http://www.itm.uni-luebeck.de/people/fischer
Algorithmen, Maschinen- und Programmiersprachen
•
Algorithmen kann man mit Programmiersprachen „aufschreiben“
•
Maschinensprache genügt im Prinzip dafür
–
–
–
–
Besteht nur aus Menge von Nullen und Einsen
Für Menschen nur schwer verständlich
Maschinenspezifisch, schwer auf andere Rechner zu portieren
Schwer, in der Maschinensprache den Algorithmus „zu sehen“
•
Deshalb: Höhere Programmiersprache
•
Es existieren hunderte verschiedener solcher Sprachen
– Näher am menschlichen Denken
– Lassen sich vom Computer in Maschinencode umwandeln
– Programme in einer solchen Sprache heißen „Quellcode“, „Programmcode“,
„Source-Code“ oder einfach nur „Source“ oder „Code“
– Welche man wählt, hängt vom Anwendungszweck ab
– Prinzipiell sind alle gleich mächtig (Turing vollständig)
#2
Höhere Programmiersprache
• Sprache mit eigener Syntax und Semantik
• Syntax: Grammatikregeln der Sprache
– „Walfische bereisen Indien, um Wolken zu klauen!“
• Semantik: Bedeutung einzelner „Worte“ und
„Satzzeichen“ der Sprache
– Der obige Satz ist syntaktisch korrekt – aber sinnlos.
• Ziel: Sicheres Beherrschen beider Aspekte
– Compiler prüfen Syntax, aber keine Semantik.
#3
Warum Java?
• Besonderheiten von Java
– Sprache i. W. neu entworfen, nur wenige „Altlasten“
– Daher vergleichsweise einfach zu erlernen
– Write once, run everywhere
• Technische Realisierung:
Programm
Programm
Maschinencode
Compiler
Compiler
Bytecode
Interpreter
Maschinencode
#4
Warum Java?
• Byte-Code statt Maschinensprache
– Maschinencode für eine „virtuelle Maschine“
– Kann auf jeder realen Maschine simuliert werden
• Ist ein solcher „Simulator“ für einen Rechner verfügbar, dann
kann jedes kompilierte Java-Programm ausgeführt werden
• Nachteil
– (Potenziell) langsamer als „echter“ Maschinencode
– Inzwischen wurden sog. Just-in-Time-Compiler entwickelt, welche den
Geschwindigkeitsnachteil in vielen Bereichen kompensieren
#5
Geschichte von Java
•
1991
– Gosling et al. entwickeln Oak (Object Application Kernel) auf Basis von C++
– Ziele: Plattform-Unabhängigkeit, Erweiterbarkeit der Systeme und
Austauschbarkeit von Komponenten (ursprünglicher Einsatzbereich:
Haushaltselektronik)
•
1993
– Oak wird wegen rechtlicher Probleme in Java umbenannt.
– Zu diesem Namen wurden die Entwickler beim Kaffeetrinken inspiriert
– Java entwickelt sich durch Applet-Technologie zur „Sprache des WWW“
•
Seit 1995
– Sun bietet Java Development Kit (JDK) mit Compiler und Interpreter
kostenlos an
– 2009 übernimmt Oracle Sun Microsystems
#6
Warum Java?
• Typische Einsatzbereich für Java heute
–
–
–
–
–
Applets: laufen direkt im Web-Browser
Desktop-Anwendungen (J2SE)
Web-Server
Geschäftsanwendungen (Java EE) mit Servlets, JSF, JSP, ...
Handy-Anwendungen (J2ME, Android, …)
• Inzwischen sehr mächtig und performant!
– Vielzahl alternativer Sprachen für VM verfügbar (JRuby, ...)
• Direkte Konkurrenz: Microsoft C#
#7
Compiler und Laufzeitumgebung
• Java-Entwickler benötigt zwei wesentliche
Komponenten
– Java-Compiler
– Virtual Maschine (auch genannt: „Laufzeitumgebung“)
• Von Oracle kostenlos angeboten
– http://www.oracle.com/technetwork/java/javase/downloads/
• Empfohlener Download
– Aktuelles JDK ohne weiteres Zubehör (nicht nur das JRE)
#8
Compiler und Laufzeitumgebung
• JDK enthält alle notwendigen Werkzeuge
– javac (Java Compiler)
– java (Virtual Machine, auch: VM)
– Und viele andere Tools (später)
• Schreiben von Java Programmen
– Programme (genauer: der Quellcode) werden im TextEditor geschrieben
– Unix: vi, vim, nano, pico, nedit, emacs, …
– Windows: edit, PSPad, UltraEdit, Scite, …
#9
Integrated Development Environment (IDE)
• Alternative zum Texteditor
– Integrieren Editor, Compiler und VM
– Beispiele: Eclipse, Netbeans, IntelliJ, …
• Viele Zusatzfunktionen
–
–
–
–
–
–
Syntax Highlighting
Code Completion
Debugger
Refactoring
Plug-Ins für Spezialanwendung
...
• Für das Erlernen von Java nicht nur hilfreich
– Entscheiden Sie selbst, ab wann Sie eine IDE einsetzen
#10
Ein erstes Java-Programm
• Grundgerüst: Wird für jedes Java-Programm benötigt!
• Einrückung und Co.: Nur für Menschen zur einfacheren Lesbarkeit
Programm-Name (muss mit Dateinamen
übereinstimmen, inkl. Groß-/Kleinschreibung!)
public class MeinProgramm {
public static void main(String[] args){
System.out.println("42");
Ende einer
Anweisung
}
}
Anweisung zum Ausgeben
von Text
#11
Beispiel (Editieren, Compilieren, Ausführen)
• Editieren in beliebigem Editor
– vi MeinProgramm.java
– Groß- und Kleinschreibung wichtig (auch unter Windows)
• Kompilieren mit Java-Compiler „javac“
– javac MeinProgramm.java
– Erzeugt Datei „MeinProgramm.class“ mit Bytecode-Instruktionen
• Ausführen mit Virtual Machine „java“
– java MeinProgramm
– Achtung: weder „.java“ noch „.class“ am Ende
– Groß- und Kleinschreibung beachten
#12
Ausgabe auf der Konsole
#13
Sprachmerkmale
• Java ist Turing-mächtig
– Es kann also alles berechnet werden
– Sofern genügend Speicher verfügbar ist
• Erforderliche Sprachmerkmale
– Elementare Rechenoperationen
(Addition, Subtraktion, ...)
– Sequenz (Hintereinander-Ausführung)
– Bedingte Ausführung (If-Anweisung)
– While-Anweisung
#14
Erstes Sprachelement: Sequentielle Ausführung
• Markierung des Endes einer
Anweisung durch Semikolon
– Zeichen ;
– a1; a2; a3; a4;
• Formatierung (für den Compiler)
egal
• Für Menschen macht es Sinn,
sich an gewisse Konventionen
zu halten
#15
Lesbarer Code: Kommentare
•
Kommentare einfügen damit Menschen Code besser verstehen können
•
Zwei Varianten (in Java)
•
Vorsicht: „Verschachteln“ nicht erlaubt (/* /* */ */)
– Werden vom Compiler ignoriert
– // Kommentar 1-zeilig
– /* Kommentar potenziell über mehrere Zeilen */
#16
Verarbeitung von Daten
• Programme verarbeiten Daten
– Werden gelesen und ausgegeben
– Notwendig: I/O-Funktionen (später)
• Zur Verarbeitung müssen diese im
Arbeitsspeicher gehalten werden
– Programme müssen diese Daten
referenzieren können
– Konzept der Variablen
#17
Herunterladen