Special Topics:

Modularity and API Design

339.338 1KV Würthinger, Tulach, Stadler Block Begin: 15.1.2016

Course Description

The course consists of three parts: (a) Modular software development, (b) API design concepts, (c) application of modularity in NetBeans and JavaFX. In particular, we will address the following questions in detail:

  • Why is modularity essential?
  • How to scale the development of a large software system?
  • Why are APIs like stars?
  • How to design an API that is extensible without breaking backwards compatibility?
  • What are modularity concepts in NetBeans?

If you want to prepare for the course, you can skim through the website on API design.


Thomas Würthinger ( thomas.wuerthinger@oracle.com, @thomaswue)
Thomas is a researcher at Oracle labs. He is lead and architect of the Graal OpenJDK project.

Jaroslav Tulach
Jaroslav is the founder and initial architect of NetBeans, which is not just a well known IDE, but also the first modular desktop application framework written in Java.

Lukas Stadler ( lukas.stadler@oracle.com)
Lukas is a researcher at Oracle labs.



20 API Paradoxes

How to write APIs that will stand the test of time

API Design Checklist

Contributing to Open Source projects

Language Aspects, Graal, Truffle, Course Project

Lecture times

Date Time Room
15.1.2016 12:45-18:00 HS 14
16.1.2016 8:30-12:45 HS 14


Part of successfully completing the lecture is a project that exercises the discussed concepts of modularity and API design. The project has to be done in teams of at least two students. The topic of the project is freely selectable. It is also possible to select an existing software project and apply the concepts of modularity and API design to it.

The project has to be finished by 2016. Until this day the source code of the project as well as a short documentation has to be sent to thomas.wuerthinger@oracle.com. We will then schedule a meeting at which the participants will be able to share their experiences during development. We will also ask some questions about your projects to make sure that you did them yourself and every teammember participated. The grade will be based on the proper usage of the concepts presented during the lecture. The minimum amount of time every one should spend for creating the project is 25 hours based on the ECTS points you will receive for this lecture.