Version History

Table below shows the history of Javonet versions:

Version Changes Release Date
1.4 HF34 MINOR Version 1.4 Hot Fix 34 includes:

  • Added support to retrieve mixed arrays of value and complex types as method result.
  • Added revalidate method on NControlContainer to refresh the .NET user control layout after programatical change in Java layout.
  • Added support to retrieve value type arrays populate within the .NET method with “out” argument.
  • Increase performance of get/set properties by implementing hard-wired pointers to .NET side.
  • Added caching on indexed fields operations to increase performance.
2017-04-04
1.4 HF29 MINOR Version 1.4 Hot Fix 29 includes:

  • Fix for using custom license directory when running Javonet with Java 1.6
  • Update to hardware dongles allowing to issue new hardware keys without updating pre-activated license key
  • Extended mechanism for loading .NET dlls from byte array to support libraries with dependencies in other DLL files
2016-11-30
1.4 HF25 MINOR Version 1.4 Hot Fix 25 includes:

  • Added support for hardware USB dongles to allow easy transition of Javonet enabled software and Javonet licenses between different machines or during machine upgrade.
  • Added support for multi-machine license file to allow using single offline pre-activated license file on multiple machines or across multiple hardware USB dongles.
  • Added possibility to add reference to .NET DLL files using byte arrays instead of local path or GAC name.
2016-09-28
1.4 HF24 MINOR Version 1.4 Hot Fix 24 includes:

  • Enabled calling methods by passing arguments of types that inherit from types expected by the method. Auto method resolving mechanism supports ref, outs, implicit and explicit casts and value-types to System.Object mapping
2016-09-14
1.4 HF23 MINOR Version 1.4 Hot Fix 23 includes:

  • Improved performance of invoking methods with “enum” arguments.
  • Improved performance of using enums in setters.
  • Extended methods resolving mechanism for static methods to detect target method when there are nulls passed for Nullable enum and array arguments
2016-04-23
1.4 HF18 MINOR Version 1.4 Hot Fix 18 includes:

  • Added support for scalable licensing models
2015-12-17
1.4 HF17 MINOR Version 1.4 Hot Fix 17 includes:

  • Improved the error message when there is no matching method found. The error message includes the arguments detected based on user input and more detailed expected method signature.
  • Added support to properly choose the method when there is only one overload with matching number of arguments and all passed arguments are null of unknown type.
  • Bugfix: Fixed Javonet activation with proxy servers.
  • Bugfix: Fixed support for null arguments without using NNull object.
  • Modified version naming convention to separate library version with dash instead of underscore.
  • Added beta release of support for events and callbacks/delegates returning results
  • Added new method on Javonet object “setLicenseDirectory” to specify alternative path for storing Javonet license files
  • Added support for returning modified .NET reference objects as byref invocation results. Now developers can invoke .NET methods passing .NET object as by ref argument to be modified on .NET side (i.e. DateTime)
2015-11-17
1.4 HF15 MINOR Version 1.4 Hot Fix 15 includes:

  • Bugfix: Improved detection of .NET WinForms user controls inheriting from ScrollableControl and Control classes for embedding in Java interface.
2015-08-20
1.4 HF14 MAJOR Version 1.4 Hot Fix 14 includes:

  • Added new class NControlContainer which allows embedding .NET WPF or WinForms user controls in Java AWT, Swing and JavaFX interface.
  • Added possibility to pass instances of NEnum class as method arguments with “ref” and “out” keywords using NRef and NOut objects.
  • Added new object NDelegate which allows passing Java method as delegate argument to .NET methods or setting Java methods on fields and properties of “delegate” type. When .NET side calls the delegate the call is routed automatically to Java side and provided Java implementation is executed. Currently supports delegates with or without arguments and returning “void”.
  • Update NObject API by restricting generic type “T” on method “setIndex” to classes derived from NObject. Fixed the return value of “setIndex” method to be the object on which the method was called to allow methods invocation chaining.
2015-08-03
1.4 HF10 MINOR Version 1.4 Hot Fix 10 includes:

  • IMPORTANT: Modified OEM license activation process.
2014-11-19
1.4 HF9 IMPORTANT Version 1.4 Hot Fix 9 includes:

  • IMPORTANT: Fix for issue with initializing generic types of the same base type in sequence.
  • Added new “boolean isActivate()” method on “Javonet” static class to allow developers verifying if Javonet has not been activated already by another thread or part of code.
2014-11-12
1.4 HF4 CRITICAL Version 1.4 Hot Fix 4 includes:

  • CRITICAL: Fix for issues with type loader while initializing new types simultaneously from several threads. In rare cases Javonet engine could crash.
  • Improved error message for exception while initializing .NET objects thrown by constructor.
2014-10-30
1.4 HF3 Version 1.4 Hot Fix 3 includes:

  • Fix for “Key already exists” issue within methods delegates caching mechanism. Bug occurred rarely in multithreaded environments.
