License
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2016.12
URN: urn:nbn:de:0030-drops-61068
URL: http://drops.dagstuhl.de/opus/volltexte/2016/6106/
Go to the corresponding LIPIcs Volume Portal


Jezek, Kamil ; Dietrich, Jens

Magic with Dynamo -- Flexible Cross-Component Linking for Java with Invokedynamic

pdf-format:
LIPIcs-ECOOP-2016-12.pdf (0.7 MB)


Abstract

Modern software systems are not built from scratch. They use functionality provided by libraries. These libraries evolve and often upgrades are deployed without the systems being recompiled. In Java, this process is particularly error-prone due to the mismatch between source and binary compatibility, and the lack of API stability in many popular libraries. We propose a novel approach to mitigate this problem based on the use of invokedynamic instructions for cross-component method invocations. The dispatch mechanism of invokedynamic is used to provide on-the-fly signature adaptation. We show how this idea can be used to construct a Java compiler that produces more resilient bytecode. We present the dynamo compiler, a proof-of-concept implemented as a javac post compiler. We evaluate our approach using several benchmark examples and two case studies showing how the dynamo compiler can prevent certain types of linkage and stack overflow errors that have been observed in real-world systems.

BibTeX - Entry

@InProceedings{jezek_et_al:LIPIcs:2016:6106,
  author =	{Kamil Jezek and Jens Dietrich},
  title =	{{Magic with Dynamo -- Flexible Cross-Component Linking for Java with Invokedynamic}},
  booktitle =	{30th European Conference on Object-Oriented Programming (ECOOP 2016)},
  pages =	{12:1--12:25},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-014-9},
  ISSN =	{1868-8969},
  year =	{2016},
  volume =	{56},
  editor =	{Shriram Krishnamurthi and Benjamin S. Lerner},
  publisher =	{Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{http://drops.dagstuhl.de/opus/volltexte/2016/6106},
  URN =		{urn:nbn:de:0030-drops-61068},
  doi =		{10.4230/LIPIcs.ECOOP.2016.12},
  annote =	{Keywords: Java, compilation, linking, binary compatibility, invokedynamic}
}

Keywords: Java, compilation, linking, binary compatibility, invokedynamic
Seminar: 30th European Conference on Object-Oriented Programming (ECOOP 2016)
Issue Date: 2016
Date of publication: 13.07.2016


DROPS-Home | Fulltext Search | Imprint Published by LZI