Instituto Superior de Engenharia do Porto



Documentos relacionados
Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Uma Introdução ao. Computação Móvel (MAC5743/MAC330) Prof. Alfredo Goldman Monitores: Rodrigo Barbosa Daniel Cordeiro

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Programação de Computadores - I. Profª Beatriz Profº Israel

UM FRAMEWORK PARA DESENVOLVIMENTO DE

Java ME e suas principais tecnologias de conectividade. Gracieli Begia Mateus

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem

Aspectos técnicos do desenvolvimento baseado em componentes

Acronis Servidor de Licença. Manual do Utilizador

Introdução à Linguagem Java

Introdução aos Sistemas Operativos

Engenharia de Software Sistemas Distribuídos

Programação para Dispositivos Móveis. Prof. Wallace Borges Cristo

5. Métodos ágeis de desenvolvimento de software

ZSRest. Manual de Configuração. CheckOutPDA. V2011-Certificado

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Interface Homem Máquina para Domótica baseado em tecnologias Web

Hardware & Software. SOS Digital: Tópico 2

Linguagem de Programação Introdução a Linguagem Java

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Programação Orientada a Objetos

Benefícios Aumento de produtividade; Sincronização directa e sem problemas; Muito fácil de utilizar.

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Curso de Instalação e Gestão de Redes Informáticas

Programa de Instalação do Lince GPS

CURSO DE PROGRAMAÇÃO EM JAVA

Sistemas Operacionais

Optimização de um Mundo Virtual

O aumento da força de vendas da empresa

5 Mecanismo de seleção de componentes

Servidores Virtuais. Um servidor à medida da sua empresa, sem investimento nem custos de manutenção.

Universidade da Beira Interior

gettyimages.pt Guia do site área de Film

Modelo Cascata ou Clássico

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

ESTUDO DE CASO WINDOWS VISTA

Suporte Técnico de Software HP

Mobile Business. Your sales on the move.

Departamento de Sistemas e Informática. Licenciatura em Engenharia Informática Industrial EDP

Manual de Operação Aplicativo ClickIt

Gestão do Risco e da Qualidade no Desenvolvimento de Software

PHC dteamcontrol Externo

Guia Rápido de Vodafone Conferencing

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

VM Card. Referência das Definições Web das Funções Avançadas. Manuais do Utilizador

Manual do Utilizador

Escola Superior de Tecnologia de Setúbal. Projecto Final

Programa de Atualização de Pontos do Lince GPS

Relatório de Progresso

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

Análise de Sistemas. Conceito de análise de sistemas

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Guia de telemóveis, tarifários e serviços Empresas e Profissionais

SISTEMAS OPERACIONAIS

DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004)

Pesquisa e organização de informação

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Manual do GesFiliais

Utilização do SOLVER do EXCEL

Benefícios Aumento de produtividade; Sincronização directa e sem problemas; Muito fácil de utilizar.

Desenvolvimento Web TCC Turma A-1

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

PHC dteamcontrol Interno

Virtualização e Consolidação de Centro de Dados O Caso da UTAD António Costa - acosta@utad.pt

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Itinerários de Ônibus Relatório Final

PHC dcontroldoc. O acesso a diversos tipos de ficheiros

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Entendendo como funciona o NAT

Java. para Dispositivos Móveis. Thienne M. Johnson. Novatec. Desenvolvendo Aplicações com J2ME

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

Capítulo 8. Software de Sistema

Desenvolvendo Websites com PHP

Programação de Computadores II TCC Turma A-1

Rock In Rio - Lisboa

Arquitectura de Sistemas Computacionais

Organizar a estrutura do site

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Escola Secundária Eça de Queiroz

Marcus Vinicius Cruz Xavier. Rascunho do trabalho de conclusão de curso

DIRECÇÃO REGIONAL DE EDUCAÇÃO DO ALGARVE Escola Básica Doutor João Lúcio

PHC Serviços CS. A gestão de processos de prestação de serviços

Procedimentos para a divulgação de eventos no site da ECUM

Aula 03-04: Modelos de Sistemas Distribuídos

Figura 01 Kernel de um Sistema Operacional

PHC Pocket Encomendas

1. NÍVEL CONVENCIONAL DE MÁQUINA

Java 2 Micro Edition (J2ME)

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Transcrição:

Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática Tecnologia Java Aplicada a Telemóveis Trabalho realizado no âmbito da disciplina de Projecto, do 5º ano da licenciatura de engenharia informática. Aluno: José Filipe Soeiro Teixeira Orientador: Eng.º Luís Pinho Porto, 2003

Tecnologia Java aplicada a telemóveis II

Tecnologia Java Aplicada a Telemóveis Realizado por: José Filipe Soeiro Teixeira Orientador ISEP: Eng.º Luís Pinho Data de realização: Agosto, 2003 III

Tecnologia Java aplicada a telemóveis IV

Índice ÍNDICE...V AGRADECIMENTOS...VII 1. INTRODUÇÃO...1 2. TELEMÓVEIS E TECNOLOGIA...3 2.1.AUDIO...3 2.1.1. Sons polifónicos...3 2.1.2. Leitores de MP3...4 2.2. VÍDEO...4 2.2.1. Captura de Imagens...4 2.2.2. Display...5 2.3. MEMÓRIA...6 2.4. SOFTWARE...6 2.4.1. Exemplos...8 2.4.2. Suporte...10 3. JAVA...11 3.1 CONCEITOS BÁSICOS...12 3.1.1 A linguagem de programação...12 3.1.2 A plataforma...15 3.2 J2SE / J2EE / JAVA CARD...16 3.3 J2ME...18 3.3.1 Arquitectura do J2ME...18 3.3.1.1. Configuração...19 3.3.1.2. Perfil...21 3.3.2 Connected Limited Device Configuration...23 3.3.2.1. CLDC Java Virtual Machine...23 3.3.2.2. Virtual Machine e especificações de linguagem...24 3.3.2.3. Carregamento de classes...26 3.3.2.4. Considerações de segurança...26 3.3.2.5. Compilar e correr código com KVM...29 3.3.3 O Mobile Information Device Profile e MIDlets...36 3.3.3.1. MIDP...36 3.3.3.2. Requisitos de hardware do MIDP...37 3.3.3.3. Requisitos de software do MIDP...38 3.3.3.4. A plataforma MIDP...39 3.3.3.5. MIDlets e MIDlet suites...40 3.3.3.6. Segurança nas MIDlets...41 3.3.3.7. MIDlet packaging...42 3.3.3.8. Ciclo de vida e ambiente de execução das MIDlets...44 4. ALTERNATIVAS AO J2ME...51 4.1. EXECUTION ENGINE (EXEN)...52 4.2. MOPHUN...53 4.3. WIRELESS GRAPHICS ENGINE (WGE)...54 4.4. BINARY RUNTIME ENVIRONMENT FOR WIRELESS (BREW)...55 4.5. SYMBIAN OS...56 V

Tecnologia Java aplicada a telemóveis 5. QUESTÕES FUNDAMENTAIS AO DESENVOLVIMENTO PARA TELEMÓVEIS...59 5.1. MEMÓRIA...59 5.2. PROCESSADOR...59 5.3. DISPLAY...60 5.4. SOM...61 5.5. INPUT...61 5.6. SEGURANÇA...61 5.7. FUNCIONALIDADE...62 5.8 INSTALAÇÃO...62 6. FERRAMENTAS PARA O DESENVOLVIMENTO DE APLICAÇÕES...63 6.1. J2SE SDK...63 6.2. J2ME WIRELESS TOOLKIT...64 6.2.1. Default Device Selection...65 6.2.2. Documentation...65 6.2.3. KToolbar...66 6.2.4. OTA Provisioning...84 6.2.5. Preferences...84 6.2.6. Run MIDP Application......84 6.2.7. Utilities...86 6.3. EDITOR JAVA...86 7. DESENVOLVIMENTO...87 7.1. HELLO WORLD...89 7.2. PRINCÍPIOS BÁSICOS...91 7.3. DESENVOLVIMENTO DE UMA MIDLET...94 8. CONCLUSÃO...117 9. BIBLIOGRAFIA...119 10. ANEXO...123 11. ÍNDICE DE FIGURAS...129 12. ÍNDICE DE TABELAS...131 VI

Agradecimentos Existem algumas pessoas sem as quais não teria sido possível a realização deste projecto e, por isso, merecem um especial agradecimento. Quero agradecer em primeiro lugar à minha Mãe e à minha Avó (adorovos) que, apesar de infelizmente, já não estarem entre nós, sempre me apoiaram no decurso deste projecto e, de certeza, ainda estão comigo. Quero também agradecer ao meu Pai (também te adoro) que me apoiou em tudo, especialmente nos momentos mais difíceis. Um agradecimento especial à Ana, que está sempre comigo e me aturou durante este tempo todo (um enorme beijinho para ti!). Um abraço para os meus amigos, com quem posso contar para tudo! Obrigado Samuel (pelas ideias), Rui Les Matos, Wilson Bizu Carvalho, Nuno Presi Soares, Ana Timon Azevedo, Aníbal Flintstone Couto, Luís Viagra Leal, Leandro Julieta Castro, Daniel Spielberg Martinho, Victor, Romeu, Mário, Nuno e o resto do pessoal do ISEP que me apoiou e, mesmo não notando, ajudou à realização deste projecto. Quero agradecer também ao meu orientador Luís Pinho que foi uma ajuda fundamental em todas as formalidades necessárias ao sucesso deste projecto. Para finalizar, como de certeza que me esqueci de alguém, quero agradecer a essa pessoa e pedir desculpa pelo esquecimento. Obrigado! Este projecto é dedicado à minha Mãe e à minha Avó. VII

Tecnologia Java aplicada a telemóveis VIII

1. Introdução Nestes últimos anos, tem-se vindo a observar uma enorme evolução no campo das novas tecnologias, nomeadamente na área das telecomunicações. O aparecimento do telemóvel foi revolucionário, e alterou radicalmente o modo de estar e de pensar de milhares de pessoas que possuem e até dependem deste pequeno aparelho. Desde a viragem do milénio, o telemóvel tem evoluído a uma velocidade estonteante e é agora muito mais do que um simples meio de comunicação. Os grandes telefones portáteis com um pequeno visor monocromático onde apenas se escreviam números, transformaram-se em pequenos aparelhos dotados de uma grande capacidade de memória, destinados às mais diversas operações, desde captura de imagens ou filmes, até leitores de MP3 e, mais recentemente, consola de jogos. O telemóvel é agora uma ferramenta de trabalho e lazer com grandes potencialidades, para a qual se consegue antever um futuro muito promissor. Porém, uma grande evolução tecnológica tem que ser acompanhada por uma evolução a nível de software de modo a que seja possível tirar partido de todas as capacidades desta nova ferramenta de trabalho. O recente aparecimento de telemóveis que suportam linguagens de programação de alto nível, nomeadamente Java, vem fundamentar esta teoria. Este suporte vem alargar consideravelmente as potencialidades deste aparelho. Novos programas ou jogos podem ser desenvolvidos e facilmente inseridos no telemóvel. Em comparação com outros aparelhos portáteis como PDAs ou consolas de jogos, o telemóvel tem inúmeras vantagens. As pessoas habituaram-se a levar o telemóvel para todo o lado, ao contrário do que acontece com outros dispositivos e, por isso, é muito mais confortável ter todas as funcionalidades necessárias aí incluídas. Num futuro próximo, qualquer pessoa poderá consultar a sua agenda, navegar na internet ou jogar um jogo, enquanto toma café ou espera numa fila, apenas utilizando o seu telemóvel que anda sempre consigo. O objectivo deste documento é dar a conhecer o estado actual das tecnologias móveis de comunicação, as suas verdadeiras potencialidades e o modo de as explorar. Só através do conhecimento das tecnologias e desenvolvimento de software é possível tirar partido das funcionalidades que os telemóveis têm actualmente para oferecer. Ao longo deste documento, no capítulo 2 irão ser ilustradas as características principais dos telemóveis mais actuais, como capacidade de memória, número de cores ou resolução suportada. No capítulo 3 será abordada a linguagem Java como linguagem principal para o desenvolvimento de aplicações destinadas a este tipo de plataformas móveis. Neste capítulo, será feita uma distinção entre a linguagem Java normal (J2SE), que é utilizada em inúmeras aplicações para computador, e a sua versão micro que se destina a plataformas móveis, como é o caso dos telemóveis. 1

Tecnologia Java aplicada a telemóveis No capítulo 4, será feita uma breve referência a outras linguagens existentes que, em alternativa ao J2ME, também podem ser utilizadas para desenvolver aplicações destinadas a telemóveis. O 5º capítulo faz uma abordagem a algumas questões fundamentais que o programador deve ter em conta quando programa para esta plataforma. Mais adiante, no capítulo 6, será feita uma análise ás ferramentas necessárias para o desenvolvimento de aplicações em J2ME para telemóveis. É importante conhecer as aplicações utilizadas, de modo a optimizar e toda a fase de desenho e programação de aplicações. Por fim, no capítulo 7, será descrito passo a passo todo o processo de desenvolvimento de uma pequena aplicação J2ME (jogo), desde a sua criação utilizando as ferramentas adequadas, até à sua instalação, passando por diversos exemplos de codificação das características mais importantes de uma aplicação deste tipo. Todo o código referente à aplicação desenvolvida no capítulo 7, será disponibilizado em anexo. 2

