Category Archives: SS11

Seminar, SS11

Hier die vergebenen Themen und Betreuer:

  • Ingo Witzky: OrientDB (Nina Geiger)
  • Waldemar Biller: Google App Engine & Co (Andreas Scharf)
  • Sascha Müller: Groovy etc. (Andreas Scharf)
  • Fabian Iffländer: Google Go (Ruben Jubeh)
  • Marcus Seiler: Neo4J (Andreas Koch)
  • Iyas Hilal: GraphDB-Theory (tbc.) (Ruben Jubeh)
Seminar, SS11

Apache Cayenne ist ein ORM (object-relational mapping) Framework. Das bedeutet Java Objekte werden anhand eines gegebenen Mappings automatisch in einer relationalen Datenbank persistiert, ohne dass sich der Entwickler direkt mit SQL beschäftigen muss. Eine Besonderheit an Apache Cayenne ist, dass das Mapping nicht mittles XML oder Annotationen fesgelegt wird, sondern mit dem CayenneModeler eine GUI für diese Aufgabe bereitgestellt wird.

Seminar, SS11

Das Apache Lucene Project besteht aus mehreren Unterprojekten. Für dieses Seminar relevant sind die zwei folgenden:

Apache Lucene Core: Diese Bibliothek bildet den Kern des Apache Lucene Project und ermöglicht die Indizierung von großen Textmengen und eine effiziente Suche in diesen. Sie wurde ursprünglich vollständig in Java entwickelt, wobei mittlerweile Portierungen auf viele andere Programmiersprachen zur Verfügung stehen. Für die Suche werden verschiedene Ansätze zur Verfügung gestellt, beispielsweise basierend auf Ähnlichkeiten oder mit Hilfe von Wildcards.

Apache Solr: Bei Apache Solr handelt es sich um einen in Java geschriebenen Sever, welcher den externen Zugriff auf die Suchfunktionalitäten von Lucene ermöglicht. Dazu wird beispielsweise eine JSON API bereitgestellt.

Seminar, SS11

Mit Googles App Engine ist ein weiterer “Platform as a service” Dienst gestartet. Es handelt sich um eine Plattform zum Entwickeln und Hosten von Webanwendungen auf den Google Servern. Dadurch erhält der Entwickler einige Features: Persistenz, Authentifizierung (gegen das Google Konto), Mail etc. Die kostenfreie Nutzung ist einigen Limitierungen unterlegen wie z.B. der maximal zur Verfügung stehenden Bandbreite pro Tag und der maximalen Anzahl Seitenaufrufe.

Seminar, SS11

Am 21.September 2007 formulierten die als UNIX-Entwickler bekannten Ken Thompson und Rob Pike sowie Robert Griesemer im Auftrag von Google, zwar öffentlich aber trotzdem von der Öffentlichkeit weitgehend unbemerkt, skizzenhaft die Anforderungen an eine neue Programmiersprache. Der Kernsatz der Ankündigung lautete: “The language attempts to combine the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++.” Diese Aussagen waren weitgehend vergessen, bis Rob Pike bei einem Google Tech Talk am 30. Oktober 2009 die Programmiersprache Go vorstellte.

Go gehört zur C-Familie, ist aber eine neue Sprache. Die C/C++-Eigenschaften wurden erweitert durch Funktionalitäten wie Deklarationen, Packages aus den von Niklaus Wirth an der ETH-Zürich entwickelten Pascal, Modula und Oberon. Go, eine zunächst ausdrücklich als Experiment bezeichnete Sprache, entspricht nach den Worten der Entwickler den Anforderungen der Programmierer und ihrer Vorgehensweise beim Programmieren. Und das Programmieren soll, nicht zuletzt, wieder Spaß machen.

Kernpunkte des Seminar sind:
– Wie sind die gegensätzlichen Anforderungen, Typsicherheit und Dynamik, umgesetzt?
– In welchem Status befindet sich das Projekt aktuell? Welche Ziele verfolgt Google damit?

Seminar, SS11

Groovy, Grails und Griffon hängen stark zusammen. Im Seminar kann Groovy zum Beispiel als Einzelthema für einen Teilnehmer vergeben werden, Grails und/oder Griffon sollten idealerweise in Verbindung mit Groovy von 2 Teilnehmern bearbeitet werden.

Groovy

Groovy ist eine dynamisch typisierte Programmier- und Skriptsprache für die Java Virtual Machine. Sie wurde ursprünglich von James Strachan entwickelt. Syntaktisch basiert Groovy auf Java, versucht jedoch Konzepte von Ruby unterzubringen. Groovy besitzt Konzepte wie Closures, native Syntax für Maps, Listen und Reguläre Ausdrücke, ein einfache Templatesystem und vieles mehr. Durch die einfache aber mächtige Syntax lässt sich Groovy mit wenig Aufwand erlernen.

Grails

Grails ist ein Web Application Framework mit sich schnell Webanwendungen entwickeln lassen. Sprachlich basiert Grails auf Groovy und baut auf anderen Frameworks wie Spring, Hibernate und SiteMesh auf. Es folgt dem Prinzip “Convention over Configuration” welches einigen Konfigurationsaufwand einspart und den Einblick in Fremdprojekte erleichtert. Als Ausgabe erhält man Web Archive (WAR), die auf jedem Servlet-Container (wie z.B. Apache Tomcat) lauffähig sind.

Griffon

Bei Griffon handelt es sich um ein Rich Client Framework (RCP) welches auf Groovy basiert und von der Grails Codebasis abgeleitet wurde. Gedacht ist Griffon als “high-productivity framework” das es durch Benutzung des Model-View-Controller (MVC) Patterns erlaubt, Anwendungen schneller zu entwickeln und den Entwickler nicht mit unnötigen Details zu belästigen.

Seminar, SS11

Neo4j ist eine ACID-transaktionale Datenbank, die in Java implementiert ist. Ihre Ursprünge reichen bis ins Jahr 2003 zurück, seit Anfang 2010 liegt die Version 1.0 vor. Neo4j wurde also bereits vor der “NoSQL”-Welle entwickelt und eingesetzt. Neo4j wird von der Firma NeoTechnology betreut, über die bei Bedarf auch eine kommerzielle Lizenzals Alternative zur freien (AGPLv3-)Lizenz verfügbar ist.

Die Kernbestandteile von Graphendatenbanken Knoten und Kanten, die sich jeweils durch Eigenschaften (Properties) näher beschreiben lassen. Das Standardbeispiel, das man in beinahe jedem Tutorial zu Graphendatenbanken beziehungsweise Neo4j findet, ist das aus den sozialen Web-2.0-Netzen bekannte “Wer kennt wen”-Beispiel. Daher soll dieses “Hello-World der Graphendatenbanken” auch hier verwendet werden. In der einfachsten Variante existieren mehrere Personen, die sich untereinander kennen. Die Personen werden als Knoten modelliert, die Sich-kennen-Beziehungen als Kanten.

Der Schwerpunkt in diesem Seminar liegt auf den folgenden Aspekten:
– Welche Abfragesprachen gibt es für Graphendatenbanken im Allgemeinen beziehungsweise Neo4j im Speziellen?
– Wie erfolgt die konkrete Anbindung an eigene Java-Projekte mit umfangreichen Datenmodellen?

Eine kleine Beispielanwendung ist zu implementieren.