All posts by Andreas Scharf

Seminar, WS1213

Scala

Der Hype um die neue Programmiersprache Scala nimmt kein Ende. Seit 1999 entwickelt und im Frühjahr 2011 für die Java-Platform veröffentlicht, liest man beinahe täglich News rund um Scala. Doch was ist wirklich dran an der Sprache, die alle Vorteile von Java mit Konzepten der funktionalen Programmierung kombinieren soll? Ist sie tatsächlich nicht so geschwätzig? Funktioniert die Integration mit bestehendem Java Code so unkompliziert wie behauptet wird?

Was wird erwartet?

  • Überblick über Scala (Geschichte, Syntax, Semantik, …)
  • Wo liegen die gravierendsten Unterschiede/Neuerungen/Verbesserungen im Vergleich zu Java
  • Kleine Programmbeispiele die die Vor- (und auch evtl. Nachteile) von Scala zu Java beleuchten

JavaFX 2.x

Schon begraben, hat JavaFX insbesondere in seiner neuen Version 2.x für neues Aufsehen gesorgt. JavaFX steht in Konkourrenz zu Adobe Flash und Microsoft Silverlight und eignet sich im Besonderen für die Entwicklung grafischer Anwendungen. Moderne Konzepte wie deklarative Beschreibung von GUIs und dependency injection vermitteln ein neues Programmiergefühl im Vergleich zu den mittlerweile etwas angestaubten Bibliotheken wie Swing und SWT.

Was wird erwartet?

  • Überblick über JavaFX (Geschichte, Konzepte, Eignung für versch. Szenarien, …)
  • Vor-/Nachteile von JavaFX gegenüber Swing/SWT/usw.
  • Kleine Programmbeispiele, die die “coolen” Aspekte von JavaFX beleuchten

Clojure

Clojure ist eine dynamische funktional orientierte Programmiersprache die in einer Java Virtual Machine läuft. Durch Kombination von interaktiver Programmierung wie man sie von Scriptsprachen gewohnt ist und einer robusten Infrastruktur für Multithreading eignet sich Clojure als “Mädchen für alles”.

Was wird erwartet?

  • Überblick über Clojure (Geschichte, Syntax, Semantik, …)
  • Kleine Programmbeispiele, die die Stärken/Schwächen von Clojure beleuchten

Eclipse 4

Der Eclipse 4 Zug ist angekommen und bringt mit 72 Eclipse Projekten viele Insassen mit. Nicht nur oberflächlich hat sich Eclipse durch einen moderneren Stil verändert, auch unter der Haube ist einiges passiert: Das komplette User Interface der Platform wird durch ein Modell repräsentiert, welches einfach erweitert und angepasst werden kann. Die API wurde aufgeräumt und flexibler gestaltet.

Was wird erwartet?

  • Überblick über die spannensten Neuerungen in e4
  • Spezielles Augenmerk auf das zugrunde liegende “Application Model”, welches sich durch die Platform zieht. Was geht damit? Was nicht?

Google Dart

Google Dart ist eine objektorientierte, statisch typisierte Open-Source Sprache für Web-Applikationen, die als Alternative zu JavaScript eingesetzt werden kann. Neben der Ausführung in einer eigenen Dart-VM kann der Quelltext auch nach JavaScript übersetzt werden.

Was wird erwartet?

Im Seminar soll neben einer Vorstellung der grundlegenden Ideen und Prinzipien hinter Dart der Schwerpunkt auf der Abgrenzung zu JavaScript liegen. Dazu gehört beispielsweise:

  • Was macht Dart besser bzw. schlechter?
  • Wie gut ist die Ausführungsgeschwindigkeit?
  • Wie ist die Tool-Unterstützung?

The CDO Model Repository

CDO ist ein in Java entwickeltes Repository für EMF-Modelle und Meta-Modelle. Mit CDO verwaltete Modelle können sowohl persistiert als auch verteilt bearbeitet werden.

Was wird erwartet?

Für das Seminar soll der Schwerpunkt neben einem grundlegenden Einblick in CDO auf der verteilten Bearbeitung von Modellen liegen. Dazu gehört beispielsweise:

  • Wie ist der Arbeitsablauf?
  • Wie wird mit Konflikten umgegangen?
  • Wie liegen die Vor- und Nachteile?

HTML 5

HTML5 soll das in die Jahre gekommene HTML4 beziehungsweise XHTML 1 ablösen und besser an die neuen Anforderungen des vielzitierten Web 2.0 angepasst sein. Aufwändige Workarounds sollen damit der Vergangenheit angehören. Die Entwicklung wird von der WHATWG (englisch) (Web Hypertext Application Technology Working Group) vorangetrieben, einer Arbeitsgruppe, die aus dem W3C heraus entstanden ist. Es sollen Neuerungen des Standards sowie unterstützende Browser vorgestellt werden.

