Programmierkurs Java Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer
#2 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 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 Es existieren hunderte verschiedener solcher Sprachen Welche man wählt, hängt vom Anwendungszweck ab Prinzipiell sind alle gleich mächtig (Turing vollständig)
#3 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.
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 Compiler Maschinencode Programm Compiler Interpreter Bytecode 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 1993 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) 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 Text- Editor 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
#11 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"); } } Anweisung zum Ausgeben von Text Ende einer Anweisung
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
#15 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
#16 Lesbarer Code: Kommentare Kommentare einfügen damit Menschen Code besser verstehen können Werden vom Compiler ignoriert Zwei Varianten (in Java) // Kommentar 1-zeilig /* Kommentar potenziell über mehrere Zeilen */ Vorsicht: Verschachteln nicht erlaubt (/* /* */ */)
#17 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