Java-Integration in Xamarin.Android

Das Java-Ökosystem umfasst eine vielfältige und umfangreiche Sammlung von Komponenten. Viele dieser Komponenten können verwendet werden, um schneller neue Android-Anwendungen zu entwickeln. Dieses Dokument bietet eine allgemeine Übersicht über einige Möglichkeiten, wie Entwickler bei der Entwicklung von Xamarin.Android-Anwendungen von diesen Java-Komponenten profitieren können.

Übersicht

Angesichts des Umfangs des Java-Ökosystems ist es sehr wahrscheinlich, dass eine für eine Xamarin.Android-Anwendung erforderliche Funktion bereits in Java codiert wurde. Daher bietet es sich an, beim Erstellen einer neuen Xamarin.Android-Anwendung diese bereits vorhandenen Bibliotheken zu testen und wiederzuverwenden.

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

  • Erstellen Sie eine Java Bindings-Bibliothek – Mit dieser Technik wird ein Xamarin.Android-Projekt verwendet, um C#-Wrapper um die Java-Typen zu erstellen. Dann kann die Xamarin.Android-Anwendung auf die von diesem Projekt erstellten C#-Wrapper verweisen und die .jar-Datei verwenden.

  • Java Native Interface – Das Java Native Interface (JNI) ist ein Framework, das nicht-Java-Code (z. B. C++ oder C#) aufruft oder von Java-Code aufgerufen werden kann, der in einem JVM ausgeführt wird.

  • Portieren des Codes – Diese Methode umfasst das Übernehmen des Java-Quellcodes und anschließendes Konvertieren in C#. Dies kann manuell oder mithilfe eines automatisierten Tools wie Sharpen erfolgen.

Bei den ersten beiden Techniken steht dasJNI-Framework im Vordergrund. Mit diesem Framework können Anwendungen, die nicht in Java geschrieben sind, mit Java-Code interagieren, der in einer JVM-Instanz (Java Virtual Machine) ausgeführt wird. Xamarin.Android verwendet JNI, um Bindungen für C#-Code zu erstellen.

Bei der ersten Technik wird ein stärker automatisierter, deklarativer Ansatz verwendet, um Java-Bibliotheken zu binden. Sie umfasst entweder Visual Studio für Mac oder einen Visual Studio-Projekttyp, der von Xamarin.Android bereitgestellt wird – die Java Bindings Library. Damit Sie diese Bindungen erstellen können, müssen Sie zwar ggf. noch einige manuelle Änderungen an der Java-Bindungsbibliothek vornehmen, aber bei einem reinen JNI-Ansatz wäre der Aufwand größer. Weitere Informationen zu Java-Bindungsbibliotheken finden Sie unter Binden einer Java-Bibliothek.

Die zweite Technik, bei der JNI eingesetzt wird, setzt auf viel niedrigerer Ebene an, ermöglicht aber unter Umständen bessere Kontrolle und Java-Methoden, auf die Sie normalerweise nicht über eine Java-Bindungsbibliothek zugreifen können.

Die dritte Technik unterscheidet sich grundlegend von den vorherigen beiden. Dabei geht es darum, Code von Java in C# zu portieren. Es kann sehr aufwendig sein, Code von einer Sprache in eine andere zu portieren, aber mithilfe des Tools Sharpen können Sie diesen Aufwand reduzieren. Sharpen ist ein Open-Source-Tool, mit dem Sie Java-Code in C# konvertieren können.

Zusammenfassung

In diesem Dokument habe Sie einen groben Überblick über einige Möglichkeiten erhalten, Java-Bibliotheken in einer Xamarin.Android-Anwendung wiederzuverwenden. Es wurden die Konzepte von Bindungen und verwalteten Callable Wrappers vorgestellt, und es wurden verschiedene Optionen zum Portieren von Java-Code in C# erläutert.