Untersuchung der Einsetzbarkeit von Echtzeit-Java in der Radarsignalverarbeitung

Größe: px
Ab Seite anzeigen:

Download "Untersuchung der Einsetzbarkeit von Echtzeit-Java in der Radarsignalverarbeitung"

Transkript

1 Untersuchung der Einsetzbarkeit von Echtzeit-Java in der Radarsignalverarbeitung Ralf Holzheu 30. Oktober 2004 Ralf Holzheu Fachhochschule Ulm Studiengang Technische Informatik Sommersemester 2004 Diplomarbeit wurde angefertigt bei: EADS Ulm Radartechnik, Abteilung OPE 52 Wörthstrasse Ulm Firmenbetreuung durch: Dr. T. Mahr betreuende Professoren: Prof. Dr. rer. nat. K. Ressel Prof. Dr. T. Hasbargen 1

2 3 Echtzeitprogrammierung mit Java 3.1 Eignung von Java für Echtzeitsysteme [BHK2000]Die Grundgesetze der Echtzeitfähigkeit werden mit Java nicht außer Kraft gesetzt. Das heisst: garantierte kurze Reaktionszeiten können nur erreicht werden, wenn gerade laufende Aktivitäten zu jeder Zeit unterbrochen und durch die angeforderte Tätigkeit höherer Priorität solange verdrängt werden können, bis die geforderte Reaktion erfolgt ist. Betriebssysteme unterstützen dies durch ein prioritätsgesteuertes, preemptives Multitasking. Die unverzügliche Unterbrechbarkeit einer gerade laufenden Aktivität heisst, dass Java-Threading ebenfalls prioritätsgesteuert und preemptiv realisiert werden muss. In der Java-Spezifikation werden Thread-Prioritäten definiert, es werden jedoch keine Aussagen darüber gamacht, wie die Abarbeitung genau zu erfolgen hat. Für eine harte Echtzeitfähigkeit kann aus diesem Grund ein preemptives Threading gewählt werden, ohne die Java-Spezifikation zu verletzen. Wird ein Java-System aufbauend auf einem Betriebssystem realisiert, so heisst dies, dass Java-Threads auf die Threads oder Tasks des darunter liegenden Betriebssystem abgebildet werden müssen, siehe Abbildung 9. Abbildungsschicht für Thread-Management Aufrufe - Erzeugung - Synchronisation -... OS-Task/Thread Java-Thread Java-Thread OS-Task/Thread OS-Task/Thread OS - Win2k - vxworks -... Java-Thread OS-Task/Thread OS-Task/Thread Abbildung 9: Abbildung von Java-Threads auf native Task. Quelle: [BHK2000] So ist sichergestellt, dass der höchstpriore Java-Thread auch die höchste Priorität des Gesamtsystems haben kann. Ein auf ein Betriebssystem aufsetzendes Java-System kann nicht echtzeitfähiger sein als das unterlagerte System. Höchste Priorität für einen Anwender-Thread ist nicht immer gleich bedeutend mit höchster Priorität im gesamten System. Dies ist der Unterschied zwischen einem System mit harter Echtzeitfähigkeit und einem nichtechtzeitfähigen System wie Win2k oder Unix. Es muss immer die Prioritätsstruktur des Gesamtsystems betrachtet werden. Entscheidend in einem nichtechtzeitfähigen EADS Deutschland GmbH 30 von 75

3 System ist, dass Systemleistungen wie z.b. Ein-Ausgabe-(EA)-Treiber höhere Priorität besitzen als der höchstpriore Anwenderthread. Eine Obergrenze für die Reaktionszeit t R lässt sich nicht angegeben, weil diese vom EA-Verkehr abhängig ist. Folgedessen kann die Einhaltung einer oberen Schranke nicht garantiert werden. Bei einem Echtzeitbetriebssystem-Kern werden die zulässigen Prioritäten für Anwendungen nicht auf einen bestimmten (niederprioren) Ausschnitt des gesamten Prioritätsbereiches des Systems eingeschränkt. Anwender-Threads können eine höhere Priorität als System-Threads besitzen. Dies hat zur Folge, dass eine solche höchstpriore Anwendung immer das gleiche Reaktionsverhalten zeigt unabhängig davon, wie sonstige Aktivitäten, z.b EA-Treiber, das System belasten. Die Prioritätsstruktur eines solchen Systems zeigt, Abbildung 10. Gemeinsamer, permanenter Adressraum Anwender Interrupt Handler Interrupts Interrupt Handler Priorität System Threads/Tasks z.b. EA-Treiber Anwender Threads/Tasks Abbildung 10: Prioritätsstruktur eines Echtzeitsystems. Quelle: [BHK2000] EADS Deutschland GmbH 31 von 75

4 Wenn ein preemptives Multithreading wie bei Echtzeitbetriebssystem-Kernen (engl. realtimekernel) realisiert werden kann, und wenn durch die Vorabübersetzung AOT (engl. ahead of time) in Maschinencode eine schnelle und deterministische Befehlsabarbeitung möglich ist, was macht dann übliche Java- Systeme nicht echtzeitfähig? Die Antwort liegt in der automatischen Speicherplatzverwaltung durch den Garbage Collector (GC). Eines der grössten Probleme hinsichtlich vorhersagbaren Verhaltens eines zeitkritischen Tasks ist der Garbage Collector. Ein Garbage Collector verwaltet und organisiert den Heap, nichtreferenzierte Objekte werden gelöscht, und der Speicher wird defragmentiert. Der GC ist höher priorisiert als ein java.lang.thread und kann somit alle Anwenderthreads auf unbestimmte und unvorhersehbare Zeit unterbrechen. Abbildung 11 illustriert das Verhalten des GC einer Standardimplementierung. Allokierte Objekte werden durch den GC auf dem Heap verwaltet und damit der Kontrolle des Programmierers entzogen. Echtzeitverhalten ist dadurch nicht möglich. Abbildung 11: Anwendungsthreads werden vom Garbage Collector unterbrochen. Quelle: aicas Garbage Collection Das Speichermanagement in Java unterscheidet sich von dem in Sprachen wie C und C++. Ein Programm muss keine Prozeduren wie malloc() oder free() aufrufen, um Speicher zuzuweisen oder freizugeben, sondern erhält von der Java-Runtime-Environment einen Automatismus bereitgestellt der den Speicher verwaltet. Dieser Automatismus heißt Garbage Collector. Die Aufgabe des Garbage Collector ist es: nicht referenzierte Objekte auf dem Heap zu detektieren und dessen Speicher freigeben. die Heapfragmentierung so gering wie möglich zu halten. Um herauszufinden, welche Objekte nicht mehr referenziert werden, werden sogennante Wurzelknoten (engl. roots ) angelegt und die Erreichbarkeit der einzelnen Elemente von diesen Wurzeln untersucht. Ein Objekt ist erreichbar, wenn es einen Pfad von Referenzen ausgehend von der Wurzel gibt, über die ein Programm das Objekt erreichen kann. Die Wurzeln sind immer vom Programm erreichbar. Der Mark-Sweep-Compact Algorithmus besteht aus vier Phasen (Abbildung 1. Die Aufgabe der ersten Phase ist es, alle Wurzelelemente zu markieren. In der zweiten Phase werden alle root Objekte rekursiv durchlaufen, alle referenzierbare Objekte detektiert und markiert. Anschliessend scannt der GC-Algorithmus in der dritten Phase den Heap und sucht nach nicht markierten Objekten und entfernt diese gegebenenfalls aus dem Speicher. Die letzte und vierte Phase ist für die Kompaktifizierung und Defragmentierung des Heap zuständig. EADS Deutschland GmbH 32 von 75

5 Abbildung 12: Phasen des Mark and Sweep Algorithmus. Quelle: aicas Listing 1: Mark and Sweep 1 for each root v a r i a b l e r 2 mark ( r ) ; 3 sweep ( ) 4 5 void mark ( Object p ) 6 i f (! p. marked ) 7 p. marked = true ; 8 for each Object q referenced by p 9 mark ( q ), void sweep ( ) 12 for each Object p in the heap 13 i f ( p. marked ) 14 p. marked = f a l s e ; 15 else 16 heap. r e l e a s e ( p ) ; EADS Deutschland GmbH 33 von 75

6 3.2 Java-Echtzeitspezifikationen Im Juni 1998 fand sich unter der Führung von NIST (National Institute for Standards and Technology) eine Gruppe zusammen, die Anforderungen für ein echtzeitfähiges Java erarbeitete. Insgesamt waren daran 37 Firmen beteiligt. Aus diesen Firmen bildeten sich zwei Gruppen, eine die unter dem Sun Java Community Process (JCP) arbeitet und das J-Consortium, ein Zusammenschluss von Herstellern, die von Sun unabhängig bleiben wollten. Die Ziele dieser Anforderungen sind: Echtzeit-Java soll als oberste Priorität deterministisches Antwortverhalten garantieren. Echtzeit-Java soll abwärtskompatibel sein. Nicht echtzeitfähige Javaprogramme sollen uneingeschränkt auch unter RTSJ-Implementationen ausführbar sein. Echtzeit-Java soll portabel und plattformunabhängig sein. Die Portabilität und die Plattformunabhängigkeit muss gewährleistet werden. Echtzeit-Java soll keine syntaktischen Spracherweiterungen haben. Das Ergebnis sind drei Vorschläge für ein echtzeitfähiges Java (engl. Realtime Java): Ein Vorschlag von Sun, die Real-Time Specification for Java [BHK2000] und zwei Vorschläge des J-Consortiums, die Real- Time Core [RTSJ1999] Extensions for the Java Platform und der Real-Time Data Access [RTCE1999]. Die Firma aicas implementierte die RTSJ in ihre echtzeitfähige virtuellen Maschine. Da diese in dieser Arbeit verwendet wird, wird im folgenden der Vorschlag von Sun, die RTSJ genauer vorgestellt. Es werden nicht alle Details dieser Spezifikation behandelt, sondern eine sinnvolle Auswahl getroffen, die das Gesamtkonzept wiedergeben The Real-Time-Specification for Java Die Real-Time-Specification for Java erweitert die Java-Spezifikation in sechs Bereichen, die nachfolgend eingeführt werden [RTSJ1999]. Eine genauere Beschreibung der einzelnen Bereiche sowie eine Einführung zur Programmierung mit der RTSJ befinden sich in [Dib2002]. Nach dieser Einführung wird in Kapitel 3.3 die JamaicaVM vorgestellt. Threads und Scheduling: Die RTSJ definiert Realtime-Threads, also Threads die den vorgegebenen zeitlichen Restriktionen hinreichend genau genügen müssen. Dabei ist das Scheduling von zentraler Bedeutung. Die RTSJ definiert fogende Schedulingstrategien: Priority Scheduling, Periodic Scheduling sowie Deadline Scheduling. Beim Priority Scheduling wird jedem Rechenprozess eine Prioritätsebene zugeordnet. Prozesse mit höherer Priorität werden zuerst abgearbeitet. Siehe Kapitel Speicherverwaltung und Garbage Collection: Die RTSJ definiert zwei neue Speicherbereiche für No- Heap-Threads, die nicht vom GC beinträchtigt werden: immortal memory und scoped memory. Siehe Kapitel Asynchrones Eventhandling: Echtzeitanwendungen sind ereignisgesteuert. Die RTSJ definiert happenings als eine Verbindung zwischen extern auftretenden Ereignissen und asynchronen Event Handlers. Siehe Kapitel Asynchroner Kontrollfluss: Asynchronous transfer of control (ATC) ist ein Mechaninsmus, welcher einem Thread erlaubt eine Exception in einen anderen Thread zu werfen. Siehe Kapitel [Dib2002]. Physikalischer Speicherzugriff Die RTSJ unterstüzt mit Load and Store Operationen den direkten Zugriff auf Speicheradressen. Siehe Kapitel EADS Deutschland GmbH 34 von 75

7 Threads und Scheduling Um den Echtzeitanforderungen in Realtime-Environments (RTE) gerecht zu werden, definiert die RTSJ RealtimeThread und NoHeapRealtimeThread Objekte. Diese Threads können mit 28 Prioritätslevels belegt werden. Diese liegen dabei alle über den 10 Prioritätslevels eines java.lang.thread Objektes. Abbildung 13 zeigt, daß RealtimeThreads nicht von den Unterbrechungen des Garbage Collectors betroffen sind. Im Folgenden werden die Eigenschaften von RealtimeThread und deren Anwendung in Code-Beispielen gezeigt. Abbildung 13: RealTimeThreads in der RTSJ sind nicht von Unterbrechungen des GC betroffen. Quelle: aicas RealtimeThread Diese Threadklasse kann ausschließlich auf dem Heap allokierte Objekte ansprechen. Die Klasse javax.realtime.realtimethread ist von java.lang.thread abgeleitet. Somit erbt der ReatimeThread alle Eigenschaften und Operationen eines java.lang.thread Objektes. Listing 2 erzeugt und startet einen RealtimeThread. Listing 2: Erzeugen eines RealtimeThread durch einen java.lang.thread 1 import javax. r e a l t i m e. ; 2 3 public c l a s s HelloRTJava { 4 public s t a t i c void main ( S t r i n g [ ] args ){ 5 RealtimeThread r t = new RealtimeThread ( ) ; 6 public void run ( ) { 7 System. out. p r i n t l n ( Hello RTJava ) ; 8 } ; 9 r t. s t a r t ( ) ; 10 } 11 } Der Aufruf des unparameteriesierten Konstruktors der Klasse RealtimeThread, aus einem java.lang.thread, startet einen Thread mit den in Tabelle gezeigten Werten. EADS Deutschland GmbH 35 von 75

8 Field memory area memory parameters processinggroupparameters releaseparameters scheduler schedulingparameters Default Der Thread wird im Heap gestartet. Der Thread ist keinen Speicherrestriktionen unterzogen. Der Thread gehört keiner Gruppe an. Der Thread unterliegt keiner Zeitrestriktion. Der Thread wird durch den Standardscheduler dem Betriebsmittel zugeteilt. Der Thread startet mit NORM PRIORITY. Soll der zu erzeugende Thread nicht mit den in Tabelle gelisteten Werten erzeugt werden, so muss dieser parametrisiert aufgerufen werden. Der Konstruktor eines RealtimeThreads besitzt sechs Parameter, die im folgenden genauer Beschrieben werden. Listing 3: Konstruktor für einen RealtimeThread. 1 public RealtimeThread ( 2 SchedulingParameters scheduling, 3 ReleaseParameters r e l e a s e, 4 MemoryParameters memory, 5 MemoryArea area, 6 ProcessingGroupParameters group, 7 java. lang. Runnable l o g i c ) ; Scheduling Parameter: Die Laufzeitpriorität eines Thread wird durch den Scheduling Parameter festgelegt. Dabei gilt PriorityScheduler.MIN P riority 11 (16) somit liegt die Priorität eines RealtimeThread über den 10 Prioritätslevels eines java.lang.thread Objektes. Release Parameter: Das Zeitverhalten eines RealtimeThread Objektes wird durch den Release Prameter spezifiziert, dieser definiert die T Startzeit, T Periode, T deadline, T maxaus f uehrungszeit, sowie einen Over- RunHandler und einen MissHandler. Memory Parameter: Das Speicherfenster welches von einem RealtimeThread addressiert werden kann, wird durch den Memory Parameter spezifiziert, er definiert eine max. Speicherbereich im HeapMemory, ImmortelMemory oder im ScopedMemory. Memory Area: Der Speicherbereich in dem ein RealtimeThread instanziert werden kann, wird durch den MemoryArea Parameter spezifiziert. MemoryArea area = HeapMemory.instance(); Processing Group: RealtimeThreads können in ProcessingGroups verwaltet werden. Wie auch der Release Parameter, besteht die ProcessingGroup aus T Startzeit, T Periode, T deadline, T maxaus f uehrungszeit, sowie einen OverRunHandler und einen MissHandler. Bei der Zuordnung eines RealtimeThread Objektes zu einer ProcessingGroup übernimmt das Thread Objekt die Eigenschaften der ProcessingGroup. Logic: Referenz auf ein Objekt, dass das Interface Runnable implementiert. Runnable logic = new MyThread(); Listing 4 zeigt wie ein RealtimeThread parametrisiert und gestartet wird. EADS Deutschland GmbH 36 von 75

9 Listing 4: Erzeugen und starten eines parametrisierten RealtimeThread Objektes 1 import javax. r e a l t i m e. ; 2 3 public c l a s s FullConstructor { 4 public s t a t i c void main ( S t r i n g [ ] args ){ 5 SchedulingParameters scheduling = 6 new P r i o r i t y P a r a m e t e r s ( P r i o r i t y S c h e d u l e r. MIN Priority ) ; 7 ReleaseParameters r e l e a s e = 8 new AperdicParameters ( null, null, null, null ) ; 9 MemoryParameters memory = 10 new MemoryParameters ( MemoryParameters.NO MAX, 0 ) ; 11 MemoryArea area = HeapMemory. i n s t a n c e ( ) ; 12 ProessingGroupParameters group = null ; 13 Runnable l o g i c = new MyThread ( ) ; 14 RealtimeThread r t = 15 new RealtimeThread ( scheduling, r e l e a s e, memory, area, group, l o g i c ) ; 16 r t. s t a r t ( ) ; 17 t r y { 18 r t. j o i n ( ) ; 19 } 20 catch ( Exception e ){} 21 } 22 } 23 } EADS Deutschland GmbH 37 von 75

10 Speicherverwaltung und Garbage Collection Die Standard JavaVM-Spezifikation sieht keinen Garbage Collector vor, fordert dagegen aber eine Möglichkeit dynamisch Speicher zu allokieren, ohne einen Mechanismus bereitzustellen, der den allokierten Speicher wieder frei gibt. Die RTSJ folgt diesem Ansatz und führt zu dem bereits existierenden HeapMemory zusätzlich zwei neue Speicherbereiche ein, die nicht vom GC beinträchtigt werden. Die zwei neuen Speicherbereiche heissen ImmortalMemory und ScopedMemory HeapMemory: Auf einer Heapinstanz operiert ein GC-Thread, der die höchste Priorität besitzt. Dies impliziert, dass der GC jeden Thread der auf dem Heap arbeitet, unterbrechen kann, was wiederum in harten Echtzeitumgebungen nicht toleriert wird. Die Non-Heap Memory Klassen der RTSJ geben dem Programmierer Freiheitsgrade, die es ermöglichen, die Verzögerungen des GC zu umgehen. Um dies zu erreichen dürfen Objekte nicht auf dem Heap, sondern müssen auf dem Immortal- oder ScopedMemory allokiert werden. ImmortalMemory: Der ImmortalMemory besitzt keine Speicherverwaltung. Diese Instanz wird nicht vom GC beinträchtigt. Diese MemoryArea kann während der gesamten Laufzeit von allen aktiven Objekten der Anwendung referenziert werden. Objekte die im ImmortalMemory erzeugt werden, bleiben bis zum Ende der Anwendung im Speicher - sie sind unsterblich. Listing 5: Erzeugen eines Objektes im ImmortalMemory 1 2 ImmortalMemory. i n s t a n c e ( ). enter ( 3 new Runnable ( ) { 4 public void run ( ) { 5 / / in t h i s s c o p e immortal i s t h e d e f a u l t f o r 6 / / memory a l l o c a t i o n 7 o = new Object ( ) ; / / This O b j e c t i s immortal 8 } 9 } 10 } ; EADS Deutschland GmbH 38 von 75

