Programmierung. Programme, Compiler, virtuelle Maschinen, Java



Ähnliche Dokumente
Kapitel 1: Programmierung

Vorkurs Informatik WiSe 15/16

Vorlesung Informatik II

Applications Applets (eingeschränkte Rechte)

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

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Einführung in Eclipse und Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

JAVA als erste Programmiersprache Semesterkurs

Programmierkurs Java

Java Einführung Programmcode

2 Grundlagen der Programmierung

Programmieren was ist das genau?

Java: Vererbung. Teil 3: super()

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Informatik 1 Tutorial

Beuth Hochschule JDK und TextPad WS14/15, S. 1

Kompilieren und Linken

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

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

Java Virtual Machine (JVM) Bytecode

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Workshop: Eigenes Image ohne VMware-Programme erstellen

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Informatik I Tutorial

Objektorientiertes Programmieren mit Suse Linux

Einführung in die Programmierung mit Java

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Praktikum: Einstieg: Arbeitsplatz, JCreator

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Erste Schritte zum lauffähigen Java Programm

Tutorium Java Ein Überblick. Helge Janicke

Seite Seite 2

Anleitung über den Umgang mit Schildern

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Innere Klassen in Java

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Was meinen die Leute eigentlich mit: Grexit?

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 14 und VMware Player

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player

Übungsblatt 3: Algorithmen in Java & Grammatiken

CADEMIA: Einrichtung Ihres Computers unter Windows

Einführung in PHP. (mit Aufgaben)

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

J.5 Die Java Virtual Machine

4D Server v12 64-bit Version BETA VERSION

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Datensicherung und Wiederherstellung

Einführung zu den Übungen aus Softwareentwicklung 1

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Objektorientierte Programmierung OOP Programmieren mit Java

GEONET Anleitung für Web-Autoren

Anleitung: Webspace-Einrichtung

! " # $ " % & Nicki Wruck worldwidewruck

Version 0.3. Installation von MinGW und Eclipse CDT

Drahtlosnetzwerke automatisch konfigurieren mit WCN (Windows Connect Now) unter Windows Vista

DLLs (dynamic loaded libraries) mit MingW erstellen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einführung in Betriebssysteme

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

Liesmich zum Kurs: Programmieren in der Bioinformatik mit Perl Konfigurierung der Programmierumgebung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Programmieren I. Administratives / Java Installation. Thomas Vetter, Brian Amberg, Andreas Forster. 21. September 2010 UNIVERSITÄT BASEL

Anwenderdokumentation PersoSim

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

disk2vhd Wie sichere ich meine Daten von Windows XP? Vorwort 1 Sichern der Festplatte 2

Wie man eigene Programme erstellt

Grundlagen der Informatik Übungen 1.Termin

Die Käfer lernen dazu...

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Java für Anfänger Teil 1: Intro. Programmierkurs Manfred Jackel

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Übung 8: Semaphore in Java (eigene Implementierung)

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Einführung in die Informatik Tools

Arbeiten mit UMLed und Delphi

Programmieren in Java

Windows 7/8 - Backdoor

Konvertieren von Settingsdateien

Übungen zu C++ Kapitel 1

Internet Explorer Version 6

Tutorial Speichern. Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, jroos@hispeed.ch -

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

Transkript:

Programmierung Programme, Compiler, virtuelle Maschinen, Java

Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i<10; i<10; i++) i++) System.out.println ( Hello World ); Beep(); Play(nextAudiofile); Programme werden in einer künstlichen Sprache verfasst und in Textdateien gespeichert. Sie sollen für Menschen lesbar sein so präzise sein, dass sie unmissverständliche Handlungsanweisungen für einen Rechner beinhalten.

Programmiersprachen Es gibt Tausende von Programmiersprachen Allgemeine Sprachen, mit denen prinzipiell alle Fähigkeiten eines Rechners zugänglich sind Pascal, C, Java, C#, Prolog, LISP, FORTRAN, Spezialsprachen für bestimmte Anwendungen SQL, HTML, TeX, TCL/TK,

Maschinensprache Mein Mensch spinnt! Rechner verstehen nur sehr einfache Kommandos ADD AX FFh, INC AX, JMP 0A3, MOV AX 5 Diese Kommandos sind als Zahlen im Binärsystem (d.h. mit den Ziffern 0 und 1) kodiert, etwa: 10001010 10100111 11010101 10010110 11010110 10101001 11110101 01011110 10110010 10100101 Für Menschen sind Programme in Maschinensprache nicht mehr direkt lesbar.

Compiler Ein Compiler übersetzt Programme aus einer höheren Sprache in die Maschinensprache des Computers. tuwas.c int int i; i; for(i=0;i<10;i++) printf( Hello World ); beep(); play( HeyJoe.mp3 ); C-Compiler Ausführbares Programm tuwas.exe 10001010 10100111 11010101 10010110 11010110 10101001 11110101 01011110 10110010 10100101

Maschinenabhängigkeit Jede Maschine hat andere Befehle Ein Programm für einen PC läuft nicht auf dem Mac und umgekehrt Betriebssysteme stellen eine Infrastruktur bereit, die Programme nutzen können: Dateiverwaltung, Speicherverwaltung, Prozessverwaltung, Input/Output, Hilfsprogramme Programme greifen direkt auf die Ressourcen von Betriebssystemen zu writefile, print, readfile, send, receive, out, Konsequenz: Jedes Programm läuft nur auf einem bestimmten Rechnertyp mit einem bestimmten Betriebssystem z.b. nur auf PC mit Linux, oder nur auf Mac mit MacOS

