Java und Ruby: ein Vergleich. Heinz Serfas Hochschule für Technik Stuttgart 20. Oktober 2007

Größe: px
Ab Seite anzeigen:

Download "Java und Ruby: ein Vergleich. Heinz Serfas Hochschule für Technik Stuttgart 20. Oktober 2007"

Transkript

1 Java und Ruby: ein Vergleich Heinz Serfas Hochschule für Technik Stuttgart 20. Oktober 2007

2 Inhaltsverzeichnis 1 Einleitung 1 2 Java Java Spracheigenschaften Java Sprachkonzepte Ruby Ruby Spracheigenschaften Ruby Sprachkonzepte Vergleich Spracheigenschaften Sprachkonzepte Schluss und Ausblick 9 I

3 1 Einleitung Viele Programmiersprachen haben feste Einsatzgebiete, in denen sie nicht wegzudenken sind. Einige von ihnen existieren nur um einen einzigen Zweck zu erfüllen. Andere heißen general purpose Sprachen, da sie für viele allgemeine Softwareentwicklung verwet werden. Java als general purpose Sprache hat sich in diesen Gebiet etabliert und ist aus kaum einer Softwarefirma wegzudenken. Für neue Sprachen ist es schwierig sich in Sgementen zu etablieren, die bereits von anderen Sprachen gehalten werden. Allerdings gibt es eine neuere Sprache die dies trotzdem schafft, die mittlerweile bereits häufig Verwung in Segmenten findet, die ehemals andere Sprachen inne hatten. Sie heisst Ruby. Nun stellt sich die Frage warum schafft Ruby andere bereits seit längerem etablierte Sprachen aus diesen Segmenten zu verdrängen. Welche Besonderheiten und Vorteile hat Ruby? Welche Neuerungen und Konstrukte sind derart einzigartig dass Entwickler von Ihnen gut bekannte Sprachen auf Ruby umsteigen? Hat Ruby letzlich evtl. sogar die Fähigkeit Java zu verdrängen? 2 Java 2.1 Java Spracheigenschaften JVM und ByteCode Java ist keine Programmiersprache die in lokalen Maschienencode kompiliert wird und dann dort sofort ausfürbar ist. Es ist vielmehr so, dass der traditionelle Java Kompiler Javacode in sogenannten Byte- Code kompiliert. Dieser Byte-Code wird in den aus Java Klassen generierte.class Dateien abgelegt. Byte-Code ist dabei eine Art Zwischencode, der nicht maschienenabhängig ist. Dies hat den Vorteil, dass der Byte-Code mit einem entsprechen Interpreter auf jeder Plattform lauffähig ist, auf der auch der Interpreter läuft. Dieser Interpreter übersetzt den Byte-Code zur Laufzeit in Maschienencode der dann zur Ausführung kommt. Der Maschienencode wird in keiner Datei gespeichert und ist nach der Beigung der JVM nicht mehr vorhanden. Für den Nutzer ist der tatsächliche Maschienencode also niemals sichtbar. [TJLS] Der Interpreter muss für jede Plattform geschrieben werden. Die Anwungsprogramm in Java allerdings nicht. Sie sind mittels dieses Konzeptes weitestgeh Plattformunabhängig. Der Java Interpreter wird im allgemeinen JVM (Java Virtuelle Maschiene) genannt. Die JVM bildet eine Laufzeitumgebung, die für jedes Programm gestartet wird, so hat jedes Java Programm das zur Ausführung gelangt, seine eigene JVM in der es weitestgeh unabhängig läuft. Insbesondere Nebenläufige Programme teilen sich nicht eine JVM, sondern laufen in gesonderten JVMs. Java vereinigt also die Konzepte der Kompilierung mit denen der interpretierten Sprachen. Programmierparadigmen Softwareentwicklung für Grossysteme ist eine komplexe Aufgabe. Es muss das Problem identifiziert, verstanden und dann über 1

