Xamarin.ios와 Java 통합Java integration with Xamarin.Android

Java 에코 시스템에는 다양 한 때 엄청난 구성 요소 컬렉션이 포함 되어 있습니다. 이러한 많은 구성 요소를 사용 하 여 Android 응용 프로그램을 개발 하는 데 걸리는 시간을 줄일 수 있습니다. 이 문서에서는 개발자가 이러한 기존 Java 구성 요소를 사용 하 여 Xamarin Android 응용 프로그램 개발 환경을 개선할 수 있는 몇 가지 방법에 대 한 개략적인 개요를 소개 합니다.The Java ecosystem includes a diverse and immense collection of components. Many of these components can be used to reduce the time it takes to develop an Android application. This document will introduce and provide a high-level overview of some of the ways that developers can use these existing Java components to improve their Xamarin.Android application development experience.


Java 에코 시스템의 범위가 지정 된 경우 Xamarin.ios 응용 프로그램에 필요한 모든 기능이 이미 Java로 코딩 되었을 가능성이 높습니다.Given the extent of the Java ecosystem, it is very likely that any given functionality required for a Xamarin.Android application has already been coded in Java. 따라서 Xamarin Android 응용 프로그램을 만들 때 이러한 기존 라이브러리를 사용해 보고 다시 사용 하는 것이 좋습니다.Because of this, it is appealing to try and reuse these existing libraries when creating a Xamarin.Android application.

Xamarin Android 응용 프로그램에서 Java 라이브러리를 다시 사용할 수 있는 세 가지 방법이 있습니다.There are three possible ways to reuse Java libraries in a Xamarin.Android application:

  • Java 바인딩 라이브러리 –를 만듭니다 .이 방법에서는 xamarin.ios 프로젝트를 사용 하 여 java 형식 주위 C# 에 래퍼를 만듭니다.Create a Java Bindings Library – With this technique, a Xamarin.Android project is used to create C# wrappers around the Java types. 그런 다음 Xamarin Android 응용 프로그램은이 프로젝트 C# 에서 만든 래퍼를 참조 하 고.jar파일을 사용할 수 있습니다.A Xamarin.Android application can then reference the C# wrappers created by this project, and then use the .jar file.

  • JNI ( Java native interface ) – JAVA native interface 는 JVM 내에서 실행 되는 java 코드에 의해 호출 되거나 C++ 호출 C#될 수 있는 비 java 코드 (예: 또는)를 허용 하는 프레임 워크입니다.Java Native Interface – The Java Native Interface (JNI) is a framework that allows non-Java code (such as C++ or C#) to call or be called by Java code running inside a JVM.

  • 이 메서드를 – 코드는 Java 소스 코드를 가져온 다음로 변환 하 C#는 과정을 포함 합니다.Port the Code – This method involves taking the Java source code, and then converting it to C#. 이러한 작업은 수동으로 수행 하거나 선명도와 같은 자동화 된 도구를 사용 하 여 수행할 수 있습니다.This can be done manually, or by using an automated tool such as Sharpen.

처음 두 기술의 핵심은 Java Native Interface (JNI)입니다.At the core of the first two techniques is the Java Native Interface (JNI). JNI은 Java로 작성 되지 않은 응용 프로그램을 Java Virtual Machine에서 실행 되는 Java 코드와 상호 작용 하는 데 사용할 수 있는 프레임 워크입니다.JNI is a framework that allows applications not written in Java to interact with Java code running in a Java Virtual Machine. Xamarin.ios는 JNI을 사용 하 여 코드에 C# 대 한 바인딩을 만듭니다.Xamarin.Android uses JNI to create bindings for C# code.

첫 번째 방법은 Java 라이브러리를 바인딩하는 보다 자동화 된 선언적 방법입니다.The first technique is a more automated, declarative approach to binding Java libraries. Java 바인딩 라이브러리 – Mac용 Visual Studio 또는 Xamarin.ios에서 제공 하는 Visual Studio 프로젝트 형식 중 하나를 사용 해야 합니다.It involves using either Visual Studio for Mac or a Visual Studio project type that is provided by Xamarin.Android – the Java Bindings Library. 이러한 바인딩을 성공적으로 만들려면 Java 바인딩 라이브러리에 몇 가지 수동 수정이 필요 하지만 순수한 JNI 접근 방식은 많지 않습니다.To successfully create these bindings, a Java Bindings Library may still require some manual modifications, but not as many as would a pure JNI approach. Java 바인딩 라이브러리에 대 한 자세한 내용은 Java 라이브러리 바인딩을 참조 하세요.See Binding a Java Library for more information about Java Binding libraries.

JNI를 사용 하는 두 번째 기술은 매우 낮은 수준에서 작동 하지만 일반적으로 Java 바인딩 라이브러리를 통해 액세스할 수 없는 Java 메서드에 대 한 보다 세부적인 제어 및 액세스를 제공할 수 있습니다.The second technique, using JNI, works at a much lower level, but can provide for finer control and access to Java methods that would not normally be accessible through a Java Binding Library.

세 번째 기술은 이전 두 가지 방법 (Java에서로 C#코드 포팅)과 완전히 다릅니다.The third technique is radically different from the previous two: porting the code from Java to C#. 코드를 한 언어에서 다른 언어로 이식 하는 것은 매우 힘든 프로세스 일 수 있지만, 선명하 게 하는 도구를 사용 하 여 이러한 작업을 줄일 수 있습니다.Porting code from one language to another can be a very laborious process, but it is possible to reduce that effort with the help of a tool called Sharpen. 선명 효과는 Java에서C# 변환기 인 오픈 소스 도구입니다.Sharpen is an open source tool that is a Java-to-C# converter.


이 문서에서는 Xamarin Android 응용 프로그램에서 Java의 라이브러리를 다시 사용할 수 있는 여러 가지 방법에 대 한 개략적인 개요를 제공 했습니다.This document provided a high-level overview of some of the different ways that libraries from Java can be reused in a Xamarin.Android application. 바인딩 및 관리 되는 호출 가능 래퍼의 개념과 Java 코드를로 C#이식 하기 위한 옵션에 대해 소개 했습니다.It introduced the concepts of bindings and managed callable wrappers, and discussed options for porting Java code to C#.