Интеграция 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 Native Interface – платформа Java Native Interface (JNI) позволяет не-Java коду (например, C++ или C#) вызывать или быть вызванным Java-кодом, выполняемым в виртуальной машине Java.

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

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

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

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

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

Сводка

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