Attila Szegedi edited this page Aug 8, 2013 · 29 revisions

This is an implementation of invokedynamic-based multi-language linking and metaobject protocol framework. Such framework allows JVM classes emitted by one language runtime to invoke methods, read and write properties, and so forth, on objects from a different language runtime, within a single JVM instance. As a special case, it can be conveniently used to manipulate POJOs from non-Java language runtimes running on the JVM.

It consists of two different parts:

  • a linker composition framework that allows invokedynamic linkers for multiple languages to be discovered in classpath, loaded, and composed into a single "master" linker, and
  • a set of method naming and argument passing conventions, used through invokedynamic that make up the commonly understood metaobject protocol.

As an added bonus, it also contains a POJO linker that allows your language to link with plain Java objects. It manages conformance to JavaBeans specification, and provides full support for vararg methods and optimized overloaded method resolution.

Obtaining binaries

If you need binaries, you can grab them from the Maven repository. To add it as a dependency of your project from any Maven repo using build tool (Maven, Ivy, SBT, etc.) use the group id org.dynalang and artifact id dynalink; check the repository link for the latest available version.

Snapshots of the version under development are available in the Snapshot repository.

Building from source

You need Maven and Java 7. You need to make sure Maven runs with Java 7 (if not default, make sure your JAVA_HOME points to Java 7 installation). Here's how to build the JAR file and run the tests:

mvn package

Version-specific documentation

The current stable version is 0.7; check out User Guide 0.7.

The current under-development version is 0.8; check out What's New in 0.8; the document is updated as the changes are made.