Kapitel 1: Einführung

Ähnliche Dokumente
Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Grundlagen der Informatik für Ingenieure I

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Pakete. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Vorlesung Informatik II

Vorkurs Informatik WiSe 16/17

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Übung U02 (WS 2005/06) U02

Definitionen/Vorarbeit zum Thema Java

Einführung zu den Übungen aus Softwareentwicklung 1

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Einführung in die Programmierung mit Java

JAVA als erste Programmiersprache Semesterkurs

10. Pakete. Ein Paket (package) bündelt thematisch zusammengehörige Klassen und Schnittstellen zu einer Klassenbibliothek.

Informatik I - Einstiegskurs

Vorkurs Informatik WiSe 17/18

Einführung in Java. Ausgewählte Quellen zu Java

Erste Schritte zum lauffähigen Java-Programm

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Einstieg in die Informatik mit Java

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Empfehlenswerte Literatur

Repetitorium Informatik (Java)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

CS1005 Objektorientierte Programmierung

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

2. Programmierung in C

Java Einführung Programmcode

II.1.1. Erste Schritte - 1 -

Liste Programmieren Java Überblick

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Java - Einführung in die Programmiersprache. Leibniz Universität IT Services Anja Aue

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

Einstieg in die Informatik mit Java

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

II.1.1. Erste Schritte - 1 -