4 ein Design einen Lösungsansatz dafür enwickelt werden. Erst danach kann man zur konkreten Implementierung der Lösung, dem eigentlichen Programmieren schreiten. Auf diesem Wege verwet man eine Vielzahl von Modellen, die zur Vereinfachung dienen. Eines dieser Modelle ist die Prozedurale Sicht. Man beschreibt ein Programm indem man beschreibt welche Anweisungen es Ausführen muss. Diese Anweisungen werden zu sinnvollen Gruppen zusammengefasst, welche wiederkehre Aufgaben übernehmen. Eine weiteres Modell ist die Objektorientierung. Um dieses Modell im Detail zu Erklären reicht der Umfang dieser Arbeit nicht aus, deshalb im Folgem einige Grundsätze zur Objektorientierung. In Ihr sind Objekte die Basiselemente. Ein Programm wird als komplexes System von miteinander interagieren Objekten gesehen. Objekte haben Namen, kapseln Daten in Attributen und besitzen bestimmte Prozeduren. Ziel dieses Modelles ist es Objekte der realen Welt abzubilden. Klassen sind dabei eine Art Bauplan, nach denen Objekte aufgebaut werden. Klassen geben die Anzahl, Namen und Typen der Attribute sowie Prozeduren in Java Methoden genannt eines Objektes vor. Objekte besitzen immer mindestens einen Typ, d.h. eine Klasse nach deren Plan sie funktionieren. Allgmeine können von einer Klasse mehrere Objekte erschaffen werden. Es ist denkbar, dass Objekte mehrere Typen besitzen, also nach mehreren Klassen gebaut werden. Dieser Fall der Mehrfachvererbung ist in Java nur nur teilweise Möglich. Grundsätzlich erbt eine neue Klasse konkrete Implementierungen von genau einer anderen Klasse. Zusätzlich dazu kann eine Klasse in Java beliebg viele sogenannte Interfaces implementieren. Interfaces, sind rein formale Definitionen von Feldern und Methoden, und enthalten keinerlei Implementierung. Sie sind also so etwas wie ein Gerüst einer Klasse. Wenn eine konkrete Klasse eine solches Schnittstelle benutzt, man sagt implementiert, muss diese alle in der Schnittstelle formal deklarierten Methoden ausimplementieren. Ist dies nicht der Fall würde der Java Kompiler einen Fehler melden, und die entspreche Klasse nicht kompilieren.[tjsl] Java ist speziell im Hinblick auf Objektorientierung entwickelt worden. In Java kann ein Entwickler keine Methode schreiben, ohne explizit dessen Klasse zu schreiben. Deshalb ist es mit Java kaum sinnvoll möglich Programme im Paradiga der Prozeduralen Programmierung zu verwirklichen. Schreibt man eine Software in Java so sollte man auf das der Entwicklung zugrunde liege Paradigma der Objektorientierung zurückgreifen. 2.2 Java Sprachkonzepte primitive Datentypen und Objekte Wie bereits im vorherigen Kapitel beschrieben ist Java fast außschließlich für die Objektorientierte Programmierung entworfen worden. Anserst als andere reine Objektorientierte Sprachen besitzt Java jedoch primitiven Datentyp wie z.b: int. Gleichwohl ist jeder komplexere Datentyp ein Objekt in Java. Wie in anderen Sprachen gibt es auch in Java eine Superklasse aller Klassen, diese heisst Object. Jedes Objekt in Java ist also entweder direkt oder indirekt vom Typ Object.[TJLS] Nun sind Methoden des objektorientierten Konzepte wie z.b. Vererbung, 2

5 Kapselung, Überladen und Überschreiben nur für Objekte nicht aber für die primitiven Datentypen einsetzbar. Es stellte sich heraus, dass in einer vollständig Objektorientierten Sprache auch diese Grunddatentypen als Objekte zur Verfügung stehen sollten. Daher die sogenannenten Wrapper Klasse. Die Objekte dieser Klassen kapseln die primitiven Datentypen. Der Gund dafür ist u.a., dass ohne diese Wrapperklassen, keine Collections mit diesen primitiven Datentypen möglich wären. Collections sind dynamische Implemtierungen von Listen, Stacks, Maps, usw. die allerdings allesamt nur Objekte aufnehmen können. Der Weg um trotzdem Collections von primitiven Datentypen zu bekommen führt also über diese Wrapper Klassen. Die primitiven Datentypen werden in Objekte gekapselt die ihrerseits sehrwohl in einer Collection aufgenommen werden können. Ab Java Version 1.5 braucht sich der Entwickler selbst nicht mehr darum zu kümmern wie er primitve Datentypen in Objekte, und anderst herum verpackt. Der Java Kompiler besitz mit dem sogenannten autoboxing ein Feature welches ihm erlaubt automatisch selbst von primitivem Datentyp auf Objekte und anderst herum zu wechseln. statische Typisierung Wie im Kapitel Eigenschaften Java - Objektorientierung beschrieben hat jedes Objekt einen Typ. In Java hat des weiteren jede Variable oder Konstante einen Typ, der zur Kompilezeit feststeht. Genau diesen umstand nennt man statisch typisiert. [TJLS] text = "Hallo Welt"; // allein nicht zulssig String text = "Hallo Welt"; // allein zulssig Da der Typ einer Variablen zur Kompilezeit bekannt ist, sind dem Kompiler auch die Methoden und Attribut welches dieses Objekt besitzt bekannt. Versucht man eine Methode für ein Objekt zu rufen, welche für den Typ des Objektes nicht definiert ist wirft der Kompiler einen Fehler und übersetzt den Code nicht.deshalb ist es nicht möglich eine Methode für ein Objekt aufzurufen, das dessen deklarierter Typ nicht besitzt. Daraus resultiert eine bestimmte Typsicherheit, da derlei Fehler bereits zur Kompilezeit entdeckt werden. Dieses statische Typsystem hat den großen Vorteil, dass sogenannten IDEs (Integrated Development Environements) aufgerufen Methoden oder Attribute eines Objektes validieren können, und ggf. Fehler anzeigen. Ausserdem können sie den Entwickler sogar dabei unterstützen die richtige Methode oder das richtige Attribut zu finden, indem sie ihm alle Methoden und Attribute zeigen, die für den Typ des Objektes zur verfügung stehen.[tjls] Interfaceorientierung Da Java wie zuvor beschrieben Mehrfachvererbung nur bedingt unterstützt, wird objektorientierter Javacode Interfaceorientiert programmiert. Dies möchte ich an zwei Beispielen aus der konkreten Java API deutlich machen. Sehen wir uns dazu zuerst die zur Swing Bibliothek gehöre Klasse JComboBox an. Die meisten Swingkomponenten setzen das MVC (Model View Con- troller) Prinzip sehr durchgängig und ersichtlich ein, so auch JComboBox. Das MVC Prinzip basiert auf der Idee, dass ein sogenanntes Model die Daten 3

6 kapselt, welche durch den View genannten Teil angezeigt werden. Der Controller ist maßgeblich für die Änderung der Daten im Model verantwortlich. Bei unserem Beispielt spielt JComboBox die Rolle des Views. Das Model erhält man durch den einfachen Aufruf von.getmodel(). Diese Methode liefert ein Objekt zurück welches das Interface ComboBoxModel implementiert. Wie beschrieben spielt der eigentliche Typ des zurückgelieferten Objektes keine Rolle, da man die für ein ComboBoxModel wichtigen Methoden durch das implementieren des Interfaces automatisch implementiert hat. So kann auch jede vom Entwickler selbst geschriebene Klasse dieses Interface implementieren und danach als Model für eine JComboBox genutzt werden.[jjcb] Als weiteres Beispiel möchte ich das häufig benutzte RMI Framework benutzen. Java RMI ermöglicht es Methoden für Objekte von einem entfernten Rechner aus aufzurufen. Dazu benötigt der Client ein sog. Stub, also eine lokales Objekt welches das entfernte Objekt für das eine Methode gerufen werden soll repräsentiert. Diesen Stub bekommt der Client über die sog. Registry eine Art Verwalterinstanz, die eine Menge von solchen Stubs bereithält und auf anfrage zurückliefert. Registry registry = LocateRegistry.getRegistry("meinStub"); Remote stub = registry.lookup(name); Die Registry liefert ein Objekt zurück welches das Interface Remote implementiert. Dieses Interface garantiert nur das Methoden, welche für dieses Stub Objekt aufgerufen werden durch RMI für das tatsächliche Server Objekt gerufen werden. Als Entwickler einer RMI Applikation hat man nun die Aufgabe eine Schnittstelle welche Remote erweitert, sowie eine Klasse die genau diese Schnittstelle implementiert zu schreiben. Die Klasse wird als konkretes Server Objekt verwet. Der Stub, welchen man nun durch die lookup Methode von der Registry zurück bekommt wird auf das Interface gecastet. Somit kann man für den Stub genau die Methoden aufrufen, die für das Serverobjekt implementiert wurden. Die konkrete Klasse des Stubs interessiert hierbei überhaupt nicht. Die Klasse des Objektes welches die Registry zurückliefert ist sogar unbekannt, da der Entwickler selbst diese Klasse niemals geschrieben hat. Die konkrete Implementierung der Stub Klasse wird vom RMI Framework erzeugt. Die erstellte Klasse ist im Grunde nur für die übertragung der Methoden zum Server und das Zurückliefern des Rückgabewertes verantwortlich. Falls in Zukunft eine bessere oder schnellere Methode für die übertragung erscheint kann das RMI Framework durch seine Entwickler so angepasst werden, dass es eine solche Stubklasse erstellt, die genau diese Neuerung implementiert. kompiliert man nun seine alten RMI Projekte neu, so können diese ohne eigene Quelltextänderungen von diesen Neuerungen profitieren. [JRMI] Diese Beispiele zeigen, das es in Java Sinn macht gegen Interfaces zu implementieren. Weiter noch macht genau dieses Konzept des Programmierens gegen Interfaces die Flexibilität eines Java Programmes aus. Ein Interface ist eine Art Vertrag, der beschreibt was ein Objekt leistet, welche Methoden es bereitstellt. Die konkrete Implementierung hingegen sagt aus wie ein Objekt etwas tut. Dies ist abhängig von von verschiedenen Voraussetzungen die sich änder können. 4

