Skip to main content

OT/J on Java 8 is …


The essence of object-oriented programming is to compose a system from a possibly large number of interacting classes and objects.

Since version 1.1, Java has not seen any enhancements for this task.

OT/J adds three closely related concepts:

  • Roles can be attached to a base object for dynamic specialization.
  • Roles are grouped into a Team to yield cohesive modules for use-cases & features.
  • Teams support nested inheritance for large-scale specialization.


OT/J is agnostic to how algorithms are encoded (programming in the small),
but you may leverage lambda expressions from Java 8 in your OT/J programs for that touch of functional programming.


A rich type system is key for attaching semantics to the elements of your program.
  • Java 8 features …
    type annotations for expressing more properties of types,
  • JDT leverages …
    type annotations for detecting null related errors,
  • OT/J introduces …
    dependent types to express object ownership.

Back to the top