UI Components Revolution – embedding .NET UI components in Java

UI controls—ready-to-use user interface elements software developers can place in any kind of desktop or web application—are now entering a great revolution. Those controls can show well-structured graphs, display 3D models, render reports and barcodes, add voice-recognition functionality, etc…

The UI components business has been around for more than 15 years. Using third-party components is highly popular among software vendors, as it allows them to quickly address the needs of the end-users with well-tested, well-designed, reliable code, which is much cheaper and quicker to implement than it would be to create the same functionality in-house.

There exist over 2,000 different commercial UI controls, offered by over 100 companies. A large portion of these components are developed either for .NET or Java, the leading solutions for desktop applications. However, a much smaller group exists for both simultaneously, which means the vendors offering the controls target one of the above-mentioned programming languages and rarely open themselves up to both. The latter seems to be a profitable business strategy, but it has not been overly popular due to high technological barriers.

This limitation might be an issue in situations where developers want to reuse components purchased by .NET teams in Java applications or to find controls that best fit the company design or fulfill the functionality requirements. It could be a frustrating experience for a Java developer if the UI control with the best 3D charts and high-quality documentation is targeted to .NET customers only. It would be rather difficult to persuade the control vendor to quickly develop the same control for Java, and it would be even harder to develop a control that reflects the same functionality and performance oneself. Then, what if there is no substitute? Should the project just be abandoned? Of course not.

A recent revolution, initiated by Javonet and called Unified Framework Components, has completely changed the way UI components are shared across different technologies. Thanks to Javonet, all .NET UI controls vendors can make their products easily usable for Java developers. This approach enables the use of .NET controls directly from Java applications, just as if they were pure Java controls.

This solution works for .NET components created with WinForms or WPF frameworks and can target all Java UI frameworks: AWT, Swing, and JavaFX.

Any of the existing .NET UI controls can be used directly from Java with no modifications to the existing source code. Any control vendor can immediately open to broader markets by using Javonet for their products. Existing .NET components can be exposed to Java in a matter of days by creating a Java version of the control API that reflects the same functionality and performance without modifying the original codebase, which can be achieved by wrapping the .NET library with the Javonet native integration technology. This process results in a ready-to-use Java JAR package, which works the same, has the same API, and can be delivered with the same documentation as in the .NET library.

Some of the major .NET UI controls vendors already offer their controls wrapped with Javonet to Java customers. This is a safe procedure, as performance and reliability are guaranteed because the core logic of the component is handled by .NET runtime, which gets loaded by Javonet alongside Java within the same operating system process.

Javonet native integration technology, the base of the revolution, has been proven by many different implementations by some of the biggest companies around the world, which make millions of cross-platform calls through Javonet every day.

More and more .NET UI controls vendors are joining the revolution and adding Java options to their offers. Java packages wrapping .NET codebases are added to installation packages and offered as options on their websites or through resellers like Component Source.

How-to for Java Developers
However, even if a vendor does not offer its products for Java yet, every Java developer can use third-party components within Java projects without access to their source code by following this simple development guide: Embedding .NET user controls in Java AWT, Swing, and JavaFX.

How-to for Components Vendors
There are three different engagement levels vendors can choose when joining the Unified Components program.

#1: The simplest approach assumes the creation of ready-to-play Java versions of controls, with limited functionality. This means a pure Java API maps only part of the methods exposed by the .NET implementation. However, the source code of the wrapper is shared with customers as open source. More advanced customers can extend the wrapper on their own using Javonet development guides.

Customers can download the control, run the sample Java project, and verify the reliability and performance through hands-on experience. In this model, the end-customer needs both a Javonet and component trial or commercial license.

The process of wrapping UI controls is very easy and intuitive. To provide a glimpse of how easily it can be achieved, we provide the samples below for more technical readers:

#2: The second approach assumes that the UI controls vendor provides full coverage of the .NET component API and embeds a Javonet license inside it, meaning that the end-customer does not need to make any changes to the wrapper or even have access to its source code, as a ready-to-use Java package with a pure Java API is provided. Customers do not need to purchase a Javonet license, either, because with each purchase, the license cost is included in the component license and is settled between the component vendor and Javonet.

#3: In the third model, the component vendor purchases a Javonet Enterprise license which is issued per for component libraries instead of customers and guarantees flat fees regardless of the component sales volume.

Bottom Line
Such universality of UI components has never before been possible. This revolutionary concept allows all UI controls vendors to double their market by exposing all their controls to both Java and .NET with minimal engagement of financial and human resources. Universal Component enables vendors to retain a single-code base (the one of the original control), which is easy to manage and extend, and allows them to preserve the full functionality and performance of the original component. Java-based customers can either wrap the original .NET component with the Javonet technology themselves (which is intuitive and easy to do) or receive a ready-to-use pure Java library from the vendor, with the .NET code embedded inside.

We are happy to announce that several component vendors including major players trust our solution and some of them joined the Universal Framework Component program to expose their .NET components to Java.

As an example of Universal Framework Component we provide a combit control here.