2014-09-09
1.4 HF2 2014-06-14
1.4 HF1 2014-06-12
1.4 Version 1.4 includes:

  • Extreme performance improvement. Time per call decreased to 0,000009s
  • Threads management improved. Single logical thread in Java for each .NET logical thread.
  • Threads lifecycles constraint between Java and .NET
  • Modified data conversion mechanism
  • Introduced fully binary protocol
  • Extended generics support: added generic objects initialization with any number of generic types
  • Added support for invoking methods in instances of MarshalledByRefObjects
  • .NET 4.5 and Java 8 compatibility added
  • Merged all .NET versions in single JAR file
  • Added welcome message method on Javonet class to allow tracing javonet configuration in log files
  • Added automated detection of missing prerequisites and proper meanigful messages in console output
  • Added auto-resolving for ENUM types namespace
  • Garbage collector performance improved
  • Added support for user controlled bulk garbage collector invocations
2014-05-29
1.5 Version 1.5 includes:

  • First release of Javonet for .NET developers allowing the usage of Java JAR files from .NET
  • General Improvements:

  • Support for by ref arguments used in events delegates – now .NET side can pass by ref arguments to events listened and processed on Java side
  • Removal of embedded apache commons lang and configuration packages to avoid version conflict in target projects
  • Override hashCode for NNull objects. Now the two instance of .NET Null objects will be properly compared in logical statements and collections
  • Initializing z.NET delegates with NType
  • Support to retrieve SByte array from .NET side
  • Simplified arrays initialization. Now you can call Javonet.New(“String[]”) and Javonet will initialize the string array
  • Support for events calls where argument is array of primitive types
  • Improved access to fields on MarshalByRef objects including the resolution of fields defined through inherited interfaces
  • Improvements in NObject disposal to address the issues with delayed or blocked disposal in case of multiple .NET events handlers registered
  • Added the ability to specify the fixed paths for .NET libraries so they are properly resolved with dynamic code (XAML elements, app.config custom sections, code compiled at runtimed, etc..). Custom paths can be set from code or through javonet.xml configuration file
  • Ability to set license file directory through javonet.xml file
  • Extended Javonet welcome message with more details about current configuration
  • Support to call methods declared with explicit interface declaration in example IInterface.MethodName(args …);
  • New NException – now all the .NET exceptions from your libraries will be raised as NException which provides all the details from .NET exception, merges stacktraces, supports internal exceptions and gives access to operator on the .NET exception type. More about NException will be described in next articles. For backward compatibility we still support old exceptions mode that can be enabled from code using Javonet.setUseLegacyExceptions(bool value) or through javonet.xml configuration file
  • Fixed the issue of subscribing two events on the same object where one delegate is expecting result and the other one is not
  • Moved activation server to load balanced geo distributed highly available infrastructure on Microsoft Azure
  • Enabled defining custom activation relay servers with custom domain to route activation calls
  • Allowed activation at compile time
  • UI and Backend Components Embedding:

  • Full integration of UI components in Java UI so that switching between Java and .NET component does not affect the way main window looks like
  • Improvement to focus restoration so .NET components regain properly focus on windows switching and deiconification
  • Improved memory management to make sure that .NET user controls are properly disposed when the Java window is closed. However we also supported the ability to re-use the previously initiated UI components in new windows after detaching from previous UI
  • Introduction of new NControlJContainer – the new container is dedicated for swing applications and resolves the known Java bug in heavyweight and lightweight controls mixing. As .NET components are always heavyweight it is critical for to make sure they will draw and move properly in swing interfaces and now using new container it is guaranteed.
  • Supported adding controls to existing and visible windows
  • Added support for using mnemonic keys with WPF components. Now user can jump from Java controls to .NET control and from .NET to Java with mnemonic keys like ALT+X, ALT+K etc..
  • Added support for native access to WPF window from WPF user controls embedded in Java. Now controls can use Window.GetWindow(this); like is normally expected and will receive proper handle that can be passed to MessageBoxes and Dialog windows as parent
  • Added support for parent window blocking to make sure the Java windows are properly blocked if .NET component is showing modal or modeless popups
  • Added ability to configure if .NET message pump should live across entire lifecycle of Java application or only if there is at least one .NET component visible
  • Added support for tab cycle. Now you can cycle using tab between Java controls and through elements of .NET WPF child control seamlessly. Tab navigation will iterate through properly across Java and .NET respecting tab indexes.
  • Added support to co-host .NET and native controls in Java windows especially including OpenGL elements
  • Strongly Typed Wrappers:

  • Ability to easily convert Java enum (replicating it’s .NET counterpart) into the NEnum object. Now Java enums can be used as argument in NEnum constructor or through new NEnum.fromJavaEnum(…), static method.
  • Private handle fields – to avoid the need of exposing any Javonet API objects to Java developers using .NET cross platform components, we have designed a new way of connecting Java strongly typed wrappers with underlying .NET objects. Now if you enable the private handles mode, when any Java objects is passed to .NET side Javonet will look for private field named “handle” of “NObject” type and will use the underlying .NET object to process the call. More on private handles will be published in further articles.
2018-02-08
For details about previous versions please contact our technical support.
Popular Posts
Archives