Java ME e suas principais tecnologias de conectividade Gracieli Begia Mateus Telefones Celulares no Mundo Fonte: UIT e Wireless Intelligence (Ovum/GSM Association) Posição do Brasil no Mundo Principais mercados de celular no mundo Milhões 1 2 3 4 5 6 País China US Rússia Índia Brasil Japão 2004 2005 2006 335 393 461 181 208 233** 74 126 152 48 76 149* 66 86 99,9 91 95 99,8 Vendas de Telefones Celulares no Mundo Milhões Nokia Motorola Samsung Sony Ericsson LG Electronics Outros* TOTAL 2004 207,6 104,5 86,5 42,3 44,4 ­ ­ Fonte IDC 2005 264,9 146 102,8 51,1 54,9 213,1 832,8 2006 347,5 217,4 118 74,8 64,4 197,8 1019,9 Java ME O Java ME é uma versão compacta da linguagem Java, direcionada para o desenvolvimento de software para sistemas e aplicações embarcadas em dispositivos com poder de processamento e armazenamento limitados. Dispositivos Móveis Arquitetura do Java ME Pacotes Opcionais Personal Basis Profile Personal Profile Foundation Profile MIDP CDC CLDC CVM KVM Pacotes Opcionais Perfis Configurações Máquinas virtuais Pacotes Opcionais Máquinas Virtuais Java Podemos considerar a JVM como sendo um computador abstrato definido por uma especificação, normalmente executado a partir de um sistema operacional, e que permite executar código Java em qualquer plataforma. O Java ME dispõe de duas JVM, são elas: KVM (Kilo Virtual Machine) ● CVM (Compact Virtual Machine) ● Configurações As configurações são compostas de uma JVM, um conjunto mínimo de bibliotecas de classes e APIs. Elas fornecem a funcionalidade básica para uma ampla variedade de dispositivos que possuem características similares, como conectividade, memória e processamento. CLDC (Connected Limited Device Configuration) ● CDC (Connected Device Configuration) ● Requisitos para as Configurações Java ME Memória para executar Java Configurações Processadores Memória CLDC 16 bits 128 a 512 Kb 128 Kb CDC 16 ou 32 bits 2 a 16 Mb 512 Kb Memória para alocação em tempo de execução 32 Kb 256 Kb Perfis Os Perfis é um conjunto de APIs e bibliotecas de classe, que possibilita aos desenvolvedores implementarem as aplicações de acordo com as características dos pequenos dispositivos, fornecendo funcionalidades adicionais aos dispositivos de um segmento. No perfil MIDP (Mobile Information Device Profile) há APIs que atendem a diversas necessidades. Dentre elas, merecem destaque as bibliotecas projetadas para a conexão entre sistemas. ● ● MIDP 1.0: http MIDP 2.0: https, além de datagramas, SMS e socketstu GCF (Generic Connection Framework) Na configuração CLDC do Java ME há um framework de conexão denominado Generic Connection Framework (GCF), que está presente no pacote javax.microedition.io. O GCF tem como objetivo adequar os recursos oferecidos pelo Java SE para aplicações que implementam o Java ME. A idéia básica do GCF é ter uma classe, Connector, que possa criar qualquer tipo de conexão, arquivo, http, datagrama etc. Estrutura de conexão genérica – Hierarquia de classes Connection <<Interface>> InputConnection <<Interface>> OutputConnection <<Interface>> DatagramConnection <<Interface>> ConnectionNotFoundException <<class>> StreamConnection <<Interface>> Connector <<class>> (Connection Factory) ContentConnection <<Interface>> HttpConnection <<Interface>> StreamConnectionNotifier <<Interface>> Datagram <<Interface>> Tecnologias de conectividade As principais tecnologias de conectividade e as mais conhecidas do Java ME – MIDP 2.0, são: ● ● ● ● ● HTTP (Hypertext Transfer Protocol) HTTPS (HTTP sobre camada de sockets seguros (SSL)) Datagrama Socket SMS (Short Message Service) HTTP Esse protocolo faz uso da abordagem de pedido/resposta, ou seja, o cliente inicia um pedido para o servidor através de um endereço contido em uma URL, a tarefa do servidor é responder a essa requisição. Esse pedido que será enviado pela rede é composto de três partes: método do pedido, cabeçalho e corpo. A resposta do servidor possui três seções: linha de status, cabeçalho e corpo. A linha de status é o resultado do pedido do cliente. Os valores de retorno estão nessas faixas: 100 a 199: informação; 200 a 299: sucesso; 300 a 399: redirecionamento; 400 a 499: erros do cliente; 500 a 599: erros do servidor. Obtendo uma conexão HTTP: String url = “http://www.webgis.com.br/antares”; HttpConnection hc = null; hc = (HttpConnection) Connector.open(url); HTTPS O HTTPS é o mesmo protocolo HTTP, porém, sendo transportado sobre uma camada de segurança (SSL). Sua comunicação é mais lenta que o HTTP e o processamento no dispositivo móvel aumenta consideravelmente devido aos bytes de controle e à necessidade de processar os algoritmos de criptografia. Obtendo uma conexão HTTPS: String url = “https://www.webgis.com.br/antares”; HttpsConnection hc = null; hc = (HttpsConnection) Connector.open(url); Datagrama Datagrama é um mecanismo de comunicação que envia os pacotes de dados na rede sem se preocupar com a confirmação do seu recebimento pelo destinatário. O cliente forma um pacote datagrama com as informações do destinatário (um endereço na internet e um número de porta) e envia para a rede. Para usar comunicação datagrama: String url = “datagram://localhost:9000”; DatagramConnection dc = null; dc = (DatagramConnection) Connector.open(url); Socket Socket é um canal de comunicação entre dois programas através de uma rede. A idéia básica desse tipo de conexão é trafegar dados entre um cliente e um servidor através de uma conexão contínua. O processo de comunicação é bastante simples, basta o servidor disponibilizar uma porta na rede, então a função do programa cliente é conhecer essa porta disponibilizada e estabelecer a conexão. Exemplo: Servidor de Socket String url = “socket://:4567”; ServerSocketConnection conServSocket = null; conServSocket = (ServerSocketConnection) Connector.open(url); SMS O funcionamento do SMS consiste na abertura de uma conexão para o envio de conteúdo texto ou binário para um dispositivo, em forma de pacotes de dados, sem confirmação de recebimento. Embora seja uma idéia semelhante ao datagrama, o SMS utiliza os números de telefones celulares para comunicação (essa é apenas uma das diferenças existentes). Exemplo: String addr = “sms://:5432”; MessageConnection conn = null; conn = (MessageConnection) Connector.open(addr); SMS: um potencial de oportunidades O SMS foi criado para ser um grande gerador de receita em dados, uma vez que é um serviço disponível e habilitado em praticamente todos os celulares ativos no mercado. No Brasil a composição da receita das operadoras de celular está dividida da seguinte forma: O faturamento das operadoras com transmissão de dados: Brasil – 8% (70% SMS e 30% WAP/GPRS) EUA, Europa e Japão – 20% a 30% Gracieli Mateus Coordenadora do JavaNoroeste de Votuporanga [email protected]