Module jdk.dynalink

# Package jdk.dynalink.linker

Contains interfaces and classes needed by language runtimes to implement their own language-specific object models and type conversions. The main entry point is the `GuardingDynamicLinker` interface. It needs to be implemented in order to provide linking for the runtime's own object model. A language runtime can have more than one guarding dynamic linker implementation. When a runtime is configuring Dynalink for itself, it will normally set these guarding linkers as the prioritized linkers in its `DynamicLinkerFactory` (and maybe some of them as fallback linkers, for e.g. handling "method not found" and similar errors in a language-specific manner if no other linker managed to handle the operation.)

A language runtime that wishes to make at least some of its linkers available to other language runtimes for interoperability will need to use a `GuardingDynamicLinkerExporter`.

Most language runtimes will be able to implement their own linking logic by implementing `TypeBasedGuardingDynamicLinker` instead of `GuardingDynamicLinker`; it allows for faster type-based linking dispatch.

Language runtimes that allow type conversions other than those provided by Java will need to have their guarding dynamic linker (or linkers) also implement the `GuardingTypeConverterFactory` interface to provide the logic for these conversions.

Since:
  9

Interface Summary
ConversionComparator: Optional interface to be implemented by `GuardingTypeConverterFactory` implementers.
GuardedInvocationTransformer: Interface for objects that are used to transform one guarded invocation into another one.
GuardingDynamicLinker: The base interface for language-specific dynamic linkers.
GuardingTypeConverterFactory: Optional interface that can be implemented by `GuardingDynamicLinker` implementations to provide language-specific type conversion capabilities.
LinkerServices: Interface for services provided to `GuardingDynamicLinker` instances by the `DynamicLinker` that owns them.
LinkRequest: Represents a request to link a particular invocation at a particular call site.
MethodHandleTransformer: A generic interface describing operations that transform method handles.
MethodTypeConversionStrategy: Interface for objects representing a strategy for converting a method handle to a new type.
TypeBasedGuardingDynamicLinker: A guarding dynamic linker that can determine whether it can link the call site solely based on the type of the first argument at linking invocation time.

Class Summary
GuardedInvocation: Represents a conditionally valid method handle.
GuardingDynamicLinkerExporter: A class acting as a supplier of guarding dynamic linkers that can be automatically loaded by other language runtimes.

Enum Summary
ConversionComparator.Comparison: Enumeration of possible outcomes of comparing one conversion to another.