APIs for Java Developers
Go to APIs for .NET Developers (coming soon)Class Javonet
- java.lang.Object
-
- com.javonet.Javonet
-
public class Javonet extends java.lang.ObjectThis is main class of Javonet solution. Javonet exposes methods for:- initializing javonet
- activating javonet
- loading references to .NET assemblies
- retrieving .NET types
- creating .NET classes instances
Use this class as starting point for most Javonet operations.
Activating Javonet
Before you perform any operation with Javonet first you must activate your Javonet license.
You can do it either by callingactivate(String, String, JavonetFramework)method or specifying your
license details in Javonet XML configuration file.Usage Sample
Example below shows all what you need to do to activate Javonet and use .NET Random class to
generate random number and retrieve result as JAVA integer:
Javonet.activate("[email protected]", "your-javonet-license-key"); NObject objRandom = Javonet.New("System.Random"); Integer value = objRandom.invoke("Next",10,20); System.out.println(value);- Version:
- 1.0
-
Constructor Summary
Constructors Constructor and Description Javonet()
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static booleanactivate(java.lang.String oemLicenceKey,
JavonetFramework framework)Activates Javonet copy with OEM license details.static booleanactivate(java.lang.String email,
java.lang.String licenceKey,
JavonetFramework framework)Activates Javonet copy with your license details.static booleanactivate(java.lang.String email,
java.lang.String licenceKey,
java.lang.String proxyHost,
JavonetFramework framework)Activates Javonet copy with your license details.static booleanactivate(java.lang.String email,
java.lang.String licenceKey,
java.lang.String proxyHost,
java.lang.String proxyUsername,
java.lang.String proxyPassword,
JavonetFramework framework)Activates Javonet copy with your license details.static booleanactivate(java.lang.String email,
java.lang.String licenceKey,
java.lang.String proxyHost,
java.lang.String proxyUsername,
java.lang.String proxyPassword,
java.lang.String proxyDomain,
JavonetFramework framework,
java.lang.String relay)Activates Javonet copy with your license details.static voidaddReference(java.lang.String... pathOrName)Loads .NET library or libraries into memory on .NET side.static voidaddReference(java.lang.String name,
byte[] dotNetAssemblyByteArray)Loads .NET library from byte array into memory on .NET side.static voidaddReference(java.lang.String name,
java.lang.Byte[] dotNetAssemblyByteArray)Loads .NET library from byte array into memory on .NET side.static NObjectcreate(java.lang.String typeName)Creates new instance of .NET class using parameter-less constructor specified by provided type name and located in any of the loaded assemblies.static NObjectcreate(java.lang.String typeName,
java.lang.Object... parameters)Creates new instance of .NET class using constructor with parameters specified by provided type name and located in any of the loaded assemblies.static voidDispose()Disposes Javonet session.static JavonetFrameworkgetFramework()Returns current .NET Framework version that is being used by Javonet.static com.javonet.internal.IGatewaygetGateway()Returns current gateway session object.static NTypegetType(java.lang.String typeName)Loads specified type on .NET side and returns new instance of NType class connected to this type.static NTypegetType(java.lang.String typeName,
java.lang.Object... genericTypes)Loads specified generic type on .NET side and returns new instance of NType class connected to this type.static booleangetUseLegacyExceptions()Returns if Javonet is working in legacy exceptions mode or new NException mode.static booleangetUsePrivateHandleField()Returns information if Javonet is using the private handles field mode for strongly
typed wrappers.static booleanisActivated()Returns true or false indicating if Javonet engine has been activated
and configured in the current process.static NObjectNew(java.lang.String typeName)Creates new instance of .NET class using parameter-less constructor specified by provided type name and located in any of the loaded assemblies.static NObjectNew(java.lang.String typeName,
java.lang.Object... parameters)Creates new instance of .NET class using constructor with parameters specified by provided type name and located in any of the loaded assemblies.static NAssemblyreference(java.lang.String pathOrName)Loads .NET library and returns instance of associated NAssembly object.static voidsetActivationRelay(java.lang.String relayUrl,
java.lang.String relaySignature)Sets the custom URL that will be used for processing activation requests.static voidsetApartmentState(JavonetApartmentState apartmentState)Sets apartment state for .NET process main thread.static voidsetDependencyPath(java.lang.String name,
java.lang.String path)Defines fixed path for dependent DLL which is being dynamically loading by .NET code.static voidsetLicenseDirectory(java.lang.String licenseDirectory)Sets the absolute path where the Javonet license files should be stored.static voidsetUseHardwareKey(boolean useHardwareKey)Sets if the Javonet should use hardware key as a source of machine ID
for license verification.static voidsetUseLegacyExceptions(boolean value)Sets if Javonet is working in legacy exceptions mode or new NException mode.static voidsetUsePrivateHandleField(boolean value)Sets if Javonet should use the private handles field mode for strongly typed wrappers.static voidshowWelcomeMessage()Prints on console Javonet Welcome message.
-
Method Detail
-
activate
public static boolean activate(java.lang.String oemLicenceKey, JavonetFramework framework) throws JavonetExceptionActivates Javonet copy with OEM license details.- Parameters:
oemLicenceKey– Your OEM license keyframework– .NET Framework version to be used read more atJavonetFramework- Returns:
- Activation result true for success and false for failure
- Throws:
JavonetException– If exception occurs during activation
-
activate
public static boolean activate(java.lang.String email, java.lang.String licenceKey, JavonetFramework framework) throws JavonetExceptionActivates Javonet copy with your license details. Activation can be also performed automatically
by providing your license details in Javonet XML configuration file.- Parameters:
email– Your license key email addresslicenceKey– Your license keyframework– .NET Framework version to be used read more atJavonetFramework- Returns:
- Activation result true for success and false for failure
- Throws:
JavonetException– If exception occurs during activation
-
activate
public static boolean activate(java.lang.String email, java.lang.String licenceKey, java.lang.String proxyHost, JavonetFramework framework) throws JavonetExceptionActivates Javonet copy with your license details. Activation can be also performed automatically
by providing your license details in Javonet XML configuration file.With this method optional proxy settings can be provided which should be used to access Internet
from enterprise network. These settings will be used for performing activation.- Parameters:
email– Your license key email addresslicenceKey– Your license keyproxyHost– Proxy host name in format HOST:PORT or IP:PORTframework– .NET Framework version to be used read more atJavonetFramework- Returns:
- Activation result true for success and false for failure
- Throws:
JavonetException– If exception occurs during activation
-
activate
public static boolean activate(java.lang.String email, java.lang.String licenceKey, java.lang.String proxyHost, java.lang.String proxyUsername, java.lang.String proxyPassword, JavonetFramework framework) throws JavonetExceptionActivates Javonet copy with your license details. Activation can be also performed automatically
by providing your license details in Javonet XML configuration file.With this method optional proxy settings can be provided which should be used to access Internet
from enterprise network. These settings will be used for performing activation.- Parameters:
email– Your license key email addresslicenceKey– Your license keyproxyHost– Proxy host name in format HOST:PORT or IP:PORTproxyUsername– Username to be used for proxy authenticationproxyPassword– Password to be used for proxy authenticationframework– .NET Framework version to be used read more atJavonetFramework- Returns:
- Activation result true for success and false for failure
- Throws:
JavonetException– If exception occurs during activation
-
activate
public static boolean activate(java.lang.String email, java.lang.String licenceKey, java.lang.String proxyHost, java.lang.String proxyUsername, java.lang.String proxyPassword, java.lang.String proxyDomain, JavonetFramework framework, java.lang.String relay) throws JavonetExceptionActivates Javonet copy with your license details. Activation can be also performed automatically
by providing your license details in Javonet XML configuration file.With this method optional proxy settings can be provided which should be used to access Internet
from enterprise network. These settings will be used for performing activation.- Parameters:
email– Your license key email addresslicenceKey– Your license keyproxyHost– Proxy host name in format HOST:PORT or IP:PORTproxyUsername– Username to be used for proxy authenticationproxyPassword– Password to be used for proxy authenticationproxyDomain– User domain to be used for proxy authenticationframework– .NET Framework version to be used read more atJavonetFramework- Returns:
- Activation result true for success and false for failure
- Throws:
JavonetException– If exception occurs during activation
-
addReference
public static void addReference(java.lang.String... pathOrName) throws JavonetExceptionLoads .NET library or libraries into memory on .NET side.Loaded libraries are automatically used for all look-ups on further Javonet calls to .NET
types or classes.Assembly can be located anywhere on the hard drive in local directory or in GAC.
You can specify full assembly path or full assembly name for GAC assemblies.
You can provide more then one assembly name in seperate string arguments.
- Parameters:
pathOrName– List of .NET assemblies paths or full assembly names to be loaded- Throws:
JavonetException– If .NET exception occurs during while loading assembly
-
addReference
public static void addReference(java.lang.String name, byte[] dotNetAssemblyByteArray) throws JavonetExceptionLoads .NET library from byte array into memory on .NET side.Loaded libraries are automatically used for all look-ups on further Javonet calls to .NET
types or classes.You can load the assembly bytes from disk or memory stream extracted from
your application jar file.This method will automatically box the provided bytes array byte[] into Byte[].
For higher performance use theaddReference(String, Byte[]).- Parameters:
name– Name of the library provided in second argument.dotNetAssemblyByteArray– Byte Array of an assembly to be loaded.- Throws:
JavonetException– If .NET exception occurs during while loading assembly
-
addReference
public static void addReference(java.lang.String name, java.lang.Byte[] dotNetAssemblyByteArray) throws JavonetExceptionLoads .NET library from byte array into memory on .NET side.Loaded libraries are automatically used for all look-ups on further Javonet calls to .NET
types or classes.You can load the assembly bytes from disk or memory stream extracted from
your application jar file.- Parameters:
name– Name of the library provided in second argument.dotNetAssemblyByteArray– Byte Array of an assembly to be loaded.- Throws:
JavonetException– If .NET exception occurs during while loading assembly
-
create
public static NObject create(java.lang.String typeName) throws JavonetException
Creates new instance of .NET class using parameter-less constructor specified by provided type name and located in any of the loaded assemblies.- Parameters:
typeName– Name of the type for which new instance should be created- Returns:
- New instance of NObject associated to new instance of created object on .NET side
- Throws:
JavonetException– If .NET exception occurs during initialization of .NET object
-
create
public static NObject create(java.lang.String typeName, java.lang.Object... parameters) throws JavonetException
Creates new instance of .NET class using constructor with parameters specified by provided type name and located in any of the loaded assemblies.Constructor is being matched by parameters count and type.
Parameters can be specified as JAVA primitive types (string, integer, float..) or instances of NObject class for reference-type parameters.
This method returns new instance of NObject class associated to newly created object on .NET side.
- Parameters:
typeName– Name of the type for which new instance should be createdparameters– Parameters to be passed to constructor during creation of new instance of associated .NET type- Returns:
- New instance of NObject associated to new instance of created object on .NET side
- Throws:
JavonetException– If .NET exception occurs during initialization of .NET object
-
Dispose
public static void Dispose()
Disposes Javonet session. All objects and connections are closed. Existing NObject, NType and
NAssemblies objects cannot be used anymore.
-
getFramework
public static JavonetFramework getFramework()
Returns current .NET Framework version that is being used by Javonet.Framework version can be set either by calling
activate(String, String, JavonetFramework)method
or setting “framework” property in “settings” section of javonet.xml configuration file.- Returns:
- current .NET Framework version selected
-
getGateway
public static com.javonet.internal.IGateway getGateway() throws JavonetExceptionReturns current gateway session object. If gateway is not yet initialized it will be
initialized automatically.- Returns:
- Current gateway session object
- Throws:
JavonetException– If exception occurs during gateway initialization
-
getType
public static NType getType(java.lang.String typeName) throws JavonetException
Loads specified type on .NET side and returns new instance of NType class connected to this type.- Parameters:
typeName– Name of the type to be loaded- Returns:
- New instance of NType associated to loaded .NET type
- Throws:
JavonetException– If .NET exception occurs during .NET type loading
-
getType
public static NType getType(java.lang.String typeName, java.lang.Object... genericTypes) throws JavonetException
Loads specified generic type on .NET side and returns new instance of NType class connected to this type.- Parameters:
typeName– Name of the type to be loadedgenericTypes– List of generic types used to parameterize this generic type instance- Returns:
- New instance of NType associated to loaded .NET type
- Throws:
JavonetException– If .NET exception occurs during .NET type loading
-
getUseLegacyExceptions
public static boolean getUseLegacyExceptions()
Returns if Javonet is working in legacy exceptions mode or new NException mode.Legacy exceptions is standard way how exceptions were handled before version 1.5
all .NET and Javonet exceptions where thrown as JavonetException. For .NET exceptions
the message contained entire .NET exception converted to string.New exception mode distinguishes between JavonetExceptions and exceptions coming from
users .NET code. For .NET exceptions the NException extension of JavonetException is thrown.
This class contains real .NET message, merges Java and .NET stacktrace and provides access
to internal exceptions. Additionally all other properties from .NET exception are copied to Java
side for further processing including the access to the .NET exception type.It is recommended to work with new exceptions mode which will be further extended in next releases.
Legacy mode should be used only for backward compatibility in existing projects.- Returns:
- Returns true or false indicating if Javonet is working using old exceptions mode.
- Since:
- 1.5
-
getUsePrivateHandleField
public static boolean getUsePrivateHandleField()
Returns information if Javonet is using the private handles field mode for strongly
typed wrappers.In private handles mode, when regular Java class is passed to Javonet methods as argument,
new value for a field, part of array etc… to be processed on .NET side, Javonet looks if this
object contains private field of NObject type and name “handle”. If yes the object associated with that
NObject instance is used for further processing.This is used to simplify strongly typed wrappers creation and make them more natural for end-users. Read
more about creating strongly typed wrappers on Javonet Guides for Java Developers.https://www.javonet.com/java-devs/guides/- Returns:
- Returns true or false indicating if Javonet is looking for private handles.
- Since:
- 1.5
-
isActivated
public static boolean isActivated()
Returns true or false indicating if Javonet engine has been activated
and configured in the current process.If Javonet has been activate the “activate” method should not be called.
This method can be used in distributed and mulit-threaded environments to
avoid multiple Javonet activation calls.- Returns:
- Boolean value indicating if Javonet activation has been performed
-
New
public static NObject New(java.lang.String typeName) throws JavonetException
Creates new instance of .NET class using parameter-less constructor specified by provided type name and located in any of the loaded assemblies.This method works the same way as
create(String)and was created to provide more semantically meaningful usage.- Parameters:
typeName– Name of the type for which new instance should be created- Returns:
- New instance of NObject associated to new instance of created object on .NET side
- Throws:
JavonetException– If .NET exception occurs during initialization of .NET object
-
New
public static NObject New(java.lang.String typeName, java.lang.Object... parameters) throws JavonetException
Creates new instance of .NET class using constructor with parameters specified by provided type name and located in any of the loaded assemblies.This method works the same way as
create(String, Object...)and was created to provide more semantically meaningful usage.Constructor is being matched by parameters count and type.
Parameters can be specified as JAVA primitive types (string, integer, float..) or instances of NObject class for reference-type parameters.
This method returns new instance of NObject class associated to newly created object on .NET side.
- Parameters:
typeName– Name of the type for which new instance should be createdparameters– Parameters to be passed to constructor during creation of new instance of associated .NET type- Returns:
- New instance of NObject associated to new instance of created object on .NET side
- Throws:
JavonetException– If .NET exception occurs during initialization of .NET object
-
reference
public static NAssembly reference(java.lang.String pathOrName) throws JavonetException
Loads .NET library and returns instance of associated NAssembly object.Loaded libraries are automatically used for all look-ups on further Javonet calls to .NET
types or classes.Assembly can be located anywhere on the hard drive in local directory or in GAC.
You can specify full assembly path or full assembly name for GAC assemblies.
- Parameters:
pathOrName– Full path or full assembly name- Returns:
- New instance of associated NAssembly object
- Throws:
JavonetException– If .NET exception occurs during while loading assembly
-
setActivationRelay
public static void setActivationRelay(java.lang.String relayUrl, java.lang.String relaySignature)Sets the custom URL that will be used for processing activation requests.Usage of activation relay servers is allowed for enterprise license only
in order to customize the url that will need to be white-listed for activation
requests.The customized activation url must be provided with valid signature generated
using Javonet private RSA key by Javonet support. Otherwise the server will not
be authorized for processing activation requests.- Parameters:
relayUrl– Target url for activation processing i.e. https://ads.sdncenter.plrelaySignature– Url signature in base64 format- Since:
- 1.5
-
setApartmentState
public static void setApartmentState(JavonetApartmentState apartmentState) throws JavonetException
Sets apartment state for .NET process main thread. This method must be called before
any other operation on Javonet is executed.Apartment state can be also set automatically by specifying it in Javonet XML configuration file.
Javonet during initialization creates .NET process connected to JAVA process of your
application. The .NET process main thread can be in Multi-Threaded Apartment state (MTA)
or Single-Threaded Apartment state (STA). This value is very important for implementations
where WinForms or WPF interface is supposed to be used for JAVA application.In case when you plan to create WinForms or WPF interface you must use STA apartment thread.
- Parameters:
apartmentState– Apartment state to be set- Throws:
JavonetException– If exception occurs while setting apartment state
-
setDependencyPath
public static void setDependencyPath(java.lang.String name, java.lang.String path) throws JavonetExceptionDefines fixed path for dependent DLL which is being dynamically loading by .NET code.This method should be used only if there is a problem with automated resolution of particular DLL location.
Method applies only for the library specified, resolution of *.resources libraries will not be affected.
- Parameters:
name– Name of the library for which the path will be specified. In example MyProject.Commons.path– Path to the DLL file that will be set as fixed location for library specified.- Throws:
JavonetException– If .NET exception occurs while specifying fixed registration
-
setLicenseDirectory
public static void setLicenseDirectory(java.lang.String licenseDirectory)
Sets the absolute path where the Javonet license files should be stored.- Parameters:
licenseDirectory– path for Javonet license files
-
setUseHardwareKey
public static void setUseHardwareKey(boolean useHardwareKey) throws JavonetExceptionSets if the Javonet should use hardware key as a source of machine ID
for license verification. If set to “true” the hardware dongle key must
be plugged in order to properly activate Javonet.Setting this value to true to will cause the creation of javonet_hk.lic
file in the root directory of Java application.- Parameters:
useHardwareKey– flag if hardware dongle key should be used as source of machine id.- Throws:
JavonetException– thrown if method is called after activate method
-
setUseLegacyExceptions
public static void setUseLegacyExceptions(boolean value)
Sets if Javonet is working in legacy exceptions mode or new NException mode.By default Javonet works in NException mode.
Legacy exceptions is standard way how exceptions were handled before version 1.5
all .NET and Javonet exceptions where thrown as JavonetException. For .NET exceptions
the message contained entire .NET exception converted to string.New exception mode distinguishes between JavonetExceptions and exceptions coming from
users .NET code. For .NET exceptions the NException extension of JavonetException is thrown.
This class contains real .NET message, merges Java and .NET stacktrace and provides access
to internal exceptions. Additionally all other properties from .NET exception are copied to Java
side for further processing including the access to the .NET exception type.It is recommended to work with new exceptions mode which will be further extended in next releases.
Legacy mode should be used only for backward compatibility in existing projects.- Parameters:
value– true or false indicating if legacy exceptions should be used.- Since:
- 1.5
-
setUsePrivateHandleField
public static void setUsePrivateHandleField(boolean value)
Sets if Javonet should use the private handles field mode for strongly typed wrappers.In private handles mode, when regular Java class is passed to Javonet methods as argument,
new value for a field, part of array etc… to be processed on .NET side, Javonet looks if this
object contains private field of NObject type and name “handle”. If yes the object associated with that
NObject instance is used for further processing.This is used to simplify strongly typed wrappers creation and make them more natural for end-users. Read
more about creating strongly typed wrappers on Javonet Guides for Java Developers.https://www.javonet.com/java-devs/guides/- Parameters:
value– true or false indicating if private handles fields mode should be used.- Since:
- 1.5
-
showWelcomeMessage
public static void showWelcomeMessage()
Prints on console Javonet Welcome message. This method could be used for debugging and logging purposes.Welcome message includes details about Javonet version, .NET and C++ runtime loaded and configuration detected.
-