m Sprachen, n Plattformen = m * n Compiler Pascal Pascal Compiler für PC mit Linux Pascal Compiler für PC mit Windows C PC mit Linux Pascal Compiler für Mac mit MacOS Basic PC mit Windows LISP Mac mit MacOS

Virtuelle Maschine Eine Virtuelle Maschine ist ein gedachter Computer VM. VM wird auf jedem realen Computer simuliert (emuliert). Man kann eine VM auch als Zwischensprache auffassen. Anweisungen in dieser Sprache heißen Bytecode. Für jede Sprache L benötigt man nur einen Compiler von L nach VM.

Virtuelle Maschine ein Traum? Pascal C PC mit Linux Basic Virtuelle Maschine PC mit Windows LISP M Sprachen, N Plattformen = M Compiler + N Implementierungen der VM Mac mit MacOS

Nachteil einer virtuellen Maschine Effizienzverlust Spezielle Stärken bestimmter Hardware werden vielleicht nicht genutzt z.b. spezielle Graphikbefehle, Textbefehle, Spezielle Features bestimmter Sprachen kommen auf bestimmten (virtuellen) Maschinen mehr auf anderen weniger zur Geltung Garbage Collection, Rekursion, Fazit: Eine ideale virtuelle Maschine gab es bisher nur im Traum.

Java Virtuelle Maschine nur für Java Die Java-Runtime-Engine ist eine virtuelle Maschine speziell für die Sprache Java. Sie ist auf fast allen Plattformen implementiert. Unter Windows heißt sie java.exe. PC mit Linux PC mit Windows JVM (Java Virtual Machine) Mac mit MacOS

Alles gab es schon mal Virtuelle Maschinen für eine Sprache und multiple Plattformen gab es schon früher, sie haben sich aber nie durchgesetzt. Früher existierende virtuelle Maschinen für verschiedene Sprachen: Pascal : p-maschine (Mitte der 80-er Jahre) Smalltalk : Smalltalk Bytecode Interpreter Prolog : WAM Smalltalk 80 kann man als Vorläufer von Java ansehen. Smalltalk ist Java in vieler Beziehung weit überlegen. Es war seiner Zeit ca. 30 Jahre voraus 1980+30 =

Erfolg steckt an Seit sich Java durchgesetzt hat, wird die JVM auch als Zielmaschine für andere Sprachen benutzt: PC mit Linux JPython JBasic NetProlog JVM PC mit Windows Smalltalk/JVM Mac mit MacOS

Compilation von Java-Programmen Aus einer Textdatei mit der Endung.java erzeugt der Compiler javac eine Datei mit gleichem Namen, aber Endung.class Diese enthält den Bytecode für die JVM Hallo.java public public class class Hallo{ Hallo{ public static void public static void main(string[] main(string[] args) args) { { System.out.println System.out.println ( Hallo ( Hallo Leute ); Leute ); } } } } Quellprogramm als Textdatei Hallo.java Compiler javac.exe Hallo.class if_cmpeq if_cmpeq got_w got_w ddiv ddiv ladd ladd bipush bipush dadd dadd dup_x1 dup_x1 istore istore isub isub ifge ifge ldiv ldiv return return Bytecode als Datei Hallo.class

Ausführung Die Datei mit dem Bytecode wird der JVM übergeben. Der Bytecode könnte auch von einem anderen System, etwa von JPython, JBasic oder Smalltalk/JVM erzeugt stammen. Hallo.class if_cmpeq if_cmpeq got_w got_w ddiv ddiv ladd ladd bipush bipush dadd dadd dup_x1 dup_x1 istore istore isub isub ifge ifge ldiv ldiv return return Hallo Leute Bytecode als Datei Hallo.class Java Virtual Machine java.exe

Die Werkzeuge des SDK Java Virtual Machine java.exe Dokumentationstool javadoc.exe Java-Compiler javac.exe

Wie geht s praktisch unter Windows? 1. Ein Textdatei mit Namen Hallo.java erstellen Hallo.java public public class class Hallo{ Hallo{ public public static static void void main(string[] main(string[] args) args) { System.out.println( Hallo Leute ); Leute ); } } 2. Compilieren mit dem Befehl: javac.exe Hallo.java Es entsteht eine Datei Hallo.class In der Konsole (DOS-Box/Shell) : C:> javac Hallo.java 3. Ausführen: java.exe Hallo C:> java Hallo Hallo Leute

In Windows XP: 1. Mit beliebigem Texteditor die Datei Hallo.java erstellen 2. Kommmandointerpreter cmd.exe aufrufen 3. Compilieren mit javac 4. Ausführen mit java 5. Ergebnis bestaunen

Solche Programme sind heute untypisch Niemand schreibt mehr auf die Konsole Rückmeldungen kommen in MessageBoxen Statuszeilen Klängen Kein Mensch liest mehr von der Konsole. Eingabe kommt aus Bestätigungen Menüs TextFeldern RadioButtons CheckBoxes ListBoxes Slider

Die Programmerstellung ist vorsintflutlich Man muss Kommandos auf der Kommandozeile eintippen Wo ist die? Sind die Pfade richtig gesetzt? Man wechselt dauernd zwischen Programmaufrufen Editor Compiler Virtuelle Maschine Compilermeldungen erscheinen auf der Kommandozeile Error in Line 737 ; expected (wo?) Testen der Programme (durch Fehlermeldungen) ist umständlich System.out.println( Das dürfte jetzt nicht sein );