7 Nachteil dieses Konzeptes sind allerdings häufige Casts. Casts sind vom Entwickler absichtlich herbeigeführte Typänderungen. Diese Typänderungen können allerdings oftmals erst zur Laufzeit verifiziert werden. Dadurch wird das eigentlich statische Typsystem von Java gebrochen und damit die Typsicherheit unterwandert. Trotz der durchgängige Benutzung von Interfaces kann es vorkommen, dass man die konkrete Implementierung eines Objektes benötigt. Hierbei ist der Java Entwickler gezwungen Casts zu verwen, die das Objekt auf einen anderen Typ als den des Interfaces casten. Der Entwickler muss vor der Ausführung, nämlich zur Kompilezeit, wissen welchen genauen Typ ein Objekt hat. 3 Ruby 3.1 Ruby Spracheigenschaften interpretierte Skriptsprache Ruby ist eine Skriptsprache. Dies ist darin begründet, dass bestimmte Merkmale erfüllt werden. Die folgen Merkmale sind also durchaus bei anderen Skriptsprachen ebenfalls anzutreffen. Rubycode wird nicht im herkömmlichen Stil kompiliert um später ausgeführt zu werden. Stattdessen wird der Rubycode direkt einem Interpreter zugeführt, der diesen in lauffähigen Maschienencode umwandelt und ausführt. Dies Ansatz gilt allgmein bei Skriptsprachen.[WSK] Auch bei diesem Konzept ist der tatsächliche Maschienencode für den Anwer nicht sichtbar. Programme in Skriptsprachen unterliegen aufgrund dieses Konzeptes ebenfalls keiner Plattformbeschränkung. So ist Ruby auf genau diesen Plattformen lauffähig, auf denen auch der Ruby Interpreter läuft. Weiterhin gilt, dass Variablen in Ruby nicht deklariert werden, d.h. ihr Typ muss nicht bekannt sein um dieser Variablen ein Objekt zuzuweisen. Ausserdem besitzt Ruby ein dynamisches Typsystem genannt duck typing dazu später mehr. Ein weiteres Merkmal ist die automatische Speicherverwaltung. Es ist in Ruby nicht nötig Objekte welche man allokiert, wieder frei zu geben. Sobald es keine Referenz auf ein Objekt mehr gibt kann dieses automatisch durch die Laufzeitumgebung beseitigt werden. Im Gegensatz zu vielen anderen Skriptsprachen kann in Ruby vollständig Objektorientiert programmiert werden. Programmierparadigmen Ruby ist ebenfalls im Hinblick auf Objektorientierung entwickelt worden, und auch in Ruby ist es sinnvoll Programme in diesem Paradigma zu schreiben. Als Beispiel eine Klasse Auto: class Auto attr_accessor:name #getter fuer name def initialize name = name 5

8 def fahren puts "brum brum" def bremsen puts "quietsch" Jedoch ist es auch möglich das Prozedurale Paradigma anzuwen. ähnlich wie in Java stehen alle Methoden in einer Klasse, jedoch wird der Entwickler nicht gezwungen seine Prozeduren explizit in Klassen zu schreiben. Dies eröffnet ihm die Möglichkeit komplett auf Objektorientierung zu verzichten und rein Prozedural vorzugehen. Nichts desto trotz steht in Ruby jede Methode die nicht explizit in einer anderen Klasse steht automatisch in der main Klasse. Ausserdem gibt es in Ruby globale Variablen die dieses Konzept erheblich unterstützen.[rlo] 3.2 Ruby Sprachkonzepte alles ist ein Objekt Ruby ist, wenn der Entwickler das will, vollständig Objektorientiert, dies bedeutet das jedes Element in Ruby wie ein Objekt behandelt werden kann. Sogar einfache Zahlen wie 5 sind in Ruby bereits Objekte, denn man kann füer sie Methoden aufrufen: puts 5.next Gibt zum Beispiel die Zahl 6 aus, da 5 ein Integerobjekt ist und bei ganzen Zahlen auf 5 die 6 folgt. dynamische Typisierung - Duck Typing Anderst als in anderen Sprachen und typisch für Scriptsprachen verwet Ruby sogenannte dynamische Typisierung. Variablen werden nicht deklariert und damit an einen Typ gebunden, sondern einfach verwet. Dies bedeutet, das nicht der Compiler zur Kompilezeit entscheidet, ob eine Methode für ein Objekt unterstützt wird oder nicht, sondern der Interpreter zur Laufzeit: text = "mein Name" text.getcount wird zur Laufzeit einen Fehler werfen, da die Methode getcount für String, den Typ des Objektes unter dem Namen text nicht zur verfügung steht. Das in Ruby verwete Typsystem wird Duck Typing gennant. Dieser Begriff geht auf eine Zeile eines Gedichtes von Whitcomb Riley zurück. Zitat When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. [JVSR] 6

9 Der Ruby Interpreter verlässt sich nicht auf den Typ eines Objektes, also von welcher Klasse es ist. Anhand derer er Methoden oder Attribute identifizieren und validieren kann. Vielmehr kann der Interpreter die tatsächlichen Methoden eines Objektes herausfinden und diese Aufrufen. Wenn für ein Objekt eine Methode size gerufen werden soll und dieses Objekt diese Methode bestitzt, spielt es keine Rolle von welchem Typ dieses Objekt ist. Die Methode ist vorhanden und kann gerufen werden, genau das geschiet dann auch. include class car string1 = ein Text zahl2 = 56 auto3 = Auto.new(BMW) string1.size zahl2.size auto3.size In den 3 Typen, String, Fixnum sowie Auto ist jeweils die Methode size implementiert und kann aus diesem Grund auch gerufen werden. Ist diese Methode andererseits im genannten Objekt nicht vorhanden hat der Interpreter keine Wahl und muss einen Fehler produzieren. Module und Mixins Auch in Ruby gibt es keine traditionelle Mehrfachvererbung, jedoch gibt es auch in dieser Sprache ein mächtiges Konstrukt welches über ähnliche Fähigkeiten verfügt. In Ruby können Codeteile in sogenannten Modulen stehen. Module werden ähnlich wie Klassen definiert können jedoch nicht instantiert werden. Klassen können beliebig viele dieser Module inkludieren, dadurch wird das inkludierte Modul zu einem mixed in der Klasse. Statische Modulmethoden, welche auf keine Instanzvariablen oder Instanzmethoden können wie statische Klassenmethoden aufgerufen werden. Ausserdem können in diesen Mixins auf Instanzvaribalen und -methoden zugegriffen werden, welche erst im konkreten Objekt vorhanden sind. Im Beispiel unten wird die Methode add des Modules direkt als statische Klassenmethode vom Modul gerufen. Die Methode substract wird vom Modul an die konkrete Klasse weitergegeben mixed in. Dabei ist es wichtig, dass die eigentliche Klasse die besitzt. Mixins verhalten sich ähnlich wie Oberklassen, und sind demnach ein ebenfalls eine Möglichkeit Mehrfachvererbung zu simulieren. [JVSR] module Math def Math.add(number_one, number_two) number_one + number_two def substract(number_two) 7