11 ScopedMemory: Diese Speicherinstanz hat eine begrenzte Lebenszeit. Objekte die im Adressraum dieses Speichertyps existieren, können nicht deallokiert werden. Ein Objekt von ScopedMemory und somit alle in ihm gespeicherte Objekte existieren so lange, wie noch mindestens ein Thread den ScopedMemory referenziert. ScopedMemory wird in LTMemory (engl. linear time memory) und VT- Memory (engl. variable time memory) unterteilt. LTMemory garantiert eine lineare Abhänigkeit der Zeit bei der Zuteilung eines Objektes zu einem Speicherberich. Die Abhänigkeit bezieht sich dabei auf die Grösse des Adressbereiches. VTMemory unterliegt nicht den Restriktion der linearen Abhänigkeit von Zeit zur Objektgrösse. Bei der Zuweisung darf hier beliebige, wenn auch nicht unendliche Zeit vergehen. Die Verwendung von VTMemory ist aus den oben genannten Gründen abzuraten. Listing 6: Erzeugen eines Objektes im ScopedMemory 1 2 / / c r e a t e s a 16 k i l o b y t e s memory a r e a o b j e c t named mem 3 LTMemory mem = new LTMeory ( , ) ; mem. e n t e r ( new 4 Runnable ( ) { 5 public void run ( ) { 6 o = new Object ( ) ; / / This O b j e c t w i l l be a l l o c a t e d in 7 / / ScopedMemory 8 } 9 } ) ; EADS Deutschland GmbH 39 von 75

12 Asynchrones Eventhandling In einem RTS treten unabhängige Ereignisse oft asynchron zum regulären Programmablauf auf. Mögliche Ereignisse sind: die maximale Temperatur eines Systems ist erreicht, ein Thread verfehlt seine Deadline. Die Echtzeitsoftware muss auf diese Ereignisse (extern als auch intern) rechtzeitig reagieren, ohne die Zeitrestriktionen der laufenden Threads zu überschreiten. Zu diesem Zweck führt die RTSJ sogenannte schedulable objects ein. Der AsyncEventHandler (AEH) als auch die RealtimeThreads implementieren das Interface Schedulable und können somit dem Scheduler parametrisiert zur Ausführung übergeben werden. Ein AEH kann einem AsyncEvent (AE) mit event.addhandler(handler) übergeben werden. Die Assoziation zwischen Systeminterrupt und einem AsyncEvent wird mit event.bindto( signalname ) realisiert. Der Signalname ist plattformabhängig. Listing 7 erzeugt einen AsyncEventHandler und zeigt dessen Anwendung. Listing 7: Beispielanwendung eines AEH 1 import javax. r e a l t i m e. ; 2 3 public c l a s s SigEvt extends RealtimeThread { 4 public void run ( ) { 5 MemoryArea immortal = ImmortalMemory. i n s t a n c e ( ) ; 6 AsyncEventHandler handler = null ; 7 AsyncEvent event = null ; 8 t r y { handler = ( AsyncEventHandler ) immortal. newinstance ( SigHandler. c l a s s ) ; 9 event = ( AsyncEvent ) immortal. newinstance ( AsyncEvent. c l a s s ) ; 10 } 11 catch ( I n s t a n t i a t i o n E x c e p t i o n e ){ 12 e. p r i n t S t a c k T r a c e ( ) ; 13 } 14 catch ( I l l e g a l A c c e s s E x c e p t i o n e ){ 15 e. p r i n t S t a c k T r a c e ( ) ; 16 } 17 event. addhandler ( handler ) ; 18 event. bindto ( 2 5 ) ; / / Signalnumber event. f i r e ( ) ; event. f i r e ( ) ; event. f i r e ( ) ; 20 t r y { Thread. sleep ( ) ; / / L e t t h e AEH run 21 } 22 catch ( Exception e ){} 23 event. removehandler ( handler ) ; 24 System. e x i t ( 0 ) ; 25 } public s t a t i c void main ( S t r i n g [ ] args ){ 28 sigevent r t = new SigEvent ( ) ; 29 r t. s t a r t ( ) ; 30 t r y { 31 r t. j o i n ( ) ; 32 } catch ( InterruptedException e ){} 33 System. e x i t ( 0 ) ; 34 } 35 } EADS Deutschland GmbH 40 von 75

13 Physikalischer Speicherzugriff Durch die Klassen RawMemoryAccess und RawMemoryFloatAccess wurde in der RTSJ die Möglichkeit geschaffen Speicheradressen mittels Zeiger zu referenzieren. Dies ermöglicht eine effiziente Art direkten Zugriffs auf die Memory Mapped Hardware zu erlangen. Ein Objekt der Klasse RawMemoryAccess ist an einen Speicherbereich gebunden, welcher dem Konstruktor übergeben wird. RawMemoryAccess( java.lang.object type, long size ); type: Der Parameter type klassifiziert die Hardware, welche auf einen Speicherbereich gemapped werden soll, er definiert desweiteren die Art des Zugriffes der VM. Die Menge der unterstützten Hardwaretypen ist Plattformabhängig. size: Definiert die zu reservierende Speichergrösse. Listing 8: Speicherzugriff 1 2 S t r i n g [ ] type = new S t r i n g [ 4 ] ; 3 type [ 0 ] = new S t r i n g ( device ) ; 4 type [ 1 ] = new S t r i n g ( e t h e r n e t ) ; 5 type [ 2 ] = new S t r i n g ( I n t e l ) ; 6 type [ 3 ] = new S t r i n g ( no cache ) ; 7 8 RawMemoryAccess edvc = new RawMemoryAccess ( type, ) ; Ein Nachteil der RTSJ ist, dass eine Anwendung strikt in einen Echtzeit- und in einen Nicht-Echtzeit- Anteil aufgeteilt werden muss. Eine Kommunikation zwischen den beiden Teilen ist nur stark eingeschränkt möglich. Echtzeit-Threads können keine Speicheranweisungen durchführen, wie etwa die Allokation auf dem Heap. EADS Deutschland GmbH 41 von 75

14 3.3 Echtzeitimplementierungen Durch den Einsatz einer EchtzeitVM wird Java in die Domäne der echtzeitkritischen Anwendungen transportiert. Eine für diese Ausarbeitung durchgeführete Marktanalyse zeigt, dass es zum derzeitigen Stand der Diplomarbeit zwei konkurrierende Hersteller von Java-Echtzeitlösungen gibt. Die Firma aicas mit der echtzeitfähigen Jamaica Virtual Machine (JamaicaVM) und die Firma Aonix mit echtzeitfähigen PERC Virtual Machine. Ein von EADS Deutschland GmbH durchgeführter Performancevergleich zwischen JamaicaVM und PERC [BEN2003] belegt, dass die JamaicaVM die performantere Lösung ist. Aus diesem Grund wird in dieser Ausarbeitung die JamaicaVM verwendet und im Folgenden vorgestellt JamaicaVM Die Jamaica Virtual Machine ist eine echtzeitfähige Java-Implementierung nach der RTSJ [RTSJ1999] mit folgenden Eigenschaften [AIC2004]. Harte Echtzeitausführung Die JamaicaVM garantiert harte Echtzeit für alle Java-Operationen. Realtime Garbage Collection: Die JamaicaVM besitzt einen deterministischen, inkrementellen Garbage Collector. Dieser GC arbeitet nach dem Mark and Sweep Algorithmus und gewährleistet, dass keine Anwendungsthreads zu unvorhersehbaren Zeitpunkten durch den GC unterbrochen werden. Die Separierung der Anwendung, in Echtzeit- und Nicht-Echtzeitthreads entfällt - alle Threads sind Echtzeitthreads. Eine strikte Einteilung einer Anwendung in zwei Teile ist damit nicht mehr erforderlich. Threads werden nach ihrer Priorität bzw. anderen Schedulingstrategien eingeplant und zugeteilt. Der inkrementeller Garbage Collector arbeitet deterministisch innerhalb der Anwendungsthreads bei der Zuweisung von Speicher. Der Garbage Collector ist dabei immer unterbrechbar, sodass andere Threads aktiv werden können, und dringendere Aufgaben erledigen können. Abbildung 14: Echtzeit Garbage Collection: Alle Threads sind Echtzeitthreads. Quelle: aicas ROM-fähiger Code: Klassendateien und die JamaicaVM selbst können in eine Binärdatei gebunden werden, die direkt aus ROM/Flash Speicher ausführbar ist. Es wird kein Dateisystem benötigt um Java-Code auszuführen. Bibliotheken und Native Code: Existierende Bibliotheken oder performancekritischer low-level Code für Hardwarezugriffe können über das Java Native Interface in den echtzeitfähigen Code eingebunden werden. Portierbar auf unterschiedliche RTOS: Unterstützt werden derzeit: VxWorks, QNX und Linux-Varianten Klassendateien und die JamaicaVM selbst können in eine Binärdatei gebunden werden, die direkt aus ROM/Flash Speicher ausführbar ist. Dabei wird aus dem Java-Bytecode ein portabler C-Code erstellt. Der C-Code wird mit einem native C-Compiler kompiliert und zusammen mit den JamaicaVM-Dateien EADS Deutschland GmbH 42 von 75

15 zu einer ausführbaren Datei gelinkt. Die Firma aicas integrierte diesen Prozess in den JamaicaVM Builder der in Abbildung 15 dargestellt ist. Abbildung 15: Der JamaicaVM Builder erzeugt aus dem Java-Bytecode eine ausführbare Datei für das Zielsystem. Quelle: aicas PERC Die PERC Virtual-Machine ist eine echtzeitfähige Java-Implementierung nach der Real-Time Core Extensions for the Java platform [RTCE1999]. Die Eigenschaften von PERC sind in [AON2004] beschrieben. EADS Deutschland GmbH 43 von 75

16 4 Performancevergleich: C vs. Java In diesem Teil der Ausarbeitung wird die Ausführungsgeschwindigkeit von Java- und C-Programmen untersucht. Für diesen Vergleich werden jeweils drei Testprogramme (engl. Benchmark) auf einem Win2k und einem VxWorks5.5 System ausgeführt, deren Ausführungsgeschwindigkeit gemessen und interpretiert. Diese Benchmarks werden in Kapitel 4.1 beschrieben. Kapitel 4.3 interpretiert die Testergebnisse auf den verwendeten Plattformen. Kapitel 4.4 zeigt die verwendeten Compiler-Optionen. Der Quellcode der einzelenen Benchmarks befindet sich in Anhang A im Verzeichnis./benchmark/ 4.1 Verwendete Benchmarks Es wurden drei Benchmarks verwendet, um die Ausführungsgeschwindigkeit zu bestimmen. Verwendet wurde: SciMark2.0 SciMark2.0 [SciMark2.0] ist ein Benchmark für numerische Lösungsverfahren und misst die Performance mathematischer Algorithmen. Dieser Benchmark besteht aus folgenden fünf Algorithmen: Fast Fourier Transformation (FFT) ist die Umwandlung einer Zeitfunktion oder Folge in ein Spektrum. Jacobi Successive Over-Relaxation (SOR) ist ein Verfahren zur Lösung eines linearen Gleichungssystems. Monte Carlo integration ist ein Verfahren zur Berechnung von π. Sparse matrix multiply ist die Multiplikation dünn besetzter Matritzen. dense LU matrix factorization ist die Zerlegung einer quadratischen Matrix A in ein Produkt A = L U. Dabei ist L eine untere Dreiecksmatrix mit Einsen auf der Diagonale und U eine obere Dreiecksmatrix. Dieser Benchmark testet die Floating Point Performance auf der untersuchten Plattform Loops Loops [c t Ausg.19] ist ein Benchmark, der die Schleifenperfomance in ms misst. Loops besteht aus drei Schleifen, die jeweils dreifach verschachtelt sind. Dabei führt eine Schleife (Empty Loop) keinen Code aus, die zweite (Calc Loop) inkrementiert einen Zähler und die dritte Schleife (Real Calc Loop) führt eine Berechnung durch. Loops misst die Schleifen-Perfomance auf der untersuchten Plattform RSA-Angriff RSA-Angriff [c t Ausg.19] zerlegt eine 64-Bit Zahl in Faktorenpaare. Der Code des in zwei Varianten aufrufbaren Programms kann als Brute-Force Schleife und als rekursiver Algorithmuns aufgerufen werden. Dieser Benchmark testet die Integer-Performance auf der untersuchten Plattform. EADS Deutschland GmbH 44 von 75

17 4.2 Verwendete Plattformen Die in Kapitel 4.1 verwendeten Benchmarks wurden auf fogenden Systemen getestet: Win2k Microsoft Windows 2000 System mit der Version und installierten Service Pack 2. Das Testsystem besitzt MB RAM. Die CPU ist ein Intel Pentium 4 mit einer Taktfrequenz von 1.7 GHz VxWorks5.5 Windriver VxWorks5.5 System. Das TestSystem besitzt 256 MB RAM. Die CPU ist ein PPC 7410 mit einer Taktfrequenz von 500 MHz. Abbildung 16 zeigt eine Übersicht über die durchgeführten Testkonstulationen für jeweils einen Benchmark. Für jeden Benchmark wurden sieben Tests durchgeführt, fünf auf Plattform und zwei auf Plattform C Anwendung Java Anwendung C Anwendung Java Anwendung C/gcc C/Jamaica C/gcc C/MSVC Jamaica VM C/Jamaica Sun VM MinGW PThread VxWorks Win2k PPC Pentium Abbildung 16: SciMark2 auf Win2k. EADS Deutschland GmbH 45 von 75

18 4.3 Interpretation der Testergebnisse Laufzeitüberprüfungen haben einen signifikanten Einfluss auf die Ausführungsgeschwindigkeit. C führt keine Überprüfungen während der Laufzeit durch. Um Java und C miteinander vergleichen zu können, wurde für die kompilierte Version mit Jamaica 2.3 beta die Laufzeitüberprüfung deaktiviert. Um einen Vergleich zu unterschiedlichen C-Compilern aufzeigen zu können, wurde jeder Benchmark sowohl mit dem gcc 2.96 als auch mit dem Microsoft VC6.0 kompiliert. Für die Testergebnisse von Sun wurde der Interpreter mit der Version verwendet. Der Bytecode der kompilierten Java-Benchmarks, wurde durch den JamaicaVM Builder in C-Dateien transformiert und anschließend mit dem gcc 2.96 kompiliert SciMark2.0 Abbildung 17 und 18 zeigen die Ergebnisse des SciMark2.0 [SciMark2.0] Benchmarks. Auf der Y-Achse ist jeweils die Ausführungsgeschwindigkeit in Million floating point operations per second (Mflops) angegeben. Auf der X-Achse sind die einzelnen Algorithmen des SciMark2.0 aufgetragen. Jeder Benchmark ist in der Abbildung durchnummeriert, um einen direkten Bezug auf den entsprechenden Test nehmen zu können. SciMark2.0 auf Win2k Abbildung 17 zeigt die Testergebnisse des SciMark2.0 [SciMark2.0] auf Plattform Test 1 und 2 wurden interpretiert ausgeführt. Test 3,4 und 5 wurden kompilert. Der Vergleich von Test 1 und 2 zeigt, dass die Interpretation durch die JamaicaVM signifikant schlechtere Ergebnisse liefert als die Interpretation durch die VM von Sun. Der Grund liegt darin, dass Sun einen JIT-Compiler benutzt und somit den Bytecode nicht mehr zu 100 Prozent interpretiert ausführt. Test 3,4 und 5 wurden vollständig kompiliert. Die Ergebnisse zeigen ein ausgewogenes relatives Verhältnis der einzelnen Algorithmen zueinander. Überraschend ist, dass die FFT mit Jamaica im direkten Geschwindigkeitsvergleich schneller ausgeführt werden konnte, als das korrespondierende C-Programm, welches mit dem gcc übersetzt wurde. EADS Deutschland GmbH 46 von 75

19 Ausführungsgeschwindigkeit [Mflops] Benchmark: SciMark2 auf Win2k FFT SOR Monte Carlo Sparse mult. LU Sun Jamaica Jamaica, gcc C, Microsoft C, gcc Abbildung 17: SciMark2 auf Win2k. EADS Deutschland GmbH 47 von 75

Java Real-Time Specification

Java Real-Time Specification Ausgewählte Kapitel eingebetteter Systeme Java Real-Time Specification Tobias Distler 05.07.2006 Java und Echtzeit? Problem Nichtdeterministisches Verhalten der Garbage Collection Weitere Nachteile Scheduling

Mehr

Echtzeitprogrammierung in Java. Franziska Häger Seminar: Prozesssteuerung und Robotik

Echtzeitprogrammierung in Java. Franziska Häger Seminar: Prozesssteuerung und Robotik Echtzeitprogrammierung in Java Franziska Häger Seminar: Prozesssteuerung und Robotik Agenda Einführung Warum Java? Java Real Time Probleme Real Time Specification for JAVA (RTSJ) Programmierung Threads

Mehr

The Real-Time Specification for Java

The Real-Time Specification for Java Echtzeitprogrammierung in Java The Real-Time Specification for Java Andrzej Kononowicz Clausthal 2003 Real-Time Java Specification 1 Eignung von Java für Echtzeitsysteme Java wurde nicht zur Programmierung

Mehr

Institut für Informatik Arbeitsgruppe Softwaretechnik Warburger Str. 100 33098 Paderborn. Java Real-Time. Seminarausarbeitung im Rahmen des Seminars

Institut für Informatik Arbeitsgruppe Softwaretechnik Warburger Str. 100 33098 Paderborn. Java Real-Time. Seminarausarbeitung im Rahmen des Seminars Institut für Informatik Arbeitsgruppe Softwaretechnik Warburger Str. 100 33098 Paderborn Java Real-Time Seminarausarbeitung im Rahmen des Seminars Trends in der Softwaretechnik für Echtzeitsysteme Sommersemester

Mehr

Aspektorientierte Programmierung (aspect-oriented programming, AOP)

Aspektorientierte Programmierung (aspect-oriented programming, AOP) Aspektorientierte Programmierung (aspect-oriented programming, AOP) Abstract Die aspektorientierte Programmierung ist ein neues Programmierparadigma, das die Probleme und Nachteile, die aus der prozeduralen

Mehr

Real Time Java: Ein Überblick

Real Time Java: Ein Überblick Real Time Java: Ein Überblick Seminararbeit im Fach Informatik im Rahmen des Seminars Sicherheitskritische Systeme an der Universität Siegen, Fachgruppe für Praktische Informatik eingereicht bei Dr. Jörg

Mehr

Optimierung der Code-Generierung virtualisierender Ausführungsumgebungen zur Erzielung deterministischer Ausführungszeiten

Optimierung der Code-Generierung virtualisierender Ausführungsumgebungen zur Erzielung deterministischer Ausführungszeiten Optimierung der Code-Generierung virtualisierender Ausführungsumgebungen zur Erzielung deterministischer Ausführungszeiten Martin Däumler Matthias Werner Lehrstuhl Betriebssysteme Fakultät für Informatik

Mehr

Java Virtual Machine (JVM) Bytecode

Java 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,

Mehr

Übung: Verwendung von Java-Threads

Ü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

Mehr

Diplomarbeit Antrittsvortrag

Diplomarbeit Antrittsvortrag Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...

Mehr

J.5 Die Java Virtual Machine

J.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

Mehr

RTEMS- Echtzeitbetriebssystem

RTEMS- Echtzeitbetriebssystem RTEMS- Echtzeitbetriebssystem Name: Hussein Hammoud Matrikel- Nr.: 230768 Studiengang: Technische Informatik Fach: Projekt Eingebettete Kommunikation Technische Universität Berlin Sommersemester 2006 RTEMS-

Mehr

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme

OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme OSEK / OSEKtime Ausgewählte Kapitel eingebetteter Systeme Wilhelm Haas Wilhelm.Haas@informatik.stud.uni-erlangen.de Friedrich-Alexander-Universität Erlangen-Nürnberg Institut für Informatik Lehrstuhl 4

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

4 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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien

Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Friedrich-Alexander-Universität Erlangen-Nürnberg Ausgewählte Kapitel eingebetteter Systeme Echtzeitfähige Ereignisgetriebene Scheduling-Strategien Sven Kerschbaum 1. Einführung Bei einem eingebetteten

Mehr

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

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi 06.09.10 1 Kapitel 1 Einstieg in Java Dr. Elham Firouzi 06.09.10 1 1 : Einstieg in Java Einleitung Ein erstes Beispiel Berner Fachhochschule Entwicklung von Java-Programmen Applikationen Applets Vor und Nachteile

Mehr

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind Betriebssysteme Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind Umfaßt z.b. auch Compiler, Interpreter und Dienstprogramme

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

1. Java Grundbegriffe

1. Java Grundbegriffe 1. Java Grundbegriffe Geschichte von Java Programmieren mit Java Interpretieren vs. Kompilieren Java Byte-Code Jave Virtual Machine Arbeitsmaterialien Allgemeine Informatik 2 SS09 Folie 1.1 Java, eine

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

Der Scheduler von Windows Konzepte und Strategien

Der Scheduler von Windows Konzepte und Strategien Gliederung Der Scheduler von Windows Konzepte und Strategien Daniel Lohmann 1 Grundbegriffe 2 Eigenschaften des Schedulers Grundlegende Eigenschaften Prioritätenmodell Dynamische Prioritätenanpassungen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

Mehr

CLR CIL MCS ECMA-335. Linux.Ne t. 2005 Albrecht Liebscher, Erlanger Linux Tage

CLR CIL MCS ECMA-335. Linux.Ne t. 2005 Albrecht Liebscher, Erlanger Linux Tage C# CLR CIL MCS ECMA-335 Linux.Ne t Was ist.net? Microsoft Homepage:.NET is the Microsoft Web services strategy to connect information, people, systems and devices through software. Mono Handbuch:.Net besteht

Mehr

Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik

Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik Echtzeit 2010 Alexej Schepeljanski Martin Däumler Matthias Werner Echtzeit 2010 / 18. November 2010

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen 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

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick Vorlesung Objektorientierte Softwareentwicklung Sommersemester este 2008 Kapitel 0. Java-Überblick Was sind die Ziele? Warum Java? Komplexe Anwendungen e-business verteilt zuverlässig sicher mobil persistent

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlö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

Mehr

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise

Coma I. Einleitung. Computer und Algorithmen. Programmiersprachen. Algorithmen versus Programmiersprachen. Literaturhinweise Coma I Einleitung 1 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen Literaturhinweise 2 Computer und Algorithmen Programmiersprachen Algorithmen versus Programmiersprachen

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Grundlagen von Python

Grundlagen 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

Mehr

Vorkurs C++ Programmierung

Vorkurs 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:

Mehr

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

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH ARM Cortex-M Prozessoren Referat von Peter Voser Embedded Development GmbH SoC (System-on-Chip) www.embedded-development.ch 2 Instruction Sets ARM, Thumb, Thumb-2 32-bit ARM - verbesserte Rechenleistung

Mehr

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

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Institut für Verteilte Systeme

Institut für Verteilte Systeme Institut für Verteilte Systeme Prof. Dr. Franz Hauck Seminar: Multimedia- und Internetsysteme, Wintersemester 2010/11 Betreuer: Jörg Domaschka Bericht zur Seminarssitzung am 2011-01-31 Bearbeitet von :

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161? Was machen wir heute? Betriebssysteme Tutorium 2 Philipp Kirchhofer philipp.kirchhofer@student.kit.edu http://www.stud.uni-karlsruhe.de/~uxbtt/ Lehrstuhl Systemarchitektur Universität Karlsruhe (TH) 1

Mehr

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7 Echtzeitprogrammierung und Echtzeitverhalten von Frank Erdrich Semester AI 7 Inhalt Einleitung Echtzeit und Echtzeitsysteme Echtzeitprogrammierung Real-Time Operating System Keil RTOS RTX Zusammenfassung

Mehr

Einfü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 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

Mehr

Projekt für Systemprogrammierung WS 06/07

Projekt für Systemprogrammierung WS 06/07 Dienstag 30.01.2007 Projekt für Systemprogrammierung WS 06/07 Von: Hassan Bellamin E-Mail: h_bellamin@web.de Gliederung: 1. Geschichte und Definition 2. Was ist Virtualisierung? 3. Welche Virtualisierungssoftware

Mehr

Die ersten C#- Programme erstellen

Die ersten C#- Programme erstellen Zusatzkapitel zu Kapitel 3: Die ersten C#- Programme erstellen I - Erste Schritte Richtig einsteigen: Programmieren lernen mit Visual C# 2005 Website zum Buch: www.vsxpress.de Auf den folgenden Seiten

Mehr

Die Integration zukünftiger In-Car Multimedia Systeme unter Verwendung von Virtualisierung und Multi-Core Plattformen

Die Integration zukünftiger In-Car Multimedia Systeme unter Verwendung von Virtualisierung und Multi-Core Plattformen Die Integration zukünftiger In-Car Multimedia Systeme unter Verwendung von Virtualisierung und Multi-Core Plattformen 0. November 0 Sergio Vergata, Andreas Knirsch, Joachim Wietzke Echtzeit 0 Agenda Motivation

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel

VS4 Slide 1. Verteilte Systeme. Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel VS4 Slide 1 Verteilte Systeme Vorlesung 4 vom 29.04.2004 Dr. Sebastian Iwanowski FH Wedel Inhaltsverzeichnis für die Vorlesung Zur Motivation: 4 Beispiele aus der Praxis Allgemeine Anforderungen an Verteilte

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Implementierung der Jikes Research Virtual Machine

Implementierung der Jikes Research Virtual Machine Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik

Mehr

Redwood Cronacle und REALTECH theguard! Integration

Redwood Cronacle und REALTECH theguard! Integration Redwood Cronacle und REALTECH theguard! Integration Einleitung Redwood Software und REALTECH haben gemeinsam eine Lösung entwickelt, die die Systemverfügbarkeit von SAP und mysap Systemen signifikant erhöht.

Mehr

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Programmierung. Programme, Compiler, virtuelle Maschinen, Java 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

Mehr

POSIX Echtzeit: Kernel 2.6 und Preempt-RT

POSIX Echtzeit: Kernel 2.6 und Preempt-RT POSIX Echtzeit: Kernel 2.6 und Preempt-RT Slide 1 - http://www.pengutronix.de - 21.01.2007 Echtzeit-Systemplanung Wenn das zeitliche Verhalten spezifiziert ist, kann auch spezifiziert werden, welche Applikationsteile

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Proseminar Technische Informatik A survey of virtualization technologies

Proseminar Technische Informatik A survey of virtualization technologies Proseminar Technische Informatik A survey of virtualization technologies Referent: Martin Weigelt Proseminar Technische Informatik - A survey of virtualization technologies 1 Übersicht 1. Definition 2.

Mehr

C# im Vergleich zu Java

C# 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

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

Mehr

Einführung in COM. 04.04.2006 Seite 1

Einführung in COM. 04.04.2006 Seite 1 Einführung in COM 04.04.2006 Seite 1 Ziele Sie kennen die Funktion der Registry für COM Sie können die Struktur eines COM-Objekts erklären Sie können erklären, wie ein remote-server gestartet wird 04.04.2006

Mehr

4D Server v12 64-bit Version BETA VERSION

4D 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

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

Grundlagen der Informatik Ausnahmebehandlung & Threads

Grundlagen der Informatik Ausnahmebehandlung & Threads Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung

Mehr

JAVA als erste Programmiersprache Semesterkurs

JAVA als erste Programmiersprache Semesterkurs JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Marketing Update. Enabler / ENABLER aqua / Maestro II

Marketing Update. Enabler / ENABLER aqua / Maestro II Marketing Update Enabler / ENABLER aqua / Maestro II Quartal 01/2012 1 Kommentar des Herausgebers Liebe Kunden und Partner, dieser Marketing Update gibt Ihnen einen kurzen Überblick über die aktuell verfügbaren

Mehr

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

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen L AKTUEL ZU fritz JOBST JAVA 8 PROGRAMMIEREN IN JAVA 7. Auflage Im Internet: Alle Beispielprogramme und Lösungen 4 1 Der Einstieg in Java keinem Fall zulässig. Die Schreibweisen Hello.java für den Namen

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

0. Einführung. C und C++ (CPP)

0. Einführung. C und C++ (CPP) C und C++ (CPP) 0. Einführung Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte Wissenschaften marc.rennhard@zhaw.ch Marc Rennhard, 05.01.2010,

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Operating System Kernels

Operating System Kernels Operating System Kernels von Patrick Bitterling 1 Themenübersicht -Eine Einleitung über Kernel -Begriffserklärung, Architekturen -Kernel Subsysteme -Prozess-Scheduling, Speichermanagement,... -Der Networking

Mehr

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit.

Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit. 1 Seminar zum Programmierprojekt Arbeitsbereich Technische Informatik Ausgabe: 30. April 2008 Anleitung B3 Einführung in die Entwicklungsumgebungen Allgemeines In dieser Aufgabe lernen wir die Entwicklungsumgebungen

Mehr

Einführung in Betriebssysteme

Einführung in Betriebssysteme Einführung in Betriebssysteme APPLE ios Entwicklung von ios Entwickelt auf der Basis von MacOS X UNIX Vorgestellt am 9.1.2007 Zusammen mit iphone Markenname von Cisco Internetwork Operating System Für

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil 18.04.2002

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil 18.04.2002 Die L4-Mikrokern Mikrokern-Familie Hauptseminar Ansätze für Betriebssysteme der Zukunft 18.04.2002 Folie 1 Aufbau des Vortrags 1. Mikrokerne: Idee und Geschichte 2. L4: ein schneller Mikrokern 3. L4Linux:

Mehr

Konzeption eines Backends für eine Liquid-Bedienoberfläche

Konzeption eines Backends für eine Liquid-Bedienoberfläche Konzeption eines Backends für eine Liquid-Bedienoberfläche Gruppe Backend Hochschule für Technik und Wirtschaft Dresden Fakultät Informatik/Mathematik 25. Januar 2012 1 / 27 Gliederung 1 Einleitung 2 AIR

Mehr

Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag

Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag Mark Brörkens Universität Oldenburg, Fachbereich Informatik Email: Mark.Broerkens@informatik.uni-oldenburg.de Einleitung Programmieren mit Vertrag

Mehr

Simple Scope. ecos-vertiefung. Florian Franzmann Tobias Klaus Peter Wägemann

Simple Scope. ecos-vertiefung. Florian Franzmann Tobias Klaus Peter Wägemann Simple Scope ecos-vertiefung Florian Franzmann Tobias Klaus Peter Wägemann Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl Informatik 4 (Verteilte Systeme und Betriebssysteme) http://www4.cs.fau.de

Mehr

Vgl. Oestereich Kap 2.7 Seiten 134-147

Vgl. Oestereich Kap 2.7 Seiten 134-147 Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte

Mehr

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

Java - Einführung in die Programmiersprache. Leibniz Universität IT Services Anja Aue Java - Einführung in die Programmiersprache Leibniz Universität Anja Aue Handbücher am RRZN Programmierung. Java: Grundlagen und Einführung Java: Fortgeschrittene Techniken und APIs Java und XML Java -

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Kapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java. 2.1.1 Historisches. 2.1.2 Eigenschaften von Java

Kapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java. 2.1.1 Historisches. 2.1.2 Eigenschaften von Java Kapitel 2 Java: Der Einstieg Im vorigen Kapitel haben wir die Syntax der Sprache Mini-Java kennengelernt. Bevor wir in Kapitel 3 ausführlich auf Syntax und Semantik der Programmiersprache Java eingehen

Mehr