Programmiersprache. Emily & rica

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Von Assembler zu Java

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Linux (min. Kernel 2.4) min. Java 1.5 MPJ (

Programmieren in Java

Methoden und Wrapperklassen

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

FACHHOCHSCHULE MANNHEIM

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Programmierkurs. Manfred Jackel

Einstieg in die Informatik mit Java

II.1.1. Erste Schritte - 1 -

Programme erstellen in Java

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 5

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 5. Java

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Programmieren in Java

CS1005 Objektorientierte Programmierung

Praxis der Programmierung

Tag 4 Repetitorium Informatik (Java)

Grundelemente objektorientierter Sprachen (1)

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Kapitel 5: Interfaces

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

J.5 Die Java Virtual Machine

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

AuD-Tafelübung T-B5b

Einführung in C. EDV1-04C-Einführung 1

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Eclipse Tutorial.doc

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

2. Programmierung in C

Java Einführung Methoden. Kapitel 6

Praktikum 1: Einführung, BMI Rechner

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Vererbung, Polymorphie

2. Programmierung in C

9. Ausnahmebehandlung

Einführung in die Informatik

Java als erste. Programmiersprache. Java 2 Plattform. Von Prof. Dr. Joachim Goll Cornelia Weiß Peter Rothländer. 2., durchgesehene Auflage

Grundsoftware üblicher Computersysteme

Einführung in die Programmierung 1

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Tutorium Java Ein Überblick. Helge Janicke

Java-Einführungskurs Informatik II für D-ITET FS 2014, ETH Zürich

Wiederholung JAVA. 1. (Vorbereitung)

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Erste Schritte in Java

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Einstieg in Java und OOP

Einstieg in die Informatik mit Java

Grundelemente objektorientierter Sprachen (1)

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Das Einsteigerseminar Objektorientierte Programmierung in Java

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

Modularisierung in Java: Pakete Software Entwicklung 1

Grundelemente objektorientierter Sprachen (1)

Vorlesung Programmieren

Transkript:

Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 1: Einführung Folie 1 : Rückblick Entwicklung von Java begann etwa 1990 Erste öffentliche Version 1994 Erste große Anwendung: HotJava (ein Web-Browser) Besonderheit: Applets über das Web ladbare Programme Ausführung im Browser Betriebssystem übergreifend Compiler, Interpreter und Dokumentation frei verfügbar Folie 2 : Anforderungen Das Konzept der Applets stellte einige Anforderungen an Java: Ersatz für Maschinen-Code: Byte-Code Dynamisches Binden Betriebssystemabhängige Bibliotheken Betriebssystemunbhängige Namensgebung Schutz des lokalen Rechners Kein direkter Zugriff auf beliebige Speicherbereiche Statische Typprüfung Zugriff auf lokale Ressourcen einschränkbar (z.b. Dateisystem) Folie 3 : Plattformunabhängigkeit

Folie 4 : Erfahrungen mit anderen Programmiersprachen Syntax weitestgehend identisch mit C Objektorientiert Weniger Konzepte als in C++ Kein Überladen von Operatoren Keine Mehrfachvererbung Keine friends Alle Methoden sind virtual Kein Zugriff auf Adressen von Variablen Keine Adressarithmetik Kein Präprozessor Folie 5 : Neuerungen gegenüber C++ Automatische Freispeicherverwaltung Trennung von Schnittstellen und Klassen Zugriff auf Objekte nur über Zeiger (primitive Typen sind keine Objekte) Enge Integration von Exception-Handling Felder sind Objekte (Länge abfragbar) Jeglicher Code ist in Klassen organisiert... Folie 6 : Versionen von Java Alle Versionen (bis auf 1.0-1.02) sind aufwärtskompatibel: Ein mit Version 1.2 übersetztes Programm kann mit Version 1.3 ausgeführt werden etc. Aktuelle Version 1.3.1 (1.4 als Beta-Version verfügbar) Name ab Version 1.2: Java 2 Standard Edition (J2SE) Unterstützte Betriebssysteme: Linux, Solaris, Windows, MacIntosh, IBM, HP,... Die Sprache wurde seit Version 1.0 geringfügig erweitert

Die Anzahl der Packages (Bibliotheken) steigt ständig an Folie 7 : Vorlesung und Übungen Es gibt eine Web-Seite zur Vorlesung: www.informatik.fh-wiesbaden.de/~turau/lehre/java/index.html Links zur Software und zur Dokumentation Code-Beispiele Aktuelle Hinweise Kapitel 2: Progammentwicklung mit Java Folie 8 : Interpretierte und compilierte Sprachen Unterscheidung: interpretierte und compilierte Sprachen Compilierte Sprachen: C, C++, Pascal Interpretierte Sprachen: Lisp, Basic, Prolog, SQL Quellcode wird durch Compiler in Maschinencode übersetzt (Beispielsweise in exe-datei) Prozessor führt Maschinencode aus Maschinencode ist extrem plattformabhängig Für Java nicht verwendbar! Folie 9 : Interpretierte und compilierte Sprachen Ein Interpreter analysiert den Quellcode zur Laufzeit Umsetzung der Anweisungen in Maschinenbefehle, welche direkt ausgeführt werden Vorteil: Übersetzungsaufwand entfällt Vorteil: Quellcode kann auf verschiedenen Rechnern ausgeführt werden Nachteil: Längere Rechenzeiten Nachteil: Fehler werden erst zur Laufzeit entdeckt Quellcode compilierter Sprachen ist nur bedingt auf unterschiedlichen Plattformen übersetzbar Folie 10 : Mittelweg Java geht Mittelweg zwischen interpretierter und compilierter Sprache Der Java Compiler übersetzt Quellcode in einen Byte-Code Der Java Interpreter interpretiert diesen Byte-Code Vorteile: Schneller als reiner Interpreter Viele Überprüfungen sind schon zur Übersetzungszeit möglich Byte-Code ist plattformunabhängig Performanzgewinn durch Just-in-time Compiler

Geschwindigkeitsverlust gegenüber C++: Faktor 10-20 Folie 11 : Plattformunabhängigkeit Plattformunabhängig sind: Java Quellcode Übersetzter Java Code Plattformabhängig sind: Java Compiler Java Interpreter Teilweise die Java Bibliotheken Verfügbare Plattformen: Linux, Solaris, Win 95/98/NT/2000, MacIntosh, HP, IBM Großrechner, Handys,... Folie 12 : Java Architektur Folie 13 : Programmerstellung mit Java Quellcode einer Java-Klasse muss vollständig in einer Datei sein Dateien haben Endung.java Dateiname muss identisch mit dem Namen der Klasse sein D.h. der Code der Klasse Element wird in der Datei Element.java gespeichert Übersetzte Klassen werden in Dateien mit der Endung.class gespeichert D.h. der übersetzte Code der Klasse Element wird in der Datei Element.class gespeichert Folie 14 : Programmerstellung mit Java Compileraufruf: javac [Optionen] Klasse1.java... Interpreteraufruf: java [Optionen] Klasse1 [Parameter] d.h. die Endung.class wird weggelassen Interpreteraufruf bewirkt den Aufruf der statischen Methode public static void main(string[] args) Java-Programme mit einer main-methode nennt man Applikationen Es gibt auch ausführbare Java-Programme ohne main-methode, diese erfordern jedoch spezielle Laufzeitumgebungen (Applets, Servlets) Folie 15 : Beispiel package blatt1;

public class HelloWorld { public static void main(string[] a) { System.out.println("Hallo Welt"); } } Übersetzung: javac blatt1\helloworld.java Aufruf: java blatt1.helloworld Folie 16 : Organisation von Klassen Die Namen von Java-Klassen müssen eindeutig sein Um Namenskonflikte zu vermeiden, fasst man Klassen in Paketen (packages) zusammen Klassen, welche zu einem Paket gehören, müssen in einem Verzeichnis abgespeichert sein der Verzeichnisname muss gleich dem Paketnamen sein müssen in der ersten Zeile die Paketangabe haben: package name; Paketnamen können Punkte enthalten (z.b. fhw.util ) Die zugehörenden Klassen liegen im Unterverzeichnis util von fhw Folie 17 : Organisation von Klassen Der vollständige Name der Klasse Stack im Paket fhw.util lautet fhw.util.stack Übersetzung von Klassen in Paketen: javac fhw/util/stack.java (aus dem Verzeichnis oberhalb von fhw) Ausführung von Klassen in Paketen: java fhw.util.stack (aus dem Verzeichnis oberhalb von fhw) Java unterscheidet zwischen Groß- und Kleinbuchstaben!! java fhw.util.stack und java fhw.util.stack sind falsch! Folie 18 : Organisation von Klassen Klassen aus dem eigenen Paket können mit ihrem Kurznamen angesprochen werden Klassen aus fremden Paketen müssen mit ihrem vollen Namen angesprochen werden oder der Paketname muss mit der import-anweisung bekannt gemacht werden Die import-anweisung steht am Anfang einer Datei (direkt hinter der Paketangabe): import fhw.util.stack; oder import fhw.util.*; Folie 19 : Trennung zwischen Quellcode und übersetztem Code Programmierer sollten immer Quellcode und übersetzten Code in getrennten Verzeichnissen ablegen Vorgehensweise:

Es wird ein Verzeichnis classes angelegt Compileraufruf: javac -d classes fhw\util\*.java Der Compiler legt automatisch die Unterverzeichnisse util und fhw an und legt die übersetzten Klassen dort ab Folie 20 : Programmaufruf Wie findet der Java Interpreter den Byte-Code der Klassen? Defaultmäßig sucht der Interpreter nur im aktuellen Verzeichnis D.h. Aufruf aus dem Verzeichnis classes Wie kann man Java-Programme aus beliebigen Verzeichnissen starten? Wie findet eine Betriebssystem-Shell den Code aufgerufener Programme? Über die Umgebungsvariable PATH Die Umgebungsvariable CLASSPATH enthält eine Folge von Pfaden, in diesen Verzeichnissen sucht der Interpreter nach Klassen. Folie 21 : Programmaufruf Beispiel: CLASSPATH=/usr/sm/java/classes/ Nach dem Aufruf java fhw.util.stack wird die Klasse /usr/sm/java/classes/fhw/util/stack.class gefunden Beispiel: CLASSPATH=/usr/sm/java/classes/fhw/util Nach dem Aufruf java fhw.util.stack findet der Interpreter nicht die gesuchte Klasse und erzeugt eine Ausnahme: Exception in thread "main" java.lang.noclassdeffounderror: fhw/util/stack Folie 22 : Namenskonventionen Paketnamen beginnen mit Kleinbuchstaben (z.b. java.sound) Klassennamen beginnen mit Großbuchstaben (z.b. Window) Namen von Methoden und Variablen beginnen mit Kleinbuchstaben, Namensteile können durch Großbuchstaben eingeleitet werden (z.b. setname, anzahlkomponenten) Konstanten: nur Großbuchstaben (z.b. MAXIMUM) Beachten Sie die ausführlichen Java-Namenskonventionen von SUN Folie 23 : Installation Dokumentation und Entwicklungswerkzeuge sind getrennt zu installieren (über Web-Seite der Vorlesung erhältlich) Umgebungsvariable JAVA_HOME auf Installationsverzeichnis setzen (z.b. f:\jdk1.3) JAVA_HOME/bin in den Pfad aufnehmen Testen: java -version Optional: Java Compiler Jikes von IBM installieren (sehr schnell) Folie 24 : Grundprinzipien

Programme sollten redundanzfrei sein (d.h. Code sollte sich nicht wiederholen) Cut und Paste führt zu Code-Redundanz Literale (d.h. konkrete Zahlen oder Zeichenketten) stehen nicht mitten im Code (Konstanten verwenden) Quellcode folgt einer klaren Konvention (Namensgebung, Einrückung, Kommentierung etc.)