src/jdk.dynalink/share/classes/jdk/dynalink/package-info.java

Print this page




 256  * that implements the usual Java semantics for all of the above operations and
 257  * can link any Java object that no other language-specific linker has managed
 258  * to link. This way, all language runtimes have built-in interoperability with
 259  * ordinary Java objects. See {@link jdk.dynalink.beans.BeansLinker} for details
 260  * on how it links the various operations.
 261  * <h2>Cross-language interoperability</h2>
 262  * A {@code DynamicLinkerFactory} can be configured with a
 263  * {@link jdk.dynalink.DynamicLinkerFactory#setClassLoader(ClassLoader) class
 264  * loader}. It will try to instantiate all
 265  * {@link jdk.dynalink.linker.GuardingDynamicLinkerExporter} classes visible to
 266  * that class loader and compose the linkers they provide into the
 267  * {@code DynamicLinker} it creates. This allows for interoperability between
 268  * languages: if you have two language runtimes A and B deployed in your JVM and
 269  * they export their linkers through the above mechanism, language runtime A
 270  * will have a language-specific linker instance from B and vice versa inside
 271  * their {@code DynamicLinker} objects. This means that if an object from
 272  * language runtime B gets passed to code from language runtime A, the linker
 273  * from B will get a chance to link the call site in A when it encounters the
 274  * object from B.
 275  */
 276 @jdk.Exported
 277 package jdk.dynalink;


 256  * that implements the usual Java semantics for all of the above operations and
 257  * can link any Java object that no other language-specific linker has managed
 258  * to link. This way, all language runtimes have built-in interoperability with
 259  * ordinary Java objects. See {@link jdk.dynalink.beans.BeansLinker} for details
 260  * on how it links the various operations.
 261  * <h2>Cross-language interoperability</h2>
 262  * A {@code DynamicLinkerFactory} can be configured with a
 263  * {@link jdk.dynalink.DynamicLinkerFactory#setClassLoader(ClassLoader) class
 264  * loader}. It will try to instantiate all
 265  * {@link jdk.dynalink.linker.GuardingDynamicLinkerExporter} classes visible to
 266  * that class loader and compose the linkers they provide into the
 267  * {@code DynamicLinker} it creates. This allows for interoperability between
 268  * languages: if you have two language runtimes A and B deployed in your JVM and
 269  * they export their linkers through the above mechanism, language runtime A
 270  * will have a language-specific linker instance from B and vice versa inside
 271  * their {@code DynamicLinker} objects. This means that if an object from
 272  * language runtime B gets passed to code from language runtime A, the linker
 273  * from B will get a chance to link the call site in A when it encounters the
 274  * object from B.
 275  */

 276 package jdk.dynalink;