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



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

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

Manual de Operação Aplicativo ClickIt

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

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

Sistemas Operacionais

Agregador de feeds RSS para dispositivos móveis

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

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

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

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

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos

SyncEasy Aplicativo para sincronização de arquivos entre dispositivos móveis e computadores utilizando metadados

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

5 Mecanismo de seleção de componentes

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Acadêmico: Marciane Schotten Prof. Orientador: Ricardo Alencar de Azambuja

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

Como dito anteriormente, a JCP especificou dois grupos para a J2ME conforme as necessidades dos dispositvos, chamadas Configurações:

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

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

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

Orientação a Objetos com Java

Orientação a Objetos

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

1

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Sistemas Operacionais 1/66

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

UM FRAMEWORK PARA DESENVOLVIMENTO DE

Um Driver NDIS Para Interceptação de Datagramas IP

Organização e Arquitetura de Computadores I. de Computadores

Relatorio do trabalho pratico 2

Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.

UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE INFORMÁTICA. Pizzaria Manão

Processos (Threads,Virtualização e Migração de Código)

Instalar o MarkVision

Desenvolvimento de um aplicativo básico usando o Google Android

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

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Laboratório de Redes. Professora Marcela Santos

Automação de Locais Distantes

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

Introdução à Linguagem Java

Java. Marcio de Carvalho Victorino

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

Sistemas Operacionais

Itinerários de Ônibus Relatório Final

Sistemas Distribuídos

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Eduardo Bezerra. Editora Campus/Elsevier

Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Interfaces Dinâmicas e Adaptativas para Celulares

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

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

ESTUDO DE CASO WINDOWS VISTA

O Hardware e o Software do Computador

Collaboration Map Collaboration Map. Figura 6.1: Arquitetura da aplicação

Tutorial Java ME. Deixe o JME surpreender você também! Porque programar com 1 GB de RAM é fácil!! Neto Marin

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

Capítulo 2 Introdução à ferramenta Flash

Orientação a Objetos

Lógica de Programação

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Introdução. Sistemas Operacionais. Introdução. Roteiro (1 / 2) Por que Máquinas Virtuais Existem? Roteiro (2 / 2)

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

Biblioteca Virtual do NEAD/UFJF GOOGLE APPS EDUCATION: FERRAMENTA DE EDIÇÃO, COMUNICAÇÃO E PESQUISA

Programação em Java. Subtítulo

Sistemas Operacionais

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Programação para Internet Orientada a Objetos com PHP & MySQL Instalando e configurando um ambiente de ferramentas PHP e MySQL. Prof. MSc.

Microsoft Project 2003

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Sistemas Operacionais

Comparativo de desempenho do Pervasive PSQL v11

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos

Guia. PDA e SmartPhones. Windows Mobile, Pocket PC e CE.

3 Arquitetura do Sistema

Programação para Web Artefato 01. AT5 Conceitos da Internet

Informática. Informática. Valdir

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 04. Prof. André Lucio

REDES DE COMPUTADORES

Transcrição:

Universidade Federal de Santa Catarina Departamento de Informática e Estatística Curso de Bacharelado em Ciências da Computação Marcus Vinicius Cruz Xavier Rascunho do trabalho de conclusão de curso Título provisório: Adaptação do ambiente de execução Telis para computação móvel Orientação: Luiz Fernando Bier Melgarejo Florianópolis abril de 2006

Resumo Assim como o interesse pelo desenvolvimento de aplicações para Internet explodiu há alguns anos atrás, o interesse pelo desenvolvimento de aplicações para celular está aumentando sensivelmente, e como no caso da Internet, o desenvolvimento de software para celulares requer também um razoável domínio de conceitos e técnicas. Telis é uma linguagem de programação que surgiu anos atrás para simplificar o aprendizado e o desenvolvimento de aplicações para Internet, sem perder seu potencial, e o objetivo deste trabalho é adaptar o ambiente de execução e a linguagem Telis para que seus programas possam ser executados em dispositivos móveis, mais especificamente telefones celulares. Desta forma estudantes de computação sem conhecimento prévio de programação poderão usufruir de um ambiente de facílimo aprendizado para gerar aplicações para telefones celulares, como hoje o fazem os alunos de graduação com suas aplicações para Internet. 2

1. Introdução A rede Internet, tal como evoluiu nos últimos anos, permitiu inúmeros exemplos de trabalho cooperativo à distância. Tecnologias recentes (como Java), abriram novas perspectivas nessa direção, uma vez que possibilitam um ainda maior dinamismo e interação utilizando a rede. Infelizmente, o domínio produtivo dessas novas tecnologias exige um longo tempo de aprendizagem, pela complexidade dos pré-requisitos conceituais envolvidos, sejam aqueles intrínsecos, sejam aqueles relativos ao ambiente de execução e comunicação (Orientação a Objetos, TCP/IP, etc) [http://twiki.edugraf.ufsc.br/bin/view/telis/programandonainternet]. Com o objetivo de diminuir a curva de aprendizado de programação, em especial no ambiente da Internet, surgiu Telis. Desenvolvida pela equipe do Edugraf, laboratório de software educacional UFSC CTC INE, que é coordenada pelo professor Luiz Fernando Bier Melgarejo, esta linguagem de programação baseia-se em antecessores poderosos e simples como Forth e Logo, e mantém características de distribuição e execução semelhantes a Ágora. A idéia de portar a simplicidade e o poder de Telis para o desenvolvimento de aplicações para celular surgiu acompanhando a própria demanda. Telis é utilizada hoje nas primeiras fases do curso de Bacharelado em Ciências da Computação da UFSC, como uma introdução à programação. A idéia básica é que logo na primeira fase o aluno consiga desenvolver e publicar um programa na Internet, despertando assim o seu interesse. Assim, o intuito passa a ser que, logo na primeira fase e sem conhecimento prévio de linguagens e técnicas de programação, um aluno possa desenvolver aplicativos para celulares. Telis oferece segurança e robustez, além de recursos avançados de programação, como reflexão, por exemplo. Os operadores pós-fixos usados em Telis, que a princípio são criticados pela maioria dos programadores experientes, oferecem aos usuários leigos uma certa familiaridade ao uso de algumas calculadoras de bolso. Essas e outras características fazem de Telis uma linguagem propícia a ser usada no aprendizado de programação. As ferramentas utilizadas em Telis são totalmente desenvolvidas em Java o que propicia uma redução no custo de sua adaptação. Mas ainda há um abismo a ser vencido, que é a diferença entre a capacidade computacional dos computadores pessoais e dos dispositivos móveis. Uma aplicação executada em um navegador instalado em um PC dispõe de recursos computacionais em abundância: processadores rápidos, grandes quantidades de memória e de armazenamento, conexões de redes confiáveis, monitores de alta resolução 3

e bilhões de cores. O universo dos celulares é totalmente diferente: processadores lentos, displays pequenos, pouquíssima memória e às vezes nenhuma capacidade de armazenamento. Além destas diferenças, temos que ressaltar ainda a diferença que existe entre a versão completa de Java e a versão disponibilizada para dispositivos móveis, que será vista com mais profundidade mais adiante. 2. Java para celulares A tecnologia Java é composta por três partes distintas: a linguagem Java, a máquina virtual Java (JVM) e as bibliotecas. O conjunto formado por estes componentes é o que caracteriza a tecnologia Java para um determinado ambiente. A comunidade Java através do JCP (Java Community Process), especifica três plataformas para tecnologia Java: Java SE (Standard Edition) voltada para aplicações em computadores pessoais, Java EE (Enterprise Edition) voltada para servidores e Java ME (Micro Edition) voltada para dispositivos móveis. Esta última é a que concerne o desenvolvimento de softwares para celulares e PDAs, e é a plataforma de destino da migração de Telis. A JME, como é conhecida à versão atual da plataforma Java ME, é o conjunto de especificações das tecnologias envolvidas no processo de desenvolvimento, distribuição e execução de softwares em dispositivos móveis em Java: a máquina virtual, as alterações na linguagem Java, as bibliotecas envolvidas no núcleo da linguagem, e as bibliotecas adicionais denominadas Profiles, além de conjuntos de bibliotecas opcionais denominadas optional packages. A especificação do núcleo das tecnologias envolvidas é chamada de configuração. Uma configuração abrange a especificação da máquina virtual, da linguagem, das bibliotecas de núcleo (java.lang.* e java.util.*) e das bibliotecas de entrada e saída (java.io.*) e dos recursos que envolvem segurança, redes e internacionalização. Duas configurações são definidas pela JME: a CDC (Connected Device Configuration) que abrange os PDAs com grande capacidade computacional e a CLDC (Connected Limited Device Configuration) que abrange os dispositivos que possuem recursos escassos, entre eles os telefones celulares, foco deste trabalho. Adiante segue um breve aprofundamento dos recursos citados. 2.1 Máquina Virtual Java (JVM) A JVM (Java Virtual Machine) foi inicialmente projetada para ser executada em dispositivos móveis (PDAs) sob a sigla de KVM (K Virtual Machine). Isto faz com que o esforço atual de migração de Java para dispositivos móveis seja considerado uma volta às raízes. 4

As máquinas virtuais que as empresas disponibilizam em seus aparelhos, seguindo as especificações da CLDC, são chamadas KVM, como as primeiras máquinas desenvolvidas para Java. Para cada configuração, é escolhido um subconjunto de instruções ou todo o conjunto, dependendo da disponibilidade de recursos de cada dispositivo. Desta forma o código interpretado pela JVM não é totalmente intercambiáveis entre plataformas. A CLDC é um subconjunto da CDC que por sua vez é um subconjunto da JVM completa. Entre os recursos eliminados da JMV na CLDC estão: Carregadores de classe definidos pelo usuário (eliminação dos recursos de reflexão) Thread groups and daemon threads TRADUZIR ISSO Finalização de instâncias. Erros e exceções assíncronas. Dessas características que foram reduzidas ou eliminadas, a maior preocupação é quanto à reflexão, uma vez que o interpretador de Telis chama as primitivas e agendas através deste recurso. Duas abordagens foram discutidas: eliminar a reflexão através de uma inversão no fluxo de execução. Criando um compilador Telis que gerasse código Java a partir do código Telis, eliminar-se-ia também a necessidade de um interpretador, otimizando recursos. O outro método discutido foi do fazer do modo tradicional, criando tabelas de métodos e fazendo espalhamento dos nomes, o que tomaria muito menos tempo. 2.2 Core libraries Como citado, a CLDC especifica as bibliotecas do núcleo da plataforma Java. São os pacotes java.lang.*, java.util.* e as bibliotecas de entrada e saída java.io.* As bibliotecas oferecidas são um subconjunto das bibliotecas disponibilizadas na JSE, sendo definido que se uma classe está presente ela deve ser idêntica ou um subconjunto da classe equivalente distribuída na JSE. 5

Nenhum novo recurso pode ser adicionado e a semântica dos métodos e atributos deve permanecer a mesma, se existirem. Além dos subconjuntos da JSE a CLDC possui algumas classes exclusivas, que são referentes ao GCF (Generic Connection Framework). O GCF surgiu na necessidade de homogeneizar a comunicação de dados através dos diferentes meios e protocolos. Suas classes estão definidas no pacote java.,microedition.io.*, e oferecem um framework para desenvolvimento de bibliotecas de comunicação. 2.3 MIDP É um erro bastante comum confundir JME com MIDP. Os desenvolvedores confundem os termos, pois hoje praticamente todo desenvolvimento para celulares em Java é feito sob o MIDP. MIDP (Mobile Information Device Profile) é o primeiro conjunto de bibliotecas (daqui pra frente chamados de profiles) construído e terminado sobre o CLDC, e é praticamente um padrão. Mas como vimos JME é muito mais do que apenas o MIDP. Outros profiles desenvolvidos sobre o CLDC são: KittyHawk, PDAP (extensão do MIDP, ainda não terminado), i-appli (desenvolvido antes do MIDP). Porém, apesar de existirem outros profiles, como já foi dito, MIDP é quase um padrão para este tipo de desenvolvimento e é sobre ele que se pretende portar Telis. MIDP dispõe bibliotecas para os seguintes escopos: Apresentação em monitores de tamanho limitado Meios para leitura de dados e ações de usuários Armazenamento persistente Envio e recebimento de mensagens Comunicação de dados Telefonia sem fio 3.0 A implementação de Telis Telis é totalmente implementada em Java. As aplicações (ou apliques) feitas em Telis são Applets Java que rodam dentro de um navegador que possua uma JVM embutida. O escopo das aplicações Telis é basicamente exibir e movimentar objetos gráficos e colher entradas de usuários, para que possa haver interação. Estes são requisitos típicos de jogos e simuladores, as duas áreas mais exploradas pelos alunos quando estudando Telis. Este parece ser também a principal área de desenvolvimento em celulares, dadas as limitadas capacidades deste tipo de ambiente. 6

Para este fim, de saída gráfica em tela e entrada de dados, Telis utiliza a biblioteca AWT, que não é compatível com a CLDC. No lugar da AWT, todo o código deve ser substituído por classes das bibliotecas disponibilizadas pelo MIDP. É claro que estas são muito mais limitadas que a AWT e este é um dos primeiros desafios a serem vencidos nesta migração. O pacote disponível para interface com usuário é o lcdui em javax.microedition.lcdui. Este pacote sofreu um razoável aperfeiçoamento da versão 1.0 do MIDP para a versão 2.0, chegando mesmo a possuir um pacote especial para desenvolvimento de jogos. Além da interface, como já citado anteriormente, Telis utiliza reflexão para gerar as chamadas das primitivas. Para tratar deste problema, duas abordagens foram propostas: A primeira seria inverter o fluxo da execução do aplique, fazendo um compilador que gere código Java a partir do código do aplique Telis e este código execute as chamadas das primitivas. Este método é eficiente, pois libera todo o ambiente da necessidade de um interpretador e um executor, otimizando uso de memória e processamento. Em compensação é custoso demais, e pode demandar mais tempo que o disponível para a execução do trabalho, e, além disso, exigiria que fossem eliminadas as características de reflexão da própria linguagem Telis. A outra seria a abordagem tradicional de eliminar a reflexão criando uma tabela de espalhamento com os nomes das primitivas associados aos métodos a serem chamados. Esta abordagem tem um custo muitíssimo inferior ao da outra e não exigiria mudanças na linguagem Telis, mas não consumiria ainda mais recursos do que a abordagem atual. Esta abordagem será adotada inicialmente, podendo haver alterações. Como dito anteriormente, a estrutura de um aplique Telis é composta por um interpretador que roda em um applet Java em um navegador. O interpretador carrega o código Telis que está gravado em um arquivo XML. Não há uma biblioteca de parsing XML disponível na JME, mas existem diversas opções de bibliotecas de código aberto que rodam sobre o MIDP. Será necessário escolher uma e adaptar todo o código de leitura dos apliques. Como observamos o trabalho de análise e implementação é extenso e será também compartilhado com outros membros do Edugraf. 7