Xamarin.Android와 Java 통합

Java 에코시스템에는 다양하고 방대한 구성 요소 컬렉션이 포함되어 있습니다. 해당 구성 요소 중 다수가 Android 애플리케이션을 개발하는 데 걸리는 시간을 줄이는 데 사용될 수 있습니다. 이 문서에서는 개발자가 해당 기존 Java 구성 요소를 사용하여 Xamarin.Android 애플리케이션 환경을 개선하기 위한 몇 가지 방법의 개략적인 개요를 소개하고 제공합니다.

개요

Java 에코 시스템의 방대한 규모를 생각하면 Xamarin.Android 애플리케이션에 필요한 기능은 무엇이든 이미 Java로 코딩되어 있을 가능성이 큽니다. 따라서 Xamarin.Android 애플리케이션을 만들 때 해당 기존 라이브러리를 재사용하는 것은 무척 매력적인 일이 됩니다.

Xamarin.Android 애플리케이션에서 Java 라이브러리를 재사용하는 방법에는 3가지가 있습니다.

  • Java 바인딩 라이브러리 만들기 – 이 기술을 사용하면 Xamarin.Android 프로젝트를 사용하여 Java 형식을 중심으로 C# 래퍼를 만듭니다. 이렇게 하면 Xamarin.Android 애플리케이션이 이 프로젝트에 의해 만들어진 C# 래퍼를 참조하고 .jar 파일을 사용할 수 있습니다.

  • Java 네이티브 인터페이스 – JNI(Java 네이티브인터페이스)는 JVM 내에서 실행되는 Java 코드에서 비 Java 코드(예: C++ 또는 C#)를 호출하거나 호출할 수 있도록 하는 프레임워크입니다.

  • 코드 포팅 – 이 메서드에는 Java 소스 코드를 가져와서 C#으로 변환하는 작업이 포함됩니다. 이 작업은 수동으로 할 수도 있고 Sharpen과 같은 자동화 도구를 사용하여 할 수도 있습니다.

처음 두 가지 방법의 핵심에는 JNI(‘Java 기본 인터페이스’)가 있습니다. JNI는 Java로 작성되지 않은 애플리케이션이 Java Virtual Machine 내에서 실행되는 Java 코드와 상호 작용할 수 있도록 허용하는 프레임워크입니다. Xamarin.Android는 JNI를 사용하여 C# 코드에 대한 ‘바인딩’을 만듭니다.

첫 번째 방법은 Java 라이브러리를 바인딩하는 보다 자동화되고 선언적인 접근 방식입니다. 여기에는 Mac용 Visual Studio 또는 Xamarin.Android에서 제공하는 Visual Studio 프로젝트 형식인 Java 바인딩 라이브러리를 사용하는 작업이 포함됩니다. 해당 바인딩을 만들려면 Java 바인딩 라이브러리를 수동으로 수정해야 할 수 있으나, 순수한 JNI 접근 방식만큼 수정이 많이 필요하지는 않습니다. Java 바인딩 라이브러리에 대한 자세한 내용은 Java 라이브러리 바인딩을 참조하세요.

JNI를 사용하는 두 번째 방법은 훨씬 더 낮은 수준에서 작동하지만 Java 바인딩 라이브러리를 통해 액세스하기 어려운 Java 메서드에 액세스할 수 있고 세부적인 제어가 가능합니다.

세 번째 방법은 앞의 두 가지 방법과 크게 다릅니다. 바로 Java에서 C#으로 코드를 이식하는 것입니다. 하나의 언어에서 다른 언어로 코드를 이식하는 것은 매우 까다로운 작업일 수 있지만, Sharpen이라는 유용한 도구를 사용하면 여기에 필요한 작업을 줄일 수 있습니다. Sharpen은 오픈 소스 Java-C# 변환기 도구입니다.

요약

이 문서에서는 Java 라이브러리를 Xamarin.Android 애플리케이션에서 사용하는 몇 가지 방법의 개략적인 개요를 제공했습니다. 바인딩 및 관리되는 호출 가능 래퍼의 개념을 소개하고, Java 코드를 C#으로 이식하는 옵션을 설명했습니다.