- Polis Educacional
Transcrição
- Polis Educacional
Frederico Constantino Raperger 0310014 – 8º Sem. ANÁLISE COMPARATIVA DAS TECNOLOGIAS DE DESENVOLVIMENTO DE SOFTWARE PARA DISPOSITIVOS COMPUTACIONAIS MÓVEIS Jaguariúna 2005 Frederico Constantino Raperger 0310014 – 8º Sem. ANÁLISE COMPARATIVA DAS TECNOLOGIAS DE DESENVOLVIMENTO DE SOFTWARE PARA DISPOSITIVOS COMPUTACIONAIS MÓVEIS Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do curso de Ciência da Computação da Faculdade de Jaguariúna, sob orientação do Prof. Ms. Peter Jandl Jr, como exigência parcial para conclusão do curso de graduação. Jaguariúna 2005 RAPERGER, Frederico Constantino. Analise Comparativa das Tecnologias de Desenvolvimento de Software para Dispositivos Computacionais Móveis. Monografia defendia e aprovada na FAJ em 18 de Dezembro de 2005 pela banca examinadora constituída pelos professores: Prof. MS Peter Jandl Jr FAJ – Orientador Prof. Roberto Vargas Pacheco FAJ Prof. José Arnaldo Geraldini Nunes FAJ RAPERGER, Frederico Constantino. Analise Comparativa das Tecnologias de Desenvolvimento de Software para Dispositivos Computacionais Móveis. 2005. Monografia (Bacharelado em Ciências da Computação) – Curso Ciências da Computação da Faculdade de Jaguariúna, Jaguariúna. RESUMO Segundo grandes empresas da área de telefonia celular, o comércio de aparelhos celulares com tecnologias que possibilitem a criação de novos aplicativos, como J2ME, Symbian e BREW. Por ser um mercado novo e existir mais de uma opção, uma pergunta de difícil resposta que se forma é sobre como escolher a tecnologia que melhor se adeqüe ao desenvolvimento de uma aplicação para tais dispositivos. O BREW, criado pela Qualcomm, vem com a missão de ser o mais simples possível, permitindo que seja suportado por telefones com baixa performance. A plataforma BREW fica diretamente sobre o software de sistema do chip, permitindo aplicativos nativos em C/C++ rápidos e fácil integração. O Symbian OS é sistema operacional projetado especificamente para o ambiente móvel, preenchendo os requisitos dos aparelhos das gerações 2.5 e 3 de celulares. Segundo pesquisas, ele ocupa dois terços do mercado de smartphones. O Symbian OS é formado por um consórcio de empresas como Nokia, Samsung, Panasonic, Motorola entre outras. O J2ME é uma plataforma de desenvolvimento para aparelhos celulares desenvolvida pela Sun Microsystem. Hoje, muitas empresas fabricantes de celulares vêem grandes vantagens e oportunidades na tecnologia Java, tanto que praticamente todos os modelos de celulares da Nokia fabricados hoje já dispõem desta tecnologia. No final estas tecnologias são comparadas em termo de: • Recursos e limitações existentes; • Metodologia de implementação; • Performance; • Suporte existente e produtos disponíveis. Palavras-chave: WIRELESS, MOBILE, J2ME, BREW, SYMBIAN SUMÁRIO LISTA DE FIGURAS..................................................................................................... 6 LISTA DE SIGLAS........................................................................................................ 7 1. INTRODUÇÃO ................................................................................................... 9 2. BREW (BINARY RUNTIME ENVIRONMENT WIRELESS)............................... 10 2.1. Arquitetura do BREW ...................................................................................... 11 2.1.1. Estrutura dos módulos e interfaces do BREW ........................................... 12 2.2. Vantagens do BREW....................................................................................... 12 2.3. Ambiente de Desenvolvimento ........................................................................ 14 2.3.1. BREW SDK ............................................................................................... 14 2.3.2. Componentes do BREW SDK.................................................................... 14 2.3.3. Editor de Código ........................................................................................ 16 2.4. Metodologia de Implementação....................................................................... 17 2.4.1. Criação de Novos Aplicativos .................................................................... 17 2.4.2. Codificação do Sistema ............................................................................. 17 2.4.3. Classes do BREW e MIFs.......................................................................... 19 2.4.4. Execução do Aplicativo no Emulador......................................................... 21 2.4.5. Transferência do Aplicativo para o Celular................................................. 21 3. SYMBIAN ......................................................................................................... 23 3.1. Arquitetura do Symbian OS ............................................................................. 23 3.2. Recursos ......................................................................................................... 24 3.2.1. Principais Funcionalidades ........................................................................ 24 3.2.2. Framework................................................................................................. 25 3.2.3. Infraestrutura de Comunicação.................................................................. 25 3.2.4. Telefonia.................................................................................................... 26 3.3. Conhecimentos Necessários ........................................................................... 26 3.4. Ambiente de Desenvolvimento ........................................................................ 26 3.5. Metodologia de Implementação....................................................................... 27 3.5.1. Codificação do Sistema ............................................................................. 27 3.5.2. Definição de Componentes........................................................................ 28 3.5.3. Especificação do Projeto ........................................................................... 28 3.5.4. Tipos de Aplicação .................................................................................... 29 3.5.5. Compilação do Projeto............................................................................... 29 3.5.6. Instalação do Aplicativo para o Celular ...................................................... 30 4. J2ME (JAVA 2 MICRO EDITION) ..................................................................... 32 4.1. Arquitetura do J2ME ........................................................................................ 33 4.1.1. Configurations............................................................................................ 34 4.1.2. Profiles....................................................................................................... 35 4.1.3. APIs Ocionais ............................................................................................ 35 4.2. Recursos e Limitações Existentes ................................................................... 35 4.2.1. Configurações (CLDC)............................................................................... 35 4.2.2. CLDC 1.0................................................................................................... 36 4.2.3. CLDC 1.1................................................................................................... 36 4.2.4. Perfis ......................................................................................................... 37 4.3. Conhecimentos Necessários ........................................................................... 38 4.4. Ambiente de Desenvolvimento ........................................................................ 38 4.4.1. O JDK........................................................................................................ 38 4.4.2. Ferramenta de Desenvolvimento para Celular WTK .................................. 39 4.4.3. Editor de Código ........................................................................................ 39 4.5. Metodologia de Implementação....................................................................... 40 4.5.1. Criação de um Projeto ............................................................................... 40 4.5.2. Codificação do Sistema ............................................................................. 41 4.5.3. Execução do Aplicativo no Emulador......................................................... 42 4.5.4. Transferência do Aplicativo para o Celular................................................. 44 5. PRODUTOS DISPONÍVEIS NO MERCADO .................................................... 45 5.1. Tecnologias Disponíveis no Mercado .............................................................. 47 6. CONCLUSÃO................................................................................................... 48 7. REFERÊNCIAS BIBLIOGRÁFICAS.................................................................. 50 LISTA DE FIGURAS FIGURA 1. ARQUITETURA DO BREW .................................................................. 12 LISTAGEM 1. CÓDIGO-FONTE .............................................................................. 19 FIGURA 2. O MIF NO BREW SDK.......................................................................... 20 FIGURA 3. BREW MIF EDITOR.............................................................................. 20 FIGURA 4. BREW EMULATOR .............................................................................. 21 FIGURA 5. CONTEÚDO DA PASTA DA APLICAÇÃO HELLO WORLD ................. 22 FIGURA 6. ARQUITETURA DO SYMBIAN OS ....................................................... 23 TABELA 1 COMPARAÇÃO DOS IDES DISPONÍVEIS PARA SYMBIAN ............... 27 LISTAGEM 2. CONTEÚDO DO CÓDIGO-FONTE (HELLOTEXT.CPP)................... 28 LISTAGEM 3. CONTEÚDO DO ARQUIVO BLD.INF ............................................... 28 LISTAGEM 4. CONTEÚDO DO ARQUIVO HELLOTEXT.MMP ............................... 29 FIGURA 7. HIERARQUIA NA COMPILAÇÃO DAS FONTES E RECURSOS ......... 30 FIGURA 8. PLATAFORMAS DE DESENVOLVIMENTO JAVA ............................... 33 FIGURA 9. CICLO DE VIDA DO MIDLET ............................................................... 38 FIGURA 10. TELA DO WTK APÓS A CRIAÇÃO DO PROJETO HELLOWORLD ... 40 FIGURA 11. ESTRUTURA DE DIRETÓRIOS CRIADA PELO WTK ........................ 41 LISTAGEM 5. FIGURA 12. CONTEÚDO DO ARQUIVO FONTE .JAVA ...................................... 42 EMULADOR DEFAULT DO WTK ........................................................ 43 LISTAGEM 6. CONTEÚDO DO ARQUIVO DESCRITIVO .JAD............................... 44 FIGURA 13. ARQUIVOS QUE DEVEM SER COPIADOS PARA O CELULAR ........ 44 FIGURA 14. COMPARAÇÃO DOS MODELOS DA CLARO .................................... 45 FIGURA 15. COMPARAÇÃO DOS MODELOS DA TIM........................................... 46 FIGURA 16. COMPARAÇÃO DOS MODELOS DA VIVO ........................................ 46 FIGURA 17. COMPARAÇÃO DAS TECNOLOGIAS DISPONÍVEIS NO MERCADO 47 TABELA 2 COMPARAÇÃO ENTRE BREW, SYMBIAN E J2ME ............................ 49 LISTA DE SIGLAS AEE - Application Execution Environment ANSI - American National Standards institute API - Application Programming Interface ARM - Advanced RISC Machines ASIC - Application-specific integrated circuit AWT - Abstract Windowing Toolkit BID - BREW Class ID BREW - Binary Runtime Environment Wireless CDC - Connected Device Configuration CDMA - Code Division Multiple Access CGF - Connection Generic Framework CLDC - Connected, Limited Device Configuration CPU - Central Processing Unit DLL - Dinamic Link Library DNS - Domain Name System EDGE - Enhanced Data rates for GSM Evolution EMS - Enhanced Messaging Service FTP - File Transfer Protocol GPRS - General Packet Radio Service GPS - Global Positioning System GSM - Global System for Mobile communication GUI - Graphical User Interface HSCSD – High-Speed Circuit-Switched Data HTTP - Hypertext Transfer Protocol HTTPS - Hypertext Transfer Protocol Scheme IDE - Integrated Development Environment IMAP4 - Internet Message Access Protocol J2ME - Java 2 Micro Edition J2SE - Java 2 Standard Edition JVM - Java Virtual Machine MHTML – MIME Hypertext Transfer Protocol MIDP - Mobile Information Device Profile MIF - Module Information Files MMS - Multimedia Message Service MSMTM - Mobile Station Modem MVC - Model View Controller OEM - Original Equipment Manufacturer OTA - Over The Air OO - Orientação a Objeto PDA - Personal Digital Assistant POP3 - Post Office Protocol version 3 PPP - Point-to-Point Protocol RTT - Round-Trip delay Time SDK - Software development kit SMS - Short Message Service SMTP - Simple Mail Transfer Protocol SSL - Secure Socket Layer TCP - Transmission Control Protocol TDMA - Time Division Multiple Access UDP - User Datagram Protocol USB - Universal Serial Bus WAP - Wireless Application Protocol WORA - Write Once, Run Anywhere WTK - Wireless ToolKit WTLS - Wireless Transport Layer Security 9 1. INTRODUÇÃO A escolha da tecnologia que melhor se adeqüa ao desenvolvimento de uma aplicação para dispositivos computacionais móveis, considerando as tecnologias disponíveis, é uma questão muito complexa. O interesse do mercado pela utilização de softwares em dispositivos computacionais móveis, tais como celulares e PDAs (Personal Digital Assistent) vem crescendo exponencialmente nos últimos anos. Márcio Venzi, gerente de Desenvolvimento de Negócio da Nokia (Nokia, 2004) diz que a empresa comercializará, durante todo o ano de 2004, cerca de 100 milhões de aparelhos celulares com suporte a tecnologia Java, sendo que em julho, o Brasil contava com 55,25 milhões de usuários de telefônica celular. Segundo o IDG Brasil (IDGNow, 2004), a plataforma Java opera em mais de 350 milhões de aparelhos, enquanto o Symbiam OS tem dois terços do mercado de smartphones. Com esta análise comparativa, deseja-se obter informações sobre as tecnologias disponíveis para o desenvolvimento de tais software. De modo a orientar coerentemente a escolha de qual tecnologia utilizar conforme as características do problema e dos dispositivos a serem usados. BREW (Binary Runtime Enviroment for Wireless) foi criado pela Qualcomm para ser uma completa plataforma de desenvolvimento e distribuição de aplicações para dispositivos móveis. Tem como principal característica ser extremamente pequeno, o que possibilita ser incluso em aparelhos com pouquíssimo poder de processamento. Entretando oferece uma plataforma aberta e expansível para o desenvolvimento de aplicações. BREW foi desenvolvida pensando nas limitações que essas máquinas possuem, por isso foi otimizada ao máximo e pode rodar suas aplicações nativas ( em C/C++) como engines 3d, máquinas virtuais Java com uma excelente performance. J2me (Java 2 Micro Edition), é a versão de Java da Sun destinada a dispositivos com recursos limitados de hardware tais como: PDAs, Telefones celulares entre outros. Atualmente o J2ME consiste de um conjunto de "Profiles" ou perfis. Cada perfil é destinado a uma categoria específica de devices, e consiste num conjunto mínimo de biblioteca de classes que o determinado aparelho deve suportar. Symbian OS é um avançado sistema operacional multitarefa licenciado pelas maiores empresas de telefonia móvel do mundo. Foi projetado com as restrições dos aparelhos móveis em mente e para suprir os requerimentos específicos dos modernos celulares 2G, 2.5G e 3G. Com isso o Symbian OS foi desenvolvido com: um mínimo de uso de memória, um eficiente gerenciador de energia, suporte em tempo real para telefonia e para transferência de dados. 10 2. BREW (BINARY RUNTIME ENVIRONMENT WIRELESS) Os usuários de comunicação móvel atualmente querem mais recursos em seus dispositivos móveis, que podem ser desde avançadíssimos PDAs integrados, até aparelhos telefônicos móveis populares, de baixo custo e fáceis de usar. Embora tenha havido muito entusiasmo em torno da possibilidade de se promover a tecnologia ASIC (ApplicationSpecific Integrated Circuit) de alta velocidade para incorporar a funcionalidade de novos aplicativos, mesmo em dispositivos de baixo custo, o trabalho executado até aqui tem sido bastante prejudicado por fatores de custo e tamanho relacionados à integração dos sistemas operacionais de alta complexidade que parecem ser necessários para abrigar tais aplicativos. Os dispositivos populares geralmente se caracterizam por soluções proprietárias que suportam conjuntos específicos de serviços e interfaces. Embora a maioria desses dispositivos compartilhe basicamente o mesmo ambiente, as camadas proprietárias acima do ASIC desencorajaram o desenvolvimento de aplicativos genéricos que possam aproveitar a oferta por parte de vários fabricantes de dispositivos. A QUALCOMM tem aproveitado sua vasta experiência nas áreas de ASIC, dispositivos móveis e aplicativos para microcomputadores para desenvolver o BREW. A missão do BREW é oferecer um AEE (Application Execution Environment) eficiente, de baixo custo, expansível e simples, concentrado especialmente no desenvolvimento de aplicativos que possam ser portados sem dificuldades para praticamente todos os dispositivos portáteis. Ao contrário das opções de alto desempenho oferecidas, desenvolvidas sobre sistemas operacionais que exigem um volume substancial de memória, um processador de alta velocidade e todo o hardware associado a tal, o BREW funciona nos tipos de dispositivos que existem hoje em dia. Com o BREW, os desenvolvedores de aplicativos podem agregar funcionalidade estendida até aos dispositivos de menor custo. BREW não pode ser comparado a Java (até porque é possível criar um ambiente Java rodando nele) nem a um sistema operacional completo como o Symbian. BREW busca ser o mais simples possível, permitindo assim que seja suportado por telefones que não tem capacidade de rodar um sistema operacional completo. O sistema BREW é basicamente uma plataforma de execução de aplicativos aberta, padronizada e extensível, que reside no dispositivo de comunicação móvel (QUALCOMM, 2004b). A plataforma BREW fica diretamente sobre o software de sistema do chip, permitindo aplicativos nativos em C/C++ rápidos e fáceis integração de navegadores, máquinas virtuais baseadas em tecnologias Java e extensões como mecanismos de jogos em 3D, analisadores de XML e passadores (“players”) de vídeo. 11 2.1. Arquitetura do BREW O BREW oferece aos desenvolvedores de aplicativos um ambiente leve, porém rico, que lhes permitem aproveitar os recursos atuais e futuros oferecidos pelo ASIC MSMTM (Mobile Station Modem) da QUALCOMM. O ambiente de execução de aplicativos baseado em objetos e totalmente extensível do BREW permite o desenvolvimento de applets e de módulos compartilhados em C ou C++. Ao mesmo tempo, o BREW foi criado com o objetivo de melhorar a eficiência e economizar a memória RAM dos dispositivos móveis. O BREW suporta aplicativos (applets) e módulos compartilhados. Os applets e os módulos são desenvolvidos como DLLs (Dinamic Link Library) independentes, sendo carregados no Emulator em tempo de execução. Os módulos compartilhados incluem funcionalidades como, por exemplo, APIs (Application Programming Interface) de jogos avançadas, que podem ser usadas por diversos applets. Os applets e módulos do BREW são desenvolvidos em um ambiente emulado, sob o Windows. O BREW expõe um conjunto sofisticado de tecnologias de objetos, que proporcionam aos desenvolvedores as seguintes vantagens: • Serviços de aplicativo que suportam um AEE simples, baseado em eventos. • Serviços básicos que suportam o acesso a arquivos, serviços de rede, memória e tela. • Serviços avançados como, por exemplo, recursos gráficos melhorados, reprodução de som, GPS (Global Positioning System) e serviços de voz. • Serviços de integração, que permitem ao desenvolvedor de aplicativos aproveitar serviços como aqueles suportados por navegadores da Web. A Figura 1 mostra como o BREW provê uma camada fina que suporta acesso a software ASIC e OEM (Original Equipment Manufacturer) para dar suporte a applets e módulos. 12 Figura 1. Arquitetura do BREW (QUALCOMM, 2002b) 2.1.1. Estrutura dos módulos e interfaces do BREW O AEE do BREW oferece diversas categorias de serviços, inclusive diversas interfaces com o AEE, tais como IShell, IDisplay e IMenuCtl. Cada interface encapsula um conjunto de recursos e contém métodos que permitem que esses recursos sejam gerenciados. Os módulos do BREW podem conter um ou mais applets ou classes. Classes são expostas pelo módulo em tempo de execução, sendo carregadas e descarregadas conforme a necessidade. 2.2. Vantagens do BREW Algumas vantagens do AEE do BREW são: • O BREW é mais eficiente. Fica de forma leve “por cima” do software de sistema do chip do aparelho telefônico, a plataforma BREW tem acesso a recursos em nível de chip, o que permite que ele faça o download e a execução de aplicativos diretamente no telefone. Alocando dinamicamente RAM para aplicativos à medida que eles são executados e usando armazenamento e processamento locais (cliente e cliente/servidor), a plataforma BREW otimiza a alocação de memória. Isto permite que os recursos de gerenciamento de aplicativos do BREW tratem 13 todas as funções de execução local, bem como eventos de rede externos (QUALCOMM, 2005). • O ambiente de aplicativos do BREW suporta uma arquitetura familiar dirigida por eventos, semelhante à do Microsoft Windows, do Macintosh e do X-Windows do UNIX. • Os applets do BREW podem ser adaptados para o idioma de diferentes países. • Todo o texto é gerenciado como Unicode e armazenado na maneira mais eficiente suportada para o idioma selecionado. O BREW também provê suporte a formatos de texto nativos específicos de OEMs. • Não é necessário se preocupar com drivers de dispositivos e estruturas de dados de plataformas de baixo nível, pois todas as interações entre o aplicativo e a plataforma do dispositivo ocorrem através de classes bem definidas. • Pode-se desenvolver módulos de maneira independente e em paralelo, reduzindo assim o tempo de desenvolvimento e os problemas de integração. • Módulos podem ser integrados em nível de código-objeto, simplificando a tarefa de se acrescentar módulos à plataforma BREW. • O BREW suporta o recebimento de mensagens SMS (Short Message Service) direcionadas a aplicativos, bem como cotações de ações, e-mails resumidos e informações atualizadas sobre o trânsito. • O BREW oferece classes básicas para interfaceamento com a plataforma do dispositivo. As funções de dispositivo que os applets podem gerenciar e controlar com essas classes incluem: o Serviços de shell o Tempo/temporizadores (obtenção de data e hora atuais; disparo e interrupção de temporizadores e alarmes) o Notificações o Gerenciamento de memória o Gerenciamento de arquivos o Gerenciamento de bancos de dados o Rede e soquetes o HTTP (Hypertext Transfer Protocol) o Download e tarifação o Controles de interface com o usuário, incluindo os seguintes: Diálogos Controles de data Controles de menu 14 Controles de texto Controles de horário Controles de texto estático Controles de exibição Imagens (exibição, transformação, animação) Gráficos o Reprodução de som (reprodução de arquivos MIDI e MP3) o Sons (geração de sons de campainhas, alertas e reprodução de arquivos de áudio) o Funções auxiliares de biblioteca padrão Em versões futuras, as classes básicas serão estendidas de modo a oferecer serviços como Bluetooth, GPS e telefonia. 2.3. Ambiente de Desenvolvimento 2.3.1. BREW SDK O BREW SDK (Software Development Kit) é um conjunto de ferramentas e serviços que permite aos desenvolvedores de aplicativos desenvolver e implantar de maneira rápida, eficiente e econômica novos aplicativos para uma ampla variedade de dispositivos portáteis. Este SDK pode ser baixado pelo site da qualcomm (QUALCOMM, 2004a). Ao fazer o download das últimas versões do BREW SDK a instalação é iniciada automaticamente. 2.3.2. Componentes do BREW SDK 2.3.2.1. BREW AEE O BREW AEE é um ambiente totalmente expansível de desenvolvimento e execução de aplicativos baseado em objetos. Ele proporciona uma plataforma na qual pode-se desenvolver applets e módulos compartilhados em C ou C++. Uma arquitetura familiar, orientada por eventos (semelhante à do Microsoft Windows, Macintosh ou X-Windows) melhora ainda mais sua facilidade de uso. 2.3.2.2. Emulator O BREW Emulator, é a GUI (Graphical User Interface) de “frontend” que será utilizada para carregar e testar seus applets. Diversas emulações de dispositivos pré-configuradas 15 são fornecidas. O usuário também pode criar suas próprias emulações de dispositivos usando o Configurator. 2.3.2.3. Device Configurator Para criar novos dispositivos ou editar configurações existentes, use o BREW Device Configurator. Ele é útil para configurar recursos como as teclas do teclado e suas funções, dimensões e resolução da tela e tamanho da memória. 2.3.2.4. Resource Editor Para criar recursos para aplicativos, use o BREW Resource Editor. Pode-se usar os mesmos arquivos de recursos no Windows e no dispositivo. 2.3.2.5. MIF Editor O BREW MIF Editor, gera MIFs (Module Information Files), que contêm informações específicas de applets e módulos, necessárias para carregar um applet. 2.3.2.6. DLLs do BREW O BREW contém várias DLLs que expõem as classes básicas suportadas pelo BREW no ambiente do Microsoft Windows. Como as DLLs usam o mesmo código desenvolvido para o BREW, há pouca diferença entre o comportamento do aplicativo no BREW Emulator, baseado no Windows, e em um dispositivo real. 2.3.2.7. DLLs Win-OEM As DLLs Win-OEM provêem as camadas básicas necessárias para se emular o comportamento de um dispositivo em uma plataforma Windows. 2.3.2.8. Arquivos de Cabeçalho do BREW Os arquivos de cabeçalho do BREW contêm as definições de interfaces do BREW, sendo usados para o desenvolvimento de applets. Cada interface do BREW tem um arquivo de cabeçalho associado, e cada applet tem de conter o arquivo de cabeçalho de cada interface utilizada por esse applet. 16 2.3.2.9. Suplementos do Visual Studio Suplementos (“add-ins”) gratuitos do Microsoft Visual Studio automatizam algumas das tarefas demoradas que um desenvolvedor precisa executar no Visual Studio para desenvolver aplicativos BREW. 2.3.2.10. Aplicativos de Exemplo DLLs de aplicativos de exemplo e seu código-fonte, fornecidos com o SDK, incluem as seguintes: • Calculadora • Agenda • Aplicativos de contagem de tempo (cronômetro, contagem regressiva, despertador) • Jogos • Bloco de notas • Reprodutor de arquivos MIDI-MP3 • Aplicativos de uso (destinados a ilustrar como as interfaces do BREW podem ser usadas) 2.3.2.11. Documentação Todo o conjunto de documentação do BREW pode ser acessado a partir do próprio ambiente de desenvolvimento do BREW. 2.3.3. Editor de Código O Microsoft Visual Studio, é um requisito de sistema que já precisa estar carregado no Computador antes de instalar o BREW SDK. Se instalar o SDK antes de ter instalado o Visual Studio, será necessário recarregar o SDK para que esses suplementos (“add-ins”) tornem-se efetivamente operacionais. O SDK inclui suplementos gratuitos que automatizam algumas das tarefas que um desenvolvedor precisa executar no Visual Studio para desenvolver aplicativos BREW. 2.3.3.1. Assistente de Aplicativos do BREW O assistente de aplicativos do BREW (BREW Application Wizard), subsequentemente referido como AppWizard, pode orientar o desenvolvedor pelas tarefas muitas vezes demoradas envolvidas na criação de um projeto de aplicativo BREW, inclusive a criação do espaço de trabalho de projeto (project workspace) do Windows. 17 O AppWizard gera automaticamente o espaço de trabalho do projeto e todos os arquivos que serão necessários para criar aplicativos BREW. Além de economizar tempo e esforço, os arquivos criados pelo AppWizard são altamente móveis. Pode-se mover o projeto de um local para outro do computador sem ter de alterar o arquivo de projeto ou os caminhos informados nas instruções INCLUDE do projeto. 2.3.3.2. Compilação ARM Automática Após testar um aplicativo BREW no Emulator e estiver pronto para portá-lo para um dispositivo real, será necessário a criação de um arquivo de geração (makefile, MAK) que gera o aplicativo BREW para o dispositivo real, usando o compilador ARM (Advanced RISC Machines). Geralmente, o arquivo de geração é usado a partir da linha de comando, para realizar operações de geração e geração limpa (build clean). O suplemento de compilação ARM automática permite realizar essas tarefas demoradas rapidamente, em questão de segundos. Além disso, o suplemento automatiza a tarefa de localizar e corrigir erros durante a compilação. 2.4. Metodologia de Implementação 2.4.1. Criação de Novos Aplicativos A maneira mais simples e rápida de criar novos aplicativos é com o assistente de aplicativos do BREW (BREW Application Wizard). O AppWizard guia através do processo de criação de todos os componentes exigidos para o desenvolvimento bem-sucedido de um aplicativo BREW. 2.4.2. Codificação do Sistema Para a codificação do sistema, dentro do Visual C++, cria-se um novo arquivo “c++ source file”, onde será digitado todo o código-fonte da aplicação, a Listagem 1 possui o código de um programa simples, apenas para exibição do tradicional “Hello World”. /*=========================================================== INCLUDES AND VARIABLE DEFINITIONS ==========================================================*/ #include "AEEAppGen.h" // Applet interface definitions #include "helloworld.bid" // applet class ID 18 /*----------------------------------------------------------Function Prototypes ----------------------------------------------------------*/ static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam); /*=========================================================== FUNCTION DEFINITIONS ==========================================================*/ int AEEClsCreateInstance(AEECLSID ClsId, IShell * pIShell, IModule * po, void ** ppObj) { *ppObj = NULL; if(ClsId == AEECLSID_HELLOWORLD){ if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell,po,(IApplet**) ppObj, (AEEHANDLER)HelloWorld_HandleEvent,NULL) == TRUE) { return (AEE_SUCCESS); } } return (EFAILED); } static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam) { AECHAR szBuf[] = {'H','e','l','l','o',' ', 'W','o', 'r', 'l', 'd', '\0'}; AEEApplet * pMe = (AEEApplet*)pi; switch (eCode) { case EVT_APP_START: // Display string on screen IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, 0, 0, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE); IDISPLAY_Update (pMe->m_pIDisplay); return(TRUE); case EVT_APP_STOP: return TRUE; default: break; 19 } return FALSE; } Listagem 1. Código-fonte Após a codificação do programa, resta fazer a compilação, que pode ser utilizada a do próprio Visual C++. Com a compilação, será gerado a DLL do applet helloworld. Agora, é necessário criar o arquivo MIF para que seja possível executar o aplicativo no emulador. 2.4.3. Classes do BREW e MIFs Cada módulo do BREW contém uma ou mais classes do BREW. Essas classes podem ser applet ou não-applet, sendo identificadas por IDs de classe (ClassIDs). As classes de applet podem ser executadas pelo usuário do dispositivo, ao passo que as classes não-applet podem implementar serviços usados pelas classes de applet do módulo. Esses serviços também são disponibilizados para classes de outros módulos. O MIF contém IDs de classe exclusivas para cada uma das classes do módulo e especifica quais classes são exportadas, para uso por outros módulos. Para cada classe de applet, o MIF contém uma string de texto e um ou mais ícones gráficos que são usados para exibir o applet no menu de applets disponíveis para execução. O MIF contém outras informações que determinam o nível de privilégios do módulo (as funções da API do BREW que podem ser chamadas pelas classes do módulo) e as notificações que o módulo pode receber de outras classes do BREW. Em um dispositivo habilitado para o BREW, os MIFs são armazenados em uma pasta que contém um diretório para cada módulo. O nome do diretório do módulo corresponde ao prefixo do nome do MIF. Por exemplo, os arquivos de um módulo cujo MIF se chame app.mif seriam armazenados em um diretório de nome app. Quando o applet é executado no Emulator, cada módulo pode ter diversos MIFs, um para cada profundidade de cores do dispositivo sendo emulada. Como os MIFs contêm elementos gráficos, é possível selecionar imagens feitas sob medida para as capacidades da tela de cada tipo de dispositivo e armazená-las em MIFs separados. O Emulator permite que o diretório de MIFs seja selecionado de forma independente em relação ao diretório que contém os módulos executáveis, o que facilita emular a execução de um applet em diversos dispositivos. 20 Figura 2. O MIF no BREW SDK A Figura 2 mostra o relacionamento entre o MIF Editor e as outras ferramentas do BREW SDK. Ela ilustra como um módulo do BREW, de nome app, é emulado em um dispositivo definido pelo arquivo de configuração dev.qsc. Para criar um MIF para o módulo BREW, é necessário em primeiro lugar obter um arquivo BID (BREW Class ID) para cada classe e applet que o módulo contém. Pode-se obter IDs de classes no site da Web do BREW. Cada arquivo BID contém uma ID de classe de 32 bits única e atribui a ela um nome (por exemplo, AEECLSID_APP). As IDs de classe são armazenadas no MIF e os arquivos BID são incluídos no arquivo-fonte do módulo (por exemplo, app.c). Isto permite que o módulo crie uma instância de qualquer uma de suas classes, dada uma ID de classe fornecida pelo AEE do BREW (Figura 3). É possível criar múltiplos MIFs, com imagens para telas de dispositivos diferentes. O código-fonte do módulo é compilado e ligado para produzir o executável do módulo, isto é, app.dll para o Emulator e app.mod para o dispositivo de destino. Figura 3. BREW MIF Editor 21 2.4.4. Execução do Aplicativo no Emulador Quando o Emulator é executado, ele abre a imagem do dispositivo definido no arquivo de configurações do dispositivo (.qsc). O Emulator pesquisa o diretório de MIFs especificado e mostra uma lista de todos os applets com MIFs desse diretório. Os MIFs contêm ícones para cada applet. Quando seleciona-se um applet da lista, o Emulator carrega o DLL do applet e o executa, mostrando sua tela inicial na tela do dispositivo (Figura 4). É possível clicar nas teclas do dispositivo para fornecer entrada ao applet e observar seu comportamento, inclusive sua saída na tela do dispositivo. Figura 4. BREW Emulator 2.4.5. Transferência do Aplicativo para o Celular Quando o aplicativo estiver pronto para ser portado para um dispositivo real, é necessário criar um arquivo de geração (makefile) que gera o aplicativo BREW para o dispositivo real, usando o compilador ARM. Geralmente, o arquivo de geração é usado a partir da linha de comando, para realizar operações de geração e geração limpa (build clean). O suplemento de compilação ARM automática permite realizar essas tarefas demoradas rapidamente, em questão de segundos. Para criar um arquivo de geração (makefile) para o aplicativo 22 1. Carregar o aplicativo no espaço de trabalho do Visual Studio. 2. Clicar no botão Generate ARM Makefile da barra de ferramentas para criar o arquivo de geração. Abre-se uma caixa de mensagem, que informa que o arquivo de geração foi criado. Para compilar um aplicativo usando o arquivo de geração Selecionar Tools > ARM make. A janela de saída é aberta e mostra os arquivos criados pela compilação. Figura 5. Conteúdo da pasta da aplicação Hello World A Figura 5, demonstra os arquivos que são criados após todo o processo de geração da aplicação. 23 3. SYMBIAN O Symbian OS é um sistema operacional projetado especificamente para o ambiente móvel, preenchendo os requisitos dos aparelhos das gerações 2.5 e 3 de celulares. Ele é composto por uma kernel multi-tarefa, suporte integrado à telefonia, protocolos de comunicação, gerenciamento de dados, suporte a gráficos avançados, interface com o usuário de baixo nível e uma variedade de algoritmos para aplicações. Esse sistema operacional é muito utilizado em aparelhos mais poderosos, os chamados smartphones e communicators (IIDA, 2005). Para o desenvolvedor o Symbian OS fornece um completo e aberto framework de desenvolvimento, utilizando a linguagem C++, que possibilita o desenvolvimento de aplicativos utilizando-se de recursos do aparelho como câmera, telefonia, etc. O Symbian OS, é formado por um consórcio de empresas, desenvolvida a partir da Psion Software, a princípio pelas empresas Nokia, Motorola, Psion, Ericsson, Panasonic e Siemens. 3.1. Arquitetura do Symbian OS A Figura 6, demonstra como é formada a arquitetura do Symbian. Figura 6. Arquitetura do Symbian OS (BORGES, 2005) Base (núcleo do sistema operacional) • User library, File server, Kernel, Device driver 24 Telefonia • GSM, GPRS (General Packet Radio Service), HSCSD (High-Speed CircuitSwitched Data), EDGE (Enhanced Data rates for GSM Evolution) e CDMA (Code Division Multiple Access) Segurança • Criptografia, gerenciador de certificado, instalação de software Comunicação • TCP (Transmission Control Protocol), dual Ipv4 e v4, UDP(User Datagram Protocol), HTTP, FTP(File Transfer Protocol), WAP Multimídia • Imagens, sons e graficos (3D e 2D) Personal Área Network • Bluetooth, infravermelho, USB (Universal Serial Bus) Application Framework • Framework de interface gráfica com o usuário e utilitários de textos e gráficos Mensagem • SMS, EMS (Enhanced Messaging Service), MMS (Multimedia Message Service), email e fax Application engines • Contatos, agenda, office, syncML, gerenciamento de dados e browsing 3.2. Recursos 3.2.1. Principais Funcionalidades O Symbian OS é a base da próxima geração de celulares. Ele possui um conjunto de APIs e tecnologia que são compartilhados por todos os telefones que possuem o Symbian OS. As principais funcionalidades do Symbian OS, são: • Rico conjunto de “application engines”: Contatos, calendário, mensagem, navegação entre outros utilitários; • Navegação Web; • Mensagem: Mensagem multimídia, mensagem com figuras, mensagem de texto, email usando POP3 (Post Office Protocol version 3), IMAP4 (Internet Message Access Protocol), SMTP (Simple Mail Transfer Protocol), MHTML(MIME Hypertext Transfer Protocol) e fax; 25 • Multimídia: Fontes, imagens, gravação e reprodução de áudio (suporte para todos os formatos padrões de som e imagem); • Protocolos de Comunicação: TCP, IPv4, IPv6, WAP incluindo infravermelho, Bluetooth e USB; • Suporte a localidade internacional: caracteres unicode nativo, framework de entrada de texto flexível; • Sincronização de dados: pelo ar (OTA – over the air) suporta sincronização usando SyncML DataSync. O PC connectivity toolkit, suporta link serial, infravermelho, Bluetooth e USB; • Segurança: HTTPS (Hypertext Transfer Protocol Scheme), WTLS(Wireless Transport Layer Security) e SSL(Secure Socket Layer); 3.2.2. Framework Este framework possibilita o desenvolvimento de aplicações genéricas, que funcionem em diferentes tipos de telefones, independente das diferentes implementações da interface com o usuário utilizada pelos fabricantes licenciados. Suas principais características são: • Executar aplicações com processos separados (multi-tarefas); • Associar um documento de uma aplicação com o ícone da aplicação; • Reconhecimento de tipos de arquivos (MIME-TYPE); • Plug-in que podem ser adicionados ou removidos pelo usuário; • Provê um mecanismo genérico de tratamento de erro; • Agendamento de tarefa. 3.2.3. Infraestrutura de Comunicação • TCP; • UDP; • PPP (Point to Point Protocol); • DNS (Domain Name System); • FTP; • HTTP 1.1; • Bluetooth; • Infravermelho; • USB. 26 3.2.4. Telefonia O Symbian suporta alguns tipos de rede de telefonia incluindo GSM, GPRS, EDGE, CDMA (IS-95) e 3GPP2 cdma2000 1x. A API responsável pelo tratamento destas redes de telefonia provê algumas funcionalidades comuns para todas as redes, como por exemplo: • Informações do Celular e da Rede: recuperar a força do sinal e o nível de carga da bateria, acesso ao nome e outras informa da rede detectada pelo telefone; Existem também, várias funcionalidades que estão disponíveis para cada tipo de rede em particular. 3.3. Conhecimentos Necessários Para se desenvolver aplicativos para celular utilizando a tecnologia Symbian, é necessário possuir alguns conhecimentos prévios, conforme segue: • Conhecer e possuir experiência com C++; o OO (Orientação a Objeto) o Templates o Namespaces o Macros (ANSI C) o Sobrecarga de operadores (new) • Multithreading/ClientServer programming • Design Patterns, principalmente o MVC (Model View Controller) e o Adapter (GoF) • Memory Management e Optimization Techniques 3.4. Ambiente de Desenvolvimento Geralmente os próprios fabricantes fornecem kits de desenvolvimento. A utilização de um IDE (Integrated Development Environment) facilita o desenvolvimento principalmente em fase de debug. Os principais IDEs que se integram aos kits de desenvolvimento do Serie 60 juntamente com suas vantagens e desvantagens estão detalhadas na tabela 1. IDE Microsoft Visual C++ 6 Vantagens Rápida; compilação e debug eficiente; algumas ferramentas para symbian os disponíveis Rápida; moderna e boa IDE Microsoft Visual Studio .net Metrowerks Code Warrior Symbian OS está Desvantagens Antiga; sem suporte real para o desenvolvimento de código Symbian OS Sem suporte direto pelo Symbian OS SDK; Não muito barata; IDE 27 Borland C++ BuilderX Móbile Edition Eclipse Tabela 1 parcialmente integrado Suporte visual para desenho dos menus e dialogos; Associa algumas funcionalidados do Symbian OS; atualmente é free IDE muito boa; free complicada Lenta; desajeitada Sem suporte a debug; não é completamente integrada ao Symbian OS Comparação dos IDEs disponíveis para Symbian Além da IDE, é necessário a instalação do SDK, no fórum nokia (NOKIA, 2004a) pode ser feito o download do Series 60 SDK 1.2 for Symbian OS, juntamente com este SDK, são instalados: • Java 2 Runtime Enviroment (JRE) • Ambiente Perl (Perl Environment) 3.5. Metodologia de Implementação Um projeto de desenvolvimento em Symbian é composto por vários arquivos, além dos arquivos com o código fonte. Os principais arquivos são bld.inf e .mmp. Resumidamente, eles são usados para direcionar a compilação, de forma similar ao makefile encontrado nos sistemas operacionais UNIX. Existem outros arquivos que são muito importantes para o desenvolvimento de interfaces gráficas. 3.5.1. Codificação do Sistema Para a codificação do sistema, dentro do Visual C++, cria-se um novo arquivo “c++ source file”, onde será digitado todo o código-fonte da aplicação, a Listagem 2 possui o código de um programa simples, apenas para exibição do tradicional “Hello World”. //hellotext.cpp #include <e32base.h> #include <e32cons.h> LOCAL_D CconsoleBase* gConsole //Função Main – Arqui se encontra a lógica do programa. void MainL() { gConsole->Printf(_LIT(“Hello World\n”)); } //Controle do Console void ConsoleMainL() { //cria um console 28 gConsole = Console::New(_LIT(“Hello Text”), Tsize(KconsFullScreen, KconsFullScreen)); CleanupStack::PushL(gConsole); //Chama a função Main MainL(); //Pausa a aplicação User::After(5000000); //Tira o console da Cleanup Stack e destrói CleanupStack::PopAndDestroy(gConsole); } //Controle da Cleanup stack GLDEF_C Tint E32Main() { __UHEAP_MARK; CtrapCleanup* cleanupStack = CtrapCleanup::New(); TRAPD(error, ConsoleMainL()); __ASSERT_ALWAYS(¡error, User::Panic(_L(“SCMP”), error)); delete cleanupStack; __UHEAP_MARKEND; return 0; } Listagem 2. Conteúdo do código-fonte (hellotext.cpp) 3.5.2. Definição de Componentes O bld.inf é um descritor de componentes (Listagem 3). Basicamente, ele indica para o ambiente de desenvolvimento como criar o script de compilação (por exemplo, quais especificações de projeto devem ser usadas para criar os arquivos na construção da aplicação desejada). //BLD.inf PROJ_MMPFILES Hellotext.mmp Listagem 3. Conteúdo do arquivo bld.inf 3.5.3. Especificação do Projeto O arquivo de especificações de projeto (.mmp) define as propriedades dos componentes de projeto de uma forma independente de plataforma e compilador (Listagem 4). Junto com o bld.inf, é usado pelo ambiente de desenvolvimento para criar o script de compilação da sua aplicação. //hellotext.mmp 29 TARGET HelloText.exe TARGETTYPE exe UID 0 // O codigo fonte SOURCEPATH . SOURCE helloptext.cpp USERINCLUDE . SYSTEMINCLUDE /epoc32/include // As bibliotecas LIBRARY euser.lib Listagem 4. Conteúdo do arquivo hellotext.mmp 3.5.4. Tipos de Aplicação O Symbian OS define algumas formas diferentes de compilação dos códigos-fontes. Estes são ligeiramente diferentes dos encontrados no C++ para aplicações desktop. Os mais usados são: • EXE (.exe): um programa com um único ponto de entrada E32Main(). A interface com o usuário é limitada a uma janela de console (algo similar ao DOS). Um detalhe deste tipo de aplicação é que não aparece no menu do celular, sendo necessária outra aplicação para inicia-la. • Dinamic Link Library (.dll): uma biblioteca de códigos com vários pontos de entrada. DLL’s são carregadas por outros programas. • Application (.app): programas com uma interface gráfica com o usuário. Esta aplicação instala um ícone no menu do celular, podendo ser iniciada diretamente. Este tipo aplicação é definido no arquivo de Especificação do projeto no item TARGETTYPE. 3.5.5. Compilação do Projeto Para compilar e gerar um executável serão necessários os três arquivos mostrados anteriormente, situados no mesmo diretório (Figura 7). Todos os comandos mostrados abaixo devem ser executados numa janela do DOS. 1. Gerar o arquivo abld.bat: Este arquivo contém as diretrizes para a compilação. Bldmake bldfiles 2. Construir o executável: Este comando gerará o arquivo Hellotext.exe dentro da pasta do symbian, para utilização pelo emulador (c:\symbian\series60_1_2_b/ epoc32/release/winsb/udeb/hellotext.exe). Abld build winsb udeb 30 3. Gerar arquivo de instalação: Este comando gera cria o arquivo hellotext.sis no mesmo diretório do código-fonte e que pode ser transferido para o celular e instalado. Makesis hellotext.pkg Figura 7. Hierarquia na compilação das fontes e recursos 3.5.6. Instalação do Aplicativo para o Celular Para instalar o aplicativo no celular é necessário primeiro gerar um executável compatível com o dispositivo real. Para isso, siga os seguintes passos: 1. Gerar o arquivo abld.bat: Este arquivo contém as diretrizes para a compilação. Bldmake bldfiles 2. Construir o executável: Este comando gerará o arquivo Hellotext.exe dentro da pasta do Symbian OS, para futura cópia no dispositivo real Abld build armib urel 3. Gerar arquivo de instalação: Este comando gera cria o arquivo hellotext.sis no mesmo diretório do código-fonte e que pode ser transferido para o celular e instalado. 31 Makesis hellotext.pkg 32 4. J2ME (JAVA 2 MICRO EDITION) A miniaturização dos dispositivos eletrônicos, o aumento do poder de processamento destes dispositivos aliado a necessidade do ser humano permanecer informado a qualquer hora e em qualquer lugar foi um dos motivos da grande popularização dos aparelhos celulares, hoje são mais de um bilhão de telefones celulares no mundo e esse número cresce a cada dia. Os aparelhos celulares mais modernos podem rodar aplicativos até então existente apenas em computadores e com certeza os usuários vão querer estes aplicativos, a questão é: quem irá desenvolvê-los? Vista esta grande oportunidade, gigantes da informática estão investindo cada vez mais nesta área, um exemplo é a Sun Microsystem que desenvolveu uma versão de sua plataforma de desenvolvimento, Java, exclusivamente para dispositivos móveis como celular, o nome dado foi J2ME. O Java se destaca de outras linguagens de programação, pois dispõe de recursos de Orientação a Objetos, permitindo desenvolver códigos portáveis, reusáveis e robusto. A plataforma de desenvolvimento Java possibilita desenvolver aplicativos para qualquer dispositivo, desde SmartCard’s, passando por celulares e computadores até grande servidores, desde que o mesmo disponha uma máquina virtual Java (JVM), este recurso possibilita que o mesmo programa rode em várias plataformas, garantindo com isso o que o Java considera sua principal vantagem, a WORA (Write Once, Run Anywhere) (SUN, 2002). Também não existem limitações em relação à operadora de telefonia celular ou à tecnologia adotada por ela. Existem telefones celulares com máquina virtual Java para quaisquer das tecnologias mais utilizadas atualmente (GSM/GPRS, CDMA/1.xRTT, TDMA etc). Para que o aplicativo possa ser executado no celular, não é necessária qualquer licença especial da operadora ou sequer a sua ciência. Hoje muitas empresas fabricantes de celulares vêem grandes vantagens e oportunidades na tecnologia Java, tanto que praticamente todos os modelos de celulares da Nokia fabricado hoje já dispõe da Maquina Virtual Java, para que possam ser instalados aplicativos desenvolvidos nesta plataforma. 33 4.1. Arquitetura do J2ME Figura 8. Plataformas de desenvolvimento Java (SUN, 2002) O J2ME é dividido entre Configurations, Profiles e APIs Opcionais (Figura 8). Essa divisão permite ao desenvolvedor conhecer informações específicas sobre as diferentes famílias de dispositivos e as APIs disponíveis para cada uma delas. 34 4.1.1. Configurations A Configuration define o mínimo que um desenvolvedor pode esperar do dispositivo, classificando-os por capacidade de memória e processamento. Especifica uma JVM que pode ser portada entre dispositivos e também determina um subconjunto das APIs da J2SE a serem utilizadas, além de outras APIs adicionais necessárias. Entre as configurações disponíveis destacam-se a CDC (Connected Device Configuration) e a CLDC (Connected, Limited Device Configuration). A especificação CDC é baseada na máquina virtual Java convencional, definindo um ambiente com um conjunto rico de recursos, semelhantes aos encontrados em um sistema desktop. Destina-se a dispositivos wireless de alta capacidade, set-top boxes de TVs a cabo, sistemas automotivos e outras plataformas que possuam pelo menos alguns megabytes de memória disponível. Principais características e restrições: • Implementação completa da JVM tradicional. • 512 KB (mínimo) de memória (ROM) para rodar Java. • 256 KB (mínimo) de memória (RAM). • Conectividade de rede, possivelmente persistente e de alta velocidade. • Processadores de 32 bits; • Mais de 2MB de memória total para o armazenamento da máquina virtual e bibliotecas de classe. • Interface com usuário com variado grau de sofisticação. A CLDC, por outro lado, consiste em uma máquina virtual reduzida (KVM) e um conjunto de classes mais apropriado para dispositivos pequenos e com limitações de desempenho e memória. Esta configuração é destinada para dispositivos wireless menores, possuindo geralmente entre 160Kb e 512 Kb disponíveis para Java. Principais características e restrições: • 128 KB (mínimo) de memória (ROM) para rodar Java. • 32 KB (mínimo) de memória (RAM). • Interface do usuário limitada. • Baixa potência de bateria. • Conectividade de rede, tipicamente sem fio, com baixas velocidades (9600bps ou menos) e acesso não-contínuo. • Processador de no mínimo 16 bits com baixo consumo (adequado a baterias típicas de um celular). 35 4.1.2. Profiles Os perfis são conjuntos de APIs que suplementam as Configurations, fornecendo funcionalidades para um determinado tipo de dispositivo ou mercado vertical. São mais específicos que as configurações, apesar de serem baseados nelas. Adicionam APIs para interface com o usuário, armazenamento persistente e outras auxiliares. O profile utilizado em celulares é a MIDP (Mobile Information Device Profile), com o Foundation Profile sendo utilizado em dispositivos de rede sem interface gráfica. As principais exigências da MIDP 1.0 são: • 128Kb de memória não-volátil para a implementação MIDP; • 32Kb de memória volátil para o heap de runtime; • 8Kb de memória não-volátil para persistência de dados; • Tela com pelo menos 96 x 54 pixels; • Algum tipo de entrada de dados. No quesito de segurança, o MIDP 1.0 é semelhante às applets, com o conceito de uma sandbox, onde o programa Java é mantido seguro, sem acesso ao ambiente externo. No MIDP 2.0, as aplicações possuem um tratamento de segurança baseado em permissões semelhantes à J2SE. 4.1.3. APIs Ocionais As APIs opcionais são funcionalidades adicionais específicas que não serão encontradas em todos os dispositivos de uma determinada configuração ou perfil, mas importantes o suficiente para serem padronizadas. Segue abaixo alguns exemplos de apis opcionais: • Mobile Media API (JSR-135) • Personal Profile (JSR-46) • FileConnection and PIM API (JSR-75) • Bluetooth API (JSR-82 No OBEX) • Wireless Messaging API (WMA); JSR 120, JSR 205 • Mobile Media API (MMAPI); JSR 135 4.2. Recursos e Limitações Existentes 4.2.1. Configurações (CLDC) O CLDC possui atualmente duas versões, sendo elas: CLDC 1.0 e CLDC1.1 36 4.2.2. CLDC 1.0 Restrições de Hardware: • 128 KB para executar a JVM e as bibliotecas CLDC (memória não-volátil). • 32 KB para executar a aplicação Java (memória volátil). Restrições de Software: • Sistema Operacional deve ser capaz de executar a JVM e gerenciar a aplicação Java (“load and remove”). • A linguagem Java utilizada nos dispositivos CLDC difere em alguns aspectos da especificação oficial. • Sem suporte a finalização (Object.finalize()); • Suporte limitado a erros. Apenas três classes de erros são utilizadas: • o java.lang.Error o java.lang.OutOfMemoryError o java.lang.VirtualMachineError. Não há suporte a JNI (Java Native Interface), por questões de segurança e performance; • Não há suporte para ClassLoaders personalizados. O ClassLoader da implementação é final, não havendo sobrecarga para especializações; • Não há suporte para reflexão (reflection) por questões de performance. E por conseqüência não há suporte para serialização de Objetos; • Não há suporte para Daemon Thread e ThreadLocal. Apesar de suportar multithreading (limitado), os sistemas devem simular estas funcionalidades não suportadas; • Não há suporte para referências fracas (Weak References). 4.2.3. CLDC 1.1 Melhorias • Suporte a dados do tipo real (float); • Implementação das classes Float e Double; • Melhorias no tratamento de erros; • Maior compatibilidade nas classes Date, TimeZone e Calendar; 37 4.2.4. Perfis O MIDP também possui atualmente duas versões, sendo elas: MIDP 1.0 e MIDP 2.0. Características • Disponibiliza um conjunto de classes e interfaces para representar os elementos gráficos; • Armazenamento de dados persistentes; • Conexão de rede baseado no HTTP 1.1 utilizando-se o CLDC CGF (Connection Generic Framework). • Recursos aprimorados para implementação de jogos (somente na versão 2.0) • Controle de Imagem e Som (somente na versão 2.0) Restrições de hardware • A tela deve suportar a resolução mínima de 96 x 54 pixels; • Deve existir pelo menos um tipo de entrada disponível; • 128 KB para executar os componentes MID (memória não-volátil); • 32 KB para executar a aplicação Java (memória volátil); • Pelo menos 8 KB para armazenar dados persistentes da aplicação Java; • Conectividade com redes sem fio. Restrições de software • Sistema Operacional (S.O) deve rodar a JVM com suporte a tratamento de exceção, escalonamento e interrupção de processos; • S.O. deve oferecer suporte a escrita de gráficos bitmap na tela; • S.O. deve aceitar a entrada de dados e redirecioná-la para a JVM. Ciclo de vida O Application Manager (AM) de cada dispositivo é quem vai controlar os aplicativos a serem instalados, onde e como serão armazenados e como serão executados. Assim que a MIDlet é invocada, o AM invoca o método startApp(), o qual coloca a MIDlet no estado Active. Enquanto ela estiver executando o AM pode pausar ela invocando o método pauseApp() no caso de uma chamada sendo recebida, ou SMS chegando. A aplicação pode pausar a si mesma, bastando invocar notifyPaused(). Assim como a AM pode pausar a aplicação e esta a si mesma, ocorre o mesmo com o DestroyApp() que é invocado pela AM para fechar a aplicação ou até mesmo pode ser fechada através da própria aplicação invocando o notifyDestroyed(). 38 Paused • Inicializado e esperando Active • Possui recursos e está executando Destroyed • Liberou todos os recursos • Destruiu todas as threads • Finalizou as atividades Figura 9. Ciclo de Vida do MIDlet A Figura 9, ilustra a comunicação entre três estados do ciclo de vida do MIDlet. 4.3. Conhecimentos Necessários Para se desenvolver aplicativos para celular utilizando a tecnologia J2ME, é necessário conhecimento prévio da tecnologia Java, ter um conhecimento bom da Orientação a Objetos dentro da plataforma e um conhecimento prévio das principais classes existentes no Java. Conhecimentos sobre a interface gráfica do Java (principalmente AWT) podem ajudar bastante no momento de desenvolver o layout do programa. 4.4. Ambiente de Desenvolvimento 4.4.1. O JDK O JDK é o Kit de Desenvolvimento Java do J2SE (Standard Edition), utilizada na maioria das vezes para o desenvolvimento desktop, porém para todo o desenvolvimento de aplicações Java é necessário instalar essa ferramenta. É possível baixar a ultima versão do JDK no site da sun (SUN, 2005b), embora para desenvolver programas para celular exista o 39 J2ME que possuí a API MIDlet e uma grande quantidade de classes utilizadas neste tipo desenvolvimento, é necessário instalar também o JDK que disponibiliza classes e recursos essenciais da própria tecnologia Java, como tratamento de datas, classes de I/O entre outros recursos básicos para qualquer desenvolvimento. Também é aconselhável baixar a documentação do J2SE, pois pode ser muito útil para posteriores consultas. A documentação tem aproximadamente 33 MB e está disponível para download no mesmo link do SDK, mostrado anteriormente. A documentação está num arquivo compactado, é necessário descompactar preferencialmente na pasta onde será instalado o SDK. O SDK possui aproximadamente 50 MB, é necessário baixar o arquivo executável e em seguida se faz o processo de instalação padrão do Windows, a instalação é muito fácil, segue passo a passo a instalação sem precisar nenhuma configuração adicional. 4.4.2. Ferramenta de Desenvolvimento para Celular WTK O WTK (Wireless ToolKit) é fornecida pela Sun para o desenvolvimento de aplicativos para celular J2ME. Ele dispõe de compilador e emulador do aparelho celular, nele é possível configurar a velocidade da CPU do aparelho e o fluxo de rede, para que a emulação seja a mais próxima possível do real, já que computadores possuem muito mais memória e Processador e nem sempre o desenvolvedor dispõe do aparelho celular para instalar e testar o aplicativo. Para conseguir a instalação do WTK basta acessar o site da Sun (SUN, 2005c) e fazer o download da ferramenta. Essa ferramenta não ocupa mais que 10MB. A instalação do WTK também instala a documentação do J2ME, muito útil para aprender ou consultar classes disponíveis no Micro Edition. Ele é padrão Javadoc, ou seja, no mesmo formato da documentação J2SE, instalado anteriormente. O processo de instalação do WTK também é muito simples, sem a necessidade de configurações adicionais. 4.4.3. Editor de Código A escolha de um bom editor de código pode facilitar muito o trabalho de codificação, um dos editores mais difundidos entre usuários que estão aprendendo a tecnologia Java a é o Gel, pela sua facilidade de trabalho e alguns recursos um pouco mais avançados, que facilita muito a codificação. O Gel é uma IDE de desenvolvimento feito para Windows, logo se for necessário utilizar uma plataforma livre para o desenvolvimento, como o Linux, será necessário optar por editores como o Eclipse ou NetBeans. 40 O processo de instalação do Gel é simples, porém após a instalação é necessário fazer a configuração da IDE, para que ela possa trabalhar com o SDK. 4.5. Metodologia de Implementação 4.5.1. Criação de um Projeto Para acessar o programa WTK utiliza-se o atalho chamado KToolBar que se encontra no menu de programas. Em seguida, para criar o projeto, clica-se no botão New Project... e preenche-se os campos com o nome do seu projeto e o nome da classe principal do projeto. Para efetivar a criação do projeto, é necessário clicar em Create Project. A tela que aparece em seguida é utilizada para informar informações detalhadas do projeto, estas informações ficam disponíveis no arquivo.JAD (frisando que um programa para celular se divide em dois arquivos, o .JAR que possui o programa e o arquivo .JAD que possui diversas informações sobre o projeto), não é interessante alterar essas propriedades, a não ser que seja realmente necessário, como colocar um ícone personalizado ou trocar a versão da MIDP. Após a confirmação no OK, o projeto será criado. Automaticamente é incluído um diretório dentro da pasta app, que se encontra no diretório do WTK, nesta pasta com o nome do projeto ficará localizado todos os recursos do aplicativo, conforme Figura 10 e Figura 11: Figura 10. Tela do WTK após a criação do projeto HelloWorld 41 Figura 11. Estrutura de diretórios criada pelo WTK 4.5.2. Codificação do Sistema Para a codificação do sistema, dentro do editor de código Gel, cria-se um novo arquivo “Java File”, gravando no diretório src do projeto. É neste arquivo que será digitado todo o código-fonte da aplicação, a Listagem 5 possui o código de um programa simples, apenas para exibição do tradicional “Hello World”. import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class private private private HelloWorld extends MIDlet implements CommandListener { Display tela; TextBox areatexto; Command comando; public HelloWorld () { tela = Display.getDisplay(this); comando = new Command("Sair", Command.SCREEN, 1); areatexto = new TextBox("Alo Mundo","J2ME",50,0); areatexto.addCommand(comando); areatexto.setCommandListener(this); } public void startApp() { tela.setCurrent(areatexto); } public void pauseApp() { } public void destroyApp(boolean condicional) { } public void commandAction(Command c, Displayable d) { if (c == comando) { 42 destroyApp(false); notifyDestroyed(); } } } Listagem 5. Conteúdo do arquivo fonte .Java Após a codificação do programa, resta fazer a compilação, apesar de existir o recurso de compilação no Gel os arquivos .class serão gerados na pasta src junto com o código fonte, porém eles devem ser gerados na pasta classes. Para agilizar este processo a melhor alternativa é compilar o programa pelo WTK, clicando no botão Build, se existir erros de compilação, será apresentado na própria console do WTK, então é só voltar para o Gel, corrigir o erro, salvar, voltar para o WTK e voltar a pressionar o botão Build, até que a mensagem Build Complete apareça. 4.5.3. Execução do Aplicativo no Emulador O WTK dispõe do recurso para emular o aplicativo desenvolvido na tela do celular, porém existem poucos modelos de aparelhos, modelos adicionais podem ser conseguidos no site da empresa fabricante dos celulares, mesmo assim com os modelos básicos que vem junto com o WTK já é possível ter uma idéia de como o software irá se comportar. Para rodar o aplicativo clica no botão Run. Aparecerá a tela de menu do celular para escolher o aplicativo, escolha a opção Launch e pronto, seu aplicativo já aparece no emulador, como na Figuras 12. Como o poder de processamento do celular bem como sua conexão com a rede é bem menor de que qualquer computador, a redução destas velocidades pode ser feita através da opção Edit – Preferences... 43 Figura 12. Emulador default do WTK 44 4.5.4. Transferência do Aplicativo para o Celular Esse processo depende muito do aparelho onde o software vai ser instalado, tem aparelhos em que é possível passar o aplicativo apenas através de Web, para fazer isso é necessário disponibilizar os arquivos .jad e .jar (Figura 13) em um servidor Web, e digita o endereço no celular junto com o nome do arquivo .jad (Listagem 6), outra forma é passar o programa via cabo, quando o aparelho dispõe deste recurso a grande vantagem é que não se paga nada para fazer a transmissão, a desvantagem é que o cabo costuma ser vendido separadamente, além de ter um custo relativamente elevado e não é fácil encontrar estes cabos a pronta entrega. MIDlet-1: HelloWorld, , HelloWorld MIDlet-Jar-Size: 1174 MIDlet-Jar-URL: HelloWorld.jar MIDlet-Name: HelloWorld MIDlet-Vendor: Arthon MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 Listagem 6. Conteúdo do arquivo descritivo .JAD Figura 13. Arquivos que devem ser copiados para o celular 45 5. PRODUTOS DISPONÍVEIS NO MERCADO Em estudo de mercado realizado em cada uma das operadoras de telefonia celular que atuam no estado de São Paulo, sendo elas a Claro (CLARO, 2005), Vivo (VIVO, 2005) e TIM (TIM, 2005), foi possível constatar que as operadoras Claro ( Figura 14) e TIM (Figura 15), que utilizam a mesma tecnologia (GSM) em média, 60% de todos os modelos comercializados, possuem a tecnologia J2ME, todos os modelos lançados no ano de 2005, possuem esta tecnologia. Quanto à tecnologia Symbian, nestas duas operadoras, não existem muitos modelos, alcançando um pequeno percentual de 5%, nestas duas operadoras, não existe nenhum aparelho com a tecnologia Brew Na operadora Vivo (VIVO, 2005), que utiliza a tecnologia CDMA, o cenário é bem diferente, com exceção dos modelos da Nokia, todos os outros modelos possuem apenas a tecnologia Brew, marcando uma pontuação de 42%, não possuindo nenhum modelo com a tecnologia Symbian (Figura 16). 16 14 12 10 8 6 4 2 0 Gradiente LG Motorola Nokia Samsung Siemens Modelos Disponíveis Modelos com J2ME Modelos com Symbian Modelos com Brew Figura 14. Comparação dos Modelos da Claro Sony Ericsson 46 35 30 25 20 15 10 5 0 Gradiente LG Modelos Disponíveis Motorola Nokia Modelos com J2ME Samsung Siemens Modelos com Symbian Sony Ericsson Modelos com Brew Figura 15. Comparação dos Modelos da Tim 16 14 12 10 8 6 4 2 0 Kyocera Modelos Disponíveis LG Motorola Modelos com J2ME Nokia Modelos com Symbian Figura 16. Comparação dos Modelos da Vivo Samsung Modelos com Brew 47 5.1. Tecnologias Disponíveis no Mercado Considerando todas as operadoras do estado de São Paulo, separando as tecnologias que cada modelo comercializado possui, obtemos o gráfico da Figura 17, onde a tecnologia predominante é o J2ME com 43%, seguida pelo Brew com 12% e por último com apenas 4% a tecnologia Symbian. 41% 43% 12% 4% Modelos com J2ME Modelos com Symbian Modelos com Brew Modelos sem Nenhuma Tecnologia Figura 17. Comparação das Tecnologias Disponíveis no Mercado 48 6. CONCLUSÃO Todas as conclusões referente a implementação, aprendizagem destas tecnologias podem ser retiradas da Figura 17, que demonstra a atuação delas no mercado. A tecnologia J2ME é a mais encontrada nos modelos comercializados e que apresentam os melhores custos-benefícios. Como conseqüência desta aceitação do mercado, é muito mais fácil encontrar documentação, inclusive em português, algo que nas outras tecnologias é praticamente impossível, outros quesitos deixaram o J2ME na frente são: • Facilidade de implementação, principalmente porque é idêntica à linguagem Java, e por possibilitar a geração dos ‘binários’ de forma prática e integrada no Kit de desenvolvimento wireless (WTK), que também é o principal responsável pela emulação dos aplicativos em celulares ‘virtuais’. • Ainda no WTK, é possível gerar os arquivos necessários para upload da aplicação para o celular, que pode ser feita via cabo, WAP ou infra-vermelho. • Devido ao grande número de documentação e livros em português, é muito mais fácil encarar o desafio de conhecer a tecnologia. Embora o J2ME possua vários pontos fortes, ele possui alguns pontos negativos, o principal deles é uma quantidade de recursos nativos levemente inferior às demais tecnologias, sendo necessário que cada fabricante de telefones celulares implementem seus próprios recursos. Quanto ao Brew, segunda tecnologia mais comercializada ele possui alguns recursos a mais que o J2ME, é difícil encontrar documentação na internet, porém a fornecida juntamente no SDK é bem completa, detalhada e dependendo da versão é disponibilizada em português, para o usuário as aplicações Brew são mais seguras pois todas são ‘autenticadas’ pela Qualcomm. Quanto aos problemas do Brew, o primeiro que podemos citar é a necessidade do desenvolvedor ser obrigado a pagar licenças para obter maiores detalhes da tecnologia e também para fazer o upload da aplicação para o Celular, mesmo que isto seja feito apenas para teste. Para implementar, seu SDK possui vários aplicativos que facilitam a geração do código, além das várias aplicações de exemplo que são fornecidas para melhorar o entendimento dos recursos da tecnologia. Quanto ao Symbian que é a tecnologia menos comercializada, não pode ter seus recursos comparados, pois ele é um sistema operacional completo e todas as aplicações rodam de forma nativa, permitindo compartilhamento total de todos estes recursos. O Symbian aparenta ser a tecnologia que o mercado necessita, porém ainda é necessário melhorar alguns pontos, principalmente no quesito facilidade de implementação, pois esta é 49 extremamente complicada, sendo necessária a criação de vários arquivos de controle dificultando a codificação das aplicações. Outro detalhe que desfavorece o Symbian é o emulador que parece que parou no tempo, pois ele é um pouco chato para se configurar, nunca se sabe o que ele realmente está emulando. Porém, embora existam todos estas complicações, a Nokia, principalmente empresa que mantém o Symbian, possui o site Forum Nokia (NOKIA, 2004a) onde se encontra um arsenal de documentos sobre a tecnologia, porém em português é praticamente impossível, os documentos encontrados em português, são geralmente introdutórios e não resolvem uma dúvida um pouco mais complexa. A Tabela 2 resume as principais diferenças entre as tecnologias estudadas. Características Linguagem de programação IDE integrada Complexidade de Implementação Facilidade de Emulação Facilidade de Download no Celular Quantidade de Documentação Disponível Quantidade de Documentação Disponível em Português Necessidade de Licença para Distribuir a Aplicação Execução nativa Suportado por várias Fabricantes Suporta Tecnologia GSM Suporta Tecnologia TDMA Suporta Tecnologia CDMA Mensagem (SMS, EMS e MMS) BREW C++ Sim Média Média Alta Média Symbian C++ Sim Baixa Média Média Média J2ME Java Sim Alta Alta Média Alta Baixa Baixa Alta Sim Não Não Não Sim Não Não Sim Sim, nativo Sim Sim Sim Sim Sim Sim, nativo Não Sim Sim Sim Sim Sim, depende do aparelho Email (POP3 e IMAP) Sim, nativo Sim, nativo Não Bluetooth, Infravermelho e USB Sim, nativo Sim, nativo Sim, depende do aparelho TCP-IP Não Sim Não FTP Não Sim Não HTTP Sim Sim Sim HTTPS Sim Sim Sim Criptografia Sim Sim Sim Imagem Sim Sim Sim Gráficos 2d Sim Sim Sim Gráficos 3d Sim Sim Sim, depende do aparelho Som Sim Sim Sim Banco de dados (persistência) Sim Sim Sim Acesso ao Calendário Sim Sim Sim, depende do aparelho Acesso à Agenda Sim Sim Não Tabela 2 Comparação entre Brew, Symbian e J2ME 50 7. REFERÊNCIAS BIBLIOGRÁFICAS IDGNow “IDGNow”. Online http://idgnow.uol.com.br, 06/Nov/2004 SYMBIAN “Symbian OS – the mobile operation system”. Online www.symbian.com, 24/No/2004 MOTOROLA “MOTOCODER Home”. Online http://www.motocoder.com/motorola/pcsHome.jsp, 24/Nov/2004 NOKIA “Forum Nokia - Developer Resources”. Online http://www.forum.nokia.com/main.html, 24/Nov/2004a NOKIA. “Java MIDP Application Developer’s Guide for Nokia Devices”. [S.I.], 2002 NOKIA. “Symbian OS: Getting Started with C++ Application Development”. [S.I.], 2003 QUALCOMM. “Manual do BREW MIF Editor”. San Diego, CA, 2002a QUALCOMM. “Manual do Usuário do BREW SDK”. San Diego, CA, 2002b QUALCOMM. “QUALCOMM BREW Home”. Online http://qualcomm/brew, 24/Nov/2004a. QUALCOMM. “Starting with BREW”. San Diego, CA, 2004b QUALCOMM. “QUALCOMM | Manufacturer”. Online http://brew.qualcomm.com/brew/en/manufacturer/oem.html, 13/Dez/2005. SUN “Java 2 Platform, Micro Edition (J2ME)”. Online http://java.sun.com/j2me, 24/Nov/2004. SUN “Introduction to Mobility Java Technology”. Online http://developers.sun.com/techtopics/mobility/getstart, 20/Jun/2003 SUN “What’s New in MIDP 2.0”. Online http://developers.sun.com/techtopics/mobility/midp/articles/midp20, 20/Jun/2005a SUN “J2SE Downloads”. Online http://java.sun.com/j2se/downloads/index.html, 20/Jun/2005b 51 SUN “J2ME Wireless Toolkit Download 2.2 Release”. Online http://java.sun.com/products/sjwtoolkit/download-2_2.html, 20/Jun/2005c SUN. “The Java platform for consumer and embedded devices”. Santa Clara, CA, 2002 CHRISTIANO PINHEIRO “iMasters – Java”. Online http://www.imasters.com.br/artigo.php?cn=1539&cc=19, 20/Jun/2005 MUCHOW, John W. “Core J2ME – Tecnologia e MIDP”. São Paulo, SP: Makron Books, 2004 DEITEL, H.m; DEITEL, P. J. “Java – Como Programar”. Porto Alegre, RS: Bookman, 2002 RUMBAUGH, James. “UML Guia do Usuário”. Rio de Janeiro, RJ: Campus, 2000 DEITEL, H. M. “C++ Como Programar”. Porto Alegre, RS: Bookman, 2001 BRITO, Robison Cris. “Desenvolvimento de Aplicativos para celular - Java 2 Micro Edition”. Centro Federal de Educação Tecnologia do Paraná, 2004 ? CLARO “Claro”. Online http://lojaonline.claro.com.br/, 30/Out/2005. TIM “Loja TIM”. Online http://www.lojatim.com.br/TIM/default.asp, 30/Out/2005. VIVO “Os melhores celulares e as principais marcas estão na Vivo”. Online http://www.vivo.com.br/portal/celulares.php, 30/Out/2005. IIDA, Renato Faria. “Desenvolvimento C++ para Symbian OS”. Web Móbile, Grajaú, RJ, n. 4, p. 16-24, ago. 2005. BORGES, Rosfran. “Introdução ao Desenvolvimento em Symbian”. Instituto Nokia de Tecnologia, 2005 MERY, David. “Symbian OS Version 7.0 – Functional description”. Symbian, 2003 SYMBIAN Symbian: Symbian OS phones”. Online http://www.symbian.com/phones/index.html, 01/Nov/2005