10 @value + number_two class MyClass def = val include Math # statische Methode von Math puts Math.add(2,6) # mixtin Instanzmethode add my = MyClass.new(47) puts my.substract(11) 4 Vergleich 4.1 Spracheigenschaften In Java sind im Gegensatz zu Java zwei Schritte vom Code zur Ausführung nötig. Dies hat füer Java den Vorteil, dass es den Code entsprech optimieren kann, also die Ausführung nach der Kompilierung schneller von statten geht. Ruby wiederum hat den Vorteil sehr flexibel zu sein und schnell Änderungen am Code zuzulassen. Ruby ist als Skriptsprache so entwickelt worden, dass der Entwickler entscheiden kann welches Paradigma füer seine Entwicklung zum Einsatz kommt. In Java hingegen wird der Entwickler quasi zum Einsatz von Objektorientierung gezwungen. Dies hat den Nachteil, das kleinere Tools also kleine (Hilfs- )Programme schwieriger in das Konzept der Sprache passen. Kleiner Tools sind allerdings eine Domäne für Skriptsprachen. Große Projekte sind nach aktuellem Stand eine Domäne für objektorientierte Programmiersprachen und im speziellen das bei weitem wichtigste Einsatzgebit der kompilierten Sprachen. Java ist genau in diesem Umfeld angesiedelt und spielt hier ein große Rolle. Ruby steht diesen Sprachen in beziehung auf Objektorientierung in nichts nach. 4.2 Sprachkonzepte Ruby vertritt den Ansatz, dass wenn Objektorientierung verwet wird auch alles als Objekt aufgefasst werden kann. In Java hingegen existieren neben den Objekten auch noch die primitiven Datentypen. Diese können allerdings über 8

11 Wrapperklassen ebenfalls als Objekte dargestellt werden. Somit ist dieses Konzept mit etwas mehr Aufwand auch in Java realisierbar. Auch die Typisierung der beiden Sprachen sind vollkommen unterschiedlich. Ruby hat hier den Vorteil, dass man weitaus effektiver Code schreiben kann, da der Rubyentwickler Variablen nicht deklariert und somit Zeit sparen kann. Andererseits muss der Rubyentwickler wissen welchen Typ eine Variable haben kann und welchen Typ z.b. eine bestimmte Methode zurückliefert. Dies ist bei großen Projekten mit mehreren Entwicklern eine schwierige Aufgabe. Ausserdem werden Änderungen an solcherlei Typen nicht sofort auffallen sondern erst zur Laufzeit im konkreten Fall einen Fehler produzieren. Java geht sehr viel restriktiver vor und bei einem geänderten und inkompatibel Rückgabetyp die entspreche Klasse nicht mehr kompilieren. Java hat damit also den Vorteil Fehler zu erkennen noch bevor sie auftreten. Genau dies ist auch ein Vorteil der Programmierung gegen Interfaces, sie fordern, dass bestimmte Methoden vorhanden sind. Es spielt keine Rolle wie sie implementiert sind. Zusätzlich kann ein Entwickler allein an den implementierten Interfaces erkennen welchen Zweck eine Klasse erfüellen soll, dies fördert das Verständniss des Programmes allgemein. In Ruby steht dem Konzept der Interfaces das Konzept der Mixins gegenüber. Dieses hat jedoch den Unterschied, dass die Methoden bereits ausimplementiert sind. Vorteil, man braucht Code nicht mehrfach zu schreiben. Nachteil ist das hier nicht der Vertrag, also was ein Objekt kann im Vordergrund steht sondern wie es das macht. Allerdings kann man auch in Java über sogenannte casts aus dem statischen Typsystem fallen, dies hat ähnliche Auswirkungen wie das dynamische Typsystem, da 5 Schluss und Ausblick Durch ihre Flexibilität und ihr nicht statisches Typsystem ist Ruby bestens für kleine Projekte geeignet. Kleine Programme füer die sich keine große Architektur lohnt sind sicherlich schneller in Ruby geschrieben als in Java. Allein der Umstand, dass prozedurale Ansätze in Java fast nie zu übersichtlichem Code führen zeigt, dass dies keine Domäne für Java ist. In großen Frameworks und bei großen Projekten jedoch birgt allein das dynamische Typsystem von Ruby eine riesige Fülle von potentziellen Fehlern in sich. Dies bedingt, dass der Entwickler zu jeder Zeit genau weiss welchen Typ ein Objekt haben kann. Das wiederum ist bei sehr groß angelegten Projekten mit vielen Entwicklern nur unter größtem Aufwand, z.b. in Form von Dokumentationen zu verwirklichen. In diesen Segmenten wird Ruby voraussichtlich keine Alternative zu Java darstellen können, da der damit verbundene Aufwand einfach zu hoch ist. Somit kann man abschließ feststellen, dass Ruby Java nicht ersetzen können wird, da sich die Konzepte zu stark unterscheiden. 9