2. Telemóveis e tecnologia Actualmente quando alguém quer comprar um telemóvel tem uma enorme variedade de marcas e modelos à escolha, cada um com características diferentes desde o seu formato, até à sua memória ou número de cores do ecrã. A gama de telemóveis varia desde o mais barato que serve apenas para telefonar e escrever mensagens (Nokia 3310,...) até ao mais caro, topo de gama com câmara de vídeo incorporada, ecrã a cores, Bluetooth e suporte para linguagens de programação de alto nível, como J2ME (Nokia 3650,...). Os telemóveis mais actuais disponibilizam um enorme leque de capacidades para uso do consumidor. Agora, para além de comunicar, é possível gravar vídeo e tirar fotografias com o telemóvel, navegar na internet, ouvir música ou mesmo jogar. Estas são algumas das tecnologias mais recentes que se podem encontrar nos telemóveis: 2.1.Audio A componente audio dos telemóveis foi a primeira a ser explorada. Desde já há algum tempo que os telemóveis têm variados tipos de toques para todos os gostos. No entanto, a evolução a este nível continua e, nos últimos anos, apareceram os toques polifónicos e os leitores de MP3. 2.1.1. Sons polifónicos Esta tecnologia permite aos telemóveis um nível sonoro bastante melhorado. Isto é possível através do uso de 16, 32 ou mais canais em vez de apenas 1, como acontece nos telemóveis mais antigos. Deste modo, é possível ouvir o som de diversos instrumentos diferentes ao mesmo tempo, elevando assim a sua qualidade. É importante ter em conta este facto quando se programa para um telemóvel. No caso da criação de um jogo (que é actualmente o mais habitual...), é possível separar a musica de fundo dos efeitos sonoros. Aqui está uma lista de telemóveis que suportam toques polifónicos: Marca Modelos Motorola C330, C350, T720I,... Nokia 3510, 3650, 5100, 7650,... Panasonic GD700, GD87, GU87,... Samsung SGH-X400(40), SGH-V200(40),... Sony Ericsson P800, T310(32), T610(32),... Tabela 2. 1 - Toques Polifónicos

Tecnologia Java aplicada a telemóveis 2.1.2. Leitores de MP3 Por outro lado, temos os telemóveis que funcionam como leitor de MP3. Nestes aparelhos, é possível armazenar uma quantidade variável de musicas no formato MP3, dependendo da qualidade de gravação e da memória do aparelho. 2.2. Vídeo Esta componente só há relativamente pouco tempo é que começou a sofrer alterações. Inicialmente, um telemóvel servia apenas para telefonar e continha um visor monocromático, o que era suficiente para as suas funcionalidades. Actualmente já não é bem assim... Quando se fala da componente vídeo num telemóvel, fala-se de captura de vídeo ou imagens, e da resolução, tamanho e número de cores suportadas pelo ecrã. Estas são características cada vez mais importantes a ter em consideração, quando se pensa em adquirir um telemóvel. 2.2.1. Captura de Imagens No que diz respeito à captura de imagens, não se pode considerar um factor de muita importância para a programação, pois a maioria dos programas não necessita de câmara digital. De qualquer forma, a lista que se segue indica alguns dos telemóveis mais recentes que suportam esta tecnologia. Marca Modelo Tipo de câmara Resolução Captura de vídeo Nokia 7650 Incorporada 640x480 Sim (por software) Nokia 3650 Incorporada 640x480 Sim Nokia 6600 Incorporada 640x480 Sim Nokia 6650 Incorporada 640x480 Sim Panasonic GU87 Incorporada 132x176 Não Samsung SGH-V200 Incorporada 640x480 Não Siemens SL55 Incorporada 640x480 Não Sony Ericsson T310, Como 640x480 Não T300 acessório Sony Ericsson T610 Incorporada 288x352 Não Sony Ericsson P800 Incorporada 640x480 Não Tabela 2. 2 - Captura de imagens/vídeo Note-se porém, que a programação destinada a este tipo de plataformas moveis está ainda a dar os primeiros passos e tudo indica que futuramente se faça uso das capacidades de captura de vídeo para o desenvolvimento de programas, por exemplo, de videoconferência ou até mesmo de entretenimento. 4

Telemóveis e tecnologia A grande popularidade das câmaras digitais nos telemóveis, irá certamente despertar o interesse de muitos programadores que tentarão tirar o melhor partido desta tecnologia. 2.2.2. Display Este é um dos factores mais importantes a ter em conta quando se programa para um telemóvel. É necessário ter em atenção a resolução, o tamanho do ecrã e mesmo a quantidade de cores suportada varia, o que quer dizer que um determinado programa pode funcionar apenas num determinado modelo de telemóveis, ou pode ser mais genérico e adaptar-se a um leque mais variado de modelos. Actualmente a grande maioria dos programas desenvolvidos para telemóveis são jogos, e como tal, possuem uma elevada componente visual. O grafismo deste tipo de aplicações é muito importante e, se por um lado um jogo fica melhor quando desenvolvido para uma mais alta resolução e um elevado número de cores, por outro lado, isto pode limitar a sua compatibilidade e restringi-lo a um ou dois modelos disponíveis no mercado. Segue-se uma lista das características do display de alguns dos telemóveis mais recentes. Marca Modelo Resolução Cores Nokia N-Gage 176x208 px 4,096 Nokia 7650 176x208 px 4,096 Nokia 6600 176x208 px 65,536 Nokia 3650 176x208 px 4,096 Nokia 6800 128x128 px 4,096 Nokia 5100 128x128 px 4,096 Panasonic GU87 132x176 px 65,536 Panasonic X70 132x176 px 65,536 Samsung SGH-X400 128x160 px 65,536 Samsung SGH-V200 128x160 px 65,536 Samsung SGH-C100 128x128 px 65,536 Samsung SGH-S200 128x144 px 65,536 Samsung SPH-N270 128x160 px 65,536 Samsung SPH-A500 128x160 px 4,096 Siemens SL55 101x80 px 4,096 Sony Ericsson T310 101x80 px 256 Sony Ericsson T610 128x160 px 65,536 Sony Ericsson P800 208x320 px 4,096 Tabela 2. 3 - Características do display Desta extensa lista, presta-se especial atenção ao Nokia N-Gage que se apresenta não só como um telemóvel mas, principalmente, como uma consola de jogos, tendo já feito referência a alguns jogos de nome já conhecido ( Tomb Raider, Sonic,...) desenvolvidos pela Sega especialmente para o N-Gage. 5

Tecnologia Java aplicada a telemóveis 2.3. Memória Outra característica muito importante a ter em conta é a memória disponível no telemóvel, para os programas desenvolvidos. Actualmente, estes aparelhos possuem uma memória muito escassa o que dificulta a programação e limita a qualidade dos programas. Por isso, é necessário ter em consideração a capacidade de memória do telemóvel para o qual se pretende desenvolver uma aplicação. Existem três tipos de memória a ter em atenção: a memória de armazenamento, a memória de execução e o tamanho máximo dos ficheiros JAR. Memória de armazenamento - A memória de armazenamento limita o tamanho máximo disponível para o programa. Esta é a memória onde o programa desenvolvido fica alojado. Alguns telemóveis suportam o uso de cartões de memória externos para aumentar a sua capacidade. Memória de execução Esta é a memória utilizada em tempo de execução por uma aplicação, ou seja, é a capacidade máxima de memória que uma aplicação pode utilizar durante a sua execução. Ficheiros JAR Esta memória define o tamanho máximo suportado para os ficheiros JAR. Note-se que um ficheiro JAR é um ficheiro comprimido que contém código e é muitas vezes utilizado como forma de reduzir o tamanho de uma aplicação, o que é muito útil no caso da programação para este tipo de suporte. As capacidades de memória de alguns dos telemóveis mais propícios ao desenvolvimento de programas, encontram-se na seguinte tabela: Marca Modelo Armazenamento Execução Ficheiros JAR Nokia N-Gage 4MB+MMC (memory cards) 2.8MB 4MB Nokia 7650 4MB 1.4MB 4MB Nokia 6600 6MB+MMC 3MB (não disponível) Nokia 3650 3.4MB+MMC 1.4MB 4MB Nokia 6800 5.2MB 200KB 64KB Nokia 5100 725KB 200KB 64KB Tabela 2. 4 - Capacidades de memória Embora seja fundamental que um programador saiba as características de memória do telemóvel para o qual se destina uma aplicação a ser desenvolvida, está é ainda uma informação de difícil acesso. Deste modo, só foi possível obter as características de memória, relativas aos telemóveis Nokia, disponibilizadas no site da marca. 2.4. Software O software criado para telemóveis encontra-se actualmente numa fase ainda inicial de desenvolvimento. No entanto, tem-se notado uma rápida evolução neste campo. Todos os dias surgem novos programas destinados a estas plataformas e cada vez mais programadores interessados por esta tecnologia. 6

Telemóveis e tecnologia Existem actualmente diversas plataformas de programação suportadas pelos telemóveis mais recentes, sendo o Java a mais popular e, quando se fala em Java para telemóveis, fala-se em jogos e programas ligados à área de entretenimento. A verdade é que a grande maioria do software que se pode inserir num telemóvel são jogos, desenvolvidos quer por grandes empresas, quer por programadores independentes. Já na industria da informática, os jogos ocupam um lugar de destaque e representam uma parcela considerável das vendas e dos lucros, no que diz respeito a software. Daqui se pode concluir que as novas tecnologias não são só uma ferramenta de trabalho, mas também um instrumento de lazer para que se possa fugir do stresse do dia-a-dia. É por isso natural que nos telemóveis, a área do entretenimento prospere ainda mais. Se pelo ponto de vista do utilizador os jogos são mais apelativos e um óptimo meio para descontrair, para a grande parte dos programadores, desenvolver um jogo é mais motivante e vende-se melhor. Também à semelhança do que acontece com os computadores pessoais, são os jogos que vão tirar o máximo partido de todas as capacidades do aparelho. São estes programas que vão combinar uma elevada resolução de imagem com uma boa qualidade sonora, o que dá a conhecer ao utilizador todas as capacidades do seu telemóvel, e permite ao programador, usar as mais recentes tecnologias no desenvolvimento de aplicações. Além disso, a utilidade de outro tipo de ferramentas num telemóvel, como uma folha de cálculo, uma base de dados ou um processador de texto, é bastante questionável. O aparecimento de alguns modelos de telemóveis como o SGH- X400 da Samsung e o N-Gage da Nokia vêm reforçar a ideia de que os jogos têm uma crescente importância neste meio. O N-Gage, mais do que um telemóvel é já considerado uma consola capaz até de rivalizar num futuro próximo com o já conhecido Game Boy. Para este caso, a Nokia Figura 2. 1 - Nokia N-Gage assumiu uma parceria com a Sega que produzirá jogos de grande qualidade ( Sonic, Tomb Raider,...) para esta consola/telemóvel. Em seguida, serão mostrados alguns exemplos de software que se pode obter para as diversas plataformas suportadas pelos telemóveis mais recentes. 7

Tecnologia Java aplicada a telemóveis 2.4.1. Exemplos Figura 2. 2 - Imagens de Dragon Island Título: Dragon Island Desenvolvido por: Macrospace Tipo: Jogo Plataforma: J2ME Memória: 65K Preço: 3,00 Telemóveis: Nokia 7650, 3650, 6800, 5100,...; Siemens SL55;... Comentário: Este é um dos mais recentes jogos desenvolvidos para a plataforma J2ME. Como pode ser visto nas imagens, foi feito um bom aproveitamento das 4,096 cores utilizadas, o que também torna este jogo compatível com um maior número de telemóveis. Aqui está um bom exemplo do que se consegue desenvolver para um telemóvel. Figura 2. 3 - Imagens de XFinity Título: XFinity Desenvolvido por: Synergenix Tipo: Jogo Plataforma: Mophun Memória: 118K Preço: 5,00 Telemóveis: Sony Ericsson T300, T310,... Comentário: Este é um exemplo de uma aplicação desenvolvida sobre a plataforma Mophun. A qualidade mantêm-se bastante boa e, existe bastante suporte para Mophun, quer em termos de software disponível, quer em termos de telemóveis. Note-se que este é um jogo mais caro, e ocupa bastante mais memória. 8

Telemóveis e tecnologia Título: Hurricane Space Fighters Desenvolvido por: TTPCom Tipo: Jogo Plataforma: WGE Memória: Não disponível Preço: Não Disponível Telemóveis: Innostream I- 1000,... Figura 2. 4 - Imagens de Hurricane Space Fighters Comentário: Aqui temos uma plataforma que demonstra possuir grandes potencialidades mas, encontrar uma aplicação desenvolvida para Wireless Graphics Engine, revela-se uma tarefa quase impossível. Além da falta de software, existem ainda poucos telemóveis a suportar WGE. Título: Crash Bandicoot Desenvolvido por: In-Fusio Tipo: Jogo Plataforma: ExEn Memória: Não disponível Preço: Não Disponível Telemóveis: Panasonic GD67, GD87,... Comentário: O Execution Engine (ExEn) revela-se uma plataforma capaz de produzir bons resultados. Apesar disso, existe alguma dificuldade de encontrar Figura 2. 5 - Imagens de Crash Bandicoot software desenvolvido para ExEn. Também se nota alguma escassez de telemóveis a suportar esta plataforma. Título: Fantom Overdrive Desenvolvido por: Overloaded Tipo: Jogo Plataforma: Symbian OS Memória: 581K Preço: 5,95 Telemóveis: Nokia 3650, 7650, Sony Ericsson P800,... Comentário: Embora não tenha a popularidade do Java, a plataforma Symbian possui já bastante software disponível, com uma boa qualidade. Além disso, existe já uma vasta gama de telemóveis com este suporte. Figura 2. 6 - Imagens de Fantom Overdrive 9

Tecnologia Java aplicada a telemóveis 2.4.2. Suporte Um dos principais aspectos a ter em conta quando se pretende desenvolver uma aplicação para uma determinada plataforma, é o suporte disponibilizado. Antes de se começar a desenvolver, é necessário saber que telemóveis suportam as diversas plataformas existentes, de forma a fazer a opção mais adequada. Aqui está uma pequena lista de telemóveis que suportam as diversas tecnologias. Marca Modelo Plataformas Fujitsu F2051 J2ME, Symbian Innostream I-1000 WGE Motorola V600 J2ME Motorola T725 J2ME Nokia N-Gage J2ME, Symbian Nokia 7650 J2ME, Symbian Nokia 6600 J2ME, Symbian Nokia 3650 J2ME, Symbian Nokia 6800 J2ME Nokia 5100 J2ME Panasonic GU87 ExEn Panasonic X70 J2ME, ExEn Sagem my G-5 ExEn Sagem my X-5 ExEn Samsung SGH-X400 J2ME Samsung SGH-V200 J2ME Samsung SGH-C100 J2ME Samsung SGH-S200 J2ME Siemens SL55 J2ME Siemens U10 J2ME Sony T310 Mophun Ericsson Sony T610 J2ME, Mophun Ericsson Sony Ericsson P800 J2ME, Symbian Tabela 2. 5 Tecnologias suportadas Como se pode observar, o Java ocupa actualmente a maior parcela de mercado, comparativamente com outras plataformas de programação. 10

3. Java Actualmente os telemóveis de ultima geração, associam-se à tecnologia Java, mesmo que não se saiba exactamente o que isso é. A grande quantidade de publicidade feita a esta plataforma tem resultado e, para comprovar, pode-se observar a crescente importância do Java na área das comunicações móveis, e a quantidade de software e suporte existente para esta tecnologia. As campanhas publicitárias feitas aos telemóveis já nos habituaram à palavra Java, falando insistentemente de jogos Java e tecnologia Java, de tal maneira que quando se vai comprar um telemóvel, é normal perguntar ao vendedor: Este modelo suporta Java? Muitas das vezes a resposta é afirmativa e o cliente vai para casa satisfeito por ter adquirido um telemóvel que até ficou um pouco mais caro mas suporta Java. No entanto, a verdadeira pergunta é: Mas afinal o que é o Java? E qual é a vantagem de ter Java no telemóvel? Este documento é destinado pessoas que já possuem algum conhecimento na área da programação e, certamente já estão familiarizados com o conceito Java como linguagem de programação mas, de qualquer maneira existem algumas diferenças quando se programa nesta linguagem para plataformas móveis. Neste capítulo, irá ser feita uma breve referência à linguagem Java e à sua utilização em telemóveis. Quem tenciona desenvolver uma aplicação destinada às mais recentes tecnologias móveis usando esta plataforma deve, em primeiro lugar, saber as características e o modo de funcionamento desta linguagem de programação, em particular da sua versão Micro que se destina exactamente a máquinas com baixa capacidade de memória e processamento (telemóveis).

Tecnologia Java aplicada a telemóveis 3.1 Conceitos básicos O Java é um ambiente de programação que combina uma plataforma específica com uma linguagem de alto nível, muito prática e funcional. 3.1.1 A linguagem de programação O Java é uma linguagem de programação de alto nível, orientada ao objecto e de fácil compreensão. Esta linguagem possui determinadas características que a tornam muito apetecível para programadores que trabalham sobre qualquer plataforma. Podemos então definir o Java como uma linguagem de programação que se distingue pelas seguintes características: Simples O Java é uma linguagem simples e não necessita de treino extensivo de programação para que se consiga obter resultados. Os conceitos básicos do Java são facilmente apreendidos e as ferramentas são intuitivas e facilitam o trabalho do programador. Orientada ao objecto O Java adopta o conceito de objecto, para facilitar e organizar todo o processo de programação. O código passa a ser encapsulado e reutilizável, podendo abstrair o programador de funções mais complexas ou permitir o uso de objectos já desenvolvidos. Podem ser utilizadas librarias externas com código já desenvolvido bem como quaisquer outros objectos que possam ser úteis para a programação de uma aplicação. Arquitectura neutra O Java foi desenhado de forma a poder interagir com diversos sistemas, com diversas arquitecturas distintas e heterogéneas. Para que isto seja possível e para que seja independente da plataforma utilizada, o compilador Java compila o código desenvolvido para uma arquitectura intermédia denominada byte codes, neutra e independente, destinada a transportar o código eficientemente entre diferentes plataformas de hardware e software. Portável A arquitectura neutra utilizada pelo Java, torna-o numa linguagem altamente portável e compatível com diferentes tipos de máquinas ou software. Cada máquina (plataforma) é responsável pela interpretação do código de byte codes, através de uma Java Virtual Machine (JVM). Assim sendo o código desenvolvido em Java pode correr em qualquer plataforma desde que esta possua uma JVM. Distribuída Devido à sua grande portabilidade, o Java consegue estabelecer comunicação entre diversas plataformas distintas o que a torna ideal para a programação distribuída. 12

Java Interpretada O Interpretador Java pode executar byte codes em qualquer máquina para a qual tenha sido portado o sistema. Por outras palavras, num sistema interpretado, como é o caso do Java, a fase de linkagem do programa é simples, incremental e de baixo processamento, tornando os ciclos de desenvolvimento mais rápidos, comparativamente a outras linguagens. Robusta Esta linguagem de programação foi criada tendo em vista o desenvolvimento de software robusto e de confiança. São efectuadas diversas verificações durante as fases de desenvolvimento, compilação e em execução. Além disso, a gestão de memória é encapsulada, feita implicitamente pelo Java, diminuindo drasticamente os erros e facilitando a sua gestão. Um programador pode desenvolver uma aplicação com a confiança de que quaisquer erros serão rapidamente encontrados e resolvidos. Segura O Java foi desenhado para operar em ambientes distribuídos, por isso, foi prestada uma especial atenção ao factor segurança. Deste modo, quaisquer aplicações desenvolvidas estão seguras contra possíveis ataques vindos do exterior. Alta performance Numa linguagem de programação, a performance é sempre importante. No Java, o interpretador pode correr e converter os byte codes em código, sem ter que fazer verificações ao sistema. Algumas empresas estão a tentar desenvolver um compilador de Java para a arquitectura nativa da máquina o que aumentará a performance. Multi-processo O Java suporta programação multi-processo. Num único programa, podem estar múltiplos processos independentes a correr código distinto e continuamente, de uma forma concorrente. Dinâmica A fase de linkagem é dinâmica. As classes desenvolvidas são linkadas apenas quando necessário o que permite que, a qualquer altura, novas classes internas, externas ou até vindas de uma rede, possam ser linkadas com o programa em desenvolvimento. As aplicações desenvolvidas podem assim ser actualizadas em qualquer altura. Garbage Collector Não é necessário fazer qualquer alocação explícita de memória no Java. A memória é alocada quando necessário e recolhida pelo Garbage Collector quando deixa de ser necessária. Ao contrário da maior parte das linguagens de programação, em que um programa pode ser compilado ou interpretado para que possa correr num computador, com Java o programa é compilado e interpretado. Primeiro o compilador traduz o programa para uma linguagem intermédia e independente da plataforma, denominada byte codes. A partir daí, o interpretador é responsável por correr o código desenvolvido em cada plataforma. 13

Tecnologia Java aplicada a telemóveis No caso do Java, o código é compilado apenas uma vez, e interpretado cada vez que é corrido. Figura 3. 1 - Esquema de funcionamento do Java Cada interpretador, quer seja uma aplicação ou um browser que suporte Java applets é uma implementação de uma Java Virtual Machine (JVM) preparada para receber o código em byte codes e corre-lo. É isto que faz com que o Java seja uma linguagem do tipo write once, run anywhere. Uma aplicação pode ser desenvolvida e compilada sobre qualquer plataforma, e depois corrida em cima de qualquer implementação da JVM, independentemente da nova plataforma utilizada. Figura 3. 2 - Portabilidade do Java 14

Java 3.1.2 A plataforma Uma plataforma pode ser descrita como o ambiente de hardware e software onde pode ser corrido um programa. Ao contrario da maior parte das plataformas conhecidas que resultam na combinação de componentes de hardware com software específico, a plataforma Java é baseada apenas numa componente de software que corre em cima de hardware de outras plataformas. A plataforma Java é constituída por dois componentes: Java Virtual Machine (JVM); Java Application Programming Interface (API); Tal como foi já referenciado, o JVM é um interpretador que analisa o código traduzido para byte codes e faz com que possa ser corrido sobre qualquer plataforma. O JVM é portanto toda a base da portabilidade do Java. O Java API (Application Programming Interface) é uma colecção de componentes de software já desenvolvidos que disponibilizam muitas utilidades aos programadores, como por exemplo, um interface gráfico (GUI). A API está agrupada em librarias de interfaces e classes relacionados, que são conhecidas como packages. Os programadores podem assim utilizar livremente quaisquer packages disponibilizados afim de facilitar e optimizar o desenvolvimento de aplicações sobre esta plataforma. O esquema que se segue, mostra a plataforma Java e os seus constituintes: Figura 3. 3 - Constituintes do Java Devido ao uso de um estado intermédio de compilação, onde são gerados os byte codes, a plataforma Java torna-se um pouco mais lenta do que código nativo, contudo, com a utilização de bons compiladores e interpretadores, a performance pode-se aproximar bastante do código nativo sem porém pôr em causa a sua portabilidade. O Java é portanto ideal para trabalhar em diversas plataformas distintas e, por isso, teoricamente, seria apenas necessário desenvolver uma JVM que se pudesse aplicar às diversas plataformas moveis existentes. À primeira vista, o Java adaptar-se-ia perfeitamente como linguagem para programar aplicações destinadas a telemóveis. 15