Was wird erwartet?

  • Überblick über die Ziele von HTML5
  • Vorstellungen der Neuerungen
  • Macht HTML5 das Leben der Entwickler einfacher?

Game-Engine Vergleich (mind. 3 Personen)

Vergleich aktueller Game-Engine für 2D-Spiele. Vergleich von JMonkey, AndEngine, Slick, libGDX, …. Der Vergleich soll über unterschiedliche 2D-Game Engine für Java erstellt werden. Erstellung eines einfachen Spiel „Tic Tac Toe“ in den unterschiedlichen Engines und vergleich der Frameworks.

Was wird erwartet?

  • Empfehlung des einfachsten Game-Engine zur Entwicklung von 2D-Spielen.
  • Welches Framework läuft auf welcher Plattform?
  • Wie sieht es mit der Performance aus?
  • Wie lange ist die Einarbeitungszeit?

GIT – das neue SVN?

Techniken von GIT und dessen Vorteile gegenüber SVN. Was genau ist GIT und SVN. Welche Clients und Server gibt es und wie werden Sie angewendet?

Was wird erwartet?

  • Vor und Nachteile von GIT in Gegensatz zu dem im Moment weitverbreiteten SVN.
  • Welche Clients kann man empfehlen?
  • Wie sieht es mit der Portierung von Projekten aus?
  • Auswertbarkeit von Changes Arbeitsaufwand

Blender Game Engine

Die Blender Game Engine ist Teil des 3D Modelling-Tools Blender. Mit ihr lassen sich Desktop- sowie Browser Spiele entwickeln. In diesem Seminar sollen die Möglichkeiten und Grenzen der Blender Game Engine aufgezeigt werden.

Was wird erwartet?

  • Verwendung von logische Bausteinen (“Sensoren”, “Controller” und “Aktuatoren”), Python Scripting, OpenGL, OpenAL 3D Sound
  • Entwickeln eines 3D Mini-Spiels für den Browser
  • Wie performant ist die Game Engine?
  • Ist die Game Engine für Browserspiele geeignet?

Cocos2D-X

Cocos2D-X ist eine 2D Spiele Engine und zeichnet sich durch ihre Cross-Platform-Fähigkeit aus (Mobile, Desktop & Browser Applikationen). Im Rahmen des Seminars soll herausgefunden werden wie beherrschbar es ist, ein Spiel für Android, iOS und z.B. Google Chrome zu entwickeln.

Was wird erwartet?

  • Mini-Spiel für Android, iOS und einen HTML5-fähigen Browser
  • Welche Einschränkungen muss der Entwickler in Kauf nehmen?
  • Fühlen sich die Spiele auf allen Platformen gleich an?

Spock

Spock ist ein Unit-Testing Framework für Java und Groovy. Die Tests werden über Funktionsblöcke und Hilfsmethoden realisiert. Hier sollen die Vorteile und Grenzen des Frameworks ausgelotet werden.

Was wird erwartet?

  • Mehrere Beispieltests jeweils für Java und Groovy
  • Was sind die Vor- und Nachteile gegenüber den etabliertesten Unit-Test Frameworks beider Programmierspachen
  • Kann Spock z.B. JUnit komplett ablösen?

JSF 2.2

JavaServer Faces ist ein Java Standard zur komponentenbasierten Webentwickling. Es gibt mehrere Frameworks, wie z.B. Apache MyFaces die auf diesen Standard aufsetzen. Mit JSF 2.2 ist ein volles JSR-Release und bietet essentielle neue Features. In diesem Thema sollen diese neuen Features auf ihre alltagstauglichkeit überprüft und ein geeignetes Framework gefunden werden.

Was wird erwartet?

  • Was hat sich seit JSF 2.1 getan?
  • Welches Framework kann man empfehlen?
  • Implementierung einer Beispiel-Applikation mit neuesten Features

Play!

Play! ist ein Framework zur Erstellung von Web-Applikationen mit Java oder Scala. Eine Besonderheit von play! liegt in der Philosophie für möglichst viele Bereiche (sowohl im Backend als auch im Frontend) Typsicherheit zu gewährleisten und Laufzeitfehler zu minimieren.

Was wird erwartet?

Für das Seminar soll neben einem allgemeinen Überblick der Schwerpunkt auf die Template Engine von play! gelegt werden. Dazu gehört beispielsweise:

  • Wie ist der Arbeitsablauf beim Einsatz des Play-Frameworks?
  • Wo liegen die Vor- und Nachteile einer solchen Engine?
  • Wie gut und einfach können Templates wiederverwendet werden?

Gradle

Gradle ist ein Build-Management-Tool, vergleichbar mit Apache Ant oder Apache Maven. Der wesentliche Unterschied: Statt XML-Konfigurationen zu verwenden wird zur Konfiguration eine Domain Specific Language (DSL) verwendet.

Was wird erwartet?

  • Überblick über Gradle
  • Wo liegen die Stärken/Schwächen, vor allem im Vergleich zu Ant oder Maven?
  • Bauen einer einfachen Beispiel Applikation, die aus mehreren Projekten besteht

Sitebricks

Bei Sitebricks handelt es sich um ein leichtgewichtiges Web Framework welches auf frühe Erkennung von Fehlern, ausdrucksstarker Syntax sowie schnelle Entwicklung setzt. Sitebricks liegt Guice zugrunde, ein leichtgewichtiges dependency injection framework für Java.

Was wird erwartet?

  • Überblick über Sitebricks (Geschichte, Architektur, …)
  • Wie mächtig ist Sitebricks? Was kann es? Was nicht?
  • Entwicklung einer kleinen Beispiel Web Applikation

Vaadin

Vaadin ist ein komponentenbasiertes Webentwicklungsframework.

Was wird erwartet?

  • Überblick über Vaadin
  • Wie mächtig ist Vaadin? Was kann es? Was nicht?
  • Entwicklung einer kleinen Beispiel Web Applikation

Apache Wicket

Apache Wicket ist ein komponentenbasiertes Webentwicklungsframework.

Was wird erwartet?

  • Überblick über Apache Wicket
  • Wie mächtig ist Apache Wicket? Was kann es? Was nicht?
  • Entwicklung einer kleinen Beispiel Web Applikation

Mockito

Mockito ist ein Test Framework. Gegenüber den allgemeinen Testframeworks, welche einen expect-run-verify-Zyklus verfolgen, arbeitet Mockito nach dem Prinzip “questions about interactions after execution”.

Was wird erwartet?

  • Überblick über Mockito
  • Mehrere Beispieltests jeweils für Java
  • Kann Mockito JUnit ablösen?
Software Engineering I, SS12

Der Termin für unser SE 1 Abschlussturnier steht fest:

Wann: Montag den 03.09.2012 ab 13 Uhr
Wo: SE Labor

Für das Turnier haben wir folgende Karten ausgewählt:

map_asteroid
map_fastlane
map_raceways
map_summer

In welcher Reihenfolge die Karten gespielt werden, wird am Turniertag bekannt gegeben. Stellt sicher, dass eure KI’s und Clients mit diesen Karten keine Probleme haben!

Software Engineering I, SS12

Hi Leute,

soeben ist v1.0.3 des CreepSmash Servers online gegangen. Neben kleineren Bugfixes, hier die wichtigsten Änderungen im Überblick:

  • Maps haben nun auch ein Versionsfeld. Hierdurch können die Eigentümer (=Teams) neue Versionen ihrer Karten hochladen. Die Versionsnummer ist eine einfache Zahl, die immer um 1 erhöht werden sollte.
  • Die Ausgabe von LIST MAPS wurde um ein Versionsfeld erweitert:
     MAP NAME=map_stairsvector CREATOR=SE VERSION=1
  • Das vom Server unterstützte Kartenformat wurde leicht geändert. Hinzugekommen sind folgende Felder:
    # VERSION
    VERSION: 1
    # OWNER
    OWNER: SE

    Das OWNER Feld kann natürlich nicht selbst gesetzt werden und wird daher beim upload ignoriert. Es wird vom Server automatisch bei erfolgreichem Upload anhand der Logindaten bestimmt.

Die Beschreibung des Kartenformats wurde entsprechend angepasst. Falls es zu Problemen kommen sollte, konsultiert bitte die Google Group.

Software Engineering I, SS12

Der CreepSmash Server versteht mehrere Derivate des JSON Protkolls. Zwei kurze Beispiele welche Syntax unserer Server versteht:

1.) In dieser Syntax sind alle unsere Beispiele in der Erklärung unserer Befehle aufgeführt.

{"@action":"CREATE_TOWER",
"properties":{
"entry":{
"key":"towertype",
"value":"ROCKET"},
"entry":{
"key":"cell",
"value":"Cell@d54a23"
}}}

2.) Diese Syntax versteht der Server ebenfalls:

{"@action":"CREATE_TOWER",
"properties":{
"entry":[
{
"key":"towertype",
"value":"ROCKET"
},
{
"key":"cell",
"value":"Cell@d54a23"
}]}}

Beide Beispiele führen den gleichen Befehl aus und resultieren im gleichen Ergebnis. Zumindest die zweite Syntax sollte mit den üblichen JSON-Bibliotheken erzeugbar sein.

Wichtig:

Erfolgreiche JSON-Befehle resultieren nicht in einem OK oder einer vergleichbaren Bestätigung. Nur wenn dieser Befehl Veränderungen im Modell bewirkt, werden diese Änderungsevents an euch gesendet.