1. INTRODUKSJON OG MOTIVASJON
1.2 E NERGI
As plataformas de software para dispositivos m´oveis definem o sistema operacional que controla um dispositivo, cujo conceito ´e similar aos sistemas operacionais presentes em m´aquinas desktop tais como o MS Windows ou Linux. Entretanto, devido `as
Tabela 2.1. Plataformas de software para dispositivos m´oveis.
Plataformas de SW Caracter´ısticas
Symbian OS [55] Open-source, C/C++, linguagem de programa¸c˜ao Python [44]
Java Mobile Edition (JavaME) [54] Linguagem de programa¸c˜ao Java, Subconjunto do Java Stardard Edition (JavaSE)
Android Linux, Linguagem de programa¸c˜ao
Java
IPhone SDK [2] C, Objective C, Propriet´ario da Apple .NET Compact Framework [38] Linguagem de programa¸c˜ao C Sharp,
Propriet´ario da Microsoft
restri¸c˜oes de hardware e software presentes, estes sistemas s˜ao mais simples, tratam a conectividade de dados de forma mais direta e abrangente (e.g., local e sem fio) e oferecem a manipula¸c˜ao de diferentes formatos de m´ıdias (e.g., ´audio, texto, imagem, v´ıdeo) e m´etodos de entrada de dados, tais como telas sens´ıveis ao toque e teclados do tipo querty.
Uma das evolu¸c˜oes recentes na computa¸c˜ao m´ovel est´a no provimento de servi¸cos baseados em informa¸c˜oes al´em dos servi¸cos de voz e SMS j´a existentes. Esta mudan¸ca recente e progressiva tem se tornado um passo importante para a evolu¸c˜ao da computa¸c˜ao m´ovel, trazendo assim novos servi¸cos anteriormente invi´aveis. Apesar deste avan¸co, alguns desafios ainda existem, tais como: a) conectividade cont´ınua entre diferentes meios de acesso a redes (e.g., casa, autom´ovel, Wireless Local Access Network (WLAN), Third Generation Mobile Communications Standard (3G)), b) interoperabilidade de hardware e software (plataformas e aplica¸c˜oes) e c) servi¸cos baseados em informa¸c˜oes de contexto (localiza¸c˜ao, hora, estado do dispositivo, conectividade, etc).
O mercado atual de dispositivos m´oveis oferece diversas plataformas de software para o desenvolvimento de aplicativos m´oveis e servi¸cos. A listagem das principais plataformas pode ser visualizada na Tabela 2.1. Criada pela Google em Novembro de 2007, a plataforma de software e sistema operacional Android3 permite a cria¸c˜ao de
aplicativos na linguagem de programa¸c˜ao Java de uma forma gerenci´avel atrav´es da utiliza¸c˜ao de uma m´aquina virtual, controlando assim o dispositivo via bibliotecas Java providas pela pr´opria Google. Um cons´orcio denominado de Open Handset Alliance (OHA) composto de 48 empresas de hardware, software e telecomunica¸c˜oes foi criado com o objetivo de avan¸car a cria¸c˜ao e uso de padr˜oes abertos para dispositivos m´oveis. A maioria do c´odigo que comp˜oe o Android ´e distribu´ıda sob a licen¸ca Apache que define uma licen¸ca gratuita e de c´odigo aberto (open-source).
A plataforma Android define uma pilha de software para dispositivos m´oveis,
3
2.6. Tecnologias em Sistemas Distribu´ıdos e M´oveis 33
incluindo um sistema operacional, middleware e aplica¸c˜oes, conforme apresentado na Figura 2.4. O Systems Development Kit (SDK) fornece as ferramentas e as bibliotecas (e.g., APIs) necess´arias para o desenvolvimento de aplica¸c˜oes sobre a plataforma usando a linguagem de programa¸c˜ao Java. Os principais recursos oferecidos pela plataforma incluem:
• Arcabou¸co de aplica¸c˜oes: permite o reuso e substitui¸c˜ao de componentes de SW;
• Virtualiza¸c˜ao: m´aquina virtual Dalvik otimizada para dispositivos m´oveis; • Navega¸c˜ao Web: navegador Web integrado baseado no WebKit Engine; • Gr´aficos: suporte a gr´aficos 2D e 3D baseado na especifica¸c˜ao OpenGL for
Embedded Systems (OES) 1.0;
• Base de dados: armazenamento de dados local atrav´es do SQLite;
• Multim´ıdia: suporte a diferentes tipos de m´ıdia (´audio, v´ıdeo e imagens); • Rede: conectividade de dados e voz atrav´es de tecnologias sem fio tais como
Global System for Mobile Communications (GSM), Bluetooth, Enhanced Data rates for GSM Evolution (EDGE), 3G e WLAN;
• Desenvolvimento: ambiente de desenvolvimento composto de um emulador de dispositivo, ferramentas para depura¸c˜ao, an´alise de perfil de mem´oria e desempenho e plugins para ambientes integrados de desenvolvimento tais como o Eclipse.
Na plataforma Android, utilizamos duas abordagens para a recep¸c˜ao e processamento de eventos vindos do servidor remoto de dados no prot´otipo DroidGuide. Na primeira delas, utilizamos a cria¸c˜ao de processos concorrentes (e.g., threads) para o gerenciamento dos eventos na aplica¸c˜ao m´ovel. Na segunda abordagem, utilizamos uma extens˜ao da classe BroadcastReceiver para o gerenciamento dos eventos. O receptor de broadcast ou broadcast beceiver ´e um componente respons´avel por receber e reagir a eventos notificados durante a execu¸c˜ao da aplica¸c˜ao. Exemplos de notifica¸c˜ao incluem n´ıvel baixo de bateria, mudan¸ca de fuso hor´ario, mudan¸ca de idioma, dentre outros. Al´em de receber as notifica¸c˜oes, aplica¸c˜oes desenvolvidas no Android tamb´em podem submeter notifica¸c˜oes a fim de notificar outros componentes a ocorrencia de um evento de interesse. Aplica¸c˜oes podem possuir diversos receptores de broadcast para responderem a notifica¸c˜oes importantes. Todos os receptores devem extender a classe
Figura 2.4. A pilha de software definida na plataforma Android.
base BroadcastReceiver. Os receptores n˜ao possuem interface gr´afica, mas podem iniciar atividades em resposta a informa¸c˜oes recebidas ou alertar o usu´ario m´ovel atrav´es do gerenciador de notifica¸c˜oes ou NotificationManager.
Os receptores de Broadcast recebem inten¸c˜oes de execu¸c˜ao a partir de atividades em execu¸c˜ao no dispositivo. Neste conceito, componentes produtores publicam inten¸c˜oes de execu¸c˜ao (e.g., Intents) para que receptores possam executar determinadas atividades em fun¸c˜ao da recep¸c˜ao da mesma. As inten¸c˜oes e o tratamento destas se assemelham `a eventos produzidos e publicados em um sistema de eventos distribu´ıdo. No caso do Android, Cada receptor possui um filtro respons´avel por selecionar ou n˜ao inten¸c˜oes recebidas, definindo assim se devem ser consumidas ou n˜ao.
Al´em do Android, podemos destacar tamb´em outras plataformas de software para dispositivos m´oveis, tais como o JavaME. O JavaME [54] define uma especifica¸c˜ao de um subconjunto da plataforma JavaSE voltado para a constru¸c˜ao de aplicativos para dispositivos pequenos e com pouco poder computacional (e.g., energia, conectividade e processamento). Neste trabalho, buscamos por uma plataforma de software para
2.6. Tecnologias em Sistemas Distribu´ıdos e M´oveis 35
dispositivos m´oveis com as seguintes caracter´ısticas: 1) c´odigo aberto (open-source), 2) biblioteca de programa¸c˜ao rica com v´arios recursos de interface gr´afica (componentes gr´aficos, interface com o usu´ario), 3) suporte a navega¸c˜ao Web com recursos utilizados tais como o servi¸co Web de mapas e JavaScript (JS), 4) possibilidade de constru¸c˜ao e execu¸c˜ao de prot´otipos com v´arios clientes simultˆaneos e 5) API de conectividade de dados rica com suporte a diferentes tipos de conex˜oes de rede. De todas as caracter´ısticas destacadas acima, o Android se mostrou o mais adequado na constru¸c˜ao dos prot´otipos deste trabalho, seguido pelo JavaME e o Symbian OS.