Java 9 Modularity

Type:

Bachelor/Master Seminar

Semester:

Summer Semester 2018

Language:

English

First Meeting:

13.04.2018 at 10:00,

Room: 01.09.14 (Alonzo church)

Lecturer:

Prof. Dr. Alexander Pretschner

Vadim Cebotari

SWS:

2

ECTS:

4/5 (see curriculum plan)

LvNr:

4624 (IN0014, IN2107)

Max. Number of participants

11

Participation rules

  1. First meeting will take place on 13.04.2018 at 10:00 in room 01.09.014.
  2. Discussion and assignment of seminar topics will be done in the first meeting.
  3. Students are expected to attend seminar sessions each week and participate actively in the discussions about the presented topic.
  4. Each student will prepare and hold a presentation for the assigned topic. The presentation should last about 45 minutes.
  5. Presentation slides will be discussed with the supervisor two weeks before the presentation.
  6. Final version of slides must be submitted to the supervisor not later than 2 days before the seminar session.
  7. Students selected to participate in the seminar and willing to quit the seminar must send a cancellation email to the supervisor by 01.04.2018, failing which they will be graded 5.0.

Content

Along with other new features Java 9 introduced a module system to the platform. Same way as packages give a structure to classes and interfaces, modules structure packages. A module is a set of packages designed for reuse. The Java module system has a strong impact on the way we can design and build Java applications. The module system refers to the large-scale development of Java applications. This is a fundamental difference, for example, to Java 8. Java 8 introduced also many new features, e.g. streams and lambdas etc., but these features are small-scale changes that concern mainly single classes and not whole applications.

In this seminar we will discuss the concept of modularity and its core tenets as well as Java 9 module system as an important implementation of modularity concept. We will take a closer look at how we can build modular Java applications, the consequences of using modularization in Java applications as well as how we can migrate pre-Java 9 applications to modules. We will examine the services mechanism of the Java module system as a means to ensure loose coupling between the modules.

Pre-requisites

Good knowledge of Java programming language is required. Basic understanding of software architectures is desirable.

Objective

This seminar aims to introduce students to the scientific method of critically reading, understanding, analyzing, explaining and presenting existing literature. The focus of the seminar is on modularity concepts. Students will read book chapters as well as additional articles, technical specifications and papers on the topic of modularity. Students should undestand the concepts of modularity as well as learn to apply these concepts to concrete examples. In this seminar students will demonstrate modularity principles using the example of Java modularity system introduced with Java 9.

Each student will prepare and hold a presentation on the assigned topic. The presentation will give first a short introduction into the problem and concepts of the topic. Then, possible aproaches, solutions, best practices to solve the problem will be highlighted in the presentation. Students are encouraged to reflect on and put own ideas, questions, results up for discussion in the seminar sessions.

Possible topics

The list of possible topics are:

  1. Concepts of módularity. Advantages and core principles.
  2. JDK platform modules and application modules.
  3. Modularity patterns and best practices.
  4. Migration to modules.
  5. Testing modules.
  6. Custom runtime images.

Organization

Students will survey the literature on the topic assigned to them by the supervisor. They are encouraged to find and read further relevant articles on the topic. Students will prepare and hold a presentation on the assigned topic. The presentation has to be submitted at latest 2 days before the seminar session to the supervisor. The presentation will be 45 minutes + 30 minutes of discussion.

Seminar Literature

  1. Paul Bakker, Sander Mark „Java 9 Modularity“, O‘Reilly Media, 2017
  2. Kirk Knoernschild „Java Application Architecture: Modularity Patterns with Examples Using OSGi“, Addison-Wesley Professional, 2012
  3. JEP 261: Module System