Eclipse 4 Application Platform Tutorial Update

Recently I worked a bit on my Eclipse 4 Application Platform Tutorial. The good news for you: The slides are now licensed under a Creative Commons Attribution 4.0 International License.


If you find useful stuff in the slides that you would like to re-use for talks, trainings or even for commercial use, you could do that now. You find the current slide deck either on my Web site or directly at SpeakerDeck. The corresponding source code is hosted at my GitHub repository and licensed under EPL. Here is a screenshot of the little app developed in the tutorial.


The slides as the sources are valid for both Kepler and Luna.

If you find outdated/strange/wrong things in the slides, please let me know :).

Continuous Integration with Travis CI


Travis CI is a cloud-based continuous integration service that supports many different programming languages and environments. If you have projects at GitHub, Travis CI might be interesting for you. I currently use it for a few of my open source projects at GitHub. Setup is quite easy, you can log in with your GitHub credentials and then you get a lit of all repos you have administration rights. Then you can configure, when Travis should run a build, e.g. on every push or pull request. The only thing you have to do is to provide a .travis.yml file at the root of your GitHub project that contains configuration info.

A few examples: my current pet project chatty has a Java back-end and a HTML/JavaScript based front-end (actually mostly written in TypeScript). For the JavaScript/TypeScript part I need node.js installed, as well as grunt, bower and tsd (TypeScript Definition Manager). The yml file looks like:

language: java
  - oraclejdk8

  - npm install -g grunt-cli
  - npm install -g bower
  - npm install -g tsd

script: ./gradlew test

This makes sure that the node modules grunt-cli, bower and tsd is installed before the build is run. Gradle is supported out of the box but the default is the check task. In my chatty project I have integration tests that I don’t want to run on Travis CI, that’s why I explicitly use ‘gradlew test’ as script. Make sure that the build scripts are executable. While this is a no-brainer on most operating systems, on Windows it is not so easy. But even on Windows you could use git to do the job, e.g.:

git update-index --chmod=+x gradlew

When the Travis CI build is set up, you can include a build indicator icon directory in the readme of your GitHub project. If you use markdown, the code snipped (for chatty) looks like

[![Build Status](](

Then a nice icon build status is displayed in your project description.

Eclipse based Builds
When you want to run Tycho based builds for Eclipse based projects, you only have to make sure to change to the directory of the parent pom. The yml file for my Eclipse 4 Application Platform Tutorial looks like:

language: java
  - oraclejdk8

  - cd

script: mvn clean install -DskipTests

I had some trouble running tests on Travis CI that involve SWT, that’s why I skip the tests.

Grails based Builds
Travis CI does not support Grails out of the box (like Gradle) but this is no problem at all since Grails provides its own Wrapper. So make sure that the wrapper is part of your project. One of our Siemens OSS projects, the REST API doc for Grails has the following yml file:

language: groovy
script: ./grailsw refresh-dependencies
     && ./grailsw test-app --echoOut

I am a big fan of Travis CI and recommend to give it a try!

Long Time no Blog…


A few months ago I moved on to a new full time job at Siemens Building Technologies. I was so exited about all the new technologies and software srchitecture concepts that I did not find the time to blog about it. But I really would love to blog in the next months about my experience with

  • AngularJS
  • TypeScript
  • Restful Web services + HyperMedia APIs
  • Continuous delivery with Gradle and Jenkins

I started the year with re-designing my web site, the goal was to focus on things that I like: Software, Music, Videos and more. I also wanted to have a responsive design, that could be viewed an mobile devices and tablets, as well as on desktop computers.

And I wanted to quickly edit it from everywhere. Since I had run my blog on WordPress for several years, I decided to give WordPress a try for the whole site. I bought a professional WordPress Theme and customized it for my needs. Right now I am pretty pleased with the result, but there’s a lot of room for improvements…

I guess I will work on the site for a while, but the start is done…

Eclipse Demo Camp Munich 2013: Impressions

Yesterday we had the Eclipse Demo Camp Munich 2013 at the Siemens campus. Around 150 attendees showed up, and from the feedback I got do far, the event was a great success.


I would like to thank

  • All speakers: Ralph Müller, Tom Schindl, Gerrit Grunwald, Eike Stepper, Marcel Bruch, Jonas Helming, Eugen Nefeld, Matthias Zimmerman, Jérémie Bresson, and Matthias Sohn!
  • Our sponsors: Siemens AG, EclipseSource Munich,  Eclipse Magazin (S&S Media GmbH) and EclipseScout (BSI Business Systems Integration AG)
  • All attendees

You all made the demo camp a great event. My personal highlight in terms of fun factor was the release of the EMF Client Platform, when Jonas and the EMF Client Platform team pushed the BIG RED RELEASE BUTTON

and we could follow the release build live. Here is a short video:

Today I felt so good about the demo camp that I have booked the location again for next year, so stay tuned for Eclipse Demo Camp Munich 2014 🙂


You find me on Twitter and Google+.
Interested in Eclipse 4 Application Platform trainings?

Eclipse Democamp Munich 2013 @ Siemens : Update 2

There are only 10 days left and the Eclipse Democamp Munich 2013 (June 12th, 2013)  is almost sold out. As of today, there are only 11 tickets left out of 200. So hurry up, if you want to attend and haven’t registered yet. This year we will again have a great speaker lineup with interesting sessions and demos. Here is a photo of last year’s demo camp:


You can register and take a look at the agenda at After the sessions we will have great networking opportunities, a warm buffet and drinks.

CU next week at the Demo Camp


Eclipse Demo Camp 2013 @ Siemens (Update 1)

Update 1: All sessions are confirmed, Ralph Müller is going to give an intro and 107 tickets are already taken 🙂

I am happy to announce the Kepler Eclipse Demo Camp 2013 @ Siemens in Munich, Germany. Again, excellent speakers with interesting demos/talks will make this demo camp an Eclipse fest! In the last years we had between 150 and 175 attendees, this is the mark to top this year. The latest event details and agenda you always find at the Wiki page and the registration page.

Location: Siemens AG, Forum 1, Otto-Hahn-Ring 6, 81739 Munich, Germany
PDF with directions: Siemens Munich MCH_P campus
Google Maps: Siemens Munich MCH_P campus

Date and Time
Wednesday, June 12, 2013 from 5:00 PM – 11:00 PM (GMT+0100)


  • 05:00pm – 05:30pm Meet and Greet
  • 05:30pm – 05:40pm Welcome/Intro,
    Ralph Müller (Eclipse Foundation) + Kai Tödter (Siemens Corporate Technology)
  • 05:40pm – 06:00pm JavaFX/Swing Renderers for the Eclipse 4 Application Platform
    Kai Tödter (Siemens Corporate Technology)
  • 06:00pm – 06:20pm Extended JavaFX
    Tom Schindl (BestSolution)
  • 06:20pm – 06:40pm Cool Stuff with JavaFX and Raspberry Pi
    Gerrit Grunwald (Canoo)
  • 06:40pm – 07:00pm The CDO Model Repository
    Eike Stepper (ES-Computersysteme)
  • 07:00pm – 07:30pm BREAK (with soft drinks & snacks)
  • 07:30pm – 07:50pm Down the Rabbithole with Code Recommenders
    Marcel Bruch (Codetrails)
  • 07:50pm – 08:10pm How to build a Tool based on EMF in 20 Minutes
    Maximilian Kögel + Jonas Helming (EclipseSource)
  • 08:10pm – 08:30pm Mobile Business Applications with Eclipse Scout
    Matthias Zimmermann (BSI Business Systems Integration AG)
  • 08:30pm – 08:50pm Cool new Stuff in EGit and JGit
    Matthias Sohn (SAP AG)
  • 08.50pm – 11:00pm Networking (with beer, soft drinks and warm buffet)

At you find the current list of attendees and you can register. Registration is free: beer, soft drinks and (warm) buffet is sponsored by Siemens AG, EclipseSource, Eclipse Magazin (S&S Media GmbH) and EclipseScout (BSI Business Systems Integration AG).

Let’s make this demo camp great!

See you all in Munich…


You find me on Twitter and Google+.
Interested in Eclipse 4 Application Platform trainings?

Experiments with GEF4 Graphics and JavaFX


Inspired by a phone call with Alexander Nyssen and a Forum post by Tom Schindl I started playing around with a GEF4 AbstractGraphics implementation using a JavaFX 2.2 canvas. GEF4 nicely separates the presentation model from the UI toolkit responsible for the actual rendering, so it was pretty straight forward to develop a JavaFX based implementation. Currently GEF4 provides Java2D (AWT) and SWT renderers. The results using my small JavaFX based renderer look quite nice so far. Here is the “Simple Example” rendered with SWT and JavaFX:


When you click on the above image to see it in original size you will notice the the red lines look not as crisp in JavaFX compared to SWT. That is because in JavaFX all coordinates are expressed as double values and the shapes are positioned computing the exact middle position of the edges by default. In practice that means that a red line with thickness 1 drawn from (10:10) to (20:10) would be rendered as pink line with a line width of 2 pixels. A workaround is to take the line thicknesses into account and draw the line from (10:9.5) to (20:9.5). Then the line will be painted crisp. Actually the HTML5 canvas implementation does exactly the same. In the demo, I just had to add javaFxGraphics.translate(0.5, 0.5); at the beginning of the demo, then the result looks like:


Again, click on the image to see the original sizes. The FillModesDemo looks almost the same when you compare the SWT with the JavaFX version:


Currently I am trying to get the JavaFX clipping working in a canvas, don’t know yet why it is not working out of the box… For me it would be great to see graphical editors in e4 and JavaFX based apps in the future. In the next weeks I will polish my implementation and contribute it to GEF4, if there is any interest.

Stay tuned


You find me on Twitter and Google+.
Interested in Eclipse 4 Application Platform trainings?

Old Computers

Found a great Web site with all kinds of old computers, see Here is a list of all the old computers had owned and still love:

– Sinclair ZX 81:
– Sinclair ZX Spectrum:
– Atari 520 ST:

I used to write games in assembler for the Sinclairs. One game for the ZX Spectrum still runs as a Java Applet on my web site (

I always have nostalgic feelings when I remember all the fun a had with the above old computers.


Which old computers did you own?

TypeScript: The New JavaScript?


In the last year I did quite a lot of evaluation, prototyping and testing in the HTML5/Web/JavaScript space. For me, as a Java veteran it was (and still is) a quite refreshing experience and a lot of fun. One question I wanted to answer for myself was: Is it possible in a big organization like Siemens to do professional software development using JavaScript + HTML5? My current answer would be: YES, but with a lot of coaching from experienced people who know the best practices regarding language, project structure, module systems, testing, libraries, tools etc. During my activities I took a look at Dart, CoffeeScript and TypeScript.

I have to admit, I like TypeScript a lot. It gives me most of the abstractions that I am used too from my background as Java developer, like classes, modules and interfaces. And I also like the optional strong typing during compile time with corresponding IntelliSense (or “Content Assist” in EclipseSpeak). The idea of TypeScript is to enhance JavaScript by providing these additional abstractions and compile to plain ole JavaScript.

Here a TypeScript example:

class Student {
  fullname : string;
  constructor(public firstname, public middleinitial, public lastname) {
    this.fullname = firstname + " " + middleinitial + " " + lastname;

interface Person {
  firstname: string;
  lastname: string;

function greeter(person : Person) {
  return "Hello, " + person.firstname + " " + person.lastname;

var user = new Student("Kai", "U.", "Toedter");

compiles to the JavaScript

var Student = (function () {
 function Student(firstname, middleinitial, lastname) {
   this.firstname = firstname;
   this.middleinitial = middleinitial;
   this.lastname = lastname;
   this.fullname = firstname + " " + middleinitial + " " + lastname;
 return Student;

function greeter(person) {
  return "Hello, " + person.firstname + " " + person.lastname;

var user = new Student("Kai", "U.", "Toedter");

TypeScript was created by Microsoft (Anders Hejlsberg) and is licensed under Apache 2.0. The main Web resource is Here you find all information and you can play around live with a nice editor (seeing the original TypeScript and the compiled JavaScript). Currently the TypeScript compiler runs either as a node.js module or using Windows Scripting host. As it is from Microsoft, no one will be surprised that Visual Studio actually has the best IDE support for TypeScript. But the current RC release of JetBrain’s WebStorm also has TypeScript support.

There is no Eclipse-Plugin so far. Recently I tried to write one using Rhino but I got stuck and gave up. But probably people from the Eclipse community who have more experience with integrating editors, content assist etc. might want to give TypeScript a try 🙂

What do you think about TypeScript?

Have Fun!


You find me on Twitter and Google+.
Interested in Eclipse 4 Application Platform trainings?

Eclipse 4 Application Platform Tutorial App on Github


For my Eclipse 4 Application Platform trainings/tutorial I use a small but complete application for the tutorial labs. The application includes:

  • Eclipse 4 Application Model
  • Domain Model as OSGi Declarative Service (to be used with DI container)
  • Eclipse 4 Application Model extension:
    • Providing a model fragment in a separate bundle (Details View)
    • Extending the e4 ui application model with a new model element (TutorialPartStack)
  • Headless build with Tycho
  • A bit CSS styling
  • A styled Login dialog using Lifecycle-Hooks
  • much more 🙂

You find all the projects at

The Tycho Build
To run the Tycho build locally, just:

  • Have Maven 3 installed
  • Clone the above Git repo
  • Open a shell in project
  • Run command “mvn clean install”
  • Wait a while (first build takes long) until the build succeeds
  • The results for Win (32/64) and Linux GTK (32/64) and Mac Cocoa (32/64) are in project org.eclipse.e4.tutorial.contacts.product/target/products

Good Tycho introductions can be found at and

The Eclipse 4 Application Model Extension
In the project org.eclipse.e4.tutorial.contacts.model.application you find a small extension to the Eclipse 4 application model, a custom PartStack named TutorialPartStack. This extension is used in the Application.e4xmi file of project org.eclipse.e4.tutorial.contacts. To open the Application.e4xmi in your running Eclipse IDE (in model editors), you have to export the project org.eclipse.e4.tutorial.contacts.model.application into your running IDE.

  • To export, open MANIFEST.MF, in the Overview-Tab of the manifest editor click on “Export Wizard” and then choose “Install into host. Repository:”
  • Restart your Eclipse SDK, now you should be able to open Application.e4xmi
  • If you don’t want to install the model extension into your running Eclipse SDK, you could just start a new Eclipse SDK instance and make sure that the project org.eclipse.e4.tutorial.contacts.model.application is checked in the Run-Configuration.

Any feedback on the tutorial projects would be highly appreciated.

Have Fun!


You find me on Twitter and Google+.
Interested in Eclipse 4 Application Platform trainings?

Page 2 of 12«12345»10...Last »