Integração do Java ao Xamarin.Android

O ecossistema Java inclui uma coleção diversificada e imensa de componentes. Muitos desses componentes podem ser usados para reduzir o tempo necessário para desenvolver um aplicativo Android. Este documento apresentará e fornecerá uma visão geral de alto nível de algumas das maneiras pelas quais os desenvolvedores podem usar esses componentes Java existentes para melhorar sua experiência de desenvolvimento de aplicativos Xamarin.Android.

Visão geral

Dada a extensão do ecossistema Java, é muito provável que qualquer funcionalidade necessária para um aplicativo Xamarin.Android já tenha sido codificada em Java. Por isso, é interessante tentar reutilizar essas bibliotecas existentes ao criar um aplicativo Xamarin.Android.

Há três maneiras possíveis de reutilizar bibliotecas Java em um aplicativo Xamarin.Android:

  • Criar uma Biblioteca de Associações Java – com essa técnica, um projeto Xamarin.Android é usado para criar wrappers C# em torno dos tipos Java. Um aplicativo Xamarin.Android pode referenciar os wrappers C# criados por esse projeto e, em seguida, usar o .jar arquivo .

  • Java Native Interface – A JNI (Java NativeInterface ) é uma estrutura que permite que código não Java (como C++ ou C#) chame ou seja chamado pelo código Java em execução dentro de uma JVM.

  • Portar o código – esse método envolve pegar o código-fonte Java e convertê-lo em C#. Isso pode ser feito manualmente ou usando uma ferramenta automatizada, como o Sharpen.

No núcleo das duas primeiras técnicas está a JNI ( Java Native Interface ). O JNI é uma estrutura que permite que aplicativos não escritos em Java interajam com o código Java em execução em uma Máquina Virtual Java. O Xamarin.Android usa JNI para criar associações para código C#.

A primeira técnica é uma abordagem mais automatizada e declarativa para associar bibliotecas Java. Ele envolve o uso de Visual Studio para Mac ou um tipo de projeto do Visual Studio fornecido pelo Xamarin.Android – a Biblioteca de Associações Java. Para criar essas associações com êxito, uma Biblioteca de Associações Java ainda pode exigir algumas modificações manuais, mas não tantas como uma abordagem JNI pura. Consulte Associando uma biblioteca Java para obter mais informações sobre bibliotecas de Associação java.

A segunda técnica, usando JNI, funciona em um nível muito mais baixo, mas pode fornecer um controle mais fino e acesso a métodos Java que normalmente não seriam acessíveis por meio de uma Biblioteca de Associação java.

A terceira técnica é radicalmente diferente das duas anteriores: portar o código de Java para C#. A portabilidade de código de uma linguagem para outra pode ser um processo muito trabalhoso, mas é possível reduzir esse esforço com a ajuda de uma ferramenta chamada Sharpen. O Sharpen é uma ferramenta código aberto que é um conversor Java para C#.

Resumo

Este documento forneceu uma visão geral de alto nível de algumas das diferentes maneiras pelas quais as bibliotecas do Java podem ser reutilizados em um aplicativo Xamarin.Android. Ele introduziu os conceitos de associações e wrappers callable gerenciados e discutiu opções para portar código Java para C#.