Java-Integration mit Xamarin.Android

Das Java-Ökosystem umfasst eine vielfältige und immense Sammlung von Komponenten. Viele dieser Komponenten können verwendet werden, um die Für die Entwicklung einer Android-Anwendung erforderliche Zeit zu verkürzen. In diesem Dokument wird eine allgemeine Übersicht über einige möglichkeiten bereitgestellt, wie Entwickler diese vorhandenen Java-Komponenten verwenden können, um ihre Xamarin.Android-Anwendungsentwicklung zu verbessern.

Übersicht

Angesichts des Umfangs des Java-Ökosystems ist es sehr wahrscheinlich, dass alle für eine Xamarin.Android-Anwendung erforderlichen Funktionen bereits in Java codiert wurden. Aus diesem Grund ist es attraktiv, diese vorhandenen Bibliotheken beim Erstellen einer Xamarin.Android-Anwendung wiederzuverwenden.

Es gibt drei Möglichkeiten, Java-Bibliotheken in einer Xamarin.Android-Anwendung wiederzuverwenden:

  • Erstellen einer Java-Bindungsbibliothek : Bei dieser Technik wird ein Xamarin.Android-Projekt verwendet, um C#-Wrapper für die Java-Typen zu erstellen. Eine Xamarin.Android-Anwendung kann dann auf die von diesem Projekt erstellten C#-Wrapper verweisen und dann die .jar Datei verwenden.

  • Native Java-Schnittstelle : Die Java NativeInterface (JNI) ist ein Framework, das es Nicht-Java-Code (z. B. C++ oder C#) ermöglicht, aufzurufen oder von Java-Code aufgerufen zu werden, der in einer JVM ausgeführt wird.

  • Portieren des Codes : Bei dieser Methode wird der Java-Quellcode verwendet und dann in C# konvertiert. Dies kann manuell oder mithilfe eines automatisierten Tools wie Sharpen erfolgen.

Der Kern der ersten beiden Techniken ist das Java Native Interface (JNI). JNI ist ein Framework, das es Anwendungen ermöglicht, die nicht in Java geschrieben sind, mit Java-Code zu interagieren, der in einer Java-VM ausgeführt wird. Xamarin.Android verwendet JNI, um Bindungen für C#-Code zu erstellen.

Die erste Methode ist ein stärker automatisierter, deklarativer Ansatz zum Binden von Java-Bibliotheken. Dabei wird entweder Visual Studio für Mac oder ein Visual Studio-Projekttyp verwendet, der von Xamarin.Android bereitgestellt wird – der Java Bindings Library. Um diese Bindungen erfolgreich zu erstellen, erfordert eine Java-Bindungsbibliothek möglicherweise noch einige manuelle Änderungen, aber nicht so viele wie bei einem reinen JNI-Ansatz. Weitere Informationen zu Java-Bindungsbibliotheken finden Sie unter Binden einer Java-Bibliothek .

Die zweite Technik, die JNI verwendet, funktioniert auf einer viel niedrigeren Ebene, kann jedoch eine präzisere Steuerung und den Zugriff auf Java-Methoden ermöglichen, auf die normalerweise nicht über eine Java-Bindungsbibliothek zugegriffen werden kann.

Die dritte Technik unterscheidet sich grundlegend von den vorherigen beiden: Portieren des Codes von Java zu C#. Das Portieren von Code von einer Sprache in eine andere kann ein sehr mühsamer Prozess sein, aber es ist möglich, diesen Aufwand mit Hilfe eines Tools namens Sharpen zu reduzieren. Sharpen ist ein Open Source Tool, das ein Java-zu-C#-Konverter ist.

Zusammenfassung

Dieses Dokument bietet eine allgemeine Übersicht über einige der verschiedenen Möglichkeiten, wie Bibliotheken aus Java in einer Xamarin.Android-Anwendung wiederverwendet werden können. Es wurden die Konzepte von Bindungen und verwalteten aufrufbaren Wrappern vorgestellt und Optionen zum Portieren von Java-Code zu C# erläutert.