Интеграция Java с Xamarin.Android

Экосистема Java предусматривает обширную коллекцию разнообразных компонентов. Многие из этих компонентов можно использовать для сокращения времени, затрачиваемого на разработку Android-приложений. В этом документе даны общие сведения о некоторых способах использования разработчиками существующих компонентов Java для улучшения процесса разработки приложений Xamarin.Android.

Обзор

Учитывая масштаб экосистемы Java, очень вероятно, что все функции, необходимые для приложения Xamarin.Android, уже были написаны на Java. Поэтому при создании приложения Xamarin.Android можно попробовать повторно использовать уже существующие библиотеки.

Существует три потенциальных способа повторного использования библиотек Java в приложении Xamarin.Android.

  • Создание библиотеки привязок Java. С помощью этого метода проект Xamarin.Android используется для создания оболочки C# вокруг типов Java. Затем приложение Xamarin.Android может ссылаться на оболочки C#, созданные этим проектом, а затем использовать файл .jar.

  • Собственный интерфейс Java — машинный интерфейс Java(JNI) — это платформа, которая позволяет не java-коду (например, C++ или C#) вызывать или вызывать код Java, выполняемый внутри JVM.

  • Перенос кода — этот метод включает получение исходного кода Java, а затем преобразование его в C#. Это можно сделать вручную или с помощью автоматизированного средства, такого как Sharpen.

В основе первых двух методов лежит Java Native Interface (JNI). JNI — это платформа, которая позволяет приложениям, написанным не на Java, взаимодействовать с кодом Java, выполняемым в виртуальной машине Java. Xamarin.Android использует JNI для создания привязок для кода C#.

Первый способ — это более автоматизированный декларативный подход к привязке библиотек Java. Он включает использование либо Visual Studio для Mac, либо тип проекта Visual Studio, предоставляемый библиотекой привязок Java Xamarin.Android. Для успешного создания этих привязок библиотека привязки Java может по-прежнему требовать внесения некоторых изменений вручную, но не так, как это было бы в чистом подходе JNI. Дополнительные сведения о библиотеках привязки Java см. в разделе Привязка библиотеки Java.

Второй метод, использующий JNI, работает на более низком уровне, но может обеспечить более точный контроль и доступ к методам Java, которые обычно недоступны через библиотеку привязки Java.

Третья методика совершенно отличается от предыдущих двух: портирование кода из Java в C#. Портирование кода с одного языка на другой может оказаться очень трудоемким процессом, но можно уменьшить эти усилия с помощью инструмента, именуемого Sharpen. Sharpen — это инструмент с открытым исходным кодом, который является преобразователем Java-to-C#.

Итоги

В этом документе дан общий обзор нескольких различных способов повторного использования библиотек из Java в приложении Xamarin.Android. Здесь введены концепции привязок и управляемых вызываемых оболочек, а также обсуждаются варианты портирования кода Java в C#.