79. Treffen: Magic with Dynamo – Flexible Cross-Component Linking for Java with Invokedynamic

Mo, 01.08.2016 · 19:00 Uhr · Staats- und Universitätsbibliothek Dresden (SLUB Dresden), Vortragssaal, Ebene 1

A/Prof Jens Dietrich  

·  Massey University - New Zealand

TBD

Moderne Anwendungen basieren auf wiederverwendbaren Bibliotheken. Diese Bibliotheken werden unabhängig weiterentwickelt, und neue Versionen werden oft installiert ohne die Anwendung neu zu kompilieren. Im Falle von Java ist dieser Prozess besonders anfällig aufgrund des Unterschiedes zwischen Quellcode – und binärer Kompatibilität, und der Instabilität der Programmierschnittstellen vieler häufig benutzter Bibliotheken. Ich werde einen Ansatz vorstellen, wie man dieses Problem elegant umgehen kann.

Dieser Ansatz basiert auf der Idee die invokedynamic (neu in Java 7) Instruktion für Methodenaufrufe zwischen Bibliotheken zu benutzten. Der Dispatch-Mechanismus von invokedynamic wird benutzt, die Typen, die in den Methodenaufrufen benutzt werden, dynamisch anzupassen. Ich stelle den neuen “Dynamo” Java-Compiler vor, der auf dieser Idee basiert.

Dynamo ist als javac Postcompiler implementiert, und ist damit sehr schnell. Ich zeige wie man durch Compilierung mit Dynamo bestimmte Fehler (insbesondere NoSuchMethodError) die oft beim Linken von Java Anwendungen auftreten, verhindern kann. Compilierung mit Dynamo löst auch das bekannte “Hazard of Covariant Return Types and Bridge Methods” Szenario, bei dem das Zusammenspiel von (1) Überschreiben von Methoden mit Spezialisierung des Rückgabe-Typs, (2) “Dynamic Dispatch” und (3) Bibliotheken-Upgrade zu StackOverflow Fehlern führen kann.

Die vorgestellte Arbeit ist aus der Zusammenarbeit des Sprechers mit Kamil Jezek von der Westboehmischen Universität in Pilsen entstanden, und wurde finanziell unterstützt von Oracle Labs Australien.

Unser Referent

Jens Dietrich ist Außerordentlicher Professor für Software Engineering an der Massey Uni in Neuseeland. Jens hat ca 7 Jahre Industrieerfahrung in Deutschland, US, UK und Namibia, und hat an einigen der ersten grösseren OO Industrieprojekte (mit Smalltalk) in Deutschland mitgearbeitet. Er arbeitet seit 1997 mit Java, und seine Forschungsinteressen umfassen komponentenbasierte Entwicklung und schnelle Algorithmen zur statischen Programmanalyse. Jens ist gebürtiger Pirnaer, und hat in Leipzig studiert und promoviert.

Verlosung

Unter allen Teilnehmern verlosen wir dreimal ein Jahresabonnement des Fachmagazins JavaSPEKTRUM, die uns freundlicherweise von der SIGS DATACOM GmbH zur Verfügung gestellt werden.

Medien

Slides

79. Treffen: Magic with Dynamo – Flexible Cross-Component Linking for Java with Invokedynamic

Mo, 01.08.2016 · 19:00 Uhr · Staats- und Universitätsbibliothek Dresden (SLUB Dresden), Vortragssaal, Ebene 1

Moderne Anwendungen basieren auf wiederverwendbaren Bibliotheken. Diese Bibliotheken werden unabhängig weiterentwickelt, und neue Versionen werden oft installiert ohne die Anwendung neu zu kompilieren. Im Falle von Java ist dieser Prozess besonders anfällig aufgrund des Unterschiedes zwischen Quellcode – und binärer Kompatibilität, und der Instabilität der Programmierschnittstellen vieler häufig benutzter Bibliotheken. Ich werde einen Ansatz vorstellen, wie man dieses Problem elegant umgehen kann.

Dieser Ansatz basiert auf der Idee die invokedynamic (neu in Java 7) Instruktion für Methodenaufrufe zwischen Bibliotheken zu benutzten. Der Dispatch-Mechanismus von invokedynamic wird benutzt, die Typen, die in den Methodenaufrufen benutzt werden, dynamisch anzupassen. Ich stelle den neuen “Dynamo” Java-Compiler vor, der auf dieser Idee basiert.

Dynamo ist als javac Postcompiler implementiert, und ist damit sehr schnell. Ich zeige wie man durch Compilierung mit Dynamo bestimmte Fehler (insbesondere NoSuchMethodError) die oft beim Linken von Java Anwendungen auftreten, verhindern kann. Compilierung mit Dynamo löst auch das bekannte “Hazard of Covariant Return Types and Bridge Methods” Szenario, bei dem das Zusammenspiel von (1) Überschreiben von Methoden mit Spezialisierung des Rückgabe-Typs, (2) “Dynamic Dispatch” und (3) Bibliotheken-Upgrade zu StackOverflow Fehlern führen kann.

Die vorgestellte Arbeit ist aus der Zusammenarbeit des Sprechers mit Kamil Jezek von der Westboehmischen Universität in Pilsen entstanden, und wurde finanziell unterstützt von Oracle Labs Australien.

Unser Referent

Jens Dietrich ist Außerordentlicher Professor für Software Engineering an der Massey Uni in Neuseeland. Jens hat ca 7 Jahre Industrieerfahrung in Deutschland, US, UK und Namibia, und hat an einigen der ersten grösseren OO Industrieprojekte (mit Smalltalk) in Deutschland mitgearbeitet. Er arbeitet seit 1997 mit Java, und seine Forschungsinteressen umfassen komponentenbasierte Entwicklung und schnelle Algorithmen zur statischen Programmanalyse. Jens ist gebürtiger Pirnaer, und hat in Leipzig studiert und promoviert.

Verlosung

Unter allen Teilnehmern verlosen wir dreimal ein Jahresabonnement des Fachmagazins JavaSPEKTRUM, die uns freundlicherweise von der SIGS DATACOM GmbH zur Verfügung gestellt werden.

Medien

Slides

A/Prof Jens Dietrich  

·  Massey University - New Zealand

TBD