Planilha eletrônica em finanças: centavos × frações

Um erro bastante comum que vejo no uso de planilhas eletrônicas em cálculos financeiros e monetários é o tratamento incorreto de centavos na divisão não-inteira e cálculos com números fracionários com mais de duas casas decimais. Nesse artigo vou abordar o problema e soluções para tratá-lo adequadamente.

Problema: Formatação exibida × valor armazenado

Quando se trabalha com valores monetários (financeiros), é comum usar a formatação de número das células como “Moeda”, “Contábil” ou ainda “Número”, com duas casas decimais. Isso faz a planilha eletrônica exibir os valores sempre arredondados em duas casas decimais, para representar adequadamente os centavos.

Por padrão, essa precisão de casas decimais da formatação é usada apenas na exibição, mas o armazenamento e cálculos do valor usam toda a precisão que a planilha comporta (o Excel 2010, por exemplo, tem precisão máxima de 15 dígitos).

Se o valor da célula tem parte fracionária com mais de duas casas decimais — um caso típico é o resultado de uma divisão não inteira — mas apenas a exibição é formatada com duas casas decimais (para os centavos), isso pode resultar em divergências de arredondamento de centavos, quando esse valor é usado em cálculos.

Veja o exemplo, células das colunas B e C formatadas como moeda (duas casas decimais):

A B C
1 n v n*v
2 3 R$ 0,33 R$ 1,00
3 3 R$ 0,67 R$ 2,00
4 3 R$ 0,33 R$ 0,99
5 3 R$ 0,67 R$ 2,01

Por que aparentemente os cálculos nas linhas 2 e 3 são iguais aos das linhas 4 e 5, mas os valores resultantes da multiplicação (coluna C) são diferentes? Porque os valores armazenados nas células B2 e B3 são as fórmulas =1/3 (0,333333333333333) e =1/4 (0,666666666666667) respectivamente, enquanto nas células B4 e B5 são efetivamente 0,33 e 0,67.

Solução 1: Precisão de cálculo igual à exibição

Uma solução, fácil de aplicar mas que deve ser usada com muito cuidado, porque afeta globalmente a planilha eletrônica e faz com que valores digitados percam definitivamente a precisão de casas decimais excedentes, é utilizar uma opção do Excel que faz com que a precisão de cálculo seja igual ao exibido.

No Excel 2010:

  1. Clique na guia Arquivo, clique em Opções e, em seguida, clique na categoria Avançado.
  2. Na seção Ao calcular esta pasta de trabalho, selecione a pasta de trabalho desejada e, em seguida, marque a caixa de seleção Definir precisão conforme exibido.
  3. Selecione OK.

Observe que o Excel alerta que dados (digitados) perderão definitivamente a precisão (casas decimais excedentes ao exibido). Isso significa que se houvesse um valor digitado e armazenado como 0,666667 na célula formatada como 2 casas decimais, após ativada a opção o valor seria definitivamente convertido para 0,670000. Isso não afeta porém valores que são fórmulas como =2/3.

Referência: Ajuda do Excel 2010 – Alterar a precisão dos cálculos em uma pasta de trabalho.

Solução 2: Utilizar fórmulas de arredondamento

Outra forma de evitar/solucionar essa divergência é utilizar nas células fórmulas que explicitamente arredondem ou trunquem os valores armazenados para duas casas decimais. Existem várias fórmulas para isso. Peguemos o exemplo de tratar a fração a/b (por exemplo, 1/3 ou 2/3):

  • =ARRED(a/b;2) → Arredonda um número (primeiro parâmetro) até a quantidade especificada de dígitos (segundo parâmetro, no caso, 2 casas decimais). A regra de arredondamento é a comum: valor 5 em diante na casa decimal seguinte arredonda para cima, 0 a 4 para baixo (trunca).
  • =ARREDONDAR.PARA.CIMA(a/b;2) → Sempre arredonda um número para cima afastando-o de zero. Ou seja, “para cima” é aumentar o valor absoluto; no caso de valores negativos, -0,333 resulta em -0,34.
  • =TETO(a/b;0,01) → Arredonda um número sempre para cima, para o próximo múltiplo significativo (do segundo parâmetro, no caso, 0,01 = 1 centavo). Para números positivos, funciona igual a ARREDONDAR.PARA.CIMA.
  • TRUNCAR(a/b;2) → Trunca um número até a quantidade de casas decimais especificadas no segundo parâmetro (no caso, 2; se omitido assumiria o padrão 0, para truncar para inteiro).
  • =ARREDONDAR.PARA.BAIXO(a/b;2) → Arredonda um número para baixo, aproximando-o de zero.
  • =ARREDMULTB(a/b;0,01) → Arredonda um número para baixo até o múltiplo ou a significância mais próxima (segundo parâmetro, no caso, 0,01) É a função oposta a TETO.

Os mais comuns são arredondar (ARRED) ou truncar (TRUNCAR).

Referência: Ajuda do Excel 2010 – Arredondar um número.

Oracle Java e open source – entrevista com especialista Fernando Galdino

Através de contato com a Assessoria de Imprensa da Oracle Brasil, obtive entrevista exclusiva com Fernando Galdino, especialista em Soluções da Oracle do Brasil, sobre os produtos, estratégias e perspectivas da Oracle relacionados à tecnologia Java e aos principais produtos comerciais e projetos open source de ambiente de desenvolvimento integrado (IDE) e servidores de aplicação Java liderados pela Oracle.

De acordo com a entrevista, a Oracle sinaliza firme intenção em continuar mantendo o investimento e apoio aos projetos de software livre como os IDEs NetBeans e Eclipse e servidor de aplicação Java Glassfish, enquanto avança também com sua linha de produtos e soluções comerciais Java.

Nas estratégias de sinergia entre produtos, a dupla de software livres NetBeans e Glassfish caminha bem alinhada, ambos suportando em primeira mão as mais novas especificações das plataformas Java SE, EE e ME. O Glassfish é, inclusive, a Implementação de Referência (R.I.) da plataforma Java EE.

Já o IDE Oracle JDeveloper está estrategicamente alinhado para suportar e se integrar com produtos e tecnologias comerciais da Oracle e parceiros, em especial a família de produtos Fusion Middleware, o servidor WebLogic, o Oracle Application Development Framework (ADF) e o banco de dados Oracle Database Server.

Mas há estratégias da Oracle para promover alinhamento do suporte de produtos entre as linhas open source e comercial. Assim, a Oracle mantém iniciativas de suporte e integração ao WebLogic no NetBeans e no Eclipse, bem como suporte ao Glassfish no JDeveloper.

Passados mais de dois anos desde que a Oracle comprou a Sun, e com isso incorporou ao seu portfólio de soluções Java os projetos de software livre NetBeans e Glassfish anteriormente liderados pela Sun, as estratégias de continuidade e integração da Oracle vem se tornando mais claras e consistentes e, com isso, diluindo as dúvidas e incertezas da comunidade de desenvolvedores Java.

Veja a íntegra da entrevista concedida por Fernando Galdino a seguir.

1. Quais são as frentes atuais da Oracle sobre integração e aproximação entre o GlassFish e o Oracle WebLogic Server? Permanece a diretriz de ter uma Plataforma de Servidor Comum no GlassFish 4, que compartilhe conceitos e tecnologias com o WebLogic Server? Quais aspectos específicos de integração tem sido foco de atenção da Oracle?

Galdino: O Glassfish tem recebido especial atenção por parte da Oracle e a integração com outros produtos continua cada vez mais forte. Como exemplos, temos o ActiveCache, a integração com Oracle Access Manager, extensão da console de monitoramento e recursos para clusterização e alta disponibilidade.

Em relação aos esforços de integração entre Glassfish e Weblogic encontram-se a uniformização de APIs e de sua implementação; Integração com JRockit (Máquina virtual Java de alto desempenho) e Coherence (grid de dados em memória). Com isso, ambas as ferramentas (Weblogic e Glassfish) tendem a se valer de um mesmo núcleo comum. Com o Glassfish 4 pretende-se compatibilidade com Java EE 7 e melhor suporte a virtualização. Lembrando que o release final da especificação Java EE 7 deve sair em Q3 de 2012, conforme indicado em http://jcp.org/en/jsr/detail?id=342.

2. A IBM encampou o projeto de software livre do servidor de aplicação Apache Geronimo e o oferece como uma espécie de versão gratuita de entrada, Community Edition, para a família de produtos do IBM WebSphere Application Server. Qual a estratégia da Oracle na orientação de seus clientes iniciantes quanto à escolha entre GlassFish ou WebLogic Server?

Galdino: O Glassfish é o melhor servidor de aplicações open source com suporte da Oracle e é também a implementação de referência para Java EE. Possui integração com outros componentes do Oracle Fusion Middleware. Ele pode ser utilizado para aplicações mais leves ou que queiram utilizar as novas versões da especificação, que serão inicialmente disponibilizadas nesta ferramenta antes do Weblogic.

O Weblogic é um produto que oferece uma série de benefícios em termos de gestão, escalabilidade e performance. Ele é também o servidor de aplicações base para o Fusion Middleware e também para os aplicativos Fusion. Além disso, ele também é a base das soluções de hardware e software do Exalogic, que é uma solução da Oracle para atender a infraestrutura de computação em nuvem requerida pelas aplicações atuais.

3. O WebLogic Server 11g (10.3.x) é formalmente compatível com Java EE 5, mas incorpora suporte a algumas APIs da plataforma Java EE 6. Há planos definidos para quando o WebLogic Server deve ser totalmente compatível com Java EE 6, como já é o GlassFish v3?

O suporte a Java EE 6 no Weblogic encontra-se em desenvolvimento.

Em relação ao IDE de Desenvolvimento Java, com a aquisição da Sun, a Oracle também incorporou o projeto de software livre do ambiente integrado de desenvolvimento (IDE) NetBeans, que vem agregar o portfólio de ferramentas de desenvolvimento Java da Oracle, compostas basicamente do Oracle JDeveloper e do Oracle Application Development Framework (ADF).

A Oracle também tem apoiado o projeto de software livre do IDE Eclipse. Enquanto NetBeans e Eclipse têm se popularizado como plataformas abertas e extensíveis de IDE com suporte a Java, C/C++ e outras tecnologias de desenvolvimento de aplicações, o JDeveloper teve origem no motor do JBuilder, fruto de acordo com a antiga Borland e desde então vem sendo desenvolvido pela Oracle, que tem provido suporte e integração a tecnologias e produtos Oracle, como ADF, Oracle Database Server, Oracle WebLogic e Fusion Middleware.

4. Oracle JDeveloper, NetBeans e Eclipse. Quais são as estratégias, visões e planos da Oracle em relação ao suporte a estas três plataformas de desenvolvimento de aplicações?

Galdino: A Oracle continuará investindo no ambiente Eclipse por meio do Oracle Enterprise Pack for Eclipse. Trata-se de uma plataforma de desenvolvimento amplamente utilizada pelos desenvolvedores que, inclusive, teve adicionados recursos como Toplink e ADF. O foco do OEPE está em integrar ferramentas Oracle com o ambiente Eclipse, suportar a plataforma Weblogic e focar em facilidades para o desenvolvimento em ambiente Java Enterprise Edition.

O Netbeans é uma ferramenta estratégica para a incorporação e utilização das mais recentes funcionalidades adicionadas para as plataformas Java SE, EE e ME. A ferramenta continuará a ser desenvolvida e aprimorada e será a primeira a introduzir as mais recentes atualizações para a linguagem Java. É uma plataforma focada na comunidade e podemos dizer que é uma implementação de referência para ferramentas Java.

O JDeveloper é um componente fundamental para todo o conjunto de aplicativos (Oracle ou não) baseado no Fusion Middleware. Interessante que foi relembrado que o JDeveloper foi baseado no JBuilder. Desde 2001, porém, não há mais nenhum código da antiga Borland na ferramenta. E, ao longo do tempo, diversas funcionalidades foram sendo acrescentadas à ferramenta para o desenvolvimento Java. Hoje é uma ferramenta essencial para o desenvolvimento, utilizando-se das ferramentas Fusion Middleware. Isso inclui o desenvolvimento de ponta-a-ponta para projetos Webcenter e SOA e BPM com foco em um ambiente declarativo, visual e de alta produtividade.

5. Como está sendo vista e trabalhada a integração, interoperabilidade e sinergia entre Oracle JDeveloper e NetBeans? Há planos para uma plataforma base comum no futuro?

Galdino: Netbeans é um projeto open source e os planos são de que continue sendo uma ferramenta sendo desenvolvida pela comunidade e que receba as novidades da linguagem o mais rápido possível. O JDeveloper é um ambiente de alta produtividade para o ambiente Fusion Middleware como um todo.

Os principais pontos de sinergia e interoperabilidade residem nos servidores de aplicação Weblogic e Glassfish e na utilização do Coherence. Pontos esses que estão sendo tratados. Por exemplo, fazer com que os deployment descriptors do Weblogic sejam reconhecidos pelo Glassfish e vice-versa. Hoje, os planos são de que cada ferramenta continue caminhando independentemente da outra, porém tendo em mente a interoperabilidade entre componentes do Fusion Middleware.

6. Quais são as iniciativas atuais e planos futuros para maior integração e suporte a tecnologias e produtos Oracle no NetBeans?

Galdino: A próxima versão do NetBeans ainda encontra-se em uma fase de planejamento. Logo, ainda é um tanto incerto falar em torno de iniciativas e planos futuros, já que elas ainda não se materializaram em termos de ações ou projetos. Essas iniciativas serão analisadas com cuidado, sempre tendo em mente a ideia de ter o NetBeans como uma ferramenta com as mais recentes atualizações da linguagem Java e uma plataforma focada na comunidade de desenvolvedores.

7. Recentemente a Oracle lançou o JDeveloper 11g Release 2, com suporte a JavaServer Faces 2.0 (JSF 2), tecnologia para aplicações web integrante da plataforma Java EE 6. Como está caminhando o pleno suporte às APIs do Java EE 6 no JDeveloper?

Galdino: Hoje, a Oracle possui o Glassfish como o servidor de aplicações compatível com a plataforma Java EE 6. Temos também o Weblogic, componente essencial de toda a arquitetura de produtos Oracle para middleware e aplicativos. O Weblogic é compatível com a versão Java EE 5. A compatibilidade com a especificação Java EE 6 está planejada para as próximas versões. E o JDeveloper, como principal IDE para o Oracle Fusion Middleware, precisa estar equacionado em relação a como atender esses dois lados do desenvolvimento. O lançamento do JDeveloper 11gR2 já permite trabalharmos com alguns desses recursos.

8. A Oracle já doou vários produtos e participou de iniciativas relacionadas ao projeto de software livre Eclipse e à Eclipse Foundation. Podemos destacar a doação do TopLink Essentials — versão open source do Oracle TopLink — que se tornou EclipseLink e implementação de referência de Java Persistence API (JPA); a doação do projeto de software livre Hudson Continuous Integration para a Eclipse Foundation; e a proposição em conjunto com a SpringSource do projeto Gemini baseado nos padrões OSGi. O projeto Eclipse porém, envolve a participação de empresas que tem pontos de concorrência no mercado com a Oracle, como IBM, RedHat e VMWare/SpringSource. Qual o posicionamento, visão e planos atuais da Oracle em relação ao projeto Eclipse?

Galdino: A Oracle continuará participando ativamente do projeto Eclipse. Consideramos que esse projeto é bastante importante para toda uma comunidade de desenvolvedores que utiliza o Eclipse como ambiente de desenvolvimento no dia-a-dia. Como comentado anteriormente, ao falarmos sobre as três IDEs de desenvolvimento, o Eclipse recebe uma atenção especial por parte da Oracle. No último release do OEPE – Oracle Enterprise Pack for Eclipse a Oracle – inclusive adicionou uma maior integração com a stack de produtos Fusion Middleware. Como exemplos, nós temos os recursos para facilitar a criação de scripts WLST utilizados pelo Weblogic e o suporte ao Coherence, um grid de dados em memória para melhorar a utilização de memória, bem como auxiliar na escalabilidade dos aplicativos.

A própria doação do Hudson para a Fundação Eclipse, como colocada na pergunta, já demonstra todo um compromisso que a Oracle possui com esse projeto e que continuará tendo com o lançamento de novos recursos nas próximas versões.


Agradeço à Clezia Gomes, Relações Públicas responsável pelo contato com a Assessoria de Imprensa da Oracle Brasil, que intermediou essa entrevista, e ao Fernando Galdino (@LinkedIn, @SlideShare), especialista da Oracle Brasil que concedeu a entrevista.

Oracle anuncia disponibilidade do Java SE 7

Fonte: Oracle Press Release, Redwood Shores, Califórnia – 15 de agosto de 2011.

A Oracle anunciou a disponibilidade do Java Platform, Standard Edition 7 (Java SE 7), a primeira versão da plataforma Java sob administração da Oracle.

A versão Java SE 7 é o resultado do desenvolvimento que envolveu revisão aberta, compilações semanais e extensa colaboração entre engenheiros da Oracle e membros do ecossistema Java em todo o mundo por meio da comunidade OpenJDK e do Java Community Process (JCP).

O Java SE 7 oferece:

  • Mudanças na linguagem para ajudar a aumentar a produtividade dos desenvolvedores e simplificar as tarefas comuns de programação, reduzindo o volume de código necessário, esclarecendo a sintaxe e facilitando a leitura do código. (JSR 334: Project Coin)
  • Suporte aprimorado para linguagens dinâmicas (como, Ruby, Python e JavaScript), resultando em melhoria substancial no desempenho do JVM. (JSR 292: InvokeDynamic)
  • A nova API multicore-ready oferece aos desenvolvedores maior facilidade para detalhar falhas em tarefas que podem ser executadas em paralelo por números arbitrários de núcleos do processador. (JSR 166: Fork/Join Framework)
  • A interface de I/O (entrada/saída) completa para trabalhar com sistemas de arquivos permite acesso a uma ampla variedade de atributos de arquivos e oferece mais informações quando ocorrem erros. (JSR 203: NIO.2)
  • Novos recursos de rede (suporte a Transport Layer Security – TLS 1.2, pilha Windows Vista IPv6, Sockets Direct Protocol – SDP para stream de rede com conexões Infiniband em Solaris e Linux, Stream Control Transmission Protocol – SCTP em Solaris) e segurança (algortismos de criptografia curva-elíptica – ECC).
  • Suporte ampliado a internacionalização com Unicode 6.0 e Locale com suporte a IETF BCP 47 (Tags for Identifying Languages) e UTR 35 (Local Data Markup Language).
  • Versões atualizadas de várias bibliotecas (JDBC 4.1 e Rowset 1.1, pilha XML com JAXP 1.4, JAXB 2.2a, JAX-WS 2.2).
  • Melhorias para cliente desktop (pipeline gráfico Java2D baseado na extensão X11 XRender, Nimbus look-and-feel e componente JLayer para Swing, substituição do velho sintetizador de som pelo Gervill criado pelo Audio Synthesis Engine Project).

A compatibilidade do Java SE 7 com versões anteriores da plataforma preserva os conjuntos de habilidades dos atuais desenvolvedores de software em Java e protege os investimentos nesta tecnologia.

Os desenvolvedores interessados podem usar imediatamente o Java SE 7 e aproveitar o NetBeans IDE 7.0, o Eclipse Indigo com o plug-in Java SE 7 adicional ou o IntelliJ IDEA 10.5, compatível com os mais novos recursos da plataforma Java SE 7. O lançamento do suporte do Oracle JDeveloper para o JDK 7 está programado para acontecer ainda este ano.

Exemplos de nova sintaxe introduzida pelo Project Coin

Tipo String permitido em cada case da cláusula switch:

[sourcecode lang=”java” highlight=”3,5″]
switch(diaDaSemana)
{
case "segunda": msg = "Mais uma semana de trabalho"; break;
….
case "sábado": msg = "O fim de semana chegou"; break;
}
[/sourcecode]

Multicatch – várias exceções capturadas em um só catch:

[sourcecode lang=”java” highlight=”4″]
try {
String fileText = getFile(nomeArq);
//…
} catch (FileNotFoundException | ParseException | FileLockInterruptionException e) {
System.err.println("Erro ao abrir arquivo");
} catch (IOException iox) {
System.err.println("Erro ao processar arquivo");
}
[/sourcecode]

Sintaxe diamante simplificada:

De
[sourcecode lang=”java”]
Map<Filme, Trilha> m = new HashMap<Filme, Trilha>();
[/sourcecode]

Para
[sourcecode lang=”java”]
Map<Filme, Trilha> m = new HashMap<>();
[/sourcecode]

Estas foram algumas novidades na sintaxe, exemplificadas aqui. Existem outras.

Fatos e Números de Java

  • 97% dos desktops empresariais executam Java;
  • São feitos 1 bilhão de downloads de Java por ano;
  • Há nove milhões de desenvolvedores em todo o mundo;
  • É a linguagem de programação número um do setor (segundo TIOBE Programming Community Index);
  • Mais de três bilhões de dispositivos funcionam sob a tecnologia Java.

Para saber mais

Novas referências sobre qualidade de software

Para atualizar as referências sobre a Série de normas internacionais ISO/IEC 25000, Systems and software [product] Quality Requirements and Evaluation (SQuaRE), no grupo sobre Engenharia de Software e Sistemas, revisei tão amplamente a página que ficou melhor dividir em uma página à parte da de Engenharia de Software:

Produto de Software – Qualidade, Métricas e Teste

Também atualizei o texto e referências do artigo Modelo de Qualidade de Software de McCall, com mais informação sobre a Série ISO/IEC 25000.

Universo de desenvolvimento Google

Recentemente recebi divulgação do novo ambiente de desenvolvimento MyEclipse G, uma lançamento da Genuitec (produtora do MyEclipse) e Skyway Software que reúne ferramentas de desenvolvimento essenciais para as plataformas, frameworks e serviços de aplicações da Google.

MyEclipse G - Recursos

Fonte: MyEclipse G.

Observando a descrição do produto, pude refletir sobre a imensidão da abrangência de tecnologias que o Google tem disponibilizado, em pelo menos três grandes frentes:

  • Desenvolvimento de aplicações web: Frameworks como o Google Web Toolkit (GWT) (a home-page em português parece desatualizada, falando do GWT 1.7, enquanto a em inglês já destaca o GWT 2.3 mais recente) e Google Guice. O projeto GWT, além de ampla documentação, oferece para download: GWT SDK, com as bibliotecas essenciais e compilador que você precisa para escrever aplicações web; o Google Plugin for Eclipse que inclui no IDE Eclipse suporte para projetos GWT e GAE, além de uma versão simplificada do GWT Designer; Speed Tracer, uma extensão para o navegador Google Chrome que permite pontuar problemas de desempenho em aplicações web; e o GWT Designer standalone (full), um ambiente de desenho de Java GUI poderoso e bidirecional para criação visual de interfaces de usuário, assisência de layout e geração automática de código GWT.
     
  • Infraestrutura para execução de aplicações web: Google App Engine (GAE) permite que você execute seus aplicativos da web na infraestrutura do Google.
     
  • Plataforma para dispositivos móveis: Android: camada de software para celulares e tablets que inclui um sistema operacional, middleware e aplicações. O Android SDK, disponível no portal Android Developers, provê ferramentas e APIs necessárias para se iniciar o desenvolvimento de aplicações para a plataforma Android usando a linguagem de programação Java. Há também o Android Development Tools (ADT) Plugin for Eclipse IDE. As muitas milhares de aplicações disponíveis para Android, boa parte delas gratuitas, ficam disponíveis no Android Market (assim como o iPhone tem o Apple Store).

Isso fora o navegador web Google Chrome (dica: para obter o instaldor offline standalone, acrescente o parâmetro &standalone=1 na página de download) e o sistema operacional Google Chrome OS, baseado no sistema operacional Linux e totalmente voltado para Internet (Já ouviu falar no Chromebook?). Ambos são desenvolvidos através do projeto de software livre Chromium.

Todas as ferramentas oferecem ampla documentação. O Google ainda aproveita seus canais de mídia para divulgar informação, como os blogs no Blogger — GWT blog, GAE blog, Google Mobile blog, Official Google Blog, blog oficial Google Brasil — e o canal Google Developers de vídeos no Youtube. E ainda realiza o grande evento anual Google I/O.

Mesmo com a Microsoft tendo comprando a Skype em seu maior acordo de aquisição, por US$ 8,5 bi em maio último, estou achando que agora é a vez da Google “dominar o mundo” do software na era da Internet.

Ajax e RIA – Radar do mercado

O instituto Gartner atualizou recentemente seu relatório “MarketScope for Ajax Technologies and RIA Platforms”. Aproveito para apresentar o resumo dessas tendências e alguns diagramas explicativos e estatísticas sobre Ajax e RIA.

Introdução

A técnica de interação e troca de dados assíncrona entre o cliente e o servidor web, identificada pelo acrônimo Ajax — Asynchronous Javascript And XML –, termo introduzido pela Adaptive Path em 2005, se populariza cada vez mais nas aplicações web e tem contribuído significativamente para melhorar a interatividade e experiência do usuário, oferecendo respostas imediatas à interação do usuário.

Vão se multiplicando as alternativas de bibliotecas e frameworks para desenvolvimento de aplicações web com suporte a Ajax, visando tornar o uso da técnica mais fácil, organizado e produtivo na construção de aplicações, de forma cada vez mais transparente, integrada e sistematizada.

Também têm se popularizado o uso de plataformas tecnológicas para web visando RIA — Rich Internet Applications –, termo introduzido pela Macromedia (Adobe) em 2002, que significa uma interface com usuário web mais rica — em componentes e comportamentos — e responsiva (resposta imediata, sensível ao contexto), similar a aplicações desktop.

As plataformas RIA podem ter como base um runtime específico, incorporado ao navegador web cliente através de plug-ins, ou se beneficiar do avanço da sofisticação das técnicas e componentes nativos baseados em Ajax.

O diagrama de blocos a seguir correlaciona esquematicamente RIA, Ajax e DHTML.

[photopress:RIA_AJAX_DHTML.png,full,centered]
Créditos: Márcio d’Ávila, 2008-2011.

RIA

Enquanto as aplicações gráficas Cliente/Servidor trouxeram riqueza à experiência de usuário que não havia no ambiente mainframe, plataformas RIA fazem o mesmo em relação às aplicações web primitivas.

[photopress:RIA_IU.png,full,centered]
Créditos: Uday M. Shankar, Adobe Flex – an introduction, mar/2008 (em Slideshare).

Segundo estatísticas do site Stat Owl, levando em consideração os diversos sistemas operacionais e navegadores web existentes, em setembro de 2008 o suporte runtime instalado para Adobe Flash já era 97,48% (verdadeiro padrão de facto), Java 81,37% e Microsoft Silverlight apenas 17,64%. Em abril de 2011, estas mesmas plataformas evoluiram para percentuais de penetração 95,65%, 77,31% e 63,92% respectivamente.

Percebe-se, portanto, uma notável expansão do suporte à tecnologia RIA da Microsoft no período medido, enquanto o pequeno decréscimo de Flash pode ser explicado pela ausência de suporte ainda existente em alguns ambientes operacionais de dispositivos móveis que vem se popularizando, como Apple iOS (iPhone e iPad).

[photopress:Suporte_RIA.png,full,centered]
Fonte: Stat Owl, Rich Internet Application Market Share – RIA Market Penetration and Global Usage comparing Adobe Flash, Microsoft SilverLight and Java, set/2008 a abr/2011.

2009

Em 2009, o mercado ainda estava incipiente e muitos produtos foram considerados pelo Gartner em tecnologias Ajax e plataformas RIA, dez deles classificados com tendência positiva ou muito positiva.

Forte
Negativo
Cuidado Promissor Positivo Forte
Positivo
Adobe Plataforma Flash RIA ($/L)
Backbase Ajax framework Ajax ($)
DevExpress para .NET RIA ($)
Dojo Ajax toolkit Ajax (L)
Ext JS JavaScript, Ext GWT Ajax ($/L)
Google GWT Java, Closure Ajax (L)
IBM Ajax, Lotus Expeditor Ajax/RIA ($/L)
ICEsoft ICEfaces JSF Ajax (L/$)
Infragistics para .NET Ajax ($)
Isomorphic Soft SmartCli, GWT Ajax/RIA (L/$)
JackBe Ajax framework Ajax ($)
jQuery JavaScript Ajax Ajax (L)
Magic Software uniPaaS RIA ($)
MB Tech Bindows Ajax ($)
Microsoft Silverlight, WPF RIA ($)
Nexaweb E.Web Suite Ajax/RIA ($)
Oracle ASF Faces JSF Ajax ($)
Prototype/
script.aculo.us
JavaScript Ajax (L)
Sun Microsystems JavaFX RIA (L/$)
Telerik para .NET Ajax ($)
Tibco Software GI Ajax (L)
Yahoo YUI toolkit Ajax (L)

Fonte: MarketScope for Ajax Technologies and RIA Platforms, Gartner, por Ray Valdes e outros, 2009-12-31, reproduzido por Adobe (PDF).

2011

Atualizando a pesquisa em 2011, o mercado ainda se mostra em evolução, com oito produtos apontados como tendência positiva ou muito positiva.

Comparando com 2009, Adobe Flash e Microsoft Silverlight tiveram sua tendência refreada (Positivo), enquanto a versátil biblioteca livre JavaScript jQuery obteve maior evidêcia (Muito Positivo).

Saíram da lista Magic Software uniPaaS e MB Tech Bindows; Ext JS se tornou Sencha, enquanto Sun foi incorporada à Oracle; e entram agora Canoo Engineering RIA Suite (UltraLightClient framework baseado em Java EE) e Vaadin (framework RIA Java baseado em GWT widgets e extensa coleção de componentes UI).

Forte
Negativo
Cuidado Promissor Positivo Forte
Positivo
Adobe ⇓ Plataforma Flash RIA ($/L)
Backbase ⇓ Portal Ajax ($)
Canoo Engineering UltraLightClient RIA ($)
DevExpress para .NET RIA ($)
Dojo Ajax toolkit Ajax (L)
Google GWT Java, Closure Ajax (L)
IBM Ajax, Lotus Expeditor Ajax/RIA ($/L)
ICEsoft ICEfaces JSF Ajax (L/$)
Infragistics para .NET Ajax ($)
Isomorphic Soft SmartClient, GWT Ajax/RIA (L/$)
jQuery jQuery JS lib Ajax (L)
Microsoft ⇓ Silverlight, WPF RIA ($)
Oracle ASF Faces JSF, JavaFX Ajax/RIA (L/$)
Prototype/
script.aculo.us
JavaScript Ajax (L)
Sencha Ext JS, Ext GWT Ajax ($/L)
Telerik ASP.NET Ajax Ajax ($)
Tibco Software General Interface Ajax (L)
Vaadin Vaadin RIA RIA (L)
Yahoo YUI Library Ajax (L)

Fonte: MarketScope for Ajax Technologies and RIA Platforms, Gartner, por Ray Valdes e outros, 2011-03-31, reproduzido por Microsoft.

Conclusão

Tecnologias RIA e Ajax têm se tornado cada vez mais difundidas e maduras.

Podemos inferir, pela evolução do Gartner MarketScope, que plataformas RIA com componentes ricos nativos (Ajax e DHTML) — boa parte delas baseadas em frameworks livres e Java server/EE) — tem ganhado força, em detrimento daquelas baseadas em runtime próprio.

É provável que o emergente padrão HTML 5, quando se estabelecer, reforce ainda mais esse movimento.

Para saber mais:

Vem aí o LibreOffice 3.4

Está em fase Beta a versão 3.4 do pacote de programas de escritório LibreOffice, mas você ainda pode chamá-lo de BrOffice.

LibreOffice é o mais popular e bem sucedido pacote de escritório como software livre, com editor de textos/documentos, planilha eletrônica, apresentações, desenhos/ilustrações e banco de dados, baseado no formato aberto de documentos OpenDocument (ODF), e também compatível com os formatos do Microsoft Office.

Contudo, o nome e andamento do projeto de software livre desse pacote tem passado por vários caminhos.

Nascida como StarOffice, a suíte foi rebatizada para OpenOffice.org após a compra da empresa alemã StarDivision pela Sun Microsystems em 1999.

O projeto OpenOffice.org surgiu em 2000 e contou com a participação brasileira a partir de 2001. Naquela época, surgiu a comunidade OpenOffice.org.br que o traduziu e o divulgou no Brasil até 2004. Em 2005, a comunidade enfrentou problemas com o registro da marca no país. Assim surgiu o BrOffice.org, o mesmo produto OpenOffice.org em português do Brasil (pt-BR), mais as ferramentas linguísticas para nosso idioma.

Depois que a Oracle comprou a Sun — principal mantenedora do projeto OpenOffice.org — em 2009, um grupo de desenvolvedores da suíte de produtividade OpenOffice.org, que não concordava com os rumos que o projeto seguia desde então, acabou por se desvincular da Oracle em setembro de 2010. Dessa dissidência surgiu a organização livre The Document Foundation (TDF), com a missão de apoiar e evoluir o conjunto de formatos de documentos OpenDocument e dar continuidade ao projeto original de software livre do OpenOffice.org, adotando o nome LibreOffice.

A comunidade brasileira de desenvolvedores do BrOffice apoia o projeto LibreOffice. Na versão 3.4 do produto, passará a adotar o nome LibreOffice, para maior homogeneidade. A TDF solicitou a marca original OpenOffice.org à Oracle e convidou a empresa a participar do projeto, mas sem sucesso até agora.

Um ponto central da dissidência é que o OpenOffice.org mantido pela Oracle tem seus release gerados por um ambiente de build proprietário, mantido por um pequeno time de engenheiros. O LibreOffice é software livre e baseado em ferramentas livres. Os mantenedores do projeto LibreOffice estão trabalhando na migração total para GNU Make como primeiro passo para facilitar compilações cruzadas de Linux para Windows. O objetivo é que, com o tempo, qualquer pessoa com tempo e um PC possa construir releases do LibreOffice a partir dos códigos-fonte.

StarOffice, OpenOffice.org, BrOffice.org, BrOffice ou LibreOffice, o que importa é que este é o mais competente pacote de programas de escritório em software livre disponível no Brasil, e se apresenta como uma alternativa realmente viável ao pacote comercial Microsoft Office.

Para saber mais:

Março foi o mês dos novos browsers

Este março de 2011 foi um mês marcante para reaquecer a saudável guerra de browsers (navegadores internet).

Em 08/03/2011, a Google lançou o stable release do Chrome 10 para Windows, Mac, Linux e Chrome Frame.

Em 14/03/2011, Microsoft fez o lançamento oficial do Internet Explorer 9, anunciado durante o evento South by SouthWest (SXSW 2011) em Austin, Texas.

E em 22/03/2011, a Fundação Mozilla lançou o Firefox 4 para Windows, Mac OS X e Linux, e brevemente disponível também para dispositivos Android e Maemo.

Foi um lançamento por semana.

Desde janeiro, tenho publicado alguns posts sobre os novos navegadores: Corrida dos navegadores rumo a HTML5 e CSS3; Firefox 4 Beta e a barra de status; Firefox 4 Beta – novidades na interface.

Como já comentei, duas temáticas importantes nestas novas versões foram: motores/mecanismos de renderização eficientes com suporte a HTML e os mais recentes padrões de JavaScript e Estilos CSS; e remodelagem da interface visando simplificação e maximização da área útil para exibição das páginas.

Aos poucos vou observando pontos positivos e negativos em cada um. Por exemplo, adorei o recurso de escolha de complementos (plug-ins) do Internet Explorer 9, que mostra o impacto de cada complemento no tempo médio de inicialização do navegador:

[photopress:ie9_complementos.png,full,centered]

Isto é algo que tem me incomodado no Firefox: ele tem demorado muito a iniciar (abrir a janela inicial), acho que a culpa deve ser de uma das várias extensões que utilizo, mas não sei precisar qual nem tenho tempo e paciência para testar uma por uma.

Por outro lado, detestei saber que o Google Chrome, apesar de sua excelente compatibilidade com os novos padrões e a perceptível rapidez na exibição de páginas, ainda não tem recursos super básicos como configurar impressora (margens, cabeçalho e rodapé) nem previsualizar impressão.

Qual navegador é o melhor, ainda é cedo para dar um veredito, pois são muitos quesitos envolvidos. Vamos experimentar e ficar atentos ao que o público diz na internet!

Corrida dos navegadores rumo a HTML5 e CSS3

A corrida dos navegadores rumo ao melhor suporte aos padrões HTML5 e CSS3 está quente.

Correndo para emparelhar com Google Chrome 8.0, que já está disponível há um bom tempo oferecendo bom suporte a estes padrões, além de trazer uma interface limpa, simples e eficaz e ser bem rápido, os dois principais navegadores lançaram nesta primeira quinzena de maio a versão candidata a oficial (Release Candidate) de seus novos navegadores:

Sobre o Firefox 4, em suas versões beta, já andei avaliando alguns aspectos de sua interface, cada vez mais parecido com o Chrome.

Internet Explorer 9 – Primeiras impressões

As mudanças na interface visando maximizar a área útil da janela destinada à exibição da página web também estão presentes no Internet Explorer 9. Além da barra de menu convencional que já havia sido abolida no IE8, agora o IE9 exibe por padrão em uma única barra os botões de histórico de navegação (a lista de navegação, como no Firefox 4, também requer manter pressionado um dos botões Voltar ou Avançar para ser exibida), a caixa de endereço, as abas e os botões de Home e dos menus Favoritos e Ferramentas.

[photopress:ie9.png,full,centered]

A barra de estado também foi extinta. A exibição dos links de destino apontados pelo usuário (hover) é feita em uma faixa na parte inferior da tela, similar ao Chrome e Firefox 4. E não vi nenhum local de exibição de mensagens de estado durante o carregamento das páginas, exceto o pequeno ícone animado à esquerda na aba correspondente.

A barra de notificação, recurso primeiro trazido pelo Firefox em substituição a janelas de diálogo convencionais, já era utilizada no IE8 em algumas situações e agora é utilizada no IE9 em todas as notificações. No IE9, passou a ser posicionada na parte inferior da janela.

Também foi extinta a caixa de pesquisa, integrada na caixa de endereço como já fez o Chrome. Durante a digitação de um endereço ou expressão, o navegador já oferece dinamicamente uma lista sugestões de pesquisa gerada pelo provedor de pesquisa padrão.

Na visualização de páginas, o IE9 promete carregar o conteúdo mais rapidamente e, se combinado com os recursos gráficos do sistema operacional Windows 7, melhor desempenho, nitidez e definição nos vídeos e outros elementos gráficos. Há um site de demonstração beautyoftheweb.com.

Traz também o Chakra, novo mecanismo JavaScript.

Para saber mais: Windows Internet Explorer 9 – A internet nunca foi tão fácil; Introdução – O que há de novo no Internet Explorer 9?; Recursos do Internet Explorer 9.

A Microsoft lista também um tabela Compare o Internet Explorer 9, confrontando Firefox 4 Beta 11 e Chrome 9.0 Beta.

Conclusão

As novas versões de todos os navegadores estão buscando simplificar a interface, maximizar a área de exibição de páginas e oferecer suporte aos mais atuais padrões e recursos da web. Vamos ver brevemente qual deles entrega melhor o que promete.

Espero breve poder testar também algo sobre o suporte a HTML5 e a CSS3.

Tomara que quem ganhe essa briga seja o usuário, com opções cada vez melhores para escolher seu navegador internet, em termos de rapidez, precisão, segurança, compatibilidade e flexibilidade.

Firefox 4 Beta e a barra de status

Em meu primeiro artigo analisando a interface as versões beta do novo Firefox 4, Firefox 4 Beta – novidades na interface, eu alertei para a decisão controversa de extinguir a barra de estado (status bar) na parte inferior da tela, quebrando uma convenção de interface já amplamente estabelecida na interface dos mais variados aplicativos.

Com isso, as informações que eram exibidas na barra de estado precisaram ser migradas para outros locais. No Firefox 4 Beta 10 estava assim:

  • O endereço de destino de um link, exibido quando se pousa o mouse sobre o link (hover) passou a ser exibido na barra de endereço (topo da janela), adiante do endereço (URL) da página atual.
  • Os controles (ícones e informações) adicionados por complementos, que antes eram exibidos na parte direita da barra de estado, passaram a compor uma nova “Barra de extensões”, que se assemelha exatamente a uma barra de estado ocupando uma faixa no extremo inferior da janela, esta nova barra vem oculta por padrão, mas há a opção de exibi-la. Trocar uma barra por outra quase idêntica não me pareceu nenhuma vantagem.
  • Por fim, mensagens de estado exibidas durante o carregamento das páginas (“Conectando-se a …”, “Aguardando resposta de …” etc.) passaram a ser exibidas de forma muito resumida e incompleta no título da própria aba.

Essas medidas acabaram por eliminar uma referência bem estável de resposta visual ao usuário
na interface, que é a parte inferior da janela, e fragmentá-la em pontos distintos e pouco usuais na janela, e ainda com perda de detalhe. Com isso, os hábitos já instintivos de foco de visão do usuário foram perdidos e ficaram dispersos. Ou seja, uma evidente piora na experiência do usuário.

No Beta 11, o Firefox re-introduziu as mensagens de estado em uma área sobreposta ocupando parte da região inferior da janela. Enquanto a barra de estado ocupava uma faixa fixa ocupando toda a extensão do extremo inferior da janela, esse overlay é exibido quando há mensagem e ocupa apenas a largura necessária ao texto exibido. Ou seja, uma “semi-barra” de estado dinâmica.

[photopress:firefox_4beta11_estado.png,full,centered]

No recém-lançado Firefox Beta 12, também os endereços de hover de links deixaram de ser exibidos na própria barra de endereços e passaram para esse novo overlay na área inferior.

Com isso, a proposta de interface para exibição de mensagens de estado e endereços de links do Firefox 4 ficou praticamente idêntica à do navegador Google Chrome, que utiliza o mesmo estilo de overlay.

[photopress:google_chrome_mensagens.png,full,centered]

Tudo isso parece ter o objetivo de apenas maximizar a área útil de exibição da página, aproveitando espaços anteriormente ocupados pela barra de estado.

Considerando que estamos falando de uma área muito útil à interface e que ocupa pouco mais de 20 pixels de altura, será que todo esse esforço compensa? Duvido.

Pior ainda se a barra de extensões for exibida, esta sim desperdiçando espaço, já que as mensagens ocupam área adicional no overlay. Para mim, seria muito mais simples e efetivo criar uma opção de exibir dinamicamente a boa e velha barra de estado, exibida apenas quando há uma nova mensagem ou feedback de um controle visual de extensão, ou quando se posiciona o mouse sobre ela.