Java Native Interface
|
|
- Marielies Kaufer
- vor 8 Jahren
- Abrufe
Transkript
1 Java Native Interface Eine Einführung Cornelius Zühl
2 Inhaltsverzeichnis 1. Einführung Was ist JNI? JNI, was habe ich damit zu tun? Schlüsselwort native, warum kann ich es verwenden? Nativ (wie C++) spricht Java über die Invocation-API Ein Blick hinter die Kulissen Wie verwende ich JNI in meinem Java Programm? Zusammenfassung Quellen
3 1. Einführung Ziel dieser Ausarbeitung ist es einen allgemeinen Überblick über die Funktionsweise und Verwendung des JNI zu geben. Dabei wird das Thema zuerst motiviert. Dann werden auf die Gründe für die Verwendung und die Arten des Einsatzes eingegangen. Zum Schluss folgt eine kurze Zusammenfassung. 2. Was ist JNI? Das JNI (Java Native Interface) ist eine nicht Java-spezifische API (Application Programming Interface Programmierschnittstelle). Dem JNI liegt aber auch eine Standardisierung zugrunde. Dieser Standard garantiert zwei wichtige Eigenschaften: Kompatibilität Jede beliebige JVM lässt sich von außerhalb auf exakt der gleichen Form betreiben. Gleichheit Es wird nur eine einzige API in allen JVMs ausgeführt. Das heißt, dass einmal erzeugter binärer Code für eine JVM auf einem bestimmten Hardwaretyp auch auf allen JVMs dieses Hardwaretyps verwendet werden kann. JNI bildet die Schnittstelle zwischen der JVM (Java Virtual Mashine) und der nativen Umgebung, wie in C++ geschriebene Programmbibliotheken, außerhalb von Java. Die nativen Bibliotheken können die Schnittstelle nutzen, um eine JVM zu erzeugen und so mit der Java Welt zu interagieren. 3
4 3. JNI, was habe ich damit zu tun? Nun, jeder der Java Programme einsetzt hat indirekt mit JNI zu tun. Schon die Java VM verwendet intern JNI. So wird z.b. bei der Ausführung einer.jar Datei (die zip komprimiert ist) der Inhalt zuerst temporär dekomprimiert um die.class Dateien zu laden. Egal ob unter Windows oder Unix, um diese Aufgabe zu erledigen wird eine betriebssystemabhängige Implementierung verwendet. Unter Windows wird die zip.dll geladen. Unter Unix wird die libzip.so geladen. 4
5 Aber auch jeder der schon einmal selbst Java Programme geschrieben hat ist indirekt mit JNI in Berührung gekommen. Viele Methoden aus dem Java Framework wie z.b. bei der Klasse System verwenden intern das JNI. 4. Schlüsselwort native, warum kann ich es verwenden? Es gibt grundsätzlich zwei Gründe für den Einsatz des JNI aus Java heraus. Wobei ein Grund ehr ein scheinbarer Grund für die Verwendung darstellt: Performancesteigerung erreichen Spezielle Eigenheiten des Betriebsystems verwenden Grund 1 Performancesteigerung erreichen Zum einen könnte eine Geschwindigkeitssteigerung durch JNI erzielt werden. Denn es werden einige Aufgaben der Java Release nicht in derselben Weise wie optimierte C/C++ Programme ausgeführt. Das könnte konkret bedeuten, dass kritische Stellen wie innere Schleifen über einen native Aufruf ausgelagert werden. Grund 2 Spezielle Eigenheiten des Betriebsystems verwenden Zum anderen könnte so der Zugang zu speziellen Fähigkeiten des Rechners / Betriebssystems bereitet werden. Dazu zählen unter 5
6 vielen anderen Möglichkeiten der Anschluss an neue Peripheriegeräte und Steckkarten. Der Zugriff auf verschiedene Netztypen und die Verwendung von eindeutigen Merkmalen des Betriebssystems. Ein Konkretes Beispiel wäre das Erfassen von Echtzeitton über Mikrofon. Dafür gibt es im Java Framework keine generische Bibliothek. Es war davon die Rede, dass ein Grund ein scheinbarer Grund sei. Aber welcher ist das? Die Performancesteigerung ist ein verbreiteter Grund wenn man an den Gebrauch von JNI denkt. Dieser ist aber der scheinbare Grund. Denn wer wirklich echtzeitkritische Anwendungen will, wird nicht auf Java setzen. Bei der Deutschen Post AG wird beispielsweise ein System eingesetzt um die Zieladressen auf Briefen zu parsen und entsprechend Weichen auf den Wegen zu stellen den die Briefe weiter nehmen. Dafür stehen bei den hohen Geschwindigkeiten zum Erkennen nur wenige Millisekunden zur Verfügung. Für diesen Einsatzbereich wird man bestimmt auf andere Programmiersprachen als Java setzen. Außerdem werden viele zeitkritische Probleme ohnehin schon in der JVM nativ gelöst (siehe System.arraycopy( ) weiter oben). Besser ist es die Energie auf ein gutes Design von Klassen und Methoden zu verwenden, sie abstrakt und wieder verwendbar zu machen. Wenn das Programm seine Vorgaben erfüllt, kann als letzter Schritt die Geschwindigkeitssteigerung angegangen werden. 5. Nativ (wie C++) spricht Java über die Invocation-API Unter C++ kann mit Einbinden der Java Headerdatei (#include <jni.h>) der Zugang zu einer eigenständigen JVM geschaffen werden. 6
7 Natürlich muss das JDK (Java Development Kit) installiert sein. Ausserdem müssen in dem Projekt die zusätzlichen Includeverzeichnisse des JDK eingebunden werden (C:\Programme\Java\jdkVERSION\include;C:\Programme\Java\jdkVERS ION\include\win32). #include <jni.h> /* alle Java bezogenen Typen und Methoden sind hier definiert */... JavaVM *jvm /* Pointer auf die JVM */ JNIEnv *e; /* Pointer auf das native method interface */ JDK1_1InitArgs vm_args; /* JDK 1.1 VM Init-Argumente */... JNI_GetDefaultJavaVMInitArgs(&vm_args); /* setzt Standard-Argumente */ vm_args.classpath =...; /* können geändert werden */ JNI_CreateJavaVM(&jvm, &e, &vm_args); /* lädt und initialisiert eine VM */ jclass jc = (*e)->findclass("main"); /* findet Klasse innerhalb der VM */ jmethodid jmid = (*e)->getstaticmethodid(jc, "test", "(I)V"); (*e)->callstaticvoidmethod(jc, jmid, 100); /* ruft in der Klasse eine Methode auf */ (*jvm)->destroyjavavm(); /* beendet die VM */ Das obige Beispiel zeigt wie aus C++ heraus eine JVM erzeugt wird. In der VM wird unter Verwendung des classpath nach einer Klasse namens Main (im defaultpackage) gesucht. Dann wird in dieser Klasse die Methode test aufgerufen. Die Signatur "(I)V" verrät, dass die Methode einen Integer als Prameter verlang und void zurückgibt. Es können mit Hilfe der VM Java Objekte erzeugt, untersucht und geändert Java Methoden aufgerufen Exceptions geworfen und gefangen 7
8 Klassen und Klasseninformationen abgerufen Typen zur Laufzeit geprüft werden. 6. Ein Blick hinter die Kulissen Der Aufruf von nativ in Richtung JVM erfolgt über den Interface Pointer. Der Interface Pointer ist dabei ein Zeiger auf ein Array von Funktionszeigern. Der Typ von JNIEnv ist ein struct welches die Zeiger auf die verschiedenen Funktionen der JVM enthält: struct JNINativeInterface_ { void *reserved0; void *reserved1; void *reserved2; void *reserved3;... jfieldid (JNICALL *GetStaticFieldID) (JNIEnv *env, jclass clazz, const char *name, const char *sig); } /* nur ein Auszug, weil in JNIEnv_ auf dieses struct bezug genommen wird */ struct JNIEnv_ { const struct JNINativeInterface_ *functions;... jfieldid GetStaticFieldID(jclass clazz, const char *name, const char *sig) { return functions->getstaticfieldid(this,clazz,name,sig); } } /* das ist nur ein Auszug um die Struktur zu verdeutlichen */ 8
9 Die Methoden in JNIEnv sind für das jeweilige Betriebssystem unter dem das JDK installiert ist entsprechend angepasst und kompiliert. Auf der nativen Seite erhalten Methoden immer zwei zusätzliche Argumente unabhängig von ihrer Parameterliste: Argument eins ist der JNI Interface Pointer (JNIEnv) Argument zwei ist bei static native Methoden o Zeiger auf die Java Klasse in der JVM Argument zwei ist bei nonstatic native Methoden o Zeiger auf das Java Objekt ( this ) in der JVM Weiterhin ist das Speichermanagement ein interessanter Punkt der hier kurz beleuchtet werden soll. Wenn Java eine native Funktion aufruft, dann werden die primitiven Datentypen (wie int, long, double usw.) kopiert. Java Objekte hingegen werden in lokale bzw. globale Referenzen beim Aufruf der nativen Methode unterteilt. Die lokalen Referenzen leben im Scope ihres erzeugenden Stack-Frame und Thread. Sie werden bei verlassen der nativen Methode freigegeben. Zu beachten ist hierbei, dass die JVM nur begrenzten Speicher zur Verfügung hat um sich diese lokalen Referenzen zu merken! Die globalen Referenzen leben bis sie explizit freigegeben werden. In JNIEnv existieren Methoden um lokale Referenzen in globale umzuwandeln. Jede JNI Funktion die beim Aufruf Referenzen zurückgibt wird diese als lokal zurückgeben. Ein weiterer Punkt sind Fehlerbehandlung und Exceptions. Bei jedem Aufruf auf nativer Seite von JNI Funktionen können Exceptions erzeugt werden. Die JNI Funktionen geben in diesen Fällen Fehlercodes aus die über die Methode ExceptionOccured() abgerufen werden können. Bei der Fehlerbehandlung gibt es grundsätzlich zwei Möglichkeiten um 9
10 darauf zu reagieren (neben der dritten Möglichkeit nichts machen). Falls nicht auf der nativen Seite auf den Fehler reagiert wird, kehrt der Methodenaufruf irgendwann auf die Java Seite zurück. Dann wird dort der Fehler erneut als Exception geworfen. Die andere Möglichkeit ist auf der nativen Seite den Fehler zu behandeln. Dann muss mit der Methode ExceptionClear() aus JNIEnv der Fehler zurückgesetzt werden damit er auf der Java Seite nicht geworfen wird. 7. Wie verwende ich JNI in meinem Java Programm? Für die Aufrufe von Java in Richtung nativ gelten spezielle regeln für externe d.h. nativ (z.b. unter C++) deklarierten Methoden die über Java aufgerufen werden können. Es muss der voll qualifizierte Methodenname kodiert werden Paketname + Klassenname + Funktionsname mit Parametern. Dabei wird der Paketname der sonst mit Punkten getrennt ist durch Unterstriche getrennt. Zusätzlich zu den Parametern der Funktion werden zwei weitere Parameter übergeben (weiter oben schon erleutert). Eine externe (native) Funktion wird in Java dann so deklariert: package de.paket.jni; public class Klasse { } public native boolean callnative(int arg0); Auf der nativen Seite muss dann entsprechend der Namenskonvention für die Methode das passende Gegenstück in einer Headerdatei deklariert werden: JNIEXPORT jboolean JNICALL Java_de_paket_jni_Klasse_callNative(JNIEnv*, jobject, jint); 10
11 Dieses Verfahren muss für jede auf Java Seite als native deklarierte Methode angewendet werden. Die JVM sucht in der externen Bibliothek nach genau dieser Funktion mit genau diesem Namen und exakt dieser Signatur wenn aus Klasse die Methode callnative() aufgerufen wird. Jetzt stellt sich die Frage, ob das nicht auch einfacher geht. Bei einem großen Projekt mit vielen nativen Methoden ist es erstens schwer alle Konventionsgemäß auf der nativen Seite zu deklarieren. Zweitens müssen bei Änderungen in Funktionsnamen oder der Parameterliste die nativen Sourcen nachgepflegt werden. Die gute Nachricht ist: es gibt ein Kommandozeilentool das dabei hilft die Headerdatei für die native Seite automatisch zu erzeugen. Ganz wichtig ist dabei folgende Schritte zu beachten, da sonst die Headerdatei nicht erzeugt wird! In einer Konsole (cmd unter Windows) folgende Kommandos der Reihe nach ausführen: set JAVA_HOME=C:\Programme\Java\jdkVERSION set PATH=%PATH%;%JAVA_HOME%\bin und schließlich C:\JAVA_PROJECT_PATH\bin>javah de.paket.jni.klasse (Unter Unix funktioniert das analog) 11
12 Jetzt wurde in C:\JAVA_PROJECT_PATH\bin eine verwendbare Headerdatei namens de_paket_jni_klasse.h erzeugt. So sieht die automatisch erzeugte Datei dann aus: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class de_paket_jni_klasse */ #ifndef _Included_de_paket_jni_Klasse #define _Included_de_paket_jni_Klasse #ifdef cplusplus extern "C" { #endif /* * Class: de_paket_jni_klasse * Method: callnative * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_de_paket_jni_Klasse_callNative (JNIEnv *, jobject, jint); #ifdef cplusplus } #endif #endif Wenn diese Funktion (Java_de_paket_jni_Klasse_callNative( )) dann Implementiert und eine.dll daraus erzeugt wurde, kann sie fast schon von Java Seite aus verwendet werden. Was jetzt noch Fehlt ist das Laden der externen Ressource über den loadlibrary Befehl. Dafür wird der Java Code um diese Zeile ergänzt: package de.paket.jni; public class Klasse { static { } System.loadLibrary("LIB_PATH/MeineDynamischeBibliothek"); } public native boolean callnative(int arg0); 12
13 Unter Windows heißt diese Bibliothek MeineDynamischeBibliothek.dll Unter Unix heißt diese Bibliothek libmeinedynamischebibliothek.so In beiden Fällen wird sie aber nur über ihren eigentlichen Namen MeineDynamischeBibliothek geladen. Das Auflösen der Abhängigkeit des tatsächlichen Namens vom Betriebssystem übernimmt Java intern. Somit ist der obige Java Code sowohl unter Unix als auch Windows gleichermaßen gültig. 8. Zusammenfassung Das JNI bietet die Möglichkeiten sowohl von nativer (C++) Seite aus auf Java zuzugreifen, als auch umgekehrt von Java aus die native Seite (C++) einzubinden. Der Einsatz von JNI begegnet jedem indirekt der Java Programme verwendet oder selbst Java Programme schreibt. Der Einsatzzweck um von Java aus native Bibliotheken zu verwenden liegt primär darin die Eigenschaften des Betriebssystems dort direkt nutzbar zu machen wo das Java Framework keine Bibliotheken anbietet. Oder auch wo sich native Bibliotheken bereits bewährt haben und jetzt in einer Java GUI eingebettet werden sollen. Nur die Steigerung der Performance als alleiniger Grund für die Verwendung von JNI ist zwar ein verbreitetes Einsatzziel, in den meisten Fällen aber nicht mehr weiter erreichbar. Java selbst ist schon an vielen kritischen Stellen optimiert und setzt dort intern schon auf native Bibliotheken. Wer von Java Seite aus JNI in seinen Programmen verwenden möchte, dem Stehen Werkzeuge zur Verfügung die das Generieren von Headerdateien und somit den Einsatz erleichtern. 13
14 9. Quellen IBM Understanding the Java Native Interface o m.ibm.java.doc.diagnostics.60/html/jni.html#jni Native Methoden und Bibliotheken (1997) o n/kap20.htm JNI 1.1 Specification ff. o Gute Übersicht für den Praktischen Einsatz o 14
Binä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
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrQt-Projekte mit Visual Studio 2005
Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung
MehrEinführung in Eclipse und Java
Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik
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
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
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
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
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 --
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
Mehr.NET Code schützen. Projekt.NET. Version 1.0
.NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrDatensicherung. Beschreibung der Datensicherung
Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrIn 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrFakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012
WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
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
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
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
MehrIn 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
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:
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
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
Mehr! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
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
MehrReporting Services und SharePoint 2010 Teil 1
Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?
MehrDas Leitbild vom Verein WIR
Das Leitbild vom Verein WIR Dieses Zeichen ist ein Gütesiegel. Texte mit diesem Gütesiegel sind leicht verständlich. Leicht Lesen gibt es in drei Stufen. B1: leicht verständlich A2: noch leichter verständlich
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
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
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/
MehrInstallation OMNIKEY 3121 USB
Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,
MehrWindows 7 Winbuilder USB Stick
Windows 7 Winbuilder USB Stick Benötigt wird das Programm: Winbuilder: http://www.mediafire.com/?qqch6hrqpbem8ha Windows 7 DVD Der Download wird in Form einer gepackten Datei (7z) angeboten. Extrahieren
MehrDOKUMENTATION VOGELZUCHT 2015 PLUS
DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP
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
MehrPakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).
Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein
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,
MehrArtikel Schnittstelle über CSV
Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte
MehrInformatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
Mehr2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE
2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht
MehrEr musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt
Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
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
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
MehrCatherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1
Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1 Darum geht es heute: Was ist das Persönliche Geld? Was kann man damit alles machen? Wie hoch ist es? Wo kann man das Persönliche Geld
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
MehrEigenen Farbverlauf erstellen
Diese Serie ist an totale Neulinge gerichtet. Neu bei PhotoLine, evtl. sogar komplett neu, was Bildbearbeitung betrifft. So versuche ich, hier alles einfach zu halten. Ich habe sogar PhotoLine ein zweites
MehrBackup-Server einrichten
Einsteiger Fortgeschrittene Profis markus.meinl@m-quest.ch Version.0 Voraussetzungen für diesen Workshop. Die M-Quest Suite 2005-M oder höher ist auf diesem Rechner installiert 2. Das Produkt M-Lock ist
MehrDas Persönliche Budget in verständlicher Sprache
Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget mehr Selbstbestimmung, mehr Selbstständigkeit, mehr Selbstbewusstsein! Dieser Text soll den behinderten Menschen in Westfalen-Lippe,
MehrWillkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrInformationen zum Ambulant Betreuten Wohnen in leichter Sprache
Informationen zum Ambulant Betreuten Wohnen in leichter Sprache Arbeiterwohlfahrt Kreisverband Siegen - Wittgenstein/ Olpe 1 Diese Information hat geschrieben: Arbeiterwohlfahrt Stephanie Schür Koblenzer
MehrPunkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software
Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung
MehrDie Invaliden-Versicherung ändert sich
Die Invaliden-Versicherung ändert sich 1 Erklärung Die Invaliden-Versicherung ist für invalide Personen. Invalid bedeutet: Eine Person kann einige Sachen nicht machen. Wegen einer Krankheit. Wegen einem
MehrNetzwerk einrichten unter Windows
Netzwerk einrichten unter Windows Schnell und einfach ein Netzwerk einrichten unter Windows. Kaum ein Rechner kommt heute mehr ohne Netzwerkverbindungen aus. In jedem Rechner den man heute kauft ist eine
MehrVirtueller Seminarordner Anleitung für die Dozentinnen und Dozenten
Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,
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
Mehricloud nicht neu, aber doch irgendwie anders
Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und
MehrStep by Step Webserver unter Windows Server 2003. von Christian Bartl
Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird
MehrTeamSpeak3 Einrichten
TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen
MehrInternet online Update (Internet Explorer)
Um Ihr Consoir Beta immer schnell und umkompliziert auf den aktuellsten Stand zu bringen, bieten wir allen Kunden ein Internet Update an. Öffnen Sie Ihren Internetexplorer und gehen auf unsere Internetseite:
MehrInstallation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7
Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7 Zur Arbeitserleichterung und für einen reibungslosen Übungsbetrieb ist es zwingend notwendig, sowohl
Mehrinfach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock
infach Ihr Weg zum finanzellen Erfolg Geld Florian Mock FBV Die Grundlagen für finanziellen Erfolg Denn Sie müssten anschließend wieder vom Gehaltskonto Rückzahlungen in Höhe der Entnahmen vornehmen, um
MehrKompilieren und Linken
Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang
MehrHow to do? Projekte - Zeiterfassung
How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...
MehrKomponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009
Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger
MehrAnwenderdokumentation PersoSim
Anwenderdokumentation PersoSim Die nachfolgende Anwenderdokumentation soll dem Anwender bei der Installation und den ersten Schritten im Umgang mit PersoSim helfen. Installation Grundvoraussetzung für
MehrIn 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player
PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Schritthan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com
MehrWas ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,
Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,
MehrWas ist Sozial-Raum-Orientierung?
Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume
MehrObjectBridge Java Edition
ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente
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
MehrStatuten in leichter Sprache
Statuten in leichter Sprache Zweck vom Verein Artikel 1: Zivil-Gesetz-Buch Es gibt einen Verein der selbstbestimmung.ch heisst. Der Verein ist so aufgebaut, wie es im Zivil-Gesetz-Buch steht. Im Zivil-Gesetz-Buch
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrNicht über uns ohne uns
Nicht über uns ohne uns Das bedeutet: Es soll nichts über Menschen mit Behinderung entschieden werden, wenn sie nicht mit dabei sind. Dieser Text ist in leicht verständlicher Sprache geschrieben. Die Parteien
Mehraffilinet_ Flash-Spezifikationen
affilinet_ Flash-Spezifikationen Inhaltsverzeichnis Allgemeines...2 Klickzählung...2 Lead/Sale Programme... 2 PPC und Kombi Programme...3 Übergabe von Formulardaten...4 clicktag Variante Sale/Lead Programm...4
MehrC++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
MehrDas sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
MehrErstellen eines Screenshot
Blatt 1 von 5 Erstellen eines Screenshot Einige Support-Probleme lassen sich besser verdeutlichen, wenn der Supportmitarbeiter die aktuelle Bildschirmansicht des Benutzers sieht. Hierzu bietet Windows
Mehr40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.
40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrKlausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
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
MehrUpdatehinweise für die Version forma 5.5.5
Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x
MehrHANDOUT VON: HTTP://BITWICHTL.DE EIGENES SSL-ZERTIFIKAT FÜR DEN WHS. Copyright 2011 by s.winkler all rights reserved!
HANDOUT VON: HTTP://BITWICHTL.DE EIGENES SSL-ZERTIFIKAT FÜR DEN WHS Copyright 2011 by s.winkler all rights reserved! Nachdem es mich schon nach rel. kurzer Zeit genervt hat, wenn ich den WHS über DDNS
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,
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrErstellen der Barcode-Etiketten:
Erstellen der Barcode-Etiketten: 1.) Zuerst muss die Schriftart Code-39-Logitogo installiert werden! Das ist eine einmalige Sache und muss nicht zu jeder Börse gemacht werden! Dazu speichert man zunächst
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
MehrEva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit
Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit Frau Dr. Eva Douma ist Organisations-Beraterin in Frankfurt am Main Das ist eine Zusammen-Fassung des Vortrages: Busines
MehrDas große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten
Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während
MehrÜbungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
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
MehrUrlaubsregel in David
Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5
Mehr