Integração Java com 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, é atraente 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 fazer referência aos wrappers C# criados por esse projeto e, em seguida, usar o .jar arquivo.

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

  • Portar o código – Este 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 centro das duas primeiras técnicas está a Java Native Interface (JNI). JNI é uma estrutura que permite que aplicativos não escritos em Java interajam com o código Java em execução em uma Java Virtual Machine. O Xamarin.Android usa JNI para criar associações para código C#.

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

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

A terceira técnica é radicalmente diferente das duas anteriores: portar o código de Java para C#. Portar 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. Sharpen é uma ferramenta de código aberto que é um conversor de 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 reutilizadas em um aplicativo Xamarin.Android. Ele introduziu os conceitos de associações e wrappers chamáveis gerenciados e discutiu opções para portar código Java para C#.