Dynamische Sprachen auf der JVM
|
|
- Klemens Flater
- vor 8 Jahren
- Abrufe
Transkript
1 Dynamische Sprachen auf der JVM Christian Müller Leibniz Universität Hannover 1 Einführung Der Begriff dynamische Sprache ist nicht genau definiert, sehr oft wird er lediglich mit dynamischer Typprüfung gleichgesetzt. Diese Definition wäre allerdings zu spezifisch. Sie würde viele Eigenschaften die mit dynamischen Sprachen in Verbindung gebracht werden nicht miteinbeziehen. Wir betrachten deshalb eine Sprache als dynamisch, wenn sie Verhalten zur Laufzeit ausführen kann, das andere Sprachen, wenn überhaupt, nur während der Kompilierung ausführen können. Beispiele für dieses Verhalten sind: dynamische Typprüfung: Es werden keine Variablentypen im Quelltext angegeben. Zur Laufzeit wird überprüft ob die benutzten Funktionen mit den vorliegenden Daten ausgeführt werden können. eval Funktion: Die eval Funktion interpretiert ein zur Laufzeit vorliegenden String als Quellcode und führt ihn aus. Closures: Funktionen die die Variablenbelegungen aus dem lexikalischen Kontext in dem sie definiert wurden konservieren. Continuations: Eine Continuation beschreibt den aktuellen Zustand während der Programmausführung und ermöglicht somit das Speichern dieses Zustandes und das spätere Fortsetzen von diesem Zustand ausgehend. Mixins: Mixins ermöglichen es einem Objekt zur Laufzeit zusätzliche Funktionalität zu geben. Reflection: Wenn ein Programm zur Laufzeit seine eigene Struktur analysieren und verändern kann spricht man von Reflection.
2 Es kommt aber nicht darauf an das in einer Sprache alle diese Eigenschaften vorhanden sind um sie als dynamisch zu bezeichnen. Der Vorteil den diese Eigenschaften einer Sprache bringen ist eine Erleichterung bei der Programmierung. Benutzt man beispielsweise eine Sprache ohne eval Funktion, kann auf diese aber nicht verzichten, dann muss man sehr wahrscheinlich selber einen einfachen Interpreter für diese Sprache implementieren, den man dann als eval Funktion benutzen kann. Da die Java VM von diesen Eigenschaften nur Reflection direkt unterstützt stellt sich die Frage, warum man mit einem Compiler für eine dynamische Sprache die Java VM als Zielplattform wählen sollte. Ein Hauptgrund ist sicherlich die weite Verbreitung von Java VM's und die Tatsache das für praktisch jedes Betriebssystem eine Java VM verfügbar ist, und damit eine hohe Zielgruppe. Oder auch die große Anzahl von Bibliotheken die für Java vorhanden sind und die über die Java VM direkt genutzt werden können. Ursprünglich wurde die Java VM nur für Java ausgelegt, aber auch Sun hat erkannt das dynamische Sprachen immer beliebter werden und arbeitet deswegen an einer neuen Spezifikation für Java VM's, die es unter anderem erleichtern soll dynamische Sprachen umzusetzen. Es ist zum Beispiel ein neuer Bytecode Befehl in Planung der von Java gar nicht benutzt werden soll.
3 2 Dynamische Typprüfung Um Typsicherheit zu gewährleisten muss der Compiler, beziehungsweise der Interpreter, eine Typprüfung durchführen. Wird diese Typprüfung wie bei C oder Java während des Kompilierens vorgenommen spricht man von statischer Typprüfung. Dabei sind den Variablen im Quellcode vom Programmierer die jeweiligen Typen zugeordnet. Von dynamischer Typprüfung spricht man, wenn sie während der Laufzeit durchgeführt wird, wie beispielsweise in Lisp oder Ruby. Dabei sind die Typen nicht den Variablen, sondern den Werten zugeordnet. Eine Variable kann also zu unterschiedlichen Zeitpunkten Werte von unterschiedlichem Typ enthalten. Typprüfung auf der JVM Die vom Java Compiler erzeugte class Datei enthält in ihrem Konstantenpool zu jeder Variablen und Funktion einen sogenannten Type Descriptor der den Typ festlegt. Für Variablen ist dieser Type Descriptor ein String der nach folgender Tabelle kodiert ist. Für eine Integer Variable also I, und für ein zweidimensionales Feld von Floats [[F. Bei Klassen wird der volle Klassenname benutzt, der Type Descriptor für einen String ist also "Ljava/lang/String;". byte B char C double D float F int I long J short S boolean Z Klasse L<Klassenname>; Feld [ Bei Funktionen wird der Type Descriptor zusammengesetzt aus den Typen der Parameter und dem Rückgabetyp: zuerst die Typen der Parameter in runden Klammern, ohne Trennzeichen, gefolgt vom Rückgabetyp. Beispielsweise hätte eine Funktion die einen long, einen String und einen boolean als Parameter hat und einen int zurück gibt den Type Descriptor "(JLjava/lang/String;Z)I". Funktionsaufrufe im Quelltext werden je nach Art mit den Bytecodes invokestatic, invokevirtual, invokeinterface oder invokespecial übersetzt. Bei der Ausführung dieser Bytecodes zur Laufzeit wird von der Java VM überprüft ob der Type
4 Descriptor der Funktion mit den vorliegenden Typen der Argumente der Funktion übereinstimmt. Zum Beispiel invokestatic, der Befehl zum aufrufen von static Funktionen: invokestatic Bytecode: 0xb8 = 184 Format: invokestatic indexbyte1 indexbyte2 Stack (vorher):, [arg1, [arg2 ]] Stack (nachher): Aus indexbyte1 und indexbyte2 wird ein Index für den Konstantenpool der aktuellen Klasse konstruiert. An dieser Stelle muss sich eine symbolische Referenz für die aufzurufende Funktion befinden. Über diese Referenz erhält die Java VM unter anderem den Type Descriptor der Funktion und überprüft ob die Argumente auf dem Stack den richtigen Typ haben, in der richtigen Reihenfolge sind und ob es genug Argumente auf dem Stack gibt. dynamische Typprüfung auf der JVM Daraus ergeben sich zwei Probleme die gelöst werden müssen um dynamische Typprüfung auf der Java VM zu realisieren: 1. Die Type Descriptoren für dynamische Variablen (beziehungsweise Funktionsparameter) müssen so gestaltet sein, das es möglich ist diesen Variablen einen Wert von beliebigem Typ zuzuweisen. Das lässt sich einfach implementieren, da man die Klassenhierarchie von Java ausnutzen kann. Jede Java Klasse ist eine Unterklasse von Object, also gibt man dynamischen Variablen den Typ Object. Da die primitiven Datentypen, wie int oder float, außerhalb der Klassenhierarchie stehen, muss man sie in den entsprechenden Wrappern kapseln, wenn man sie einer dynamischen Variablen zuweisen will. 2. Zur Laufzeit muss eine Typprüfung ausgeführt werden, um die Typsicherheit zu gewährleisten. Es existieren zwei sehr ähnliche Bytecodes mit denen diese Typprüfung durchgeführt werden kann, checkcast und instanceof. Besser geeignet für unsere Bedürfnisse ist checkcast, da es den Stack nicht verändert und eine Fehlermeldung ausgibt wenn die beiden Typen nicht kompatibel sind. Bei instanceof wird in diesem Fall nur das Ergebnis, ein int mit dem Wert 0, auf den Stack geschrieben. instanceof Bytecode: 0xc1 = 193 Format: instanceof indexbyte1 indexbyte2 Stack (vorher):, objectref
5 Stack (nachher):, result checkcast Bytecode: 0xc0 = 192 Format: checkcast indexbyte1 indexbyte2 Stack (vorher):, objectref Stack (nachher):, objectref Aus indexbyte1 und indexbyte2 wird ein Index für den Konstantenpool der aktuellen Klasse konstruiert. An dieser Stelle muss sich eine symbolische Referenz auf eine Klasse, ein Feld oder ein Interface befinden, dessen Typ wir T nennen. Den Typ von objectref nennen wir S. Dann bestimmt checkcast mit folgenden Regeln, ob objectref zu Typ T gecastet werden kann. 1. Wenn S eine normale Klasse (kein Feld) ist, dann: 1. Wenn T eine Klasse ist, dann muss S dieselbe Klasse wie T sein, oder eine Unterklasse von T. 2. Wenn T ein Interface ist, dann muss S das Interface T implementieren. 2. Wenn S ein Interface ist, dann: 1. Wenn T eine Klasse ist, dann muss T Object sein. 2. Wenn T ein Interface ist, dann muss T dasselbe Interface wie S sein, oder ein Superinterface von S. 3. Wenn S ein Feld mit Komponenten des Typs SC ist, dann: 1. Wenn T eine Klasse ist, dann muss T Object sein. 2. Wenn T ein Feld mit Komponenten des Typs TC ist, dann muss eine der folgenden Aussagen stimmen: 1. TC und SC sind dieselben primitiven Typen. 2. TC und SC sind Referenzen und SC kann zu TC gecastet werden, durch rekursive Anwendung dieser Regeln. 3. Wenn T ein Interface ist, dann muss T eines der Interfaces sein, das von Array implementiert wird. Wie man sieht kann man primitive Datentypen so nicht testen, entweder kapselt man sie in den entsprechenden Wrappern (Punkt 1.1), oder in einem Feld (Punkt 3.2.1).
6 3 Closures Es gibt Programmiersprachen in denen ist es möglich Funktionen innerhalb anderer Funktionen zu definieren und auch Funktionen als Argumente zu übergeben. Dort ist es möglich das eine Funktion freie Variablen, aus dem lexikalischen Bereich in dem sie definiert wird, benutzt. In diesem Beispiel wird innerhalb der Funktion f eine weitere Funktion g definiert. Allerdings ist die Variable x, die in g benutzt wird, nicht mehr sichtbar, wenn g in der Funktion dosomething aufgerufen wird. Es muss also nicht nur die Funktion übergeben werden, sondern auch eine Referenz zu allen freien Variablen, und diese Variablen müssen so lange existieren wie die Funktion g existiert. Die Variable x ist für g eine freie Variable. Funktionen die wie g freie Variablen benutzen werden Closure genannt. Wie man in diesem Beispiel sieht kann man Closures für Information Hiding benutzen, denn die Variable x kann nur durch g verändert werden, da sie nur dort sichtbar ist. Außerdem können mehrere Funktionen dieselben freien Variablen benutzen und so privat kommunizieren. Hier sieht man, wie mit Hilfe von Closures ein einfaches Objekt realisiert werden kann. Die Funktion createcounter setzt value auf den übergebenen Startwert und liefert eine Liste mit zwei Funktionen, die beide value als freie Variable benutzen. Die erste Funktion erhöht bei jedem Aufruf den Zähler, und die zweite Funktion setzt den Zähler zurück auf Null.
7 Closures auf der Java VM Die Umsetzung von Closures erfordert, das Funktionen als Argumente übergeben werden können. Mit den normalen Funktionsdefinitionen die Java bereitstellt ist das nicht möglich, deshalb muss für jede Closure eine eigene Klasse erstellt werden, die das Interface Function implementiert. Diese Klasse enthält eine invoke Funktion, in der die eigentliche Funktionalität enthalten ist. In dem lexikalischem Bereich in dem die Closure definiert wurde, können dann von dieser Klasse Objekte erstellt werden und als Argumente an andere Funktionen übergeben werden. Außerdem müssen Closures Referenzen auf ihre freien Variablen beinhalten. Dies lässt sich mit Hilfe von Instanzvariablen realisieren. Für jede freie Variable hat die Closure eine Instanzvariable, der durch den Konstruktor eine Referenz auf das Objekt zugewiesen wird, das zur Definitionszeit der Closure an die freie Variable gebunden war. Dadurch ist auch gewährleistet das die freien Variablen mindestens so lange existieren, wie die Closure existiert. Denn so lange das ursprüngliche Objekt von der Closure referenziert wird, wird es nicht von Javas Garbage Collector gelöscht. Das erste Beispiel aus diesem Kapitel könnte vom Compiler wie folgender Quelltext umgesetzt werden:
8 4 Mixins Um die Wiederverwendung von Quelltext zu unterstützen gibt es in den meisten Programmiersprachen eine Form der Vererbung. In vielen Fällen reicht ein einfaches Vererbungssystem aus, aber damit lassen sich nicht alle Probleme der Wiederverwendung lösen. Mixins bilden eine mögliche Erweiterung des Vererbungssystems um diese Unzulänglichkeiten zu beheben, ähnlich wie die Mehrfachvererbung. Einfache Vererbung (single inheritance) ermöglicht es einer Klasse alle Variablen und Funktionen von einer Oberklasse zu erben, und eventuell zu überschreiben. Dabei kann jede Klasse nur eine direkte Oberklasse haben. Diese Form der Vererbung wird in Java für Klassen benutzt. Bei Mehrfachvererbung (multiple inheritance) kann eine Klasse mehrere direkte Oberklassen haben. Dies hat allerdings einige unerwünschte Konsequenzen, allen voran das Diamantenproblem. A B C D Bild 1: Das Diamantenproblem Es tritt auf wenn eine Klasse D über zwei verschiedene Wege, hier B und C, von einer gemeinsamen Oberklasse A erbt. Wenn in D nun eine Funktion aufgerufen wird, die in A definiert und in B und C überschrieben wurde, kann nicht entschieden werden welche Implementierung benutzt werden soll. Eine Mehrfachvererbung ist in Java für Klassen nicht möglich, allerdings kann eine Klasse mehrere Interfaces implementieren. Das hilft aber leider nicht dabei Quelltext wieder zu verwenden, da ein Interface nur die Schnittstelle beschreibt, die Implementierung muss in jeder Klasse wiederholt werden. Ein Mixin ist eine teilweise Klassendefinition die, wenn man sie auf eine Klasse anwendet, eine neue Unterklasse dieser Klasse liefert, die erweitert um die Variablen und Funktionen, samt Implementation, des Mixin ist. Vereinfacht ausgedrückt kann man sagen das sich ein Mixin wie ein Interface verhält, nur das zusätzlich die im Mixin vorliegenden Implementationen übernommen werden. Die Dynamik von Mixins ergibt sich aus der Tatsache das man sie auch zur Laufzeit auf einzelne Objekte anwenden kann. Beispielsweise kann man mit Mixins sehr gut Persistenz in ein Programm einführen. Dazu erstellt man ein Mixin das eine Klasse in eine Datenbank schreibt.
9 Dann kann man dieses Mixin auf alle Klassen, oder auch nur auf die entsprechenden Objekte zur Laufzeit, anwenden, die man speichern möchte. Dabei kann man auch erst zur Laufzeit die Entscheidung treffen welches Mixin, und damit welche Datenbank, man benutzen will. Mixins auf der Java VM Möchte man Mixins auf der JVM umsetzen muss man dafür sorgen das der generierte Bytecode richtig typisiert ist und das die Implementationen aus dem Mixin in die erzeugte Unterklasse übernommen werden. Für Mixins die auf Klassenebene verwendet werden, und somit während der Kompilierung berechnet werden können, ist das leicht umzusetzen. Man macht sich einfach die Ähnlichkeit zu Interfaces zunutze. Für jedes Mixin erzeugt der Compiler ein Interface. Klassen die ein Mixin benutzen sollen, implementieren dieses Interface. Dabei werden die Implementationen aus dem Mixin vom Compiler einfach in die neue Klasse übernommen. A A B C B C Mixin1 Mixin2 <<interface>> Mixin1 <<interface>> Mixin1 Werden Mixins zur Laufzeit auf Objekte angewendet muss man dynamisch eine neue Unterklasse erstellen und laden, die die ursprüngliche Klasse des Objektes um das Mixin erweitert, und dann eine Kopie des ursprünglichen Objekts mit der neuen Unterklasse erstellen. A <<interface>> Mixin1 A <<interface>> Mixin1 a: A Bild 2: zur Laufzeit, vor der Anwendung von Mixin1 auf a Amixin1 a: AMixin1 Bild 3: zur Laufzeit, nach der Anwendung von Mixin1 auf a
10 In Java werden sogenannte Classloader benutzt um zur Laufzeit dynamisch neue Klassen zu laden. Diese Classloader stehen auch dem Programmierer zur Verfügung und können modifiziert werden. Um auf diesem Weg Mixins zu realisieren muss der Compiler aus der Definition eines Mixins zwei Teile erstellen, ein Interface, welches die Schnittstelle repräsentiert, und eine Abstrakte Klasse, welche die Implementation enthält. Zur Laufzeit kann dann ein modifizierter Classloader aus der ursprünglichen Klasse, dem Interface und der abstrakten Klasse die gewünschte Unterklasse erstellen. Dieser beispielhafte Quellcode könnte vom Compiler mit Hilfe der Reflection API wie folgt übersetzt werden: In der von uns implementierten Methode ModifiedClassLoader.loadClass müsste der Bytecode der ursprünglichen Klasse A geladen werden, und dann wie folgt verändert werden: der Name der Klasse muss zu A_Mixin geändert werden das vom Compiler erstellte Interface muss implementiert werden die Implementation aus der vom Compiler erstellten abstrakten Klasse muss übernommen werden die Funktion void copyvars(a a) muss erstellt werden, damit die Daten des ursprünglichen Objekts später übernommen werden können
11 6 Zusammenfassung In dieser Arbeit wurden ausgewählte Eigenschaften dynamischer Sprachen vorgestellt, die von der Java VM nicht unterstützt werden. Es wurde untersucht wie sich diese Eigenschaften auf der Java VM umsetzen lassen, ohne Veränderungen an der Java VM vorzunehmen. Es konnte gezeigt werden wie sich dynamische Typprüfung, Closures und Mixins realisieren lassen. Die meisten dieser Eigenschaften wurden auch schon in verschiedenen Compilern umgesetzt. Die folgende Tabelle enthält einige Beispiele. Java Clojure Groovy Jruby Jython dynamische Typprüfung x x x x eval Funktion x x x x Mixins x * Closures x x x x x Continuations x x x Reflection x x x x x x Scala * Scala unterstützt Mixins nur zur Compile Zeit
12 Quellen 1. Bernard Paul Serpette, Manuel Serrano: Compiling Scheme to JVM bytecode: a performance study 2. Scott Malabarbara, Raju Pandey, Jeff Gragg, Earl Barr, J. Fritz Barnes: Runtime support for type safe dynamic Java classes 3. Sheng Liang, Gilad Bracha: Dynamic Class Loading in the Java Virtual Machine 4. Vija Saraswat: Java is not type safe 5. The JavaTM Virtual Machine Specification Second Edition 6. wikipedia.org und weitere 7. R. Parchmann: Vorlesungsskript Compiler Konstruktion II 8. Michel Schinz: Compiling Scala for the Java Virtual Machine 9. Olin Shivers: Supporting dynamic languages on the Java virtual machine
Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Mehr13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrRundung und Casting von Zahlen
W E R K S T A T T Rundung und Casting von Zahlen Intrexx 7.0 1. Einleitung In diesem Werkstattbeitrag erfahren Sie, wie Zahlenwerte speziell in Velocity, aber auch in Groovy, gerundet werden können. Für
MehrErweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
MehrFlashfragen in ILIAS Test & Assessment. Helmut Schottmüller
Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Flashfragen in ILIAS Test & Assessment Helmut Schottmüller Veröffentlicht Januar 2009 Copyright 2009 Helmut Schottmüller Inhaltsverzeichnis 1.
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrDokumentation Schedulingverfahren
Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................
MehrDieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrErstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
MehrM. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger
Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90 Minuten.
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
Mehr4. BEZIEHUNGEN ZWISCHEN TABELLEN
4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrIn diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.
In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrZwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
MehrLehrer: Einschreibemethoden
Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder
Mehr10 Erweiterung und Portierung
10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrErstellen eigener HTML Seiten auf ewon
ewon - Technical Note Nr. 010 Version 1.2 Erstellen eigener HTML Seiten auf ewon 30.08.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten 3. Funktionsaufbau und Konfiguration 3.1. Unterpunkt 1 3.2. Unterpunkt
MehrAGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
MehrErfolgsmeldungen im Praxisbetrieb
Inhalt 1. Was ist KV-Connect... 1 a. KV-SafeNet... 1 b. KV-Connect... 1 2. Vorbereitung der Installation... 2 a. KV-Connect-Zugangsdaten... 2 3. Einrichtung von KV-Connect... 3 a. Einstellungen im Programm...
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrGrundlagen der Theoretischen Informatik, SoSe 2008
1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)
MehrAnleitung zur Verwendung der VVW-Word-Vorlagen
Anleitung zur Verwendung der VVW-Word-Vorlagen v1.0. Jun-15 1 1 Vorwort Sehr geehrte Autorinnen und Autoren, wir haben für Sie eine Dokumentenvorlage für Microsoft Word entwickelt, um Ihnen die strukturierte
MehrZahlen auf einen Blick
Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.
MehrGezielt über Folien hinweg springen
Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrBedienungsanleitung Anlassteilnehmer (Vereinslisten)
Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,
MehrIst Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers
Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrPraktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife
Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben
MehrKlausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
MehrDatenbanken Kapitel 2
Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,
MehrEin Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch
Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,
MehrAufklappelemente anlegen
Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie
Mehr4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen
4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen Highlights: objektorientierte Sprache Plattformunabhängigkeit bei Hardware und Betriebssystem optimale Einbindung im Internet und Intranet
MehrWie Sie mit Mastern arbeiten
Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint
MehrSMS/ MMS Multimedia Center
SMS/ MMS Multimedia Center der BEYOND THE NET GmbH BEYOND THE NET GmbH Seite 1 Unser Multimedia Center ist eine WEB basierende Anwendung, die es ermöglicht von einer Zentrale aus, viele Mitarbeiter zu
MehrHilfedatei der Oden$-Börse Stand Juni 2014
Hilfedatei der Oden$-Börse Stand Juni 2014 Inhalt 1. Einleitung... 2 2. Die Anmeldung... 2 2.1 Die Erstregistrierung... 3 2.2 Die Mitgliedsnummer anfordern... 4 3. Die Funktionen für Nutzer... 5 3.1 Arbeiten
MehrMORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH
MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte
MehrDie Textvorlagen in Microsoft WORD und LibreOffice Writer
Die Textvorlagen in Microsoft WORD und LibreOffice Writer Liebe Teilnehmer(-innen) am Landeswettbewerb Deutsche Sprache und Literatur Baden- Württemberg, Diese Anleitung soll Ihnen helfen Ihren Wettbewerbsbeitrag
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrMenü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen
Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrProseminar C-Programmierung. Strukturen. Von Marcel Lebek
Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrProgrammieren I. Kapitel 15. Ein und Ausgabe
Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random
MehrProfessionelle Seminare im Bereich MS-Office
Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet
Mehr1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.
Programmierung des Farbsteuergeräts 340-00112 für Nikobus Diese Bedienungsanleitung gilt auch für die Nikobus-Produkte 340-00111 und 340-00113. Achtung: einige der aufgeführten Betriebsarten sind nur auf
MehrGemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken
Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken Mit Anleitung zur Erstellung einer FTP Verbindung unter Windows 7 Matthias Lange
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrDownloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler
Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5
MehrBedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien
Sie haben von der VR DISKONTBANK GmbH ein signiertes PDF-Dokument (i.d.r. eine Zentralregulierungsliste mit dem Status einer offiziellen Rechnung) erhalten und möchten nun die Signatur verifizieren, um
MehrMdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.
Programm Die Bedienung des Programms geht über das Hauptmenü. Datenbank Schnittstelle Die Datenbank wir über die Datenbank- Schnittstelle von Office angesprochen. Von Office 2000-2003 gab es die Datenbank
MehrAnleitung E Mail Thurcom E Mail Anleitung Version 4.0 8.2014
Anleitung E Mail Inhalt 1. Beschreibung 1.1. POP3 oder IMAP? 1.1.1. POP3 1.1.2. IMAP 1.2. Allgemeine Einstellungen 2. E Mail Programme 3 3 3 3 3 4 2.1. Thunderbird 4 2.2. Windows Live Mail 6 2.3. Outlook
MehrIst Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?
UErörterung zu dem Thema Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? 2000 by christoph hoffmann Seite I Gliederung 1. In zu großen Mengen ist alles schädlich. 2.
MehrProgramme im Griff Was bringt Ihnen dieses Kapitel?
3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich
MehrMusterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9
Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung
MehrAdobe Encore 2.0 - Einfaches Erstellen einer DVD
Adobe Encore 2.0 - Einfaches Erstellen einer DVD Kurzbeschreibung Mit Adobe Encore 2.0 können von diversen Filmsequenzen Video-DVDs erstellt werden. Es unterstützt u. a. auch die Erstellung von komplexen
MehrAnton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag
Anton Ochsenkühn amac BUCH VERLAG Ecxel 2016 für Mac amac-buch Verlag 2 Word-Dokumentenkatalog! Zudem können unterhalb von Neu noch Zuletzt verwendet eingeblendet werden. Damit hat der Anwender einen sehr
MehrJava Virtual Machine (JVM) Bytecode
Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,
MehrEinzel-E-Mails und unpersönliche Massen-Mails versenden
Einzel-E-Mails und unpersönliche Massen-Mails versenden Copyright 2012 cobra computer s brainware GmbH cobra Adress PLUS ist eingetragenes Warenzeichen der cobra computer s brainware GmbH. Andere Begriffe
MehrFuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7
FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 Die Installation der FuxMedia Software erfolgt erst NACH Einrichtung des Netzlaufwerks! Menüleiste einblenden, falls nicht vorhanden Die
MehrGEONET Anleitung für Web-Autoren
GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
Mehr