maio 2008


É sempre motivo de alegria e orgulho para mim, profissional brasileiro de informática, ver o Brasil em destaque positivo na mídia internacional especializada.

Assim li com muito gosto e o artigo Java and Free Software in Brazil – Bridging the digital divide (em inglês), por Patrick Curran, 2008-05-30, no Java Developers’ Journal.

O autor apresenta elementos da posição de destaque do Brasil nas comunidades de software livre e de tecnologia Java no mundo.

São lembrados o recente evento International Free Software Forum (FISL) ocorrido em Porto Alegre, o apoio governamental ao software livre e a crença nele como modelo de inclusão digital.

Também é destacado o grande grupo de usuários Java brasileiro SouJava, com mais de 18 mil participantes e sendo o primeiro JUG a integrar o JCP em 2005, de onde saiu o evangelista Java brasileiro “JavaMan” Bruno Souza para atualmente ocupar na Sun Microsystems o papel de coordenador mundial da comunidade NetBeans.

Voltando às iniciativas governamentais, o artigo ainda cita a parceria anunciada do SBTVD com a Sun para o desenvolvimento de uma plataforma livre baseada em Java de conteúdo e serviços para televisão digital (DTV) e a crescente adoção de Java nos órgãos governamentais para desenvolvimento de software que leva serviços aos cidadãos, destacando em especial o sistema de automação do SUS, sistema brasileiro de saúde.

Só fica o pesar em saber que mesmo com tanta força da comunidade de TI brasileira em Java e software livre, isso não gera proporcional reflexo no peso do mercado de software brasileiro e, principalmente, na exportação de produtos e serviços de software brasileiros. Aí o Brasil fica atrás de países como a Índia. Especialistas costumam apontar o baixo domínio da língua inglesa como um dos ingredientes faltantes.

Vamos praticar mais o inglês, profissionais de TI do meu Brasil! O mundo todo é um campo aberto. Que tal começar praticando a leitura do artigo no JDJ hoje?

Para saber mais:

A Microsoft criou o padrão OOXML para concorrer com o OpenDocument Format (ODF), surgido do OpenOffice.org e que rapidamente se tornou um padrão aberto internacional para documentos, desenvolvido pelo OASIS Group e ratificado pela norma ISO/IEC 26300 em 2006.

O padrão OOXML original basicamente refletia o formato de arquivos do Microsoft Office 2007. Em uma estratégia de poder corporativista, a Microsoft conseguiu padronizar o OOXML pela ECMA Internacional. Em seguida, submeteu o padrão ECMA à ratificação rápida pela ISO, valendo-se do privilégio de aprovação “via expressa” (fast track) que a ECMA possui junto à ISO.

Mas mesmo na via expressa, o processo de padronização na ISO sofreu forte resistência, tendo sido inicialmente reprovado. Em nova tática de manipulação corporativista, a Microsoft conseguiu aumentar a participação simpatizante na ISO promovendo a introdução de representantes de países e membros poucos expressivos no grupo especialista da ISO.

Finalmente, em abril de 2008, o padrão OOXML foi aprovado como a norma ISO/IEC DIS 29500. Mas para isso o padrão original teve que sofrer uma série de adaptações em resposta aos questionamentos internacionais registrados por ocasião da primeira reprovação do padrão na ISO.

Contudo, com as modificações, nem mesmo o Microsoft Office 2007 tem suporte total ao padrão ISO 29500 do OOXML. Segundo a Microsoft, só o Office 14, ainda sem data prevista, terá o suporte ao formato OOXML atualizado para compatibilidade total com o padrão aprovado na ISO.

Enquanto isso, devido à grande pressão dos clientes, a Microsoft anunciou que já no primeiro semestre de 2009 o Microsoft Office 2007 Service Pack 2 (SP2) introduzirá suporte ao formato ODF versão 1.1. Veja mais no artigo OOXML backwards compatibility led Microsoft to ODF, por Tom Espiner, 2008-05-22, para a ZDNet UK.

Ou seja, nem a própria Microsoft tem todo o OOXML implementado, e oferecerá no Microsoft Office suporte ao formato ODF antes de ter implementado todo o padrão OOXML conforme aprovado na ISO. Coisas de Microsoft…

Para saber mais:

Dois grandes projetos de software livre estão próximo do lançamento de nova versão em fim de junho: Eclipse IDE e navegador Firefox. Ambos entraram agora em fase final de desenvolvimento, passando de Beta a Release Candidate (candidato a lançamento final).

O Firefox 3 (codinome Gran Paradiso) lançou seu Release Candidate 1 em 16 de maio. É baseado no mecanismo de renderização web Gecko 1.9, em desenvolvimento nos últimos 33 meses. Com mais de 14.000 atualizações desde a versão anterior, o Gecko 1.9 inclui uma profunda revisão de sua arquitetura para prover melhores desempenho, estabilidade, precisão e simplicidade.

Testes preliminares nas versões beta do Firefox 3 vêm mostrando que ele está muito mais rápido, principalmente na execução de JavaScript. Também está mais estável e eficiente no uso de memória. E a nova versão do mecanismo Gecko utilizado promete resultar em um navegador mais seguro, mais fácil de usar e mais personalizável.

A Fundação Mozilla continua em sua marcha rumo ao JavaScript 2.0 (padrão ECMAScript Edition 4).

Veja novidades do Firefox 3 e as Notas da versão do Firefox 3 RC1 (em inglês). Baixe o Firefox 3 RC1 (Windows, Mac OS X e Linux, em Português do Brasil e dezenas de outros idiomas).

Enquanto o lançamento oficial do Firefox 3 está previsto para o final de junho, já há planos para a atualização Firefox 3.1 até o final de 2008.

Em 13 de maio houve o anúncio do IDE Eclipse 3.4 Ganymede M7. Ganymede (nome, em inglês, de uma das luas de saturno descobertas por Galileu) é o codinome do lançamento coordenado e simultâneo de diversos projetos para a Plataforma Eclipse versão 3.4. Este Milestone 7 pode ser considerado o Release Candidate 0 (RC0), depois do congelamento de API ocorrido no M6.

Com lançamento final previsto para 25 de junho próximo, o Eclipse Ganymede 3.4 prevê a integração de pelo menos 24 projetos da Fundação Eclipse, pouco mais que os 21 do lançamento anterior Eclipse Europa 3.3. Entre os novos projetos englobados, estão Eclipse Packing Project (EPP), Rich Ajax Platform (RAP) e o suporte ao controle de versão Subversion (SVN) com o Subversive.

O projeto de empacotamento do Eclipse, EPP, está elaborando uma nova página de download de pacotes para o Eclipse 3.4, que já pode ser usada para o download do Ganymede M7.

O Eclipse vem perdendo força com a evolução rápida do projeto livre concorrente NetBeans. A versão mais recente deste é o NetBeans IDE 6.1, cada vez mais rico e poderoso em recursos e fácil em instalação e uso. Vejamos o que o Eclipse 3.4 trará em contrapartida.

Jakub Korab postou no dia 12 passado, em Javalobby, uma listagem comentada muito interessante chamada The Best Java Tools You Never Knew Existed, ou “As melhores ferramentas Java que você nem sabia que existiam”.

Muito útil, vale a pena a ler e conhecer as ferramentas que você eventualmente ainda não conheça. O post apresenta links para todas as ferramentas listas.

Por falar nisso, eu mantenho listagens de Ferramentas de Software e de Bibliotecas e APIs para Java em meu site de referências Márcio’s Hyperlink, ambas organizadas em sub-categorias. Apesar de minha coletânea ser bem mais ampla, depois que li o artigo citado, vejo que tenho algumas novidades para acrescentar lá.

Terminou dia 9 nos Estados Unidos o JavaOne 2008, maior evento Java mundial, e as novidades e reflexões sobre o universo Java decorrentes desta conferência ainda devem ecoar em artigos de portais, blogs e revistas nas próximas semanas.

Chamo a atenção para uma nota curta postada pelo Java Champion Adam Bien, durante o evento no dia 8, da qual faço uma tradução livre aqui:

Durante um painel no Comunity Corner [do JavaOne] (java.net booth) com James Gosling, um participante lhe perguntou uma questão interessante: “Qual linguagem de programação você usaria *agora* sobre a JVM, exceto Java?”. A resposta foi surpreendentemente rápida e muito clara: – Scala.

Scala é uma linguagem de programação que incorpora recursos de linguagens orientadas a objetos e funcionais. A implementação de Scala é software livre de código aberto e roda sobre a JVM (JDK 1.4 ou superior), sendo interoperável com Java.

O paradigma de programação funcional, que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis [Wikipédia] — baseado na teoria do cálculo lâmbda –, tem começado a ganhar evidência como tendência no meio acadêmico e na mídia técnica especializada.

Talvez por isso a escolha de Gosling por Scala, que incorpora programação funcional, tenha sido tão imediata. Alternativas existentes de linguagem de programação para a JVM atualmente, além de Java e Scala, incluem Groovy, JRuby (Ruby) e Jython (Python).

Um bom artigo introdutório sobre programação funcional é Functional Programming For The Rest of Us (em inglês), 2006-06-19, em defmacro.

E no tópico Outros Ambientes e Linguagens JVM em meu site de referências você encontra mais links úteis, inclusive a série de artigos Roundup: Scala for Java Refugees, recomendado por Ron Francis para quem quer transitar de Java para Scala, um caminho suave segundo Joel Neely.

Para quem começar a programar em Scala, é bom saber que há um Scala Plugin para Eclipse 3.3. E um plug-in Scala para NetBeans 6 está a caminho, sendo desenvolvido por Caoyuan Deng.

Para saber mais:

Depois que atualizei para o novo Ubuntu 8.04 LTS Hardy Heron (utilizando a opção automática pelo Gerenciador de Atualizações), quase tudo funcionou perfeitamente.

Observei até agora apenas um problema de configuração: os botões laterais “Avançar” e “Voltar” — que uso freqüentemente para navegação no histórico de páginas web (Firefox) — do meu mouse Logitech MX700 pararam de funcionar. Eles funcionavam até o Ubuntu 7.10 com as configurações que apresentei em meu artigo Mouse multi-botões no Linux.

Pesquisando na Internet, achei o artigo Logitech MX1000 Mouse on Ubuntu 8.04 Linux (Hardy Heron), 2008-04-27, cujas sugestões de configuração funcionaram para mim.

Eis o que fiz.

Primeiro, assegure-se de ter instalado o pacote xserver-xorg-input-evdev referente ao driver evdev. Se necessário, instale o pacote. Você pode fazer isso graficamente pelo Gerenciador de Pacotes Synaptic (menu Sistema > Administração) ou por linha de comando:

sudo apt-get install xserver-xorg-input-evdev

Depois, localize o nome exato do dispositivo do seu mouse.

cat /proc/bus/input/devices

No meu caso, para o Logitech MX700 encontrei N: Name=”PS2++ Logitech MX Mouse”.

Depois, edite o arquivo de configuração do X11. Antes disso, faça uma cópia de segurança.

sudo bash
cd /etc/X11/
cp -p xorg.conf xorg.conf.backup
gedit xorg.conf

Comente a configuração de InputDevice anteriormente existente para o mouse e adicione uma nova similar a esta, usando o driver evdev (minha configuração anterior usava o driver mouse):

Section "InputDevice"
	Identifier	"Logitech MX700"
	Driver		"evdev"
	Option		"Name"		"PS2++ Logitech MX Mouse"
	Option		"HWHEELRelativeAxisButtons"	"7 6"
EndSection

O Identifier pode ser livremente escolhido por você. Se o seu mouse é outro modelo, substitua pelo nome mais apropriado. Já a opção “Name” deve receber exatamente o mesmo nome encontrado no arquivo de devices.

Ainda no arquivo xorg.conf, localize a seção ServerLayout, verifique e atualize a linha InputDevice relativa ao mouse. O nome do InputDevice deve ser o exato Identifier do mouse que você definiu.

Section "ServerLayout"
	...
	Inputdevice	"Logitech MX700"
	...
EndSection

Salve o arquivo xorg.conf.

Pronto. Reinicie o X11, saindo (logout) e entrando novamente, para ativar as novas configurações.

Para testar o funcionamento de todos os botões e controles do mouse no driver evdev, você pode usar a aplicação gráfica xev. Execute a partir de uma janela de comando, pois as informações de eventos gerados na janela gráfica de teste aparecem em texto no console.

Um aviso final: Vi em alguns fóruns que a opção Option "CorePointer" não deve ser usada na seção InputDevice com o evdev. No meu caso, realmente testei adicionar esta opção e o meu mouse ficava completamente inoperante com ela.

Publiquei hoje a revisão 29 do Tutorial Tomcat – Instalação e Configuração Básica, artigo mais popular do meu site.

Esta atualização corrige informações sobre a forma de tratamento de log no Tomcat, que foi alterada no Tomcat 5.5 e em diante.

Agradeço ao Samuel Valerio, de Natal, RN, que me alertou para essa mudança.

Até o Tomcat 4.1, existia o elemento Logger aninhado ao Context, no arquivo XML de configuração do contexto, que permitia incluir configurações de geração de registro (logging) específicas para o contexto.

O Tomcat 5.5 teve o tratamento de logging reestruturado e usa o Commons Logging em seu código interno. Uma conseqüência importante é que o elemento Logger deixou de existir.

As configurações específicas de geração de log agora devem ser configuradas diretamente no arquivo de configuração do mecanismo de logging em uso:

  • Java Logging/Juli (TOMCAT_HOME\conf\logging.properties);
  • ou Log4j (TOMCAT_HOME\lib\log4j.properties).

Ainda não incluí no tutorial novas instruções sobre como separar as mensagens de log específicas do seu contexto de desenvolvimento, como era feito antes com o elemento Logger. Se alguém já tiver sugestões ou orientações prontas, ou souber indicar uma referência a respeito, agradeço se puder me enviar.