SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
Rafael Silva de Bitencourt1
Ricardo Longa2
RESUMO
O aumento da utilização de dispositivos móveis impulsionou o desenvolvimento
de aplicações embarcadas que necessitam de integração através da utilização
de web services. A arquitetura REST é cada vez mais utilizada pelo mundo
inteiro para criação de web services, que são chamados de RESTful por seguir
os princípios desta arquitetura. Com base no aumento da utilização e a
necessidade de integração dos aplicativos Android, tendo os web services
RESTful em ascensão no mercado atual, o artigo busca identificar formas para
realizar esta integração e ilustrar uma delas com exemplo de utilização. Para
isto foi realizado pesquisa literária, identificando as APIs especialistas como
forma recomentada para esta integração. Realizado então, pesquisa em sites
que comparam APIs, onde foi identificado a Retrofit no topo das listas de
classificação, sendo a mais indicada. Desta forma foi utilizada esta API para
ilustrar um exemplo e demonstrar com mais clareza as vantagens. Concluiu-se
que com a utilização da API o desenvolvedor não necessita ter conhecimento
sobre assuntos que são essenciais para a comunicação, podendo ter mais foco
no objetivo final da aplicação que está trabalhando e apresentando mais
resultados.
Palavras-chave: Android. RESTful. JSON.
1
Pós-graduando em sistemas web e dispositivos móveis: rafael_silbit@hotmail.com
2
Pós-graduado em engenharia de software: ricardo.longa@gmail.com
2
1 INTRODUÇÃO
De acordo com a IDC (2013), empresa que estuda as tendências de mercado
na área de tecnologia e presta consultoria por todo o mundo, o mercado de
dispositivos móveis, especialmente os smartphones, está em evidência e
possui um público cada vez maior, em virtude da facilidade de aquisição de um
aparelho por qualquer pessoa. Esta tendência continuará nos próximos anos
em razão à forte demanda por dados móveis e computação de mão,
evidenciando que o consumo por aplicações em rede seguirá a mesma
tendência.
Aplicativos móveis são normalmente pequenos, utilizando pouca memória dos
dispositivos, e com muitas funcionalidades. Um dos fatores que contribui para
estes aplicativos terem várias funcionalidades é a extração de informações de
várias fontes. Um exemplo é o aplicativo Maps, que já vem instalado na maioria
dos smartphones Android e fornece a avançada funcionalidade de
mapeamento. Isto é possível devido a sua integração com a API do Google
Maps e outros serviços (HASHIMI; KOMATINENI; MACLEAN, 2010).
Também existe a necessidade de armazenamento de dados da própria
aplicação móvel em base de dados externas, mesmo existindo a possibilidade
de utilização do banco de dados do Android. Por questões de segurança e
devido à grande quantidade de dados que precisam ser armazenados é
recomendado a utilização de um servidor convencional para persistência, e não
o dispositivo móvel (LECHETA, 2010).
Para a integração com esta base de dados a aplicação móvel não deve realizar
a conexão direta ao banco de dados, por questões de segurança dos dados e
pela padronização do acesso, uma vez que web services facilitam a
comunicação entre diversas plataformas, pois as linguagens de programação
entre servidor e cliente podem ser diferentes (LECHETA, 2015a).
Para a criação de web services a arquitetura de software Representational
State Transfer (REST) é cada vez mais utilizada pelo mundo inteiro e é uma
3
alternativa aos web services SOAP que já estão no mercado a mais tempo.
Esta arquitetura foi formalizada em 2000 por Dr. Roy T. Fielding, onde sistemas
ou serviços que seguem os princípios desta arquitetura são denominados
RESTful (LECHETA, 2015b).
A partir desta formalização em 2000, a arquitetura REST vem sendo um termo
cada vez mais utilizado, estudado e discutido. Tornando-se de fácil
compreensão pelos desenvolvedores, bem documentada e assim atraindo
interesse de grandes empresas para utilização em vários sistemas de grande
porte como Twitter, Facebook, Flickr e todas as APIs de serviços públicos do
Google como: Google Agenda, Google Health, Google Data e Google Maps
(ARAÚJO. et al, 2012).
Com base no aumento da utilização e a necessidade de integração dos
aplicativos Android, tendo os web services RESTful em ascensão no mercado
atual, neste artigo será identificado formas para realizar esta integração e
ilustrado uma delas com exemplo de utilização. Com objetivo de contribuir em
pesquisas de trabalhos futuros que desejarem criar aplicativos Android mais
complexos com integração.
2 INTEGRAÇÃO DE APLICATIVOS ANDROID
Como neste artigo buscamos formas para integração de aplicações Android
com web services RESTful, primeiramente será abordado o conceito e
implementação deste web service.
4
2.1 Web Services RESTful
Para ser considerado um RESTful o web service precisa seguir os princípios
básicos da arquitetura REST que foram definidos por Dr. Roy T. Fielding em
2000. Esta arquitetura utiliza o protocolo HTTP para criação de serviços que
trabalham com dados geralmente nos formatos XML ou JSON e seus princípios
são (LECHETA, 2015b; RICHARDSON; RUBY, 2007):
a) Comunicação entre cliente e servidor sem estado, ou seja, cada
mensagem HTTP encaminhada ao servidor contém toda a
informação necessária para atendimento do pedido. Assim nem o
cliente e nem o servidor necessitam gravar nenhum estado das
comunicações entre mensagens. Outras aplicações baseadas em
HTTP utilizam cookies e outros mecanismos para manter o estado
da sessão.
b) Um conjunto de operações bem definidas e padronizadas
aplicados a todos os recursos de informação. O protocolo HTTP já
define um conjunto de operações, onde as mais importantes são
POST, GET, PUT e DELETE. Normalmente estas operações são
combinadas com operações CRUD para a persistência de dados.
c) Uma sintaxe universal para identificar os recursos, a chamada
Uniform Resource Identifier (URI). Onde cada recurso é
unicamente direcionado, contendo uma URI exclusiva.
d) A utilização de tipos de conteúdo para as solicitações e retornos
de conteúdo. O que permite que a aplicação cliente especifique o
formato de conteúdo desejado, por exemplo XML ou JSON.
Para criação do web service o ideal é a utilização de framework especialista,
para separação dos detalhes de baixo nível da comunicação. Afim de
simplificar o desenvolvimento de web services RESTful e seus clientes em
Java, a Sun/Oracle projetou uma API JAX-RS padrão e portátil. O framework
Jersey RESTful Web Services tem código aberto e é a implementação de
referência desta API. Além disso, Jersey fornece a sua própria API estendendo
o conjunto de ferramentas JAX-RS com recursos adicionais e utilitários para
5
simplificar ainda mais a criação dos serviços RESTful (LECHETA, 2015b;
ORACLE,2016c).
Foi utilizado o Jersey para a criação do web service, considerando que a
empresa que disponibilizou o framework é a responsável pela linguagem Java.
Mas como o objetivo do artigo é a demonstração da integração no Android não
foi aprofundado a demonstração da criação do serviço, apenas demonstrado o
necessário para o entendimento e desenvolvimento da aplicação cliente.
Para a demonstração da integração foi feito uma aplicação com objetivo
simples para facilitar o entendimento, sendo uma lista de contatos
compartilhada. Ou seja, a lista de contatos fica em um banco de dados no
servidor, é disponibilizada através do web service RESTful e a aplicação
Android faz a manutenção desta lista.
Para armazenar a lista de contatos foi utilizado o banco de dados JavaDB
(Derby). O motivo da escolha deste banco de dados foi o mesmo do framework
Jersey, já que também é disponibilizado pela Sun/Oracle, escrito inteiramente
em Java (ORACLE,2016b).
A Figura 1 apresenta o diagrama UML da tabela criada para armazenar os
contatos.
6
Figura 1: Diagrama UML
Fonte: Do autor.
Utilizando o ambiente de desenvolvimento Netbeans, que também é
disponibilizado pela Sun/Oracle de forma gratuita, é possível criar o Web
Service RESTful a partir do banco de dados. Para isto deve ser criado um
projeto Java Web e após existe a opção “Web Services RESTful a partir do
banco de dados”, onde podem ser selecionados bancos de dados que estejam
com o Java Database Connectivity (JDBC) devidamente configurado e definir
quais tabelas do banco escolhido devem ser disponibilizadas no web service.
Utilizando esta opção o NetBeans cria as classes de entidades referentes as
tabelas e o web service já disponibilizando estas classes, utilizando a Java
Persistence API para persistência dos dados no banco (ORACLE,2016a).
A Figura 2 mostra as classes geradas pelo Netbeans a partir da tabela Contato.
Figura 2: Classes do projeto Web
Fonte: Do autor.
A classe AbstractFacade implementa os métodos de persistência da entidade
no banco e a classe ContatoFacadeREST é uma herança desta,
implementando apenas os métodos REST.
A URL de acesso ao recurso ficou da seguinte forma:
http://servidor/restful/app/contatos/. Sendo que restful é o caminho do contexto
7
da aplicação web, app é definido na classe ApplicationConfig com a anotação
ApplicationPath da API Jersey e contatos é definido na classe
ContatoFacadeREST com a anotação Path da API Jersey, conforme
apresentado na Figura 3, representando o recurso na URL.
Na aplicação de demonstração foram utilizados os métodos de inserção,
alteração, exclusão e listagem. A Figura 3 demonstra estes métodos da classe
ContatoFacadeREST.
Figura 3: Métodos REST
Fonte: Do autor.
Para utilização dos métodos apresentados na Figura 3, deve ser utilizado a
URL http://servidor/restful/app/contatos/ em conjunto com as operações HTTP:
a) Criar um contato: deve ser passado para a URL o contato em
formato JSON com a operação POST.
8
b) Editar um contato: deve ser adicionado o código do contato a URL
e passado o contato em formato JSON com a operação PUT.
c) Excluir um contato: deve ser adicionado o código do contato a
URL e utilizado a operação DELETE.
d) Obter a lista de contatos: apenas acionar a URL com a operação
GET.
Tendo o web service disponível, a próxima etapa é o desenvolvimento do
aplicativo Android para consumi-lo.
2.2 Integração Android
A comunicação direta com web service exige do programador conhecimento e
utilização de protocolos, que podem tomar mais tempo do que o próprio
objetivo da aplicação. Para abstrair esta comunicação, em aplicações web são
utilizadas APIs, que também tornam as aplicações mais simples, devido a
menor quantidade de código (LOUVEL; TEMPLIER; BOILEAU, 2012).
Para comunicação com web service o ideal é a identificação de uma biblioteca
leve e compacta para ser adicionado ao projeto da aplicação Android. Ela deve
ser leve e compacta pois a aplicação será executada em dispositivos móveis,
que normalmente não têm o mesmo poder de processamento de um
computador comum (LECHETA, 2010).
O site da LibHunt auxilia na busca por bibliotecas de código aberto de diversos
ambientes de programação, incluindo Java e Android, com base na
popularidade e manutenção. Para o ambiente Android a comparação é feita
com projetos disponibilizados no GitHub, onde foram selecionados mais de mil
projetos e classificados em noventa categorias. Na categoria Network é
apresentado em um gráfico as bibliotecas Retrofit, okhttp, android-async-http,
AndroidAsync, async-http-client e RoboSpice como as mais populares, sendo a
Retrofit a que se destaca em primeiro lugar, com maior índice de popularidade
e tendo manutenções frequentes. A Figura 4 apresenta este gráfico, onde as
colunas na cor laranja representam o índice de popularidade e as colunas na
9
cor verde o índice de manutenção, em uma escala de 0 a 10 (LIBHUNT,
2016).
Figura 4: Bibliotecas Android de código aberto
Fonte: LibHunt (2016)
O site Android Arsenal disponibiliza uma lista de classificação de projetos
android, disponível no link https://android-arsenal.com/rating, baseada nas
atividades do Github e do próprio Android Arsenal, apresentando a Retrofit na
quinta posição, sendo que os quatro primeiros não são para mesma finalidade,
ou seja, o Retrofit é o primeiro colocado entre as APIs para aplicações clientes
de web services.
A Infinum é uma empresa especializada no desenvolvimento móvel e web,
atendendo grandes marcas, bancos, seguradoras, editoras de mídia,
operadoras de celular e outras empresas com a necessidade de aplicativos
móveis, entre elas as empresas Universal Music Group e P&G, fundada em
2005, com sede na Croácia e filiais nos Estados Unidos e na Eslovênia. Esta é
um exemplo de empresa de desenvolvimento de software que utiliza a Retrofit.
Chegou a publicar em sua página um artigo que lista a Retrofit entre as cinco
principais bibliotecas para Android (INFINUM, 2016).
A Retrofit é uma biblioteca Java para Android desenvolvida pela empresa
Square, que faz todas as chamadas REST internamente e trata as conexões
HTTP, fornecendo um padrão simples de implementação para transmissão de
dados entre aplicação e servidor, fazendo uso do JSON. Esta biblioteca
transforma o web service REST em uma interface Java (SQUARE, 2016).
10
A versão atual da API Retrofit é a 2.1 e para adicioná-la na aplicação Android
foi utilizado Android Studio, que é o ambiente de desenvolvimento oficial de
aplicativos Android, criando o projeto e inserindo a API nas dependências do
Gradle. Além da API foi adicionado o conversor Gson para tratar o JSON
recebido do web service. A Figura 5 mostra as duas linhas que foram
adicionadas nas dependências.
Figura 5: Dependências Gradle
Fonte: Do autor.
Com a API já disponível no projeto, foi criado a classe Contato, representando
a entidade recebida do Web Service, e a interface ContatosService. Na
interface, apresentada na Figura 6, foram definidos os métodos de acesso ao
Web Service utilizando anotações e objetos da API.
11
Figura 6: Interface Retrofit
Fonte: Do autor.
A classe Retrofit da API gera uma implementação da interface com base nas
anotações. Para utilizar esta classe foi criado a classe GeradorServico com
atributos estáticos, sendo a URL do WebService, a classe Gson com a
definição da formatação de data utilizada e a instância da classe Retrofit, que
recebe a URL a instância da classe Gson, conforme apresentado na Figura 7.
Para disponibilizar o serviço às outras classes do projeto, foi criado o método
público criarServico, que recebe como parâmetro a interface e retorna a
implementação da mesma, utilizando o método create da classe Retrofit.
12
Figura 7: Classe GeradorServico
Fonte: Do autor.
Com a implementação da interface, a API permite realizar solicitações HTTP
síncronas e assíncronas ao WebService. Para tratar estas solicitações é
utilizado a classe Call. A Figura 8 exemplifica uma solicitação assíncrona
utilizando o método enqueue da classe Call. Ao utilizar o método enqueue deve
ser passado uma instância da classe Callback, responsável pela resposta da
solicitação assíncrona, obrigatoriamente implementando os métodos
onResponse e onFailure, que serão executados de acordo com o resultado da
solicitação. Em caso de sucesso, o método onResponse recebe por parâmetro
uma instância da classe Response que retorna o recurso solicitado, no caso a
lista de contatos, com método body.
13
Figura 8: Solicitação assíncrona
Fonte: Do autor.
Foi utilizado transação síncrona para salvar e excluir os contatos. Este tipo de
solicitação não deve ser aplicado na thread principal da aplicação, pois pode
ocorrer a chamada Application not Responding (ANR), ou seja, a interface da
aplicação com o usuário é parada. Então foram criadas classes dentro da
activity de cadastro, estendendo a classe AsyncTask, que permite executar
operações em segundo plano, para realizar a execução das solicitações
síncronas. A Figura 9 apresenta a classe criada para exclusão do contato, onde
foi utilizado o método execute da classe call, ao invés do enqueue da
solicitação assíncrona. O método execute já retorna a instância da classe
Response, que neste exemplo não foi necessário utilizar por se tratar da
exclusão, não sendo esperado um retorno.
14
Figura 9: Solicitação síncrona
Fonte: Do autor.
Para a utilização dos outros dois métodos da interface, criarContato e
alterarContato, é alterado somente a forma de criar a instância da classe Call,
conforme ilustrado na Figura 10.
Figura 10: Utilização dos métodos da interface
Fonte: Do autor.
A aplicação Android criada ficou com as funcionalidades de listar os contatos
disponíveis no banco de dados em uma tela inicial, com opção de editá-los,
excluí-los e realizar novos cadastros.
3 RESULTADOS E DISCUSSÕES
Após as pesquisas realizadas, tendo a utilização de APIs especialistas como
opção mais adotada para a integração de aplicações Android com web
services, foi identificado a API Retrofit como a mais utilizada e bem
conceituada.
15
Utilizando a API Retrofit o desenvolvimento da integração da aplicação Android
com o web service REST pode ser feito com poucas linhas de código e sem o
tratamento das requisições HTTP e do JSON recebido, a API abstrai todo o
trabalho de comunicação.
Com o exemplo criado foi possível notar grande rendimento no
desenvolvimento da aplicação, devido a todo este trabalho de comunicação
feito pela API, que não toma o tempo do desenvolvedor.
4 CONCLUSÃO
O contínuo aumento do mercado de dispositivos móveis evidencia que o
consumo por aplicações em rede seguirá a mesma tendência. Estas aplicações
necessitam de integração com servidores para obter informações e
complementar suas funcionalidades.
Tendo como objetivo do artigo a identificação de formas para realizar a
integração de aplicativos Android, que é o sistema operacional móvel mais
utilizado na atualidade, com web services, foi realizado pesquisa literária para
identificar a forma recomendada para esta integração. Afim de contribuir em
pesquisas de trabalhos futuros que desejarem criar aplicativos mais complexos
com integração. Após verificar que a utilização de APIs especialistas é a forma
recomentada, foi realizado pesquisa em sites que comparam APIs, onde foi
identificado a Retrofit no topo das listas de classificação, sendo a mais
indicada. Desta forma foi utilizada esta API para ilustrar um exemplo e
demonstrar com mais clareza as vantagens da utilização de API.
Com o exemplo foi possível demonstrar que API especialista realiza todo o
trabalho de comunicação com o servidor. Desta forma o desenvolvedor não
necessita ter conhecimento sobre assuntos que são essenciais para a
comunicação, como o protocolo HTTP e o formato JSON. Podendo ter mais
foco no objetivo final da aplicação que está trabalhando e apresentando mais
resultados.
16
ANDROID APPLICATION INTEGRATION WITH REST WEB SERVICES
ABSTRACT
The increased use of mobile devices has boosted the development of
embedded applications that require integration through the use of web services.
The REST architecture is increasingly used all over the world for creating web
services that are called RESTful since it follows the principles of this
architecture. Based on the increased use and the need for integration of
Android applications, having Web services RESTful on the rise in the current
market, the article seeks to identify ways to accomplish this integration and
illustrate one of them as an example of use. This was done through literary
research, identifying APIs experts as recommended way for this integration.
Researches on websites that compare APIs were accomplished, identifying
Retrofit at the top of the ranking lists and also being the most indicated. Thus
this API was used to illustrate an example and demonstrate more clearly the
advantages. It was concluded that with the use of the API the developer does
not need to have knowledge about issues that are essential for communication
and may focus more on the ultimate objective of the application which is being
done and presenting more results.
Key-words: Android. RESTful. JSON.
17
REFERÊNCIAS
ARAÚJO, R. M. L. de. et al. Desenvolvimento de Aplicações para Plataforma
Google Android. In: ENCONTRO UNIFICADO DE COMPUTAÇÃO EM
PARNAÍBA, 5., 2012. Parnaíba. Anais eletrônicos... Parnaíba: FUESPI, 2012.
p. 103-129. Disponível em:
<http://www.enucomp.com.br/2012/conteudos/AnaisVENUCOMP2012.pdf>.
Acesso em: 21 jun. 2016.
HASHIMI, Sayed; KOMATINENI, Satya; MACLEAN, Dave. Pro Android 3. [S.
l.]: Apress, 2011.
IDC, Market Analysis. Smartphones expected to grow 32.7% in 2013 fueled by
declining prices and strong emerging market demand, According to IDC.
Framinghan: IDC, 2013.
INFINUM, Inc. Top 5 Android libraries every Android developer should know
about. Disponível em: <https://infinum.co/the-capsized-eight/articles/top-5-
android-libraries-every-android-developer-should-know-about>. Acesso em: 27
jun. 2016
LECHETA, Ricardo R. Google Android: aprenda a criar aplicações para
dispositivos móveis com o Android SDK. 2 ed. São Paulo: Novatec, 2010.
______. Google Android: aprenda a criar aplicações para dispositivos móveis
com o Android SDK. 4 ed. São Paulo: Novatec, 2015a.
______. Web Services RESTful: aprenda a criar web services RESTful em
Java na nuvem do Google. São Paulo: Novatec, 2015b.
LIBHUNT. Android Network. Disponível em:
<https://android.libhunt.com/categories/1417-network>. Acesso em: 06 jul.
2016.
LOUVEL, Jerome; TEMPLIER, Thierry; BOILEAU,Thierry. Restlet in Action:
Developing RESTful web APIs in Java. Greenwich: Manning, 2012.
ORACLE. Introdução aos Web Services RESTful. Disponível em:
<https://netbeans.org/kb/docs/websvc/rest_pt_BR.html>. Acesso em: 19 jul.
2016a.
18
ORACLE. Java DB: Overview. Disponível em:
<http://www.oracle.com/technetwork/java/javadb/overview/index.html>. Acesso
em: 18 jul. 2016b.
ORACLE. Jersey: RESTful Web Services in Java. Disponível em:
<https://jersey.java.net/>. Acesso em: 17 jul. 2016c.
RICHARDSON, Leonard; RUBY, Sam. RESTful Web Services. Sebastopol:
O’Reilly Media, 2007.
SQUARE, Inc. Retrofit: A type-safe HTTP client for Android and Java.
Disponível em: <http://square.github.io/retrofit/>. Acesso em: 27 jun. 2016.

Mais conteúdo relacionado

Mais procurados

tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3WE-IT TUTORIALS
 
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...Edureka!
 
Service oriented architecture
Service oriented  architectureService oriented  architecture
Service oriented architecturePratik Patil
 
Why Your Digital Transformation Strategy Demands Middleware Modernization
Why Your Digital Transformation Strategy Demands Middleware ModernizationWhy Your Digital Transformation Strategy Demands Middleware Modernization
Why Your Digital Transformation Strategy Demands Middleware ModernizationVMware Tanzu
 
Benefits Of Building Private Cloud
Benefits Of Building Private CloudBenefits Of Building Private Cloud
Benefits Of Building Private Clouddinobusalachi
 
OPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONOPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONRitwick Halder
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...ENSET, Université Hassan II Casablanca
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuéesFranck SIMON
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services WebLilia Sfaxi
 
cours-supcom-virt.pptx
cours-supcom-virt.pptxcours-supcom-virt.pptx
cours-supcom-virt.pptxManellansari
 
Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQelliando dias
 
Cics ts v5.4 continuous delivery and v5.5 what's new
Cics ts v5.4 continuous delivery and v5.5 what's newCics ts v5.4 continuous delivery and v5.5 what's new
Cics ts v5.4 continuous delivery and v5.5 what's newMark Cocker
 
OpenText Cloud Managed Services
OpenText Cloud Managed ServicesOpenText Cloud Managed Services
OpenText Cloud Managed ServicesOpenText
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryKaren Broughton-Mabbitt
 

Mais procurados (20)

tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
tybsc it sem 5 Linux administration notes of unit 1,2,3,4,5,6 version 3
 
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
Angular vs React vs Vue | Javascript Frameworks Comparison | Which One You Sh...
 
Service oriented architecture
Service oriented  architectureService oriented  architecture
Service oriented architecture
 
Why Your Digital Transformation Strategy Demands Middleware Modernization
Why Your Digital Transformation Strategy Demands Middleware ModernizationWhy Your Digital Transformation Strategy Demands Middleware Modernization
Why Your Digital Transformation Strategy Demands Middleware Modernization
 
Benefits Of Building Private Cloud
Benefits Of Building Private CloudBenefits Of Building Private Cloud
Benefits Of Building Private Cloud
 
OPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATIONOPEN SOURCE SEMINAR PRESENTATION
OPEN SOURCE SEMINAR PRESENTATION
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Paas ppt
Paas pptPaas ppt
Paas ppt
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Architectures distribuées
Architectures distribuéesArchitectures distribuées
Architectures distribuées
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Virtual classroom
Virtual classroomVirtual classroom
Virtual classroom
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
cours-supcom-virt.pptx
cours-supcom-virt.pptxcours-supcom-virt.pptx
cours-supcom-virt.pptx
 
Enterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQEnterprise Messaging with Apache ActiveMQ
Enterprise Messaging with Apache ActiveMQ
 
Spring security
Spring securitySpring security
Spring security
 
Cics ts v5.4 continuous delivery and v5.5 what's new
Cics ts v5.4 continuous delivery and v5.5 what's newCics ts v5.4 continuous delivery and v5.5 what's new
Cics ts v5.4 continuous delivery and v5.5 what's new
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
OpenText Cloud Managed Services
OpenText Cloud Managed ServicesOpenText Cloud Managed Services
OpenText Cloud Managed Services
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
 

Semelhante a INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST

Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeMauricio Volkweis Astiazara
 
201406Carvalho
201406Carvalho201406Carvalho
201406CarvalhoAfonso Pra
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...Alessandro Marchi Panaccione
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soapJeison Barros
 

Semelhante a INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST (20)

Soa Woa Rest
Soa Woa RestSoa Woa Rest
Soa Woa Rest
 
Sistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre SaúdeSistema de Recomendação de Páginas sobre Saúde
Sistema de Recomendação de Páginas sobre Saúde
 
201406Carvalho
201406Carvalho201406Carvalho
201406Carvalho
 
A Estrutura de um Web Service
A Estrutura de um Web ServiceA Estrutura de um Web Service
A Estrutura de um Web Service
 
Web services
Web servicesWeb services
Web services
 
Monica vasconcelos
Monica vasconcelosMonica vasconcelos
Monica vasconcelos
 
Monica vasconcelos
Monica vasconcelosMonica vasconcelos
Monica vasconcelos
 
Monica vasconcelos (1)
Monica vasconcelos (1)Monica vasconcelos (1)
Monica vasconcelos (1)
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
Artigo de Protótipo de Sistema de Gerenciamento de Rotas para Transporte Cole...
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Web services
Web  servicesWeb  services
Web services
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soap
 
SOAP e REST
SOAP e RESTSOAP e REST
SOAP e REST
 
Rest
RestRest
Rest
 

Último

EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORDRONDINELLYRAMOS1
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 

Último (7)

EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 

INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST

  • 1. INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST Rafael Silva de Bitencourt1 Ricardo Longa2 RESUMO O aumento da utilização de dispositivos móveis impulsionou o desenvolvimento de aplicações embarcadas que necessitam de integração através da utilização de web services. A arquitetura REST é cada vez mais utilizada pelo mundo inteiro para criação de web services, que são chamados de RESTful por seguir os princípios desta arquitetura. Com base no aumento da utilização e a necessidade de integração dos aplicativos Android, tendo os web services RESTful em ascensão no mercado atual, o artigo busca identificar formas para realizar esta integração e ilustrar uma delas com exemplo de utilização. Para isto foi realizado pesquisa literária, identificando as APIs especialistas como forma recomentada para esta integração. Realizado então, pesquisa em sites que comparam APIs, onde foi identificado a Retrofit no topo das listas de classificação, sendo a mais indicada. Desta forma foi utilizada esta API para ilustrar um exemplo e demonstrar com mais clareza as vantagens. Concluiu-se que com a utilização da API o desenvolvedor não necessita ter conhecimento sobre assuntos que são essenciais para a comunicação, podendo ter mais foco no objetivo final da aplicação que está trabalhando e apresentando mais resultados. Palavras-chave: Android. RESTful. JSON. 1 Pós-graduando em sistemas web e dispositivos móveis: rafael_silbit@hotmail.com 2 Pós-graduado em engenharia de software: ricardo.longa@gmail.com
  • 2. 2 1 INTRODUÇÃO De acordo com a IDC (2013), empresa que estuda as tendências de mercado na área de tecnologia e presta consultoria por todo o mundo, o mercado de dispositivos móveis, especialmente os smartphones, está em evidência e possui um público cada vez maior, em virtude da facilidade de aquisição de um aparelho por qualquer pessoa. Esta tendência continuará nos próximos anos em razão à forte demanda por dados móveis e computação de mão, evidenciando que o consumo por aplicações em rede seguirá a mesma tendência. Aplicativos móveis são normalmente pequenos, utilizando pouca memória dos dispositivos, e com muitas funcionalidades. Um dos fatores que contribui para estes aplicativos terem várias funcionalidades é a extração de informações de várias fontes. Um exemplo é o aplicativo Maps, que já vem instalado na maioria dos smartphones Android e fornece a avançada funcionalidade de mapeamento. Isto é possível devido a sua integração com a API do Google Maps e outros serviços (HASHIMI; KOMATINENI; MACLEAN, 2010). Também existe a necessidade de armazenamento de dados da própria aplicação móvel em base de dados externas, mesmo existindo a possibilidade de utilização do banco de dados do Android. Por questões de segurança e devido à grande quantidade de dados que precisam ser armazenados é recomendado a utilização de um servidor convencional para persistência, e não o dispositivo móvel (LECHETA, 2010). Para a integração com esta base de dados a aplicação móvel não deve realizar a conexão direta ao banco de dados, por questões de segurança dos dados e pela padronização do acesso, uma vez que web services facilitam a comunicação entre diversas plataformas, pois as linguagens de programação entre servidor e cliente podem ser diferentes (LECHETA, 2015a). Para a criação de web services a arquitetura de software Representational State Transfer (REST) é cada vez mais utilizada pelo mundo inteiro e é uma
  • 3. 3 alternativa aos web services SOAP que já estão no mercado a mais tempo. Esta arquitetura foi formalizada em 2000 por Dr. Roy T. Fielding, onde sistemas ou serviços que seguem os princípios desta arquitetura são denominados RESTful (LECHETA, 2015b). A partir desta formalização em 2000, a arquitetura REST vem sendo um termo cada vez mais utilizado, estudado e discutido. Tornando-se de fácil compreensão pelos desenvolvedores, bem documentada e assim atraindo interesse de grandes empresas para utilização em vários sistemas de grande porte como Twitter, Facebook, Flickr e todas as APIs de serviços públicos do Google como: Google Agenda, Google Health, Google Data e Google Maps (ARAÚJO. et al, 2012). Com base no aumento da utilização e a necessidade de integração dos aplicativos Android, tendo os web services RESTful em ascensão no mercado atual, neste artigo será identificado formas para realizar esta integração e ilustrado uma delas com exemplo de utilização. Com objetivo de contribuir em pesquisas de trabalhos futuros que desejarem criar aplicativos Android mais complexos com integração. 2 INTEGRAÇÃO DE APLICATIVOS ANDROID Como neste artigo buscamos formas para integração de aplicações Android com web services RESTful, primeiramente será abordado o conceito e implementação deste web service.
  • 4. 4 2.1 Web Services RESTful Para ser considerado um RESTful o web service precisa seguir os princípios básicos da arquitetura REST que foram definidos por Dr. Roy T. Fielding em 2000. Esta arquitetura utiliza o protocolo HTTP para criação de serviços que trabalham com dados geralmente nos formatos XML ou JSON e seus princípios são (LECHETA, 2015b; RICHARDSON; RUBY, 2007): a) Comunicação entre cliente e servidor sem estado, ou seja, cada mensagem HTTP encaminhada ao servidor contém toda a informação necessária para atendimento do pedido. Assim nem o cliente e nem o servidor necessitam gravar nenhum estado das comunicações entre mensagens. Outras aplicações baseadas em HTTP utilizam cookies e outros mecanismos para manter o estado da sessão. b) Um conjunto de operações bem definidas e padronizadas aplicados a todos os recursos de informação. O protocolo HTTP já define um conjunto de operações, onde as mais importantes são POST, GET, PUT e DELETE. Normalmente estas operações são combinadas com operações CRUD para a persistência de dados. c) Uma sintaxe universal para identificar os recursos, a chamada Uniform Resource Identifier (URI). Onde cada recurso é unicamente direcionado, contendo uma URI exclusiva. d) A utilização de tipos de conteúdo para as solicitações e retornos de conteúdo. O que permite que a aplicação cliente especifique o formato de conteúdo desejado, por exemplo XML ou JSON. Para criação do web service o ideal é a utilização de framework especialista, para separação dos detalhes de baixo nível da comunicação. Afim de simplificar o desenvolvimento de web services RESTful e seus clientes em Java, a Sun/Oracle projetou uma API JAX-RS padrão e portátil. O framework Jersey RESTful Web Services tem código aberto e é a implementação de referência desta API. Além disso, Jersey fornece a sua própria API estendendo o conjunto de ferramentas JAX-RS com recursos adicionais e utilitários para
  • 5. 5 simplificar ainda mais a criação dos serviços RESTful (LECHETA, 2015b; ORACLE,2016c). Foi utilizado o Jersey para a criação do web service, considerando que a empresa que disponibilizou o framework é a responsável pela linguagem Java. Mas como o objetivo do artigo é a demonstração da integração no Android não foi aprofundado a demonstração da criação do serviço, apenas demonstrado o necessário para o entendimento e desenvolvimento da aplicação cliente. Para a demonstração da integração foi feito uma aplicação com objetivo simples para facilitar o entendimento, sendo uma lista de contatos compartilhada. Ou seja, a lista de contatos fica em um banco de dados no servidor, é disponibilizada através do web service RESTful e a aplicação Android faz a manutenção desta lista. Para armazenar a lista de contatos foi utilizado o banco de dados JavaDB (Derby). O motivo da escolha deste banco de dados foi o mesmo do framework Jersey, já que também é disponibilizado pela Sun/Oracle, escrito inteiramente em Java (ORACLE,2016b). A Figura 1 apresenta o diagrama UML da tabela criada para armazenar os contatos.
  • 6. 6 Figura 1: Diagrama UML Fonte: Do autor. Utilizando o ambiente de desenvolvimento Netbeans, que também é disponibilizado pela Sun/Oracle de forma gratuita, é possível criar o Web Service RESTful a partir do banco de dados. Para isto deve ser criado um projeto Java Web e após existe a opção “Web Services RESTful a partir do banco de dados”, onde podem ser selecionados bancos de dados que estejam com o Java Database Connectivity (JDBC) devidamente configurado e definir quais tabelas do banco escolhido devem ser disponibilizadas no web service. Utilizando esta opção o NetBeans cria as classes de entidades referentes as tabelas e o web service já disponibilizando estas classes, utilizando a Java Persistence API para persistência dos dados no banco (ORACLE,2016a). A Figura 2 mostra as classes geradas pelo Netbeans a partir da tabela Contato. Figura 2: Classes do projeto Web Fonte: Do autor. A classe AbstractFacade implementa os métodos de persistência da entidade no banco e a classe ContatoFacadeREST é uma herança desta, implementando apenas os métodos REST. A URL de acesso ao recurso ficou da seguinte forma: http://servidor/restful/app/contatos/. Sendo que restful é o caminho do contexto
  • 7. 7 da aplicação web, app é definido na classe ApplicationConfig com a anotação ApplicationPath da API Jersey e contatos é definido na classe ContatoFacadeREST com a anotação Path da API Jersey, conforme apresentado na Figura 3, representando o recurso na URL. Na aplicação de demonstração foram utilizados os métodos de inserção, alteração, exclusão e listagem. A Figura 3 demonstra estes métodos da classe ContatoFacadeREST. Figura 3: Métodos REST Fonte: Do autor. Para utilização dos métodos apresentados na Figura 3, deve ser utilizado a URL http://servidor/restful/app/contatos/ em conjunto com as operações HTTP: a) Criar um contato: deve ser passado para a URL o contato em formato JSON com a operação POST.
  • 8. 8 b) Editar um contato: deve ser adicionado o código do contato a URL e passado o contato em formato JSON com a operação PUT. c) Excluir um contato: deve ser adicionado o código do contato a URL e utilizado a operação DELETE. d) Obter a lista de contatos: apenas acionar a URL com a operação GET. Tendo o web service disponível, a próxima etapa é o desenvolvimento do aplicativo Android para consumi-lo. 2.2 Integração Android A comunicação direta com web service exige do programador conhecimento e utilização de protocolos, que podem tomar mais tempo do que o próprio objetivo da aplicação. Para abstrair esta comunicação, em aplicações web são utilizadas APIs, que também tornam as aplicações mais simples, devido a menor quantidade de código (LOUVEL; TEMPLIER; BOILEAU, 2012). Para comunicação com web service o ideal é a identificação de uma biblioteca leve e compacta para ser adicionado ao projeto da aplicação Android. Ela deve ser leve e compacta pois a aplicação será executada em dispositivos móveis, que normalmente não têm o mesmo poder de processamento de um computador comum (LECHETA, 2010). O site da LibHunt auxilia na busca por bibliotecas de código aberto de diversos ambientes de programação, incluindo Java e Android, com base na popularidade e manutenção. Para o ambiente Android a comparação é feita com projetos disponibilizados no GitHub, onde foram selecionados mais de mil projetos e classificados em noventa categorias. Na categoria Network é apresentado em um gráfico as bibliotecas Retrofit, okhttp, android-async-http, AndroidAsync, async-http-client e RoboSpice como as mais populares, sendo a Retrofit a que se destaca em primeiro lugar, com maior índice de popularidade e tendo manutenções frequentes. A Figura 4 apresenta este gráfico, onde as colunas na cor laranja representam o índice de popularidade e as colunas na
  • 9. 9 cor verde o índice de manutenção, em uma escala de 0 a 10 (LIBHUNT, 2016). Figura 4: Bibliotecas Android de código aberto Fonte: LibHunt (2016) O site Android Arsenal disponibiliza uma lista de classificação de projetos android, disponível no link https://android-arsenal.com/rating, baseada nas atividades do Github e do próprio Android Arsenal, apresentando a Retrofit na quinta posição, sendo que os quatro primeiros não são para mesma finalidade, ou seja, o Retrofit é o primeiro colocado entre as APIs para aplicações clientes de web services. A Infinum é uma empresa especializada no desenvolvimento móvel e web, atendendo grandes marcas, bancos, seguradoras, editoras de mídia, operadoras de celular e outras empresas com a necessidade de aplicativos móveis, entre elas as empresas Universal Music Group e P&G, fundada em 2005, com sede na Croácia e filiais nos Estados Unidos e na Eslovênia. Esta é um exemplo de empresa de desenvolvimento de software que utiliza a Retrofit. Chegou a publicar em sua página um artigo que lista a Retrofit entre as cinco principais bibliotecas para Android (INFINUM, 2016). A Retrofit é uma biblioteca Java para Android desenvolvida pela empresa Square, que faz todas as chamadas REST internamente e trata as conexões HTTP, fornecendo um padrão simples de implementação para transmissão de dados entre aplicação e servidor, fazendo uso do JSON. Esta biblioteca transforma o web service REST em uma interface Java (SQUARE, 2016).
  • 10. 10 A versão atual da API Retrofit é a 2.1 e para adicioná-la na aplicação Android foi utilizado Android Studio, que é o ambiente de desenvolvimento oficial de aplicativos Android, criando o projeto e inserindo a API nas dependências do Gradle. Além da API foi adicionado o conversor Gson para tratar o JSON recebido do web service. A Figura 5 mostra as duas linhas que foram adicionadas nas dependências. Figura 5: Dependências Gradle Fonte: Do autor. Com a API já disponível no projeto, foi criado a classe Contato, representando a entidade recebida do Web Service, e a interface ContatosService. Na interface, apresentada na Figura 6, foram definidos os métodos de acesso ao Web Service utilizando anotações e objetos da API.
  • 11. 11 Figura 6: Interface Retrofit Fonte: Do autor. A classe Retrofit da API gera uma implementação da interface com base nas anotações. Para utilizar esta classe foi criado a classe GeradorServico com atributos estáticos, sendo a URL do WebService, a classe Gson com a definição da formatação de data utilizada e a instância da classe Retrofit, que recebe a URL a instância da classe Gson, conforme apresentado na Figura 7. Para disponibilizar o serviço às outras classes do projeto, foi criado o método público criarServico, que recebe como parâmetro a interface e retorna a implementação da mesma, utilizando o método create da classe Retrofit.
  • 12. 12 Figura 7: Classe GeradorServico Fonte: Do autor. Com a implementação da interface, a API permite realizar solicitações HTTP síncronas e assíncronas ao WebService. Para tratar estas solicitações é utilizado a classe Call. A Figura 8 exemplifica uma solicitação assíncrona utilizando o método enqueue da classe Call. Ao utilizar o método enqueue deve ser passado uma instância da classe Callback, responsável pela resposta da solicitação assíncrona, obrigatoriamente implementando os métodos onResponse e onFailure, que serão executados de acordo com o resultado da solicitação. Em caso de sucesso, o método onResponse recebe por parâmetro uma instância da classe Response que retorna o recurso solicitado, no caso a lista de contatos, com método body.
  • 13. 13 Figura 8: Solicitação assíncrona Fonte: Do autor. Foi utilizado transação síncrona para salvar e excluir os contatos. Este tipo de solicitação não deve ser aplicado na thread principal da aplicação, pois pode ocorrer a chamada Application not Responding (ANR), ou seja, a interface da aplicação com o usuário é parada. Então foram criadas classes dentro da activity de cadastro, estendendo a classe AsyncTask, que permite executar operações em segundo plano, para realizar a execução das solicitações síncronas. A Figura 9 apresenta a classe criada para exclusão do contato, onde foi utilizado o método execute da classe call, ao invés do enqueue da solicitação assíncrona. O método execute já retorna a instância da classe Response, que neste exemplo não foi necessário utilizar por se tratar da exclusão, não sendo esperado um retorno.
  • 14. 14 Figura 9: Solicitação síncrona Fonte: Do autor. Para a utilização dos outros dois métodos da interface, criarContato e alterarContato, é alterado somente a forma de criar a instância da classe Call, conforme ilustrado na Figura 10. Figura 10: Utilização dos métodos da interface Fonte: Do autor. A aplicação Android criada ficou com as funcionalidades de listar os contatos disponíveis no banco de dados em uma tela inicial, com opção de editá-los, excluí-los e realizar novos cadastros. 3 RESULTADOS E DISCUSSÕES Após as pesquisas realizadas, tendo a utilização de APIs especialistas como opção mais adotada para a integração de aplicações Android com web services, foi identificado a API Retrofit como a mais utilizada e bem conceituada.
  • 15. 15 Utilizando a API Retrofit o desenvolvimento da integração da aplicação Android com o web service REST pode ser feito com poucas linhas de código e sem o tratamento das requisições HTTP e do JSON recebido, a API abstrai todo o trabalho de comunicação. Com o exemplo criado foi possível notar grande rendimento no desenvolvimento da aplicação, devido a todo este trabalho de comunicação feito pela API, que não toma o tempo do desenvolvedor. 4 CONCLUSÃO O contínuo aumento do mercado de dispositivos móveis evidencia que o consumo por aplicações em rede seguirá a mesma tendência. Estas aplicações necessitam de integração com servidores para obter informações e complementar suas funcionalidades. Tendo como objetivo do artigo a identificação de formas para realizar a integração de aplicativos Android, que é o sistema operacional móvel mais utilizado na atualidade, com web services, foi realizado pesquisa literária para identificar a forma recomendada para esta integração. Afim de contribuir em pesquisas de trabalhos futuros que desejarem criar aplicativos mais complexos com integração. Após verificar que a utilização de APIs especialistas é a forma recomentada, foi realizado pesquisa em sites que comparam APIs, onde foi identificado a Retrofit no topo das listas de classificação, sendo a mais indicada. Desta forma foi utilizada esta API para ilustrar um exemplo e demonstrar com mais clareza as vantagens da utilização de API. Com o exemplo foi possível demonstrar que API especialista realiza todo o trabalho de comunicação com o servidor. Desta forma o desenvolvedor não necessita ter conhecimento sobre assuntos que são essenciais para a comunicação, como o protocolo HTTP e o formato JSON. Podendo ter mais foco no objetivo final da aplicação que está trabalhando e apresentando mais resultados.
  • 16. 16 ANDROID APPLICATION INTEGRATION WITH REST WEB SERVICES ABSTRACT The increased use of mobile devices has boosted the development of embedded applications that require integration through the use of web services. The REST architecture is increasingly used all over the world for creating web services that are called RESTful since it follows the principles of this architecture. Based on the increased use and the need for integration of Android applications, having Web services RESTful on the rise in the current market, the article seeks to identify ways to accomplish this integration and illustrate one of them as an example of use. This was done through literary research, identifying APIs experts as recommended way for this integration. Researches on websites that compare APIs were accomplished, identifying Retrofit at the top of the ranking lists and also being the most indicated. Thus this API was used to illustrate an example and demonstrate more clearly the advantages. It was concluded that with the use of the API the developer does not need to have knowledge about issues that are essential for communication and may focus more on the ultimate objective of the application which is being done and presenting more results. Key-words: Android. RESTful. JSON.
  • 17. 17 REFERÊNCIAS ARAÚJO, R. M. L. de. et al. Desenvolvimento de Aplicações para Plataforma Google Android. In: ENCONTRO UNIFICADO DE COMPUTAÇÃO EM PARNAÍBA, 5., 2012. Parnaíba. Anais eletrônicos... Parnaíba: FUESPI, 2012. p. 103-129. Disponível em: <http://www.enucomp.com.br/2012/conteudos/AnaisVENUCOMP2012.pdf>. Acesso em: 21 jun. 2016. HASHIMI, Sayed; KOMATINENI, Satya; MACLEAN, Dave. Pro Android 3. [S. l.]: Apress, 2011. IDC, Market Analysis. Smartphones expected to grow 32.7% in 2013 fueled by declining prices and strong emerging market demand, According to IDC. Framinghan: IDC, 2013. INFINUM, Inc. Top 5 Android libraries every Android developer should know about. Disponível em: <https://infinum.co/the-capsized-eight/articles/top-5- android-libraries-every-android-developer-should-know-about>. Acesso em: 27 jun. 2016 LECHETA, Ricardo R. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK. 2 ed. São Paulo: Novatec, 2010. ______. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK. 4 ed. São Paulo: Novatec, 2015a. ______. Web Services RESTful: aprenda a criar web services RESTful em Java na nuvem do Google. São Paulo: Novatec, 2015b. LIBHUNT. Android Network. Disponível em: <https://android.libhunt.com/categories/1417-network>. Acesso em: 06 jul. 2016. LOUVEL, Jerome; TEMPLIER, Thierry; BOILEAU,Thierry. Restlet in Action: Developing RESTful web APIs in Java. Greenwich: Manning, 2012. ORACLE. Introdução aos Web Services RESTful. Disponível em: <https://netbeans.org/kb/docs/websvc/rest_pt_BR.html>. Acesso em: 19 jul. 2016a.
  • 18. 18 ORACLE. Java DB: Overview. Disponível em: <http://www.oracle.com/technetwork/java/javadb/overview/index.html>. Acesso em: 18 jul. 2016b. ORACLE. Jersey: RESTful Web Services in Java. Disponível em: <https://jersey.java.net/>. Acesso em: 17 jul. 2016c. RICHARDSON, Leonard; RUBY, Sam. RESTful Web Services. Sebastopol: O’Reilly Media, 2007. SQUARE, Inc. Retrofit: A type-safe HTTP client for Android and Java. Disponível em: <http://square.github.io/retrofit/>. Acesso em: 27 jun. 2016.