21 fevereiro 2007

Os brasileiros estão lendo mais?

O que os livros The Servant (O Servidor, em português) e O Monge e o Executivo tem em comum?
Quase tudo, menos o título. Parece incrível mesmo, mas o livro O Monge e o Executivo, do autor James Hunter, que está fazendo o maior sucesso de vendas aqui no Brasil, foi traduzido com um nome diferente do original The Servant. O engraçado é que nem o próprio autor sabia disso, e quando ficou sabendo do sucesso, quase não acreditou que seu livro tinha esse nome por aqui. A revista Época entrevistou Hunter que se diz satisfeito com o sucesso. Veja a reportagem da revista Época. Até ai tudo bem, mas o que me chamou a atenção vem agora.

O livro é acessível economicamente?
O livro custa em média 15,00 R$ e tudo indica que será o campeão de vendas aqui em nosso pais, pois já vendeu mais de 1.3 milhões de exemplares podendo bater o recorde atual, que segundo a revista época, ao consultar especialistas, pertencem ao clássico de Jorge Amado (Capitães da Areia), bem como O Alquimista de Paulo Coelho, ambos com mais de 2 milhões.

Um título criativo pode fazer a diferença nas vendas? Jogada de Markting? Os brasileiros estão lendo mais?

Setenta e cinco por cento dos brasileiros não dominam o exercício da leitura, e mais de 60% não sabem interpretar textos. Especialistas alertam que o hábito tem de começar cedo, ainda na infância.

Educação Os "sem-livro" Fonte: Correio Braziliense, Brasilia, 11 de junho de 2006.

Pesquisa nacional feita com pessoas de 15 a 64 anos, pelo Instituto Ação Educativa/Ibope, aponta que apenas 25% dos brasileiros têm “habilidades mais refinadas” para ler um texto e compreendê-lo. Fonte: Jornal da Unicamp

Somos 180 milhões de pessoas, dessas, tiramos 25% (45 milhões) que segundo pesquisa são as que teriam condições de ler e entender o que foi lido. O problema é que desses 45 milhões de leitores em potencial somente 4.4% é que talvez comprem o livro citado, na melhor das hipóteses, pois assim alcançaríamos a marca dos 2 milhões batendo o recorde novamente. Onde está o restante dos leitores? Talvez comprem outro livro? Há grana para investir em livros? Será que no Brasil é uma questão de cultura e por isso lemos pouco?

20 fevereiro 2007

Introdução a programação para celulares com suporte a Java ME - parte 1

Já tive oportunidades de ministrar cursos sobre a tecnologia Java ME, e desde então, venho querendo publicar dicas sobre o assunto. Pois bem! Apresentarei uma série de recursos que demonstram como desenvolver alguns programas simples e que podem ser potencialmente interessantes para seu aprendizado. No primeiro post do blog farei uma introdução sobre o assunto indicando algumas referências para leituras complementares, nada muito complicado, mas que servem de apóio para entender a tecnologia escolhida: Java ME. Os próximos posts trataremos de exemplos práticos e a sua utilização usando as APIs de Java ME, passando pela codificação dos exemplos e sua configuração nos ambientes apropriados. Depois gradativamente veremos como usar bibliotecas específicas como PIM, Bluetooth, etc., de forma que podemos entender, experimentar e testar tais recursos para usá-los de forma prática, criativa e quem sabe, lucrativa.

Este post faz parte de uma série de artigos técnicos sobre o desenvolvimento de software para celulares. O segundo artigo já foi publicado, confira!

Breve introdução sobre a tecnologia Java ME
É importante observarmos que aplicações Java ME (voltadas para celulares), são bastante limitada com relação ao seus recursos computacionais. A velocidade do processador, a memória e dispositivos de armazenamento são em média baixas. Isso nos leva muitas vezes a re-aprender os paradigmas de desenvolvimento atuais. Por outro lado, existe a tendência natural da evolução do hardware, e consequentemente os recursos computacionais poderão ser melhor aproveitados. Não se pode comparar um PC com um celular, pelo menos ainda não. Num celular tradicional, não dispomos de mouse, nem tão pouco de uma resolução de tela de 1024x768 pixel. Neste sentido, devemos repensar a forma como projetamos esses sistemas. Retomarei esse assunto no próximo post. Veremos agora o que é Java ME.

Java
Micro Edition é uma coleção de recursos da plataforma Java que possibilita desenvolver softwares que podem rodar em dispositivos específicos, tais como celulares. Autores da comunidade da Wikipédia, a Enciclopédia Livre, descreveram uma visão interessante e simplificada sobre Java ME, vejamos:

Java Plataform, Micro Edition (Java ME) ou J2ME É uma tecnologia que nos possibilita o desenvolvimento de software para sistemas e aplicações embarcadas, ou seja, toda aquela que roda em um dispositivo de propósito específico, desempenhando alguma tarefa que seja útil para o dispositivo.

É a plataforma Java para dispositivos compactos, como celulares, PDAs, controles remotos, e uma outra gama de dispositivos. Java ME é uma coleção de APIs do Java definidas através da JCP (Java Community Proccess). A comunidade JCP adotou duas abordagens para especificar as necessidades dos pequenos dispositivos - a sua arquitetura computacional.

Primeiro eles definiram o ambiente de execução Java (do inglês Java run-time environment), e um conjunto de classes básicas, chamadas de core, que operam sobre cada dispositivo. Isso foi denominado Configurações (do inglês Configurations). Uma configuração define a JVM (Java Virtual Machine) para um pequeno e específico dispositivo computacional. Há duas configurações para um dispositivo embarcado, uma para dispositivos com maior capacidade computacional (do inglês High-end consumer devices), denominado CDC (Connected Device Configuration). A outra com menor capacidade computacional (do inglês Low-end consumer devices), denominado CLDC (Connected Limited Device Configuration).

A segunda abordagem foi definida como um perfil (do inglês profile). Um perfil consiste em um conjunto de classes que possibilita os desenvolvedores de software implementarem as aplicações de acordo com as características das aplicações dos pequenos dispositivos computacionais. Foi denominado o MIDP (Mobile Information Device Profile), oferecendo recursos como rede, componentes de interface, armazenamento local, etc.

Fonte:

WIKIPÉDIA. Desenvolvido pela Wikimedia Foundation. Apresenta conteúdo enciclopédico. Disponível em: <http://pt.wikipedia.org/w/index.php?title=J2ME&oldid=4961778>. Acesso em: 20 Fev 2007


Foram criadas especificações que definiram a arquitetura da tecnologia Java ME, como divisões lógicas, assim como arquitetura de camadas. Para entender melhor essas divisões vamos olhar a figura 1, que representa o esquema citado.

Figura 1: Organização da plataforma Java ME


Device/Hardware: a camada mais abaixo representa o hardware do dispositivo específico que nossa aplicação pode rodar, existem vários fabricantes espalhados pelo mundo que mantém suas próprias tecnologias ou fornecedores desses equipamentos e seus hardwares, entre eles: Motorola, Nokia, Sansumg, Sony Ericson etc. A maioria dessas tecnologias são proprietárias e suas comercializações são garantidas através de patentes.
Native Operating System: a maioria dos dispositivos possui um Sistema Operacional (SO) que habilita nossas aplicações a funcionarem no hardware do dispositivo, no entanto, a maioria não pode ser considerada como um SO completo, assim como Windows ou Linux, pois são limitados e adequados a capacidade computacional do aparelho (P2K da Motorola é um exemplo). Já o SO Symbian ou Linux são mais avançados e são habilitados para executarem várias tarefas e processos simultaneamente (não confundir com paralelamente, o que não é o caso). É nessa camada que as JVMs do Java reproduzem a sua funcionalidade se comunicando com as configurações.
Configurations: conforme podemos observar no texto citado do Wikipédia (leia novamente se não lembrar), as configurações definem o core, ou seja, a essência das implementações que rodam uma JVM que permite interpretar nossa aplicação. A maioria dos dispositivos atuais suporta CLDC 1.0 e CLDC 1.1. A versão 1.0 foi baseada na especificação da versão Java SE 1.3, e a versão CLDC 1.1 foi baseado na versão Java SE 1.4. Logo, podemos concluir que CLDC 1.1 possui melhorias e mais recursos. Por exemplo, um celular que suporta CLDC 1.1, poderia utilizar a funcionalidade de ponto flutuante (uso do tipo primitivo float). Em resumo, as configurações fazem a ponte entre o SO do dispositivo e a JVM que irá rodar nossa aplicação.
Profile: são os recursos que os programadores dispõem para utilizar as funções básicas disponíveis da linguagem Java, especificamente voltados para plataforma Java ME. São as APIs de MIDP. Por exemplo, métodos para manipular Strings, desenhar gráficos, etc. Quando uma aplicação utiliza um recurso do profile, ocorre uma comunicação com a configuração (CLDC), e que permitirá gerar um bytecode (arquivo com extensão .class), voltada para o alvo de compilação específica (por exemplo, uma aplicacao MIDP 2.0 com CLDC1.0). Essa aplicação rodará num aparelho celular que dê suporte a tal configuração. Os profiles são divididos em duas versões, MIDP 1.0 e MIDP 2.0, sendo que o MIDP 3.0 está sendo definido através da JSR-271 (Mobile Information Device Profile 3). Em outro post falarei sobre este profile e as revoluções prometidas.
Optional Packages: são as bibliotecas com recursos específicos. Na prática são aquelas implementações provindas das especificações da JCP. As bibliotecas são conhecidas como JSRs. Alguns exemplos são: JSR-82 (Java APIs for Bluetooth Wireless Technology), para utilizar bluetooth na aplicação; JSR-135 (Mobile Media API), que serve para tocar sons, músicas e videos com formatos diferentes; etc.
Classes OEM: geralmente são outras APIs que oferecem recursos mais avançados ou específicos para determinados clientes ou grupos. Imagine um determinado fabricante de celular que oferece para determinada operadora de telefonia móvel, o acesso a bibliotecas exclusivas, geralmente com mais recursos. Esses acordos são viabilizados através do chamado OEM (Original Equipment Manufacturer).
Applications: a sua parte da coisa, ou seja, onde codificamos a lógica da aplicação que pretendemos fazer. Na prática, serão todo o código que empacotaremos e que se transformará num arquivo (.jar), que tem várias arquivos (.class). Nossa aplicação é representada como um software.

Esses conceitos são importantes, pois servem de embasamento para aprender a fazer softwares para celulares usando a tecnologia Java ME. No próximo post do blog: parte 2, começaremos a fazer alguns exemplos práticos, onde discutiremos o que um programador precisa para começar a dar os primeiros passos, como ferramentas e ambientes que podem ser usados para fazer os programas.

Foi dado ênfase para as configurações de CLDC, explicado acima, no entanto, para outras informações veja esse link.