12 Aber ein Entwicklungspacket zu welchem beide Sprachen gehören, würde einen viel größeres Einsatzgebiet abdecken als die Sprachen allein. Eine solche Verbindung von Ruby und Java stellt JRuby dar. Dies ist ein Ruby Interpreter der es erlaubt Java Objekte in Ruby und Ruby Objekte in Java zu verwen. Dieses Projekt kann dazu führen, dass Ruby und Java als System genutzt werden könnten was die Vorteile beider Sprachen vereint. Man könnte die mächtigen Java Klassen und Ihre Vorteile in den einfachen prozeduralen Kontext von Ruby nutzen. Man könnte Prototypen welche Javaframework benutzen schneller in Ruby verwirklichen. Und zusätzlich ausgewählte Teile im Javacode wiederverwen. Eine solch flexible Lösung hätte die Möglichkeit viele andere Sprachen gleichermaßen zu ersetzen. 10

13 Literatur [TJLS] Sun, The Java Language Specification, Third Edition Sprachdefinition Java aktuelle Version Abgerufen am [J2RR] RRZN Hannover, Java 2 Grundlagen und Einführung April 2005, 4., unveränderte Auflage [JJCB] Sun, JComboBox (Java 2 Plattform SE 5.0) API Dokumentation der Klasse JComboBox Abgerufen am [JL] Sun, List Java 2 Plattform SE 5.0 API Dokumentation des Interfaces List Abgerufen am [JRMI] [WSK] Sun, The Java Tutorials RMI Implementing a Remote Interface Abgerufen am Wikipediaartikel Skriptsprachen Abgerufen am [JVSR] Peter Arpad Wesel, Java versus Ruby Dezember 2003 Anwbarkeit des objektorientierten Paradigmas Abgerufen am [RLO] Die Programmiersprache Ruby Abgerufen am

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte 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/

Mehr

Einführung in die Java- Programmierung

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

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

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & 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

Mehr

Programmieren in Java

Programmieren 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

Mehr

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

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten 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

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

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

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Anleitung über den Umgang mit Schildern

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

Mehr

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

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.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

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er 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

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, 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:

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

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

Es 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

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud 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

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11 Kurzanleitung MEYTON Aufbau einer Internetverbindung 1 Von 11 Inhaltsverzeichnis Installation eines Internetzugangs...3 Ist mein Router bereits im MEYTON Netzwerk?...3 Start des YAST Programms...4 Auswahl

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

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester 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

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

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

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

FlowFact Alle Versionen

FlowFact Alle Versionen Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für

Mehr

Lernwerkstatt 9 privat- Freischaltung

Lernwerkstatt 9 privat- Freischaltung Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung

Mehr

Jederzeit Ordnung halten

Jederzeit Ordnung halten Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Installationsanleitung CLX.PayMaker Home

Installationsanleitung CLX.PayMaker Home Installationsanleitung CLX.PayMaker Home Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Benutzerhandbuch MedHQ-App

Benutzerhandbuch MedHQ-App Benutzerhandbuch MedHQ-App T h o r D y n a m i c s G m b H A m B ü c h e n b e r g s k a m p 2 2 2 1 0 3 9 B ö r n s e n V e r s i o n 1. 0 S t a n d : 0 4 / 2 0 1 5 z u r M e d H Q - A p p - V e r s i

Mehr

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das 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

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN Der Zauberwürfel-Roboter Paul Giese Schule: Wilhelm-Raabe-Schule Jugend forscht 2013 Kurzfassung Regionalwettbewerb Bremerhaven

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

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

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

Mehr

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Was sind Berechtigungen? Unter Berechtigungen werden ganz allgemein die Zugriffsrechte auf Dateien und Verzeichnisse (Ordner) verstanden.

Mehr

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Step by Step Remotedesktopfreigabe unter Windows Server 2003. von Christian Bartl

Step by Step Remotedesktopfreigabe unter Windows Server 2003. von Christian Bartl Step by Step Remotedesktopfreigabe unter Windows Server 2003 von Remotedesktopfreigabe unter Windows Server 2003 Um die Remotedesktopfreigabe zu nutzen muss diese am Server aktiviert werden. Außerdem ist

Mehr

Datensicherung. Beschreibung der Datensicherung

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

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step 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

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Informationen zum neuen Studmail häufige Fragen

Informationen zum neuen Studmail häufige Fragen 1 Stand: 15.01.2013 Informationen zum neuen Studmail häufige Fragen (Dokument wird bei Bedarf laufend erweitert) Problem: Einloggen funktioniert, aber der Browser lädt dann ewig und zeigt nichts an Lösung:

Mehr

Das Leitbild vom Verein WIR

Das 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

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

FORUM HANDREICHUNG (STAND: AUGUST 2013)

FORUM HANDREICHUNG (STAND: AUGUST 2013) FORUM HANDREICHUNG (STAND: AUGUST 2013) Seite 2, Forum Inhalt Ein Forum anlegen... 3 Forumstypen... 4 Beiträge im Forum schreiben... 5 Beiträge im Forum beantworten... 6 Besondere Rechte der Leitung...

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Visual Basic Express Debugging

Visual Basic Express Debugging Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das

Mehr

Microsoft Update Windows Update

Microsoft Update Windows Update Microsoft bietet mehrere Möglichkeit, Updates durchzuführen, dies reicht von vollkommen automatisch bis zu gar nicht. Auf Rechnern unserer Kunden stellen wir seit September 2006 grundsätzlich die Option

Mehr

Das Persönliche Budget in verständlicher Sprache

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

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

FTP-Leitfaden RZ. Benutzerleitfaden

FTP-Leitfaden RZ. Benutzerleitfaden FTP-Leitfaden RZ Benutzerleitfaden Version 1.4 Stand 08.03.2012 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Zeitaufwand... 3 2 Beschaffung der Software... 3 3 Installation... 3 4 Auswahl des Verbindungstyps...

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

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

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014 Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...

Mehr

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle: Die neue Aufgabe von der Monitoring-Stelle Das ist die Monitoring-Stelle: Am Deutschen Institut für Menschen-Rechte in Berlin gibt es ein besonderes Büro. Dieses Büro heißt Monitoring-Stelle. Mo-ni-to-ring

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

IBIS Professional. z Dokumentation zur Dublettenprüfung

IBIS Professional. z Dokumentation zur Dublettenprüfung z Dokumentation zur Dublettenprüfung Die Dublettenprüfung ist ein Zusatzpaket zur IBIS-Shopverwaltung für die Classic Line 3.4 und höher. Dubletten entstehen dadurch, dass viele Kunden beim Bestellvorgang

Mehr

Installationsanleitung CLX.PayMaker Office

Installationsanleitung CLX.PayMaker Office Installationsanleitung CLX.PayMaker Office Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION 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

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

DER BESSER INFORMIERTE GEWINNT!

DER BESSER INFORMIERTE GEWINNT! Revision 2.27 SP1 Neuigkeiten MOS'aik-Module DER BESSER INFORMIERTE GEWINNT! Stand: 07.12.2007 Dimmel-Software GmbH Internet: www.dimmel.de Wilthener Str. 32 E-Mail: info@dimmel.de 02625 Bautzen Inhaltsverzeichnis

Mehr

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr