KATIA GOMES DA SILVA COMPARATIVO ENTRE AS PLATAFORMAS J2ME E .NET COMPACT FRAMEWOK PARA DESENVOLVIMENTO DE APLICAÇÕES PARA DISPOSITIVOS MÓVEIS Palmas – TO 2006 2 KATIA GOMES DA SILVA COMPARATIVO ENTRE AS PLATAFORMAS J2ME E .NET COMPACT FRAMEWOK PARA DESENVOLVIMENTO DE APLICAÇÕES PARA DISPOSITIVOS MÓVEIS “Trabalho de apresentado como requisito da disciplina Trabalho de Conclusão de Curso em Sistemas de Informação I e II do curso de Sistemas de Informação, orientado pelo Prof. M. Sc. Fernando Luiz de Oliveira”. Palmas – TO 2006 3 KATIA GOMES DA SILVA COMPARATIVO ENTRE AS PLATAFORMAS J2ME E .NET COMPACT FRAMEWOK PARA DESENVOLVIMENTO DE APLICAÇÕES PARA DISPOSITIVOS MÓVEIS “Trabalho apresentado como requisito da disciplina Trabalho de Conclusão de Curso em Sistemas de Informação I e II do curso de Sistemas de Informação, orientado pelo Prof. M. Sc. Fernando Luiz de Oliveira”. BANCA EXAMINADORA _____________________________________________ Prof. M. Sc. Fernando Luiz de Oliveira Centro Universitário Luterano de Palmas _____________________________________________ Profª. M. Sc. Madianita Bogo Centro Universitário Luterano de Palmas _____________________________________________ Prof. M. Sc. Ricardo Marx Costa Soares de Jesus Centro Universitário Luterano de Palmas Palmas - TO 2006 4 AGRADECIMENTO A Deus, que me acompanha em todos os momentos da minha vida, proporcionando-me força, paz e esperança. Aos meus pais, Benedito e Sonimar, que estiveram sempre ao meu lado, apoiando-me, incentivando-me nos meus estudos e formação intelectual e moral. Amo vocês. Ao meu irmão, Kássio, que me acompanhou e auxiliou-me nos momentos mais necessários. Ao Igor, pelo constante incentivo, pela paciência e carinho. Aos meus familiares, em especial, aos meus avós, Antônio (in memoriam) e Nice (in memoriam): fontes eternas de inspiração. Ao meu orientador, Prof. Fernando Luiz de Oliveira, pela atenção e dedicação no desenvolvimento deste trabalho. A todos os professores, que me fizeram enxergar o mundo da informação, conhecimento e tecnologia. Aos meus amigos e as SMAs, pela companhia, força, amizade, pelos momentos de alegria e tristeza. E a todos aqueles que, direta ou indiretamente, contribuíram para a realização deste trabalho. 5 SUMÁRIO 1. INTRODUÇÃO................................................................................................ 12 2. REVISÃO DA LITERATURA........................................................................... 14 2.1 Aplicações para dispositivos móveis ............................................................ 14 2.2 Tecnologia .NET........................................................................................... 16 2.2.1 .NET para programação para dispositivos móveis.................................. 16 2.2.2 .NET Compact Framework...................................................................... 17 2.3 Tecnologia Java ........................................................................................... 17 2.3.1 Linguagem Java...................................................................................... 19 2.3.2 API .......................................................................................................... 20 2.3.2 JVM......................................................................................................... 20 2.4 Tecnologia Java para programação para dispositivos móveis ..................... 21 2.4.1 J2ME....................................................................................................... 21 2.4.2 Perfil........................................................................................................ 22 2.4.3 Configuração........................................................................................... 24 2.4.4 APIs opcionais ........................................................................................ 28 2.4.5 Máquina virtual........................................................................................ 29 2.5 Web Services ............................................................................................... 29 2.5.1 A utilização de Web Services pela plataforma Java ............................... 30 2.5.2 A utilização de Web Services pela plataforma .NET............................... 31 2.5 Exemplificação da Integração das Tecnologias ........................................... 33 3. MATERIAIS E MÉTODOS .............................................................................. 42 3.1 Local e Período ............................................................................................ 42 3.2 Materiais....................................................................................................... 42 3.2.1 Hardware ................................................................................................ 42 3.2.2 Software.................................................................................................. 43 3.2.3 Fontes Bibliográficas............................................................................... 43 3.3 Metodologia.................................................................................................. 43 4. RESULTADOS E DISCUSSÕES.................................................................... 44 4.1 Arquitetura das plataformas .NET CF e J2ME ............................................. 44 4.2 Biblioteca de classe das plataformas .NET CF e J2ME ............................... 46 6 4.3 Processo de desenvolvimento de aplicações nas plataformas .NET CF e J2ME .................................................................................................................... 50 4.3.1 Ferramentas de desenvolvimento........................................................... 50 4.3.2 Ambiente de execução ........................................................................... 51 5. CONSIDERAÇÕES FINAIS ............................................................................ 56 7 LISTA DE FIGURAS Figura 1 - Arquitetura Java, modificada de (SUN, 2005a) ................................... 18 Figura 2 - Modelo de desenvolvimento em camadas da J2ME, modificada de (CARDOSO, 2005)............................................................................................... 22 Figura 3 – Elementos das APIs da configuração CLDC ...................................... 26 Figura 4 – Elementos das APIs da configuração CLDC ...................................... 27 Figura 5 – Elementos das APIs da configuração CLDC ...................................... 27 Figura 6 – Camadas de desenvolvimento de aplicações .NET e Java (OLIVEIRA, 2004) .................................................................................................................... 32 Figura 7 – Esquema navegacional ...................................................................... 33 Figura 8 - Tela da página inicial da aplicação...................................................... 34 Figura 9 – Código de implementação das funções do menu............................... 35 Figura 10 – Seqüência da consulta por número .................................................. 36 Figura 11 – Métodos do Web Service ................................................................. 37 Figura 12 – Janela para inserção do método consultarPorNumero..................... 38 Figura 13 – Resultado da execução do método consultarPorNumero ................ 39 Figura 14 – Código da classe de conexão com o Web Service........................... 40 Figura 15 - Código do método de consulta por número ...................................... 41 Figura 16 - Arquitetura J2ME usando a CLDC .................................................... 45 Figura 17 – Arquitetura da .NET Compact Framework........................................ 45 Figura 18 – Código do controle TextBox ............................................................. 47 Figura 19 – Código do controle TextField............................................................ 48 Figura 20 – Código dos KSOAP e KXML ............................................................ 48 Figura 21 – Código da classe Web Service......................................................... 49 Figura 22 - Ciclo de execução da aplicação .NET CF ......................................... 52 Figura 23 - Ciclo de execução da aplicação J2ME.............................................. 53 8 LISTA DE TABELAS Tabela 1 – Classes de Interface (MSDN, 2003 e SUN, 2004b) ........................... 46 Tabela 2 – Classes de Entrada e Saída (MSDN, 2003 e SUN, 2004b) ............... 49 Tabela 3 – Tabela de comparativo entre as plataformas .NET CF e J2ME ......... 54 9 LISTA DE ABREVIATURAS API = Interface Programming Applications CDC = Connected Device Configuration CLDC = Connected Limited Device Configuration CLR = Commom Language Runtime CLS = Common Language Specidication CVM = Compact Virtual Machine FP = Foundation Profile HTTP = Hyper Text Transfer Protocol IL = Intermediate Language J2EE = Java 2 Enterprise Editition J2ME = Java 2 Micro Edition J2SE = Java 2 Standard Edition JAR = Java Archive JAD = Java Application Descriptor JDK = Java Development Kit JVM = Java Virtual Machine JAXP = Java API for WML Processing JAXR = Java API for WML Registries JAX-RPC = Java API for XML Remote Procedure Call JIT = Just-In-Time JNI = Java Native Interface JWSDP = Java Web Service Develoment Pack KSOAP = K Simple Object Access Protocol KVM = Kilo Virtual Machine KXML = K Wireless Makup Language MIPD = Mobile Information Device Profile MMAPI = Mobile Media API MSIL = Microsoft Intermediate Language .NET CF = .NET Compact Framework PBP = Personal Basis Profile 10 PP = Personal Profile PDA = Personal Digital Assistants RPC = Remote Procedure Call SAAJ = SOAP with Attachments API for Java SMS = Short Message Service SOAP = Simple Object Access Protocol UDDI = Universal Description, Discovery, and Integration WAP = Wireless Application Protocol WMA = Wireless Messaging API WML = Wireless Makup Language WSDL = Web Services Description Language XML = Extensive Mark up Language 11 RESUMO Com o crescente mercado de dispositivos móveis, cresce também a competitividade entre as empresas que oferecem serviços para o desenvolvimento de aplicações móveis. Este trabalho apresenta um comparativo entre as plataformas .NET Compact Framework e J2ME para o desenvolvimento de aplicações para dispositivos móveis. O comparativo tem por base os estudos sobre as características gerais das duas plataformas, destas são abordados os recursos, serviços, suporte a Web Services, ferramentas de desenvolvimento, processamento e ainda, o desenvolvimento de um exemplo de aplicação J2ME. Palavras-chave: Dispositivos Móveis, Plataforma .NET Compact Framework, Plataforma J2ME. 12 1. INTRODUÇÃO Existem diversas tecnologias para desenvolvimento de aplicações para dispositivos móveis. Por ser assim, no momento da definição das tecnologias a serem utilizadas, deve-se analisar a plataforma de desenvolvimento, uma vez que existem diversas plataformas, baseadas em diferentes linguagens de programação e com uma variedade de ferramentas, que oferecem recursos que permitem integrar vários aplicativos, como: Java, com sua versão para dispositivos móveis a Java 2 Micro Edition (J2ME) e .NET, com a versão .NET Compact Framework (.NET CF). Deve-se levar em consideração critérios que permitam uma escolha da plataforma mais adequada ao tipo de aplicação a ser desenvolvida, por exemplo, característica do dispositivo utilizado, tamanho, facilidades, desempenho, custo e velocidade de desenvolvimento. Este trabalho estuda e analisa as plataforma .NET e Java no desenvolvimento de aplicações para dispositivos móveis. Isto implica em estudar as características de desenvolvimento de uma aplicação utilizando estas referidas plataformas. No entanto, parte deste trabalho refere-se ao trabalho de estágio realizado anteriormente em Silva (2006), que servirá para exemplificar o desenvolvimento de aplicações móveis na plataforma .NET. Para exemplificar o desenvolvimento de aplicações móveis usando o J2ME, será desenvolvida uma aplicação responsável por apresentar o resultado do vestibular do CEULP/ULBRA, localizado em um banco de dados remoto, o qual será acessado por meio de métodos de um Web Service que, por sua vez, é o mesmo utilizado no trabalho de Silva (2006), e que foi desenvolvido na plataforma .NET. Desta forma, será realizada a implementação de uma aplicação de armazenamento, busca e acesso a base de dados. 13 Após o estudo das plataformas .NET Compact Framewok e J2ME, este trabalho tem como objetivo realizar um comparativo entre elas no desenvolvimento de aplicações para dispositivos móveis, a fim de oferecer informações acerca de suas características, recursos, configurações, linguagens, classes, componentes, serviços, suporte a Web Services, facilidades e elementos de desenvolvimento, como: interface com o usuário, processamento, entre outras informações. Este trabalho está estruturado em capítulos, divididos da seguinte forma: o capítulo 2 apresenta uma visão geral sobre os dispositivos móveis, as plataformas .NET e Java utilizadas para o desenvolvimento de aplicações para dispositivos móveis, uma breve descrição de Web Services, assim como a utilização da plataforma J2ME e seus componentes no desenvolvimento de uma aplicação e os passos seguidos para seu desenvolvimento. O capítulo 3 apresenta os materiais e métodos utilizados para o desenvolvimento deste trabalho. Já o capítulo 4 apresenta um comparativo entra as plataformas .NET Compact Framework e J2ME no desenvolvimento de aplicações móveis. Em seguida, o capítulo 5 apresenta as considerações finais sobre o trabalho. Por fim, no capítulo 6 são apresentadas as referências bibliográficas utilizadas. 14 2. REVISÃO DA LITERATURA Para o desenvolvimento deste trabalho foram realizadas pesquisas e estudos sobre desenvolvimento de aplicações para dispositivos móveis, assim como uma breve descrição da tecnologia .NET para programação de aplicações para dispositivos móveis, tecnologia Java, plataforma J2ME, programação para dispositivos utilizando a plataforma J2ME e Web Services. Estes estudos foram necessários para que se realizasse um comparativo entre as plataformas .NET e Java no desenvolvimento de aplicações para dispositivos móveis, a fim de atender os objetivos deste trabalho. Esses estudos estão disponibilizados nas seções seguintes. 2.1 Aplicações para dispositivos móveis A necessidade que as pessoas passaram a ter em acessar informações e serviços a qualquer hora e em qualquer lugar fez surgir uma nova tecnologia, a computação móvel (HADDAD, 2002). A computação móvel permite ganhar mobilidade e teve um grande avanço tecnológico devido ao fato da evolução dos aparelhos celulares, que deixaram de ser um simples mecanismo de comunicação de voz, e passaram a ter um conjunto de funções pré-determinadas, atuando como assistentes pessoais. Os dispositivos móveis podem ser facilmente levados a qualquer lugar, tendo sido criados para atender usuários em movimento que necessitam de rapidez e segurança no acesso a informações, que integram funcionalidades como: agenda pessoal, envio/recebimento de dados, manipulação de arquivos de mídia, fotografias e execução de aplicativos. Assim, os usuários podem executar 15 programas que vão desde jogos, até aplicativos corporativos e pessoais, entre outras variedades, permitindo aos usuários customizar seus dispositivos com novos serviços e recursos. Estas operações são viáveis por meio de dispositivos móveis, que podem ser classificados como: • Celulares: são dispositivos de comunicação de voz e dados. Oferecem serviços de envio/recebimento de mensagem de dados e multimídia. Com o surgimento da tecnologia WAP (Wireless Application Protocol), ou protocolo para aplicações sem fio, permitiu a visualização de páginas da internet em dispositivos móveis (celulares) (WAP, 2004). • PDAs (Personal Digital Assistants): dispositivos que incorporam funções de um computador, porém, com processamento reduzido. Existem algumas funções como agenda pessoal, blocos de notas, gerenciador de contatos, acesso à internet, arquivos de mídia, gravador de voz, entre outros recursos. Na maioria dos casos não possuem teclados nem mouse e a entrada dos dados é feita através de uma caneta, chamada de stylus (MIRANDA, 2004). • SmartPhones: correspondem a um telefone celular que possui atributos dos PDA´s, como maior capacidade de memória e processamento, recursos de expansibilidades e facilidades de acesso à internet (MIRANDA, 2004). Estes dispositivos foram planejados para serem usados da mesma maneira que um celular, porém, com os recursos técnicos disponíveis em um PDA, reunindo a mobilidade do primeiro e a capacidade de processamento do segundo. • Pager: pequeno dispositivo móvel que permite enviar/receber sinais de aviso e mensagens, ou seja, um bipe eletrônico. Com a vasta utilização destes dispositivos, nota-se uma procura crescente para o desenvolvimento de aplicativos para dispositivos móveis, tanto para uso próprio, como para uso comercial. Existe uma variedade de tecnologias que facilitam a comunicação através de dispositivos sem fios, assim como para o desenvolvimento de aplicações para dispositivos móveis. São tecnologias como: a plataforma Java com sua versão para dispositivos móveis, a J2ME (Java 2 Micro Edition), e a plataforma .NET que possui uma versão simplificada, a .NET 16 Compact Framework. As seções a seguir apresentarão com mais detalhes cada uma destas tecnologias. 2.2 Tecnologia .NET A tecnologia .NET possui uma plataforma única, que constitui um ambiente de desenvolvimento e execução de aplicações, que vão de uso pessoal ao coorporativo. Caracteriza-se pela facilidade de desenvolvimento dos serviços Web, a disponibilidade dos serviços de execução de diversas linguagens de programação e pela interoperabilidade entre linguagens e sistemas operacionais (MSDN, 2003). Assim, uma das características mais importantes da .NET é a independência de plataforma e de uma linguagem específica, exigindo apenas que essas linguagens sejam compatíveis com a especificação do .NET para o desenvolvimento. 2.2.1 .NET para programação para dispositivos móveis Uma tecnologia importante da .NET é a ASP.NET, que possibilita o desenvolvimento de aplicações para Web, ou seja, as informações ficam armazenadas na internet e não mais apenas em uma máquina. Uma aplicação criada em ASP.NET para ser acessada na Internet é semelhante à de uma aplicação ASP.NET para dispositivos móveis, por exemplo, um celular, possuindo inclusive a mesma extensão (.aspx). No entanto, internamente estas aplicações possuem características diferentes (AVELINO, 2004). O ASP.NET suporta o desenvolvimento de aplicações em qualquer linguagem compatível com o .NET. Essas aplicações Web podem ser executadas no navegador de um dispositivo móvel. Assim, podem ser acessadas de qualquer PDA, celular ou SmartPhone, podendo ser integradas entre diversos aplicativos. A .NET oferece, ainda, uma tecnologia para o desenvolvimento de aplicações para dispositivos móveis, a .NET Compact Framework, apresentada na próxima seção. 17 2.2.2 .NET Compact Framework A .NET Compact Framework tem por objetivo oferecer um ambiente de desenvolvimento para sistemas que sejam executados em dispositivos móveis, tais como os celulares, SmartPhones, PDAs, Pocket PCs e outros aparelhos, com recursos limitados (GALVIN, 2004). A .NET Compact Framework (.NET CF) é uma versão simplificada da .NET (MSDN, 2003). Este fato proporcionou aos desenvolvedores uma facilidade no desenvolvimento de aplicações para dispositivos móveis, pois podem reutilizar experiências e conhecimentos adquiridos na implementação de aplicações para desktop ou aplicações web comuns. A .NET Compact Framework proporciona um ambiente de desenvolvimento em multilinguagens, ou seja, permite uma independência de linguagem no desenvolvimento de aplicações, em que cada módulo pode ser desenvolvido em uma linguagem suportada pela .NET, integrando várias linguagens em uma mesma plataforma. Além disso, possui um conjunto específico de ferramentas, desenvolvido especialmente para a implementação de aplicações em dispositivos móveis. A .NET CF possui uma nova implementação da CLR (Common Language Runtime), responsável por executar as aplicações em dispositivos móveis, além de ter uma biblioteca de classes (Class Library) com menos de 50% das classes existentes no .NET (BURÉGIO, 2003). Para o desenvolvimento de aplicações que atuem em dispositivos móveis, a Microsoft oferece a ferramenta Visual Studio.NET, que proporciona um ambiente completo para desenvolvimento visual. Esta ferramenta oferece um suporte a atividade de testes da aplicação, através dos emuladores, que simula um dispositivo móvel real com todos os recursos que o mesmo possui. Permite, também, o desenvolvimento de aplicações que utilizam a tecnologia Web Service, que será apresentado na seção 2.5 deste trabalho. 2.3 Tecnologia Java Java é uma tecnologia de desenvolvimento que vai desde o desenvolvimento de aplicações para desktop, a aplicações para dispositivos móveis. A Sun (2005), 18 atualmente, agrupou a tecnologia Java em quatro edições diferentes: J2SE (Java 2 Standard Edition), J2EE (Java 2 Enterprise Editition), J2ME (Java 2 Micro Edition) e JavaCard, conforme mostra a Figura 1. Figura 1 - Arquitetura Java, modificada de (SUN, 2005a) Cada uma dessas edições foca um segmento. O Java 2 Standard Edition (J2SE) é a versão padrão, destinada ao desenvolvimento da maior parte das aplicações desktop, e esta é a plataforma principal, na qual o Java 2 Enterprise Editition (J2EE) e o Java 2 Micro Edition (J2ME) têm sua base. O J2EE é a versão destinada ao desenvolvimento de aplicações de grande porte, ou seja, voltada, por exemplo, para redes, Internet e intranets, contendo bibliotecas destinadas ao desenvolvimento para o acesso a servidores, sistemas de e-mail etc. O J2ME é uma versão compacta da linguagem Java, destinada ao desenvolvimento de programas para dispositivos móveis, como celulares, pager´s e PDA´s, sendo trabalhadas especialmente para atuação em dispositivos portáteis. É necessário que estes dispositivos disponham de uma máquina virtual Java (JVM – Java Virtual Machine), pois é esse o recurso que possibilita que o mesmo programa rode em várias plataformas. Finalmente, JavaCard é uma tecnologia destinada a rodar em smart cards e outros dispositivos extremamente limitados. Segundo a Sun (2005a), a plataforma Java é baseada, em geral, num conjunto de elementos, como: a linguagem de programação Java, APIs (Interface Programming Applications) e a Máquina Virtual Java – JVM. As seções seguintes apresentam cada um destes elementos. 19 2.3.1 Linguagem Java Segundo Alcântara & Indrusiak (2001), “Java é uma linguagem de programação independente de plataforma, desenvolvida pela Sun Microsystems. Originalmente feita para integrar circuitos de eletrodomésticos, ganhou a Internet, sendo utilizada largamente na Web com objetivo de dinamizar sites e integrar servidores”. A linguagem Java, inicialmente chamada de Oak, foi criada especificamente para funcionar em processadores de eletrodomésticos (ALCÂNTARA & INDRUSIAK, 2001), e, nesta fase, os programas eram dependentes da plataforma para o qual eram desenvolvidos, necessitando de um novo programa a cada evolução dos eletrodomésticos. Em razão disso, a Sun propôs o desenvolvimento de uma linguagem que fosse independente de plataforma. Por causa do surgimento da World Wide Web - WWW, a linguagem Oak foi direcionada para o desenvolvimento, também, de aplicações Web, dando origem à linguagem Java (DUKE, 2003). Java é uma linguagem que opera em qualquer sistema operacional, sendo orientada a objetos, independente de arquitetura, multithreaded, com coleta de lixo (garbage collector), entre outras características (SILVEIRA, 2003). A seguir serão explicadas algumas destas características: • Orientada a objetos: Java é uma linguagem de programação orientada a objeto, sendo que a maior parte dos elementos de um programa Java são objetos. O código é organizado em classes, cada classe define um conjunto de propriedade e métodos que formam o comportamento de um objeto, entre outras características. • Arquitetura independente: Java é uma linguagem independente, ou seja, o desenvolvedor possui a liberdade de escolha da plataforma operacional e da ferramenta de desenvolvimento. Possui também, uma extensa biblioteca de classes que oferece acesso a qualquer sistema operacional. • Ambiente multithreaded: em um programa Java pode-se ter mais de uma linha de execução (thread), por exemplo, cálculos extensos podem ser operados em uma linha de execução e, paralelamente, a interface pode ser executada em 20 outra linha de execução. Java fornece diversos recursos de sincronização de processos que tornam a programação mais simples. • Coletor de lixo (garbage collection): “em Java, os programadores não se preocupam com gerenciamento de memória” (SILVA, 2001). O coletor de lixo tem a função de percorrer a memória constantemente e automaticamente, liberando as que não estão sendo utilizadas. 2.3.2 API “A API (Interface de programa aplicativo) de Java consiste em um conjunto de bibliotecas de tempo de execução que fornecem ao desenvolvedor de software uma forma padrão de acessar os recursos do sistema” (SILVA, 2001). Uma API é formada pelo conjunto de funções, dados, tipos, regras de uso e especificações (GLOSSÁRIO, 2006). É um conjunto usado para realizar a comunicação de uma determinada aplicação, o que dá aos desenvolvedores, uma forma unificada de acessar as funcionalidades de sistemas distintos. “A API contribui não apenas com a independência de plataforma, mas também com a segurança, isto é, possui métodos que verificam permissões para efetuar qualquer ação em uma aplicação” (SILVA, 2001). 2.3.2 JVM A portabilidade do Java depende da existência de JVMs para as diversas plataformas, baseado no conceito de que se escreva uma vez e execute em qualquer lugar (ALECRIM, 2004), permitindo executar códigos Java em qualquer plataforma. Por exemplo, quando se desenvolve uma aplicação para celular, com algumas modificações é possível executar esse mesmo aplicativo em um PDA (FONSECA, 2002). A JVM permite que os programas escritos em Java funcionem em qualquer plataforma que possua uma versão da JVM, tornando assim essas aplicações independentes da plataforma em que serão executadas. 21 Segundo a Sun (2004a), a JVM pode ser definida como “uma máquina imaginária que executa instruções vindas de bytecodes”. Bytecode é um arquivo gerado após a compilação de programas Java, que possui uma extensão chamada ‘.class’. É um código que traduz o que foi escrito no programa Java para um formato que a JVM entenda e execute. A plataforma Java oferece tecnologias de desenvolvimento para aplicações em diversos sistemas operacionais, que vão desde dispositivos móveis a aplicativos Web. A plataforma Java dispõe do J2ME para desenvolvimento de aplicações para dispositivos móveis e máquinas virtuais específicas para atuarem nesses dispositivos, assunto que será mais detalhado nas próximas seções. 2.4 Tecnologia Java para programação para dispositivos móveis Devido ao grande avanço da tecnologia para dispositivos móveis, incluindo jogos, recursos multimídias, agenda de compromisso, acesso à internet, entre outros, a A Sun definiu uma versão para o desenvolvimento de aplicações para dispositivos móveis, a J2ME, independentemente de sistema operacional, dividida em: configuração, perfil e APIs opcionais (SUN, 2004b). 2.4.1 J2ME Segundo Almeida (2005), o objetivo desta tecnologia (J2ME) é o desenvolvimento de aplicações em dispositivos móveis com pequeno poder de processamento, desde telefones celulares, pagers, PDA, até smartphone e TVs. O J2ME possui um modelo de três camadas, que são: configurações, perfis e máquina virtual (CARDOSO, 2005), conforme mostra a Figura 2. 22 PERFIS CONFIGURAÇÕES MÁQUINA VIRTUAL SISTEMA OPERACIONAL Figura 2 - Modelo de desenvolvimento em camadas da J2ME, modificada de (CARDOSO, 2005) A máquina virtual está posicionada acima do sistema operacional do dispositivo, pois é a máquina virtual a responsável por definir quais as limitações de execução das aplicações nos dispositivos. A camada de configuração define o nível de funcionalidades e serviços oferecidos pela máquina virtual. Por fim, o perfil é um conjunto de bibliotecas específico para uma determinada configuração, mas uma configuração pode suportar vários perfis. As camadas da J2ME serão mais detalhadas nas próximas seções. 2.4.2 Perfil O perfil é um complemento da configuração, que deve ser combinado com um conjunto de APIs, a fim de prover um serviço mais completo para as aplicações. Define um ambiente completo para cada tipo de dispositivo, que vão desde recursos de um nível mais alto de interface com o usuário, a acesso às propriedades específicas do dispositivo (PINHEIRO, 2003). A Sun (2004a) introduziu esse conceito para prover maior flexibilidade às mudanças tecnológicas. Cada perfil é destinado a uma categoria específica de dispositivos e consiste em um conjunto mínimo de bibliotecas de classes que determinado aparelho deve suportar. Os perfis são mais específicos que as configurações, apesar de serem baseadas nelas. A J2ME define dois tipos de configurações, que serão melhor explicadas na seção 2.4.3: a CLDC (Connected Limited Device Configuration) e CDC (Connected Device Configuration). Os perfis existentes para a CLDC são 23 diferentes dos existentes para CDC (SUN, 2004a). Os perfis podem ser classificados como FP (Foundation Profile), PP (Personal Profile), PBP (Personal Basis Profile) e MIPD (Mobile Information Device Profile), além de possuírem APIs opcionais (PINHEIRO, 2003). • FP: o Foundation Profile complementa a configuração do CDC, sendo o nível mais baixo da mesma, fornecendo base para dispositivos em rede sem interface com o usuário. • PP: o Personal Profile é o perfil CDC utilizado em dispositivos que necessitam de um suporte completo para interface com o usuário. O PP substitui a antiga tecnologia Personal Java, que é uma versão reduzida da J2SE, destinada a rodar em dispositivos de pouca memória e baixo poder de processamento. • PBP: o Personal Basis Profile é uma divisão do PP que fornece um ambiente para dispositivos conectados, que suportem um nível básico de apresentação gráfica. • MIDP: o Mobile Information Device Profile ou Perfil de Dispositivo de Informação Móvel é um perfil direcionado para dispositivos móveis ligado ao CLDC, fornecendo um ambiente completo para o desenvolvimento de aplicações para dispositivos móveis. Ele define funcionalidades como interface do usuário, suporte à rede, métodos de entrada dados, manipulação da tela do dispositivo (display), armazenamento persistente, entre outros. Ao MIDP podem ser adicionadas outras APIs, fornecendo novos recursos, tais como controle de alerta vibratório, som, entre outras funcionalidades (SUN, 2004c). As aplicações que executam em dispositivos que suportam MIDP são denominadas MIDlets, que são pequenas aplicações escritas em Java, que rodam em dispositivos móveis (celular, PDA, Pager, etc) e consistem em um conjunto de APIs definidas pelo MIDP e CLDC. Uma aplicação MIDP contém no mínimo uma classe MIDlet, o que não impede que se possa ter mais de uma MIDlet, sendo que, neste caso, a aplicação passa a ser chamada de MIDlet Suíte (SUN, 2005b). A Sun oferece, para o desenvolvimento de aplicações MIDlets, um kit de ferramentas de desenvolvimento, o Java Development Kit (JDK) e um conjunto de emuladores que permitem testar a aplicação sem a necessidade de um aparelho. 24 2.4.3 Configuração “Uma configuração define uma plataforma mínima para um grupo de dispositivos com características similares, tanto na memória como no poder de processamento” (FONSECA, 2002). Sendo assim, as configurações definem um conjunto mínimo de biblioteca e recursos da JVM, fornecendo funcionalidades básicas para dispositivos que possuem características limitadas, como: conectividade, processamento e memória. Os dois tipos de configurações, CDC e CDLC, se diferem na JVM pela capacidade de armazenamento, pelo poder de processamento, entre outros recursos. Neste trabalho, será detalhado a configuração CLDC, criando uma aplicação, como exemplo, na seção 2.5. A CDC é destinada a dispositivos mais potentes, com maior capacidade de processamento, como: sistema de navegação de carros, TV com suporte a internet, etc. Utiliza uma máquina virtual, a Compact Virtual Machine (CVM), com suporte a quase todas as funcionalidades presentes na versão J2SE. Inclui, ainda, um conjunto de APIs do J2SE, que são necessárias para o desenvolvimento destes dispositivos. As APIs que compõem a configuração CDC são (SUN, 2004b): • java.math – classes que define métodos para cálculos matemáticos; • java.net – classes para execução de aplicações em rede; • java.security – classes de segurança; • java.text – classes para textos, números, datas etc. • java.lang – classes fundamentais da linguagem de programação Java; • java.io – entrada/saída através de streams (conjuntos) de dados; • java.util – variadas classes utilitárias. E as características dos dispositivos que suportam a configuração CDC, são as seguintes: • processador de 32 bits; 25 • disponibilidade para o ambiente Java de pelo menos 512 KB de memória; • mais de 2 MB de memória total para armazenamento da máquina virtual (CVM) e bibliotecas de classe; • conectividade a algum tipo de rede, frequentemente sem fios e de alta velocidade; • interface com alguma sofisticação. Já a CLDC define um ambiente de execução com um conjunto de APIs para dispositivos com menor poder de processamento, baixos recursos de memórias e conectividade (SCHMITT, 2004), como: celulares, SmartPhones, pagers e PDAs. Usa uma máquina virtual reduzida, a KVM (Kilo Virtual Machine), em relação à máquina virtual clássica, a JVM (descritas nas próximas seções). As APIs da CLDC podem ser divididas em duas categorias: A primeira são subconjuntos da J2SE. Porém, essas APIs não possuem todos os elementos contidos no J2SE (SUN, 2004b): • java.lang; • java.io; • java.util. A segunda é específica da CLDC, mas que podem ser mapeadas para J2SE (SUN, 2004b): • javax.microedition.io - classes para conexões; • javax.microedition.media - classes multimídia; • javax.microedition.rms - classes de armazenamento; • javax.microedition.lcdui - classes de interface gráfica; • javax.microedition.midlet - classes para aplicação midlet; • javax.microedition.pki - classes de segurança. Os elementos que compõe as APIs da configuração CLDC, foram divididos nas Figuras 3, 4 e 5. 26 Figura 3 – Elementos das APIs da configuração CLDC A Figura 3 ilustra as APIs java.lang, java.io e java.util, existentes na configuração CLDC. 27 Figura 4 – Elementos das APIs da configuração CLDC A Figura 4 ilustra as APIs microedition.pki, microedition.midlet e microedition.media, existentes na configuração CLDC. Figura 5 – Elementos das APIs da configuração CLDC 28 A Figura 5 ilustra as APIs microedition.io, microedition.rms e microedition.lcdui, existentes na configuração CLDC Como características principais, os dispositivos que suportam a CLDC devem ter: • no mínimo 192 kb de memória total disponível para a plataforma Java; • um processador de 16 ou 32 bits; • baixo consumo de energia, freqüentemente usando energia de baterias; • conectividade a algum tipo de rede por meio de tecnologia sem fio, conexão intermitente e com banda limitada. O fato das bibliotecas de classes contidas na CLDC serem mais limitadas e possuírem máquina virtual reduzida faz com que algumas funções usadas no J2SE sejam eliminadas. Isto porque, por exemplo, muitos dispositivos não suportariam operações com ponto flutuante e recursos de interface nativa (JNI), devido ao custo da implementação do ponto flutuante ser considerado alto. Já o JNI foi eliminado por razões de limitações de memória (SUN, 2004b). 2.4.4 APIs opcionais A J2ME pode ser ampliada pela combinação de vários pacotes de APIs opcionais. São bibliotecas de programação específicas a uma determinada tecnologia e que aumentam as capacidades do ambiente Java, caso estejam implementadas no dispositivo (SUN, 2004b). Criada para atingir requisitos específicos de mercado, as APIs mais conhecidas são a WMA (Wireless Messaging API), que permite às aplicações J2ME manipularem mensagens SMS (Short Message Service) e MMAPI (Mobile Media API) que adiciona controle de mídia, fornecendo recursos de reprodução, captura e edição de vídeos e áudios às aplicações J2ME (SUN, 2004b). Estes pacotes são chamados opcionais porque, mesmo que não estejam implementados em uma aplicação, o mesmo continua a ser uma aplicação J2ME. 29 2.4.5 Máquina virtual A J2ME dispõe de duas máquinas virtuais distintas que podem ser utilizadas no desenvolvimento de aplicações para dispositivos móveis, a CVM (Compact Virtual Machine) e a KVM (Kilo Virtual Machine). Conforme Fonseca (2002), a máquina virtual do J2ME, chamada de KVM, não é a mesma utilizada pelas versões J2EE e J2SE, sendo quase sempre um conjunto reduzido dessas versões. Já a máquina virtual CVM atende a especificação completa da JVM, porém apresenta menos requisitos de memória. A CVM é a máquina virtual compactada da versão padrão do Java, específica para configurações CDC, suporte a dispositivos móveis com, no mínimo, 32 bits e mais de 2 MB de memória. O perfil Personal Profile é o mais encontrado, destinada, por exemplo, a TVs. Segundo Fonseca (2002), a KVM é uma máquina virtual voltada para dispositivos portáteis e com pouco poder de processamento, como PDAs, celulares e SmartPhones. A KVM surgiu como uma máquina virtual de referência para a configuração CLDC, cumprindo todas as especificações desta configuração. A KVM recebe esse nome porque o gasto de memória é medido em kilobytes, ao contrário dos sistemas tradicionais, que a medida padrão utilizada é o megabyte. Foi implementada para ser usada em dispositivos de recursos limitados, porém, trabalha com o mesmo conjunto de bytecodes e a mesma extensão ‘.class’ que a JVM (SUN, 2005a). 2.5 Web Services Web Services são tecnologias utilizadas para integrar sistemas por meio da Internet, independentes plataforma ou linguagem de programação (NETO, 2003). Isto é, são aplicações definidas e descritas usando a XML (Extensive Markup Language). XML é uma linguagem de marcação projetada para a criação de documentos Web, contribuindo para a interoperabilidade entre os diferentes dados na Web (XML, 2003), ou seja, é uma linguagem que representa os serviços do Web Service, que pode ser acessado por diversos clientes (aplicações). 30 O Web Service não precisa estar necessariamente disponível no ambiente Web, pois o mesmo pode ser utilizado em qualquer rede de trabalho, como a intranet (GUMZ, 2005). Geralmente, é utilizado o protocolo Hypertext Transfer Protocol (HTTP) para efetuar a comunicação entre o cliente e o Web Service, mesmo estando em ambientes e sistemas diferentes. Para efetuar a comunicação entre o cliente e o Web Service é utilizado um protocolo, o SOAP (Simple Object Acess Protocol). O SOAP é um protocolo para troca de informações entre sistemas Web, projetado para ser usado no acesso a objetos remotos, através da troca de mensagens XML, que contém informações a serem transmitidas de um sistema para outro (SOAP, 2003). Para que os serviços do Web Service sejam acessados é oferecido um serviço chamado Web Service Description Language (WSDL), que consiste, basicamente, de uma linguagem baseada em XML (WSDL, 2003), criada para descrever os serviços do Web Service. Para definir uma maneira padrão de publicar informações e anunciar os serviços de um Web Service, foi criado o UDDI (Universal Description, Discovery, and Integration), que funciona basicamente como um diretório de Web Service, ou seja, trata-se de um cadastro global de Web Services (UDDI, 2003). Para a criação de Web Services, existem plataformas como: .NET e Java, que oferecem recursos necessários para o seu desenvolvimento, apresentados nas próximas seções. 2.5.1 A utilização de Web Services pela plataforma Java Para a utilização de Web Services em aplicações desenvolvidas segundo a arquitetura Java, a Sun criou um conjunto de APIs Java para o desenvolvimento de Web Services e aplicações Web, chamado de JWSDP (Java Web Service Develoment Pack), que oferece um conjunto de soluções para construir, testar e publicar aplicações utilizando os conceitos do XML (SUN, 2003). A seguir, serão citados alguns exemplos de APIs Java para Web Service (SUN, 2003): • Java API for WML Processing (JAXP): é um conjunto de APIs que permite processar documentos XML; 31 • SOAP with Attachments API for Java (SAAJ): é um conjunto de APIs que suporta o envio de documentos usando SOAP; • Java API for WML Registries (JAXR): é um conjunto de APIs que permite aderir a serviços de registros baseado em XML, como o UDDI; • Java API for XML Remote Procedure Call (JAX-RPC): é um conjunto de APIs que suporta a comunicação do tipo RPC sobre SOAP e define regras para construção de aplicações Web Service. A JAX-RPC é a principal API para a criação de Web Service. Ela permite a construção do processo de comunicação entre cliente e servidor de Web Service. A comunicação do tipo RPC, ou chamadas remotas de procedimento, são chamadas locais a métodos de objetos ou serviços remotos, ou seja, podem-se acessar os serviços de um objeto localizado em um outro ponto da rede através de uma chamada local a este objeto, usando a plataforma Java (SUN, 2003). Para a integração de aplicações J2ME com Web Services são necessários dois pacotes: o KSOAP e KXML. Estes pacotes permitem que as aplicações para dispositivos móveis funcionem na máquina virtual KVM (MCHUGH, 2003). O KSOAP é responsável por oferecer suporte ao protocolo SOAP e o KXML é responsável por dar suporte à linguagem XML. Os Web Services viabilizam a integração entre plataformas diferentes, garantindo a interoperabilidade, ou seja, os serviços desenvolvidos na plataforma Java poderão ser acessados por aplicações .NET e vice-versa. 2.5.2 A utilização de Web Services pela plataforma .NET A .NET oferece uma independência de linguagem no desenvolvimento de Web Services (MSDN, 2003). É um ambiente que proporciona integração entre as diversas aplicações existentes, realizando a troca de informações entre elas e otimizando os recursos de comunicação da internet. Essa comunicação é feita por meio da leitura de documentos WSDL, que é um documento em XML que contém as funcionalidades do Web Service. 32 No ambiente .NET, as funcionalidades dos Web Services podem ser definidas em arquivos do tipo ‘.asmx’. O código desse arquivo utiliza o atributo <WebMethod()>, responsável por definir os métodos do Web Service, que ficarão disponíveis aos clientes (aplicações). Para que as funcionalidades do Web Service estejam disponíveis para outras aplicações, é necessário que o arquivo ‘.asmx’ esteja em uma pasta virtual de um servidor Web que possua o IIS (Internet Information Services) e a plataforma .NET instalados (SANTOS, 2003). A plataforma .NET disponibiliza uma ferramenta que oferece um desenvolvimento unificado do Web Service e da aplicação que irá utilizá-lo, o Visual Studio.NET. Para a realização de testes dos Web Services, o acesso pode ser realizado através do browser, que permite a visualização das suas funcionalidades. O XML é uma linguagem que descreve as funcionalidades do Web Service, permitindo que aplicações possam trocar informações com plataformas diferentes, como a Java e .NET. A Figura 6 mostra as camadas de desenvolvimento de aplicações .NET e Java que possui a camada de comunicação dos Web Services. Figura 6 – Camadas de desenvolvimento de aplicações .NET e Java (OLIVEIRA, 2004) A Figura 6 mostra as camadas de desenvolvimento de uma aplicação na plataforma .NET e Java, e é na camada de rede, via HTTP, que os Web Services se comunicam, isto é, uma aplicação feita em uma linguagem, precisa apenas 33 reconhecer um arquivo XML para se conectar a um Web Service feito em outra linguagem (OLIVEIRA, 2004). A seguir será apresentada uma aplicação que servirá para exemplificar algumas das características apresentadas anteriormente. Para o desenvolvimento da aplicação foi utilizado a ferramenta NetBeans 5.0, utilizando a plataforma J2ME. O Web Service foi desenvolvido na plataforma .NET, o mesmo que foi utilizado em (SILVA, 2006). Para a visualização e realização dos testes foi utilizado um emulador, o NetBeans Mobility 5.0. 2.5 Exemplificação da Integração das Tecnologias Para ilustrar as funcionalidades oferecidas pela plataforma J2ME, foi desenvolvida uma aplicação J2ME CLDC/MIPD que poderá enviar ou buscar informações utilizando os serviços de um Web Service, o qual é o responsável por realizar a conexão entre o banco de dados e a aplicação, promovendo uma distribuição do processamento. Esta aplicação visa oferecer uma forma alternativa para que os alunos que tenham participado do vestibular do CEULP-ULBRA possam acessar o resultado através de um dispositivo móvel. O esquema navegacional utilizado nesta aplicação pode ser visualizado na Figura 7. Figura 7 – Esquema navegacional A aplicação desenvolvida consiste em cinco formulários: o primeiro é o formulário inicial, ou seja, é a página principal que é responsável pela escolha da consulta. O formulário de consulta por nome é o responsável por receber os 34 valores da consulta; outro formulário consiste em apresentar o resultado da consulta, sendo responsável por exibir os nomes dos candidatos aprovados e/ou suplentes; o formulário de consulta por número recebe os valores que servirão como parâmetros para a consulta; e, por fim, o formulário que exibe os resultados: a colocação do candidato, sua nota e sua situação (aprovado, reprovado ou suplente). O frmInicial dispõe de um menu com as opções de consultas que o usuário deseja realizar e outro que encerra a execução, conforme ilustrado na Figura 8. Figura 8 - Tela da página inicial da aplicação O frmInicial é composto por dois tipos de consultas (Nome ou Número) e, após a escolha de uma das opções pelo usuário, outro formulário é apresentado, que servirá para a inserção dos valores para a consulta. A outra opção do menu refere-se a opção “Sair”, que tem a função de encerrar a 35 execução. Assim, o código desse formulário é formado basicamente pela implementação das funções do menu, conforme mostra a Figura 9. 1. public 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 15. } void commandAction(Command c, Displayable d) { if (c == btnSair) { notifyDestroyed(); } else if (c == consultarNumero) { Display.getDisplay(this).setCurrent(frmNumero); } else if (c == consultarNome) { Display.getDisplay(this).setCurrent(frmNome); } else if (c == voltar) { Display.getDisplay(this).setCurrent(frmInicial); } Figura 9 – Código de implementação das funções do menu Após a definição da consulta, outro formulário é chamado. Por exemplo, se a consulta for por número, o formulário chamado será frmNumero, conforme mostra entre as linhas 5 e 7 da Figura 9. No frmNumero é inserido o número de inscrição do aluno para que seja realizado a consulta, após a seleção da opção consultar, o resultado é apresentado em outro formulário, o frmResultadoNum, conforme mostra a seqüência da Figura 10. 36 Figura 10 – Seqüência da consulta por número O resultado da consulta vêm do método do Web Service consultarPorNumero. O Web Service, criado na plataforma .NET, é composto por dois tipos de consulta: consultarPorNome, como mostra a Figura 11. consultarPorNumero e 37 Figura 11 – Métodos do Web Service Na Figura 8, nota-se os métodos de consulta que foram criados, chamados consultarPorNome e consultarPorNumero. É possível acessá-los clicando sobre o link do método. Após isso, uma nova janela é aberta onde irá requerer os valores passados como parâmetro para a execução do método. A Figura 12 demonstra a janela para inserção do valor para execução do método consultarPorNumero. 38 Figura 12 – Janela para inserção do método consultarPorNumero Após a inserção do valor, pode-se invocar o método clicando no botão Invoke. O método é responsável por apresentar a nota, situacao e posicao do usuário que solicitou a consulta. O resultado da execução do método é retornado em XML, conforme apresentado na Figura 13. 39 Figura 13 – Resultado da execução do método consultarPorNumero Na aplicação, esse resultado é apresentado no formulário frmResultadoNum. Ou seja, após a inserção dos valores no formulário de consulta por número e de selecionar a opção “consultar” do menu, o método correspondente do Web Service é invocado e o resultado é retornado para o formulário frmResultadoNum, e é apresentado na tela do emulador, conforme foi mostrado na Figura 10. A integração da aplicação com o Web Service é apresentada no código da Figura 14, que representa a classe de conexão da aplicação com o Web Service. 40 1. import org.ksoap.SoapObject; 2. import org.ksoap.transport.HttpTransport; 3. import org.kxml.parser.*; 4. 5. public class ConexaoWS { 6. private String url = "http://localhost/WSSeguro/Service.asmx"; 7. public ConexaoWS(String url) { 8. this.url = url; 9. } 10. public String consultarPorNome(String nomeCandidato) { 11. StringBuffer resultado = new StringBuffer(); 12. SoapObject obj = new SoapObject(url, "consultarPorNome"); 13. obj.addProperty("nomeCandidato", new String(nomeCandidato)); 14. HttpTransport http = new HttpTransport(url, "consultarPorNome"); 15. try { 16. resultado.append(http.call(obj)); 17. } catch(Exception ex) { 18. System.out.println(ex.getMessage()); 19. } 20. return resultado.toString(); 21. } 22. 23. public String consultarPorNumero(String idCandidato) { 24. StringBuffer resultado = new StringBuffer(); 25. SoapObject obj = new SoapObject(url, "consultarPorNumero"); 26. obj.addProperty("idCandidato", new String(idCandidato)); 27. HttpTransport http = new HttpTransport(url, "consultarPorNumero"); 28. try { 29. resultado.append(http.call(obj)); 30. } catch(Exception ex) { 31. System.out.println(ex.getMessage()); 32. } 33. return resultado.toString(); 34. } 35. } Figura 14 – Código da classe de conexão com o Web Service Entre as linhas 1 e 3 está representado os pacotes KSOAP e KXML, necessários para a integração da aplicação com o Web Service. As linhas 5 e 9 mostra criação do objeto que irá receber o caminho da conexão com o Web Service. Entre as linhas 10 e 21 mostra a conexão da aplicação com o método consultarPorNome do Web Service. E entre as linhas 23 e 34 mostra a conexão da aplicação com o método consultarPorNumero do Web Service. A Figura 15 detalha a implementação do método de consulta por número da aplicação. 41 1. public String consultarPorNumero (String idCandidato) { 2. StringBuffer resultado = new StringBuffer(); 3. SoapObject obj = new SoapObject(url, "consultarPorNumero"); 4. obj.addProperty("idCandidato", new String(idCandidato)); 5. HttpTransport http = new HttpTransport(url, "consultarPorNumero"); 6. try { 7. resultado.append(http.call(obj)); 8. } catch(Exception ex) { 9. System.out.println(ex.getMessage()); 10. } 11. return resultado.toString(); 12. } Figura 15 - Código do método de consulta por número A linha 2 mostra a criação da variável que irá receber o resultado da consulta. Na linha 3, cria-se um objeto do tipo SoapObject permitindo que a aplicação localize o Web Service por meio do objeto criado na classe de conexão, chamado “url”, e o método correspondente à consulta. Na linha 4, estão os parâmetros para o método do Web Service. Na linha 5, estão os códigos de transporte do resultado para a aplicação. E a linha 11, retorna o resultado correspondente à consulta. Esta aplicação foi desenvolvida, por meio do embasamento teórico adquirido, e que auxiliará na criação de um comparativo entre as plataformas .NET Compact Framework e J2ME no desenvolvimento de aplicações para dispositivos móveis, que será apresentado no capítulo 4 deste trabalho. 42 3. MATERIAIS E MÉTODOS Neste capítulo serão apresentados os recursos utilizados para realização e conclusão deste trabalho, como, por exemplo, estudos bibliográficos e recursos de hardware e software. 3.1 Local e Período O trabalho foi desenvolvido como requisito da disciplina de Trabalho de Conclusão de Curso em Sistemas de Informação I e II, do curso de Sistemas de Informação do Centro Universitário Luterano de Palmas, no primeiro semestre de 2006 e foi desenvolvido no laboratório do Programa Gerador de Novos Referenciais Tecnológicos para a Região Norte - GENORTE. As atividades relacionadas a este trabalho tiveram início no mês de janeiro de 2006 e término em julho de 2006. 3.2 Materiais Os materiais utilizados para a realização deste trabalho, podem ser divididos em três categorias: hardware, software e fontes bibliográficas. 3.2.1 Hardware • Notebook com processador Intel inside Celeron M, com clock de 1.4 Ghz, 512 Mb de memória RAM e HD com 60 Gb. 43 3.2.2 Software • Microsoft Wod 2003; • Microsoft SQL Server; • Microsoft Visual Studio 2005 Beta 2; • Adobe Acrobat Reader; • NetBeans 5.0; • NetBeans Mobility 5.0. 3.2.3 Fontes Bibliográficas • Trabalhos de Conclusão de Curso; • Dissertações de Mestrado; • Publicações Científicas; • Artigos; • Livros; • Sites diversos. 3.3 Metodologia A metodologia utilizada iniciou-se com estudos teóricos sobre programação para dispositivos móveis, plataforma .NET Compact Framework, plataforma J2ME e o consumo de Web Service. Estes estudos foram aplicados para a finalização desse trabalho. Este trabalho teve como finalidade o desenvolvimento de uma aplicação para dispositivos móveis utilizando a plataforma J2ME, para verificar o resultado do vestibular do CEULP/ULBRA, estes dados estão armazenados em um banco de dados e a utilização de um Web Service, desenvolvido na plataforma .NET, que buscará os dados e os retornará para a aplicação. Tendo como objetivo, realizar um comparativo entre as plataformas .NET Compact Framework e J2ME, no desenvolvimento de aplicações para dispositivos móveis. 44 4. RESULTADOS E DISCUSSÕES O objetivo deste capítulo é apresentar um comparativo entre as plataformas .NET Compact Framework e J2ME, usando a configuração CLDC, no desenvolvimento de aplicações para dispositivos móveis. A plataforma J2ME e seus componentes surgiram primeiro, e por mais de cinco anos era a única plataforma viável para o desenvolvimento de aplicações para dispositivos móveis (YUAN, 2003). A Microsoft, acompanhando o crescente mercado, de dispositivos móveis visualizou e criou uma plataforma de desenvolvimento para dispositivos móveis, a .NET Compact Framework (.NET CF). O comparativo irá abordar estudos de desenvolvimentos de aplicativos para dispositivos móveis nas plataformas .NET CF e J2ME, das arquiteturas, recursos de desenvolvimento, linguagens, classes, componentes, serviços, suporte a Web Services, entre outras informações. 4.1 Arquitetura das plataformas .NET CF e J2ME As plataformas .NET CF e J2ME caracterizam idéias inovadoras no desenvolvimento de aplicações para dispositivos móveis. A plataforma Java representa mais do que apenas uma linguagem de programação, abrangendo tecnologia como: máquinas virtuais que funcionam em várias arquiteturas e a J2ME no desenvolvimento de aplicativos móveis. A plataforma .NET, predominante no desenvolvimento de aplicações desktop, dispõe de uma tecnologia de desenvolvimento de aplicações para dispositivos móveis, a .NET CF. A arquitetura da plataforma J2ME é dividida em: perfil, configuração e máquina virtual. Para realizar o estudo comparativo, foram abordadas somente as 45 características da configuração CLDC, pois foi a utilizada no desenvolvimento da aplicação que serviu como exemplo neste trabalho. A arquitetura é apresentada na Figura 16. Figura 16 - Arquitetura J2ME usando a CLDC A arquitetura apresentada na Figura 15 representa as camadas de desenvolvimento de uma aplicação J2ME que utiliza a configuração CLDC, destinada a dispositivos como menor poder de processamento, com perfil MIPD baseada na CLDC e a máquina virtual KVM. Os pacotes opcionais oferecem APIs para tecnologias como Bluetooth, Web Services, conexão com banco de dados e envio de mensagens, estendendo as funcionalidades básicas oferecidas pelas MIPD e a CLDC. A arquitetura da plataforma .NET CF não define configurações, ao contrário do J2ME. Consiste em biblioteca de classes e Common Language Runtime (CLR), conforme apresentado na Figura 17. Figura 17 – Arquitetura da .NET Compact Framework A biblioteca de classes da plataforma .NET Compact Framework é composta de classes, relações e tipos incluídos na estrutura Microsoft .NET. Esta biblioteca fornece o acesso à funcionalidade dos sistemas, aplicações, componentes e controles. A CLR pode ser analisada como uma máquina virtual, 46 mas com um poder de processamento maior. A CLR permite o desenvolvimento em qualquer ambiente, e é na camada CLR que a aplicação é executada, oferece também serviços como gerência de memória e manipulação de exceção. 4.2 Biblioteca de classe das plataformas .NET CF e J2ME A biblioteca de classes define as funcionalidades das aplicações, dando suporte ao desenvolvimento. As classes disponíveis para o J2ME são definidas no perfil e em pacotes opcionais. Para o desenvolvimento das aplicações, as classes responsáveis pela interface com o usuário, tanto na .NET Compact Framewok, como no J2ME, são compostas de um conjunto variado de controles, como mostra a Tabela 1. Tabela 1 – Classes de Interface (MSDN, 2003 e SUN, 2004b) .NET Compact Framework System.Windows.Forms Microedition.Lcdui CheckBox ComboBox ContextMenu Control Cursor Classes de Interface J2ME DataGrid DomainUpDown Label Form HScrollBar ImageList InputPanel ListBox ListView MainMenu MessageWindow NumericUpDown OpenFileDialog Painel PictureBox ProgressBar RadioButton Alert AlertType Canvas Choice ChoiceGroup Command CommandListener DateField Display DisplayTable Font Form Gauge Graphics Image ImageItem Item ItemStateListener List Screen StringItem TextBox 47 SaveFileDialog StatusBar TabControl TabPage Timer TextBox ToolBar TrackBar TreeView VScrollBar TextField Ticker As classes de interface com o usuário contidas nas plataformas .NET CF e J2ME são compostas por controles. A .NET CF engloba uma variedade maior de dispositivos móveis, com isso, dispõe de um número maior de controles em relação a plataforma J2ME, conforme especificado na Tabela 4. Os controles apresentados da J2ME tratam-se da configuração CLDC, que engloba dispositivos com menor poder de processamento, como: celulares, SmartPhones, pagers e PDA´s. Porém, os controles dispostos na classe de interface da .NET CF são definidos de acordo com as características da aplicação a ser desenvolvida, ou seja, nem todos os controles dispostos nas classes de interface estão disponíveis para qualquer tipo de aplicação, pois é necessário avaliar o tipo de aplicação e os recursos oferecidos. Na J2ME, por dividir as configurações em CDC e CLDC, as classes são definidas de acordo com a escolha da configuração. Muitos dos controles são similares nas duas plataformas, como o TextBox, disponível na .NET CF e TextField da J2ME, ambos responsáveis por aceitar a entrada de texto na aplicação. A Figura 18 mostra o código da declaração dos controles na plataforma .NET CF. 1. private TextBox txtNome; ... 5. this.txtNome=new System.Windows.Forms.TextBox(); Figura 18 – Código do controle TextBox 48 A linha 1 apresenta a declaração do controle TextBox e a linha 5 a criação do comando do controle, criados na linguagem C#. A Figura 19 mostra o código da declaração dos controles na plataforma J2ME. 1. private TextField txtNome; ... 5. this.txtNome=new TextField("","", 20, TextField.ANY); Figura 19 – Código do controle TextField A linha 1 apresenta a declaração do controle TextField e a linha 5 a criação do comando do controle, criados na linguagem Java. Na plataforma J2ME é possível adicionar pacotes opcionais, que são classes que estendem as funcionalidades da aplicação, como os pacotes de Web Services compostos pelos KSOAP e KXML, que dão suporte ao protocolo SOAP e a linguagem XML. O código de utilização desses pacotes opcionais declarados na aplicação J2ME é mostrado na Figura 20. 1. import org.ksoap.SoapObject; 2. import org.kxml.transport.HttpTransport; Figura 20 – Código dos KSOAP e KXML As linhas 1 e 2 declaram os códigos que dão suporte a aplicações J2ME que utilizam serviços de Web Service, implementado na linguagem Java. A plataforma .NET CF contém a classe que dá suporte a serviços de Web Service, chamada de System.Web.Services, que consiste em classes que permitem a criação de serviços usando a linguagem XML. Os serviços Web Service usando XML são as aplicações que usam protocolos tais como: HTTP, XML, SOAP e WSDL. Estes serviços garantem interoperabilidade com uma variedade de plataformas, aplicações e dispositivos. O código das classes Web Service utilizados nas aplicações .NET CF é mostrado na Figura 21. 49 1. using System.Web.Services; Figura 21 – Código da classe Web Service A linha 1 especifica o código da classe Web Service que é inserido na aplicação .NET CF, que dá suporte as funcionalidades do Web Service, implementado na linguagem C#. As plataformas .NET CF e J2ME dispõe de classes com funcionalidades semelhantes como mostra a Tabela 2. Tabela 2 – Classes de Entrada e Saída (MSDN, 2003 e SUN, 2004b) Classes de Entrada e Saída .NET Compact Framework System.IO J2ME Java.IO Directory File FileStream Stream StreamReader StreamWriter TextReader TextWriter ByteArray DataInput DataOutput InputStream OutputStream PrintStream Reader Write Como parte da biblioteca de classes das plataformas .NET CF e J2ME, as classes System.IO e Java.IO são responsáveis pelo manuseio de arquivos, permitindo a leitura e a escrita em arquivos de dados. As classes TextWriter e Write, são classes abstratas e representam um escritor de caracteres seqüências. Mesmo sendo um subconjunto da plataforma .NET, a .NET CF fornece estrutura necessária para a criação de aplicações para dispositivos móveis, como as classes apresentadas, oferecendo suporte também, a classes como: • System.Security – classes que fornecem estruturas de segurança; • System.Net – classes de aplicações em rede; • System.Text – classes para caracteres, textos, números etc; • System.Web – classes de manipulação, transferência de arquivos etc. 50 A plataforma J2ME fornece a estrutura necessária para a criação de aplicações para dispositivos móveis, com classes que oferecem suporte ao desenvolvimento. É possível dizer que as plataformas .NET CF e J2ME possuem classes semelhantes no desenvolvimento de aplicações, sendo necessário avaliar o tipo da aplicação a ser desenvolvida, os recursos disponíveis, avaliar custos e benefícios, a fim de tomar decisões como, a escolha da plataforma, as ferramentas de desenvolvimento, linguagens, entre outros componentes mais adequados às suas necessidades. 4.3 Processo de desenvolvimento de aplicações nas plataformas .NET CF e J2ME As plataformas .NET CF e J2ME possuem recursos de configuração, implementação, bibliotecas de classes, ou seja, recursos para o desenvolvimento de aplicações para dispositivos móveis, tanto comercial, quanto de uso pessoal. Estas plataformas, no processo de desenvolvimento de aplicações para dispositivos móveis, incluem recursos como: ferramentas de desenvolvimento, linguagens, ambiente de execução dos programas e o emulador, que permite testar as aplicações. 4.3.1 Ferramentas de desenvolvimento As ferramentas de desenvolvimento visam melhorar a produtividade do programador ao construir aplicações. O desenvolvimento de uma aplicação pode ser realizado em um simples editor de texto ou em ferramentas mais sofisticadas, e a escolha depende da aplicação a ser desenvolvida. As aplicações para dispositivos móveis, desenvolvidas na plataforma J2ME, utilizam o Java como linguagem de programação. Mas, nem por isso os aplicativos desenvolvidos em J2ME se limitam aos recursos oferecidos pelo Java, já que esta plataforma possui suporte ao uso da tecnologia de Web Services, que acrescenta funcionalidades a aplicação. Para o desenvolvimento destas aplicações existe uma larga escala de ferramentas livres, sendo que as mais comuns são: 51 • JUnit; • Ant; • Eclipse; • NetBeans; • Java 2 Micro Edition Wireless Toolkit. A plataforma .NET CF possibilita o desenvolvimento de aplicações para dispositivos móveis utilizando linguagens como VB.NET, C# ou J#, ou o desenvolvimento em multilinguagens, desde que sejam compatíveis com a .NET. A ferramenta de desenvolvimento de aplicações .NET CF mais comum é a Visual Studio.NET. Esta ferramenta oferece um ambiente que permite o desenvolvimento de aplicações em uma mesma ferramenta, sem a preocupação com o formato do aparelho a ser utilizado, bem como quais os recursos que o mesmo disponibilizará. Além de possibilitar a criação e a utilização de Web Services pelas aplicações .NET CF. 4.3.2 Ambiente de execução O ciclo de execução de uma aplicação .NET CF acontece na CLR (Common Language Runtime), junto com a biblioteca de classes que formam um ambiente de execução que oferece um gerenciamento de código (Managed Code) (JUNIOR, 2006). Um código gerenciado garante, em tempo de execução, a eliminação dos erros na aplicação, além do monitoramento realizado pelo coletor de lixo (Garbage Collector). Outro item importante é o compilador Just-In-Time (JIT), outro componente da CLR, responsável por gerar o chamado código Microsoft Intermediate Language (MSIL), abreviado como Intermediate Language (IL) (JUNIOR, 2006). O ciclo de execução de uma aplicação .NET CF é mostrado na Figura 22. 52 CLR Aplicativo inicial (Class Loader) IL Coletor de Lixo (Garbage Collector) JIT Aplicativo final Emulador Figura 22 - Ciclo de execução da aplicação .NET CF Quando a aplicação é iniciada, já é alocado um espaço de memória para sua execução, conhecido como domínio da aplicação (Application Domains), assegurando que não irão existir conflitos entre outras aplicações que possivelmente estão sendo executadas. Após isso, vem o carregador de classes (Class Loader), que tem a responsabilidade de carregar os arquivos necessários para a execução da aplicação. Nestes arquivos incluem-se a biblioteca de classe usada na aplicação, além dos recursos, por exemplo, de imagens. Em seguida é usado o coletor de lixo, que envolve a busca, avaliação e eliminação dos espaços de memória e alguns erros de programação comuns. O arquivo é compilado pelo JIT, que gera um código denominado IL, este é o código que será executado pela CLR. Ou seja, as linguagens contidas no arquivo são compiladas para um código intermediário (IL) que define as instruções para o CLR, depois disso, o código IL será compilado para código de máquina, criando, assim, um aplicativo único. Após a execução e eliminação dos erros, a aplicação é testada em um emulador. A execução de uma aplicação J2ME é feita em uma máquina virtual. A execução é dividida em duas versões, baseadas em um conjunto de configuração e perfil, que definem a máquina virtual. Este conjunto é composto pela configuração CDC, seus perfis e a máquina virtual CVM (Compact Virtual 53 Machine) e a configuração CLDC com o perfil MIDP e que utiliza a máquina virtual KVM (Kilo Virtual Machine). De modo geral, uma aplicação J2ME é desenvolvida, compilada, préverificada, empacotada e descrita. O ciclo de execução de uma aplicação J2ME usando MIDP/CLDC e a KVM é apresentada na Figura 23. .class Pacote JAR e JAD MIDP CLDC KVM .java Emulador Debbuger Pré-verificação Figura 23 - Ciclo de execução da aplicação J2ME As aplicações que executam em dispositivos que suportam MIDP são denominadas MIDlets. Ao iniciar o desenvolvimento é criada uma aplicação com a extensão ‘.java’. Durante a execução é feita a eliminação de erros através do debbuger. O debbuger busca remover informações irrelevantes das classes, como nomes de variáveis. A execução continua com a conversão do código de bytes em código executável de máquina, isto é, após a compilação dos programas Java (‘.java’) é gerado um arquivo de extensão chamado ‘.class’. Com o arquivo ‘.class’ gerado é feita uma pré-verificação, que é realizada fora o sistema onde será executada a aplicação, permitindo um verificação mais rápida da KVM. A pré-verificação dos arquivos de classes é dividida em duas fases: uma pré-verificação no computador de desenvolvimento da aplicação sem mudar o nome do arquivo e uma verificação no dispositivo ou emulador no momento da execução. Após a compilação e pré-verificação será criado um pacote que contém o arquivo .JAR (Java Archive). Este arquivo possui um arquivo descritor, chamado .JAD (Java Application Descriptor), em que ficam as informações referentes ao tamanho do arquivo .JAR, versão, configuração, perfil, nome da MIDlet, entre 54 outras. Com a criação do .JAD e as especificações do .JAR, o mesmo será executado no emulador. A KVM é responsável pelo gerenciamento das aplicações à medida que são executadas. As execuções das aplicações criadas nas plataformas .NET CF e J2ME, seguem um padrão semelhante. Ambas utilizam um serviço de coleta de lixo, que gerenciam as memórias e os códigos, garantindo que nenhuma instrução inválida apareça no código. Na compilação dos códigos, a plataforma J2ME transforma o código de bytes em código de máquina, empacotado em um arquivo .JAR. Já a plataforma .NET CF, por possuir independência de linguagem, possui um mecanismo de compilação diferente da J2ME, em que na .NET CF, primeiro é feita a compilação do código para uma linguagem intermediária (IL), depois esta IL é compilada, gerando o código de máquina. A fim de avaliar algumas características das plataformas .NET CF e J2ME CLDC foi criada uma tabela de comparativo entre as plataformas. Tabela 3 – Tabela de comparativo entre as plataformas .NET CF e J2ME COMPARATIVO .NET Compact Framework J2ME – CLDC Dispositivos Dispositivos com maior e menor poder de processamento tais como: celulares, SmartPhones, PDA´s e Set-Tops Boxes. Dispositivos com menor poder de processamento, tais como: celulares, pagers, SmartPhones e PDA´s. Custo Para o desenvolvimento das aplicações, as ferramentas e alguns recursos necessários precisam ser pagos, além de alguns dispositivos alvos terem um custo alto, tendo assim, um custo elevado no desenvolvimento e na utilização da aplicação. Existe uma variedade de ferramentas livres para o desenvolvimento das aplicações, porém os dispositivos alvos possuem um custo, tendo assim um custo médio de desenvolvimento e utilização da aplicação. Corporativos Corporativos e pessoais Mercado 55 Possui suporte a várias linguagens, como: C#, VB.NET e J# Suporte a linguagem Java Pocket PC, Windows CE Todas as plataformas para dispositivos móveis, como: Windows, Linux e Solaris, necessitando apenas de uma máquina virtual instalada. Subconjunto da .NET Compatibilidade parcial com J2SE, junto com pacotes opcionais. A Ferramenta Visual Studio.NET é a mais comum no desenvolvimento das aplicações. Existe um número grande de ferramentas para o desenvolvimento das aplicações, tais como: NetBeans, Ant e Java 2 Micro Edition Wireless Toolkit. Programação Requer alguma experiência em programar em .NET Requer alguma experiência programar em Java Web Services Suporte integrado a Compact Framework. Suporte através dos opcionais KSOAP e KXML Linguagem Plataformas Biblioteca de Classes Ferramentas .NET em pacotes A Tabela 3 apresenta algumas semelhanças e divergências existentes entre as plataformas .NET CF e J2ME. A .NET CF possui um ambiente de desenvolvimento mais completo e atinge um número mais amplo de dispositivos, em relação a J2ME. O fato da J2ME dividir o desenvolvimento em duas configurações, CDC e CLDC, os ambientes de desenvolvimento também se diferem pelo fato de que a CDC engloba dispositivos com um poder maior de processamento e a CLDC dispositivos com menor poder de processamento. O ambiente completo de desenvolvimento da .NET CF implica em um desenvolvimento com um custo mais elevado do que a da J2ME, pelo fato da ferramenta e seus recursos possuírem um custo elevado, além de dispor, por exemplo, de especificações desnecessárias para o desenvolvimento de aplicações para dispositivos móveis com um menor poder de processamento. Já a J2ME possui um grande número de ferramentas livres e suas especificações de desenvolvimento vão de acordo com o tipo de aplicação a ser criada. 56 5. CONSIDERAÇÕES FINAIS Um dos motivos da grande popularização dos dispositivos móveis é a necessidade do ser humano de permanecer informado a qualquer hora e em qualquer lugar. Visando atender a essas necessidades, grandes empresas da informática estão investindo cada vez mais em tecnologias para desenvolvimento de aplicações para dispositivos móveis. Exemplos disso, são a Sun Microsystem e a Microsoft, que desenvolveram uma versão de suas plataformas de desenvolvimento, exclusiva para dispositivos móveis, a J2ME e .NET Compact Framework. Desta forma, este trabalho apresentou um estudo sobre as plataformas .NET CF e J2ME, mostrando os recursos básicos para o desenvolvimento de aplicações para dispositivos móveis, obtendo assim, uma base para a realização de um comparativo, entre as plataformas.. A plataforma .NET CF é um ambiente que permite construir aplicações para dispositivos móveis. A execução das aplicações .NET CF é realizada na CLR, criando um arquivo único e é este arquivo que será executado pelo emulador. A J2ME também é um ambiente que permite a construção de aplicações para dispositivos móveis. Os dispositivos alvos desta plataforma são definidos em duas configurações, CDC (maior poder de processamento) e CLDC (menor poder de processamento). Para que uma aplicação J2ME possa ser executada pelo emulador é necessário o arquivo .JAR, gerado por meio da compilação da aplicação. As bibliotecas de classes apresentaram semelhanças quanto aos componentes que às mesmas possuem. O objetivo da biblioteca de classes do .NET CF é similar ao objetivo das configurações do J2ME, porém, a diferença é que a biblioteca de classes da .NET CF não incluem especificações de máquina 57 virtual. A .NET CF engloba dispositivos com maior e menor poder de processamento, porém, os componentes requeridos por aplicações com um poder maior de processamento não são os mesmos usados por dispositivos com menor poder de processamento, esta característica implica dizer que a plataforma .NET CF torna o desenvolvimento de aplicações para dispositivos de pequeno porte muito caro, pelo fato de dispor de especificações desnecessárias para o desenvolvimento destas aplicações. Ao contrário da .NET CF, a J2ME possui dois tipos de configurações que definem as características dos dispositivos móveis, a CDC e a CLDC. A CDC engloba dispositivos com maior poder de processamento, e dispõe de componentes específicos para esta característica de dispositivo. Os componentes apresentados da configuração CLDC, englobam dispositivos com menor poder de processamento, configuração esta usada como exemplo neste trabalho. O uso de Web Services pelas aplicações para dispositivos móveis é interessante do ponto de vista tecnológico e econômico, uma vez que estas aplicações não se preocupam em mudar plataformas de desenvolvimento, sistemas operacionais e linguagem de programação para se adaptarem aos serviços oferecidos pelos Web Services. Pois, os Web Services independem de plataformas e os serviços oferecidos são garantidos pela interoperabilidade. A realização deste trabalho permitiu demonstrar as principais características das plataformas .NET Compact Framework e J2ME no desenvolvimento de aplicações para dispositivos móveis, o uso da tecnologia Web Services pelas plataformas .NET CF e J2ME. Além de demonstrar os recursos, foi criada uma aplicação J2ME CLDC/MIDP, permitindo exemplificar as funcionalidades da plataforma J2ME. O desenvolvimento da aplicação não apresenta grandes dificuldades, sendo bastante semelhante ao desenvolvimento de aplicações desktop e Web. Através dos estudos comparativos realizados pôde-se analisar que as plataformas .NET CF e J2ME apresentam características semelhantes e divergentes em relação ao desenvolvimento de aplicações para dispositivos móveis, como ferramentas, ambiente de execução, linguagens, suporte a Web Services, entre outras características. Ao comparar as duas plataformas, a J2ME mostra uma vantagem competitiva em relação a .NET CF, visto que a primeira 58 coisa que uma empresa analisa ao adotar um produto é a redução dos gastos com desenvolvimento. A J2ME oferece mais opções de ferramentas livres, código aberto e portabilidade, por outro lado, a plataforma .NET CF foca em produtividade e um ambiente de desenvolvimento integrado. Assim, a partir dos estudos realizados neste trabalho, foi possível identificar, analisar e escolher qual das plataformas de desenvolvimento são mais viáveis no desenvolvimento de aplicações para dispositivos móveis, tanto para uso comercial quanto pessoal. 59 REFERÊNCIAS BIBLIOGRÁFICAS (ALCÂNTARA & INDRUSIAK, 2001) ALCÂNTARA, Giuliana; INDRUSIAK, Leandro. Wireless Java. 2001. Disponível em: <http://www.wirelessbrasil.org/wirelessbr/colaboradores/indrusiak/wirelessjava.html> (ALECRIM, 2004) Máquina Virtual Java (Java Virtual Machine). Disponível em: < http://www.infowester.com/jvm.php> (ALMEIDA, 2005) ALMEIDA, Leandro Batista. Programação MIDP em J2ME. Junho, 2005. Disponível em: <http://www.enterpriseguys.com/Artigos.aspx?ColunistaID=18&id=68> (AVELINO, 2004) AVELINO, Jones. Consumindo um Web Service através de uma Aplicação ASP.NET para Dispositivos Móveis. 2004. Disponível em: <http://www.linhadecodigo.com.br/artigos.asp?id_ac=686&pag=4> (BURÉGIO, 2003) BURÉGIO, Vanilson André de Arruda. Desenvolvimento de Aplicações para Dispositivo Móveis com .Net. Trabalho de Graduação Universidade Federal de Pernambuco Graduação em Ciência da Computação Centro de Informática. Agosto, 2003. Disponível em: <http://www.cin.ufpe.br/~tg/2003-1/vaab> (CARDOSO, 2005) CARDOSO, Jorge. Java para Telemóveis – MIDP 2.0. Abril, 2005. Disponível em: <http://livromidp.jorgecardoso.org/conteudos.php> 60 (DUKE, 2003) DUKE. Linguagem Java. Junho, 2003. Disponível em: <http://www.infowester.com/lingjava.php> (FONSECA, 2002) FONSECA, Jorge Cavalcanti. Portando a KVM. Trabalho de Conclusão de Curso (Graduação em Ciências da Computação) – Centro de Informática, Universidade Federal de Pernambuco, Recife, 2002. Disponível em: <www.cin.ufpe.br/~tg/2002-1/jcbf.doc> (GALVIN, 2004) GALVIN, Deleon. Protótipo de sistema de CRM para dispositivos móveis utilizando a tecnologia .NET. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) – Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau, 2004. Disponível em: <www.inf.furb.br/~pericas/orientacoes/CRMPDA2004.pdf> (GLOSSÁRIO, 2006). GLOSSÁRIO. API. Disponível em: <http://gigaflops.tripod.com/page/glossario/A/api.html> (GUMZ, 2005) GUMZ, Rafael Araújo. Protótipo de um sistema gerador de interfaces gráficas para testes de Java Web Services. Monografia de PósGraduação (Pós-Graduação em Desenvolvimento de Aplicações para WEB) Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau, 2005. (HADDAD, 2002) HADDAD, Renato. Aplicações móveis para telefones celulares com ASP.NET. 2002. Disponível em: <http://www.microsoft.com/brasil/msdn/tecnologias/movel/mobilidade_aspnet.asp> (JUNIOR, 2006) JUNIOR, Almir Farias Rivas. .NET Framework e CLR – Visão Geral. Fevereiro, 2006. Disponível em: <http://www.juliobattisti.com.br/tutoriais/almirrivas/vbdotnet001.asp> (MCHUGH, 2003) MCHUGH, Jeff. KSOAP. Agosto, 2003. Disponível em: <http://ksoap.objectweb.org> 61 (MIRANDA, 2004) MIRANDA, Luiz Henrique. Introdução ao mundo móvel. Maio, 2004. Disponível em: <http://www.devgoiania.NET> (MSDN, 2003) .NET Framework, dezembro de 2005. Disponível em: <http://www.microsoft.com/brasil/msdn/Tecnologias/netframework/Default.mspx> (NETO, 2003) NETO, Agostinho Campos. . Web Services em Java com Axis: Teoria e Prática. Disponível em: <http://www.guj.com.br/content/articles/webservices/ws.pdf> (OLIVEIRA, 2004) OLIVEIRA, Eric C. M. Web Services: Java e XML juntos pela interoperabilidade. Novembro, 2004. Disponível em: <www.linhadecodigo.com.br/artigos.asp?id_ac=378 > (PINHEIRO, 2003) PINHEIRO, Christiano. J2ME - Java para os portáteis. Novembro de 2003. <http://www.imaster.com.br/artigo.php?cn=1539&cc=19> (SANTOS, 2003) SANTOS, Michael Schuenck. Utilização de Web Services na plataforma .NET para a criação de um aplicativo visualizador de notícias para dispositivos móveis. Trabalho de Conclusão de Curso do curso de Sistemas de Informação, Centro Universitário Luterano de Palmas, 2003. (SCHMITT, 2004), Arno José Júnior. Protótipo de front end de controle de acesso usando J2ME. Trabalho de Conclusão de Curso (Bacharelado em Ciências da Computação) - Centro de Ciências Exatas e Naturais, Universidade Regional de Blumenau, Blumenau, 2004. Disponível em: <www.inf.furb.br/interno.php?secao=504> (SILVA, 2006) SILVA, Katia Gomes. Programação para Dispositivos Móveis com a Plataforma .Net. Trabalho de Estágio do curso de Sistemas de Informação, Centro Universitário Luterano de Palmas, 2003. 62 (SILVA, 2001) SILVA, Wellington João da. Tecnologia Java para Sistemas Embarcados. Trabalho de Graduação em Ciência da Computação. Julho, 2001. Disponível em: <http://www.cin.ufpe.br/~tg/2001-1/wjs.doc> (SILVEIRA, 2003) SILVEIRA, I. F. Linguagem Java: Java, das torradeiras à Internet. Junho, 2003. Disponível em: <http://www.infowester.com/lingjava.php> (SOAP, 2003) SOAP Version 1.2 Part 0: Primer. Novembro, 2003. Disponível em: <http://www.w3.org/TR/SOAP> (SUN, 2003) Tutorial Java Web Service. Março, 2003. Disponível em: <http://java.sun.com/webservice/docs/1.6/tutorial/doc> (SUN, 2004) Java Technology. Outubro, 2004a. Disponível em: <http://java.sun.com/javaee/> ______. Java 2 Platform, Micro Edition. Outubro, 2004b. Disponível em: <http://java.sun.com/j2me/>. ______. What's New in MIDP 2.0. Outubro, 2004c. Disponível em: <http://developers.sun.com/techtopics/mobility/midp/articles/midp20/> (SUN, 2005) Introduction to Java 2 Platform Micro Edition and KVM. 2005a. Disponível em: <http://www.sun.java.com/products/cldc/wp/KVMwp.pdf> ______. Connected, Limited Device Configuration and Mobile Information Device Profile. 2005b. Disponível em: <http://:java.sun.com/j2me> (UDDI, 2003) UDDI.org. UDDI.org. 2003. Disponível em: <http://www.uddi.org> (XML, 2003) Extensible <http://www.w3.org/XML/> Markup Language. 2003. Disponível em: 63 (WAP, 2004) WAP (Wireless Aplication Protocol). Dezembro, 2005. Disponível em: < http://www.gta.ufrj.br/~granato/WAP2001.html > (WSDL, 2003) Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language. World Wide Web Consortium, Novembro, 2003. Disponível em <http://www.w3.org/TR/wsdl20/> (YUAN, 2003) YUAN, Michael Juntao. Let the Mobile Games Begin. Maio, 2003. disponível wireless.html> em: <http://www.javaworld.com/javaworld/jw-05-2003/jw-0516-