Compatibility and API Evolution in Java - Jens Dietrich

  • September 1, 2014 · 5:45 PM

Real-world programs are neither monolithic nor static – they are constructed using platform and third party libraries, and both programs and libraries continuously evolve in response to change pressure. In case of the Java language, the rules defined in the Java Language and JVM Specs define when library evolution is safe. These rules distinguish between three types of compatibility - binary, source and behavioural.
In the first part of this talk I will present some puzzlers (in the style of Joshua Bloch’s famous book) showing the inconsistencies between the different types of compatibilities. In the second part, I will talk about some of the research we did in order to figure out what problems this causes in practise: (1) a developer survey showing that the rules of binary compatibility are not well understood by developers, (2) a repository study showing that this causes real problems in projects, and (3) a study on a set of 100+ popular Java programs that shows that incompatible API evolution is common. At the end, I will talk a little bit about tools and methods that can be used to mitigate some of these problems.

Jens has a MSc and a PhD in Mathematics from the University of Leipzig and has worked with object-oriented technologies (mainly Smalltalk and Java) since 1996. He helped to design and implement some of the first large-scale OO enterprise applications for clients like Mercedes Benz and several large banks in Germany, Switzerland, the UK , the US and Namibia. Jens is now Associate Professor in Software Engineering at Massey University New Zealand. He is interested in design analysis and refactoring (see for instance xplrarc.massey.ac.nz), contracts for dynamic component models (such as OSGi) and testing. Jens is currently visiting Australia to work with Oracle Labs in Brisbane on new algorithms to be used for the static analysis of the Java platform.

Join or login to comment.

  • Rob M.

    Videos are finally up, here:
    Part1: https://vimeo.com/106982729
    Part2: https://vimeo.com/107197501
    I had to split them to fit it up the pipe.

    1 · September 26

  • Rob M.

    In case you were wondering, the video is stuck in pergatory as I've now exhausted bandwidth on two adsl routers. When one of them gets allocation again or another means presents itself, I'll post it. My humble apologies for humble resourcing.

    September 18

  • Mark P.

    The types forum has been discussing similar issues (http://lists.seas.upenn.edu/pipermail/types-list/2014/001804.html)

    "...as others have observed in the past, Java effectively is an untyped language. Whatever its type system pretends to check is not a static guarantee of anything, at least not for object types. ...In general, the classes you see at runtime time bear no relation to whatever you had imported at compile time (other than their syntactic name).

    But this is a failure of Java and the JVM. It can be fixed, e.g. by doing a structural, link-time type check for every import edge..used in Alice ML, which is a version of SML extended with dynamic modules and a programmable “component manager", ...in the spirit of Java’s class loader, but without the soundness breakage."

    You can browse through the thread for types in distributed systems including links to session types which I mentioned the other night.

    September 5

  • Jason S.

    Sean Flannigan will be hosting tonight. Reach him on[masked]

    September 1

  • Rob M.

    Video duties as usual

    August 31

Our Sponsors

  • Redhat

    Brisbane Lunchtime Meetup

  • Oracle

    Brisbane Evening Meetup

People in this
Meetup are also in:

Create a Meetup Group and meet new people

Get started Learn more
Allison

Meetup has allowed me to meet people I wouldn't have met naturally - they're totally different than me.

Allison, started Women's Adventure Travel

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy