.NET Core Linux/Windows GUI

.NET Core is the managed code answer of Microsoft to cross-platform needs, but it lacks on cross-platform GUI support. Java is cross-platform and its GUI (AWT/Swing) suite is available on all platform. Some programmers loves .NET languages while other loves Java language. What happens if a developer needs a robust GUI application on top of .NET Core outside of the Microsoft operating systems? The answer to this question is simple: use both framework. The package available on JCOBridge Nuget contains all the libraries and resources to bridge together .NET and Java. The package available on JCOBridge Templates show how use JCOBridge with ready made templates. The AWT App template is the starting point to build a real, robust cross-platform GUI running on Windows and Linux operating systems (MacOS available on demand).

.NET Core Linux GUI examples

Starting from the AWT App template, and in few steps using the instructions available onJCOBridge Templates, it is possible to test it. Below the template usage on a Linux machine:

Linux AWT GUI Integration

Linux AWT GUI Integration

.NET Core Windows GUI examples

The same AWT App template used on Windows operating systems can be seen in action on the two screenshots below:

Benefits

JCOBridge is able to bridge every CLR (Core/Framework) with a JVM: the user can use AWT/Swing for the GUI on the supported platforms and the native power of .NET for all other reasons. Other benefits are:

  • JCOBridge does not need to learn another programming language and does not need staffing: it is possible to write the “Java code” directly from .NET program using developer preferred language;
  • Ready-made controls can be used to build the user interface; just put references and the developer access them like any other object of .NET;
  • In-proc and async bidirectional communication: JVM and CLR communicates in-proc to obtain the best native performance and the communication between CLR and JVM is bidirectional during code execution: every moment and in every condition .NET can invokes JVM, and the opposite;
  • Java (JVM) and .NET (CLR) are intrinsically isolated: this point, in relation with the previous one, avoid the annoying synchronization problem of the GUI with async tasks.

External references

This page can help anyone who need an effective solution to the questions raised on the web; the following links are an extraction of a web search: