Extensões para o navegador Firefox atualizadas

Minha lista de Extensões para o navegador Firefox recebeu sua nona atualização ontem. Agora com categorias mais organizadas, relaciono lá ótimas extensões que fazem do Firefox mais que o melhor navegador web, uma ferramenta essencial de trabalho e produtividade na Internet.

Firefox - A web de volta

  • Uso geral
    • Abas
    • Interface
    • Favoritos (Bookmarks)
    • Downloads
    • Gerenciar Atualizações e Complementos (Add-ons)
    • Segurança, Privacidade e Controle
  • Ferramentas técnicas
    • Canivete Suíço do Desenvolvedor
    • Utilidades
    • Rede e HTTP

REST e a evolução da arquitetura de software

[Atualizado em 2008-10-18.]

Já ouviu falar em REST?

É o acrônimo para o termo em inglês Representational State Transfer, ou Transferência de Estado Representacional. O termo foi introduzido por Roy Thomas Fielding — um dos principais autores da especificação HTTP e autoridade em arquitetura de redes de computadores — no ano de 2000, em sua tese de doutorado (Ph.D.): Architectural Styles and the Design of Network-based Software Architectures, Universidade da Califórnia, Irvine, EUA. O capítulo 5 da tese versa sobre Representational State Transfer (REST).

De 2000 até agora, o conceito vem se difundido e se popularizando como um estilo de arquitetura de software moderno para sistemas hipermídia distribuídos, em especial as aplicações na World Wide Web (WWW, ou simplesmente web “para os íntimos”).

O conceito de REST e os sistemas RESTful (aderentes aos princípios de REST) refletem, em minha opinião, uma das muitas facetas do aumento da abstração e complexidade na arquitetura das aplicações via Internet.

Desde que a web surgiu no início da década de 1990 — criada por Tim Berners-Lee no CERN — até hoje, acompanhamos seu aumento de abrangência e complexidade. Surgiu como um meio simples e prático de disponibilização de conteúdo hipermídia na Internet.

Ao longo dos anos, por um lado o conteúdo da web se tornou mais rico e multimídia com a introdução de imagem, animações, áudio e vídeo etc. Por outro, sua interatividade cresce em ritmo acelerado, tornando a web um canal de interação, aplicações e serviços cada vez mais amplo.

As aplicações na web também deram os primeiros passos com o protocolo Common Gateway Interface (CGI) até chegarem à era atual dos Web Services (WS), da Arquitetura Orientada a Serviços (Service-Oriented Architecture – SOA) e seu uso nos sistemas de Gerenciamento de Processos de Negócio (Business Process Management – BPM).

Assim, a web deixa de ser a camada de mais alto nível de abstração na pilha das aplicações Internet (WWW → HTTP → TCP/IP). Acima dela se posicionam sistemas complexos que tem a web como “mera” base de infraestrutura. Neste topo entram princípios e mecanismos como REST, WS, SOA e AJAX, bem como os frameworks de aplicação web de alto nível — baseados em componentes — como Java EE (JSF → JSP → Servlets), Microsoft .NET Framework e o Zend Framework do PHP 5.

Isso me traz à mente a comparação com o que li tempos atrás. A constatação — que então me impressionou — de que os mecanismos de Mapeamento Objeto-Relacional e frameworks de persistência como o Hibernate estavam fazendo a linguagem SQL se tornar commodity, vista como uma camada de “baixo nível” na interação com bancos de dados. Concordo. Eis aí mais um exemplo do aumento no nível de abstração e complexidade dos sistemas.

Para saber mais:

REST em Java

Para intergrar a futura plataforma Java EE 6, em fevereiro de 2007 foi proposta a nova especificação JSR 311 – JAX-RS: The Java API for RESTful Web Services, Java Community Process (JCP). A JSR 311 teve sua versão final lançada em 2008-10-10.

Implementações de Web Services RESTful em Java:

Para saber mais (todos em inglês):

Ajax em Java – coletânea de referências

[Atualizado em 16 de agosto e 20 de dezembro de 2007, 27 de abril de 2008.]

Em meu artigo Novo impulso ao JavaScript, estive comentando como a onda de alta interatividade da Web 2.0 e o mecanismo AJAX estão impulsionando a evolução de componentes dinâmicos na web.

AJAX, acrônimo para Asynchronous Javascript And XML (JavaScript Assíncrono e XML), é a técnica de uso combinado de tecnologias existentes — JavaScript, XML e o objeto XMLHttpRequest — que visa propiciar mais dinamismo a páginas web, de forma a melhorar a experiência da interação do usuário. Assim, não chega a ser uma nova tecnologia em si, mas uma ampliação das técnicas de HTML Dinâmico (DHTML) no cliente web, agora interagindo também com o lado servidor.

O princípio de AJAX é, a partir de uma página web no navegador, submeter assincronamente pequenas requisições adicionais ao servidor web, e utilizar seu resultado em manipulações dinâmicas na página atual, sem a necessidade do usuário navegar para uma página inteiramente nova.

A organização OpenAjax Alliance, que reúne mais de 80 dos principais fornecedores e projetos de software livre relacionados a tecnologias para web, é dedicada a promover a adoção de AJAX de forma aberta e interoperável.

No campo estrito do HTML dinâmico com JavaScript, aplicável a páginas web independente da tecnologia no servidor, há excelentes frameworks — livres e gratuitos — de componentes web com suporte a AJAX:

Destaque também para as bibliotecas de apoio jQuery (dica do leitor Renato Silva; veja também docs, blog, refcard, tutorial, jQuery Brasil, exemplos) e Scriptaculous (veja Wiki com documentação e demos). Veja também Other Frameworks (mootools, Prototype, jQuery, YUI Library, MochiKit, Tibco General Interface, Scriptaculous, Dojo Toolkit, Base2, ExtJS), por Qooxdoo.

Falar de AJAX em aplicações web dinâmicas implica rapidamente em avaliar quais ferramentas no lado servidor se adequam melhor e mais facilmente ao tratamento de páginas e componentes dinâmicos. Este já foi tema de artigo meu em novembro de 2006, AJAX cresce rápido em Java.

Partindo dos componentes do Dojo Toolkit e outros, já existem plataformas e frameworks abertos e flexíveis para o suporte a AJAX em Java. As seguintes referências de destaque são software livre:

Diversos frameworks web MVC oferecem suporte a componentes Ajax. Em Java, uma das primeiras iniciativas de porte neste sentido foi o do Google Web Toolkit (GWT), poderoso, prático e livre, que já nasceu com foco em Ajax. Frameworks como Wicket — veja Interview: How Wicket Does Ajax, Javalobby, 2008-04-25 –, Struts 2 (WebWork) e NextApp Echo2, entre outros, incorporaram suporte a Ajax ao longo de suas evoluções. Para Tapestry, existe a biblioteca Tacos de componentes Ajax.

Contudo, creio que o uso dos componentes dinâmicos AJAX está atingindo o seu auge quando aplicado ao padrão JavaServer Faces (JSF), que tem como fundamento exatamente a programação web em Java orientada a componentes e eventos. Estão surgindo componentes JSF cada vez mais ricos e com melhor suporte a AJAX. Cito as principais bibliotecas/frameworks JSF livres que conheço, com suporte a AJAX:

Uma tabela comparativa de várias bibliotecas pode ser encontrada em AJAX JSF Comparison Matrix.

Veja também as indicações em Uma centena de sugestões para programação Ajax e Javascript, por Cid Andrade, 2008-04-16.

Para saber mais (em inglês):

Atualizações de segurança Mozilla

Saiu ontem o Firefox 2.0.0.4. É basicamente uma atualização de segurança e estabilidade, trazendo também algumas melhorias no suporte ao Windows Vista.

Além do Firefox 2.0.0.4, estão disponíveis as atualizações de segurança das versões 1.5 dos produtos Mozilla: Firefox 1.5.0.12, Thunderbird 1.5.0.12. Eles corrigem as seis vulnerabilidades divulgadas em 30 de maio. A mais crítica é MFSA 2007-12, possibilidade de crash com falha de memória, que afeta todos os produtos Mozilla.

Para saber mais (em inglês):

Novo impulso ao JavaScript

Há poucos anos atrás, JavaScript era um das linguagens de programação mais criticadas e detestadas. Os mais radicais inclusive questionariam chamá-la de linguagem de programação. Programadores e desenvolvedores “de verdade” gostavam de linguagens “de verdade”, como C, Java, Pascal, C#, Fortran… tudo menos JavaScript, que nem tipagem forte tinha e ainda se dizia uma linguagem orientada a objetos.

Nos navegadores web, principal ambiente operacional do JavaScript, existiam entre Firefox/Mozilla e Internet Explorer muitas diferenças nas suas implementações da linguagem e, principalmente, no modelo de objetos de documento (DOM) utilizado para se manipular a estrutura da página web com JavaScript.

O Mozilla (de Netscape a Firefox) foi quem lançou e evoluiu várias versões da linguagem JavaScript, mas a correspondente JScript implementada pelo Internet Explorer tinha uma série de diferenças e de adições proprietárias da Microsoft. Lidar com essas diversidades realmente enlouquecia qualquer programador.

Fazer uma aplicação DHTML (HTML com JavaScript) multi-browser era uma tarefa difícil, às vezes inviável. Em 2003 e 2004, eu mesmo tive que estudar um bocado para fazer Validação de formulários HTML, Tratamento de CPF e CNPJ e Eventos multi-plataforma em JavaScript.

Essa realidade foi bastante amenizada à medida que se consolidou padronização da linguagem JavaScript pela ECMA (ECMASCript) e do Document Object Model (DOM) pelo W3C. O Firefox sempre foi bem aderente a estes padrões, e as novas versões do Internet Explorer têm gradativamente aprimorado esta compatibilidade.

E eis que a era Web 2.0 e o desenvolvimento AJAX deram novo impulso ao JavaScript. Como o próprio HTML e o ambiente HTTP não têm evoluído com a rapidez exigida pelo aumento de demanda por recursos nos serviços através da web, quem deu uma luz no fim do túnel para uma explosão de interatividade na web foi o bom e velho JavaScript. A linguagem é o próprio componente “J” em AJAX: Asynchronous Javascript And XML.

Por bem ou por mal, os desenvolvedores de aplicações e serviços interativos para web têm sido obrigados a dar mais atenção ao JavaScript e, com isso, a linguagem tem perdido seu mito de endemoniada para se tornar um ambiente de programação viável, com riqueza de recursos e grande flexibilidade. Ou, na excelente definição do artigo JavaScript – Nem Java, nem Script – Uma Interessante Linguagem Orientada a Objetos (sem classes), por Leonel Togniolli:

[JavaScript] é uma linguagem dinâmica, fracamente tipada, com orientação a objetos baseada em prototipos.

Se quiser entender melhor o que significa essa definição, leia o artigo citado, que é bem interessante.

Na esteira da Web 2.0, explodiu o desenvolvimento de componentes Ajax e, por conseqüência, despontaram os magos do JavaScript, e recursos e ferramentas cada vez mais interessantes e poderosos estão surgindo, baseados em JavaScript.

Vários IDEs de desenvolvimento para web oferecem suporte a edição e validação de sintaxe Javascript. Além disso, um excelente ambiente para monitorar, inspecionar e depurar JavaScript em ação — assim como CSS, HTML, DOM, tempo de carga de páginas e Ajax — é o Firebug, uma poderosa extensão para o navegador Firefox. Recomendo a leitura do artigo Puxão de orelha faz bem, JavaScript também. Apresento o Firebug!, por Giovane Roslindo Kuhn.

Também existem bibliotecas que, a partir dos pobres componentes padrão atualmente existentes de estrutura de página e formulários do HTML, criam componentes de interface mais sofisticados, há muito já disponíveis em ambientes de programação gráfica desktop, como árvores, tabelas etc.

Existe o popular Dojo Toolkit, um framework DHTML/AJAX de código aberto escrito em JavaScript. Outro exemplo é a biblioteca JavaScript Qooxdoo. Sua lista de componentes é bem rica, como se pode ver no showcase. Conheci esta biblioteca por outro artigo também de Leonel Togniolli: Clientes Ricos Ajax na Web com Qooxdoo.

document.write("Hello world, again, JavaScript!") 🙂

Para saber mais:

Atalhos do Firefox

Dica para quem quer ganhar mais agilidade ao utilizar os recursos do navegador web Firefox: Um prático resumo dos atalhos de teclado e mouse do programa.

Firefox Keyboard and Mouse Shortcuts (Windows, Mac OS X e Linux), por Otto de Voogd. Em 7is7.com, Firefox Utilities e Fire Up the Fox!

Firefox Large Print Keyboard & Mouse Shortcuts, por Otto de Voogd, para Access Firefox. Versões próprias para impressão, nos formatos HTML, PDF e DOC (Word) e ODT (OpenOffice).

Veja também Firefox Help: Keyboard Shortcuts e Mouse Shortcuts, comparando Firefox, Internet Explorer e Opera.

Fonte: Firefox – Lista de Atalhos, dc dinfo » Atalhos do Firefox, blog do Kraudio.

Fim do Firefox 1.5

Lendo o artigo de Tiago Silveira, Nota de falecimento: Firefox 1.5, também fiquei preocupado e triste com a informação de que a comunidade de desenvolvedores do Firefox pretende encerrar as atualizações da geração 1.5.0.x em maio de 2007.

A nota na página de versões anteriores diz (tradução livre):

Firefox 1.5.0.x será mantido com atualizações de segurança e estabilidade até o meio de Maio 2007. Todos os usuários são fortemente encorajados a atualizar para Firefox 2.

É realmente um ciclo de vida muito curto para o Firefox 1.5, cujo lançamento inicial (versão 1.5.0.0) foi em novembro de 2005, ou seja, apenas um ano e meio antes do término anunciado de suporte. Produtos com suporte profissional e dos quais se espera confiabilidade e estabilidade costumam ter um ciclo de vida de versão de três anos ou mais, para garantir o investimento de empresas e usuários que se utilizam e se baseiam no produto.

É também uma decisão incoerente ante ao crescimento do Firefox como navegador preferido entre os usuários de Internet. Estudo recente da comScore sobre Firefox versus Internet Explorer mostra que o Firefox atinge de 8 a 17% da preferência atual, de acordo com o ambiente (corporativo, doméstico, acadêmico). Estes números condizem com outras estatísticas de participação global do Firefox, apontada como 11,7% pela OneStat em jan/2007 e 15,1% pela Net Applications em março. Outras estatísticas chegam a apontar participação do Firefox ainda maior: 31,8% (W3Schools), 26,7% (WebReference), 24% (TheCounter), 21,6% (EWS).

A última atualização lançada do Firefox 1.5 foi a versão 1.5.0.11 em 20 de março, corrigindo uma vulnerabilidade de segurança.

Para saber mais:

Apresentação de Arquitetura da Informação

Seguindo uma dica do grande Felipe Memória (designer e professor) em seu blog ExperiênciaPerfeita.org, conheci a apresentação da Laura Lessa para o Curso de Especialização – Arquitetura de Informação em websites, de Guilhermo Reis, e adorei. Recomendo a todos que gostam de projeto, desenvolvimento e design para web:

Arquitetura de Informação na construção de um portal de notícias“, por Laura Lessa, reproduzido em SlideShare por Samuel Viani (PDF original não mais disponível).

Laura Lessa é Gerente de Arquitetura da Informação da Globo.com. O material disponibilizado por ela apresenta o case de AI do portal de notícias G1.

Janela modal na web – atualizado

A partir de um comentário do Rafael Bernanrd Araujo sobre meu artigo Janela modal na web, revisei o texto melhorando e atualizando as informações apresentadas.

Descobri que recentemente (12 de janeiro) a Subimage Interactive atualizou o script SubModal. Agora na versão 1.4, vi resolvido um efeito colateral bobo mas incômodo no Firefox, de surgir barra de rolagem lateral quando a página tinha rolagem vertical. Vi tamém que há o recurso de abrir uma página como janela a partir de um simples link (A HREF), bastando definir para ele a classe de estilo class="submodal". O SubModal também suporta o uso de função de callback, mas não explorei este recurso.

Sem Bondfaro, agora só Buscapé

Em final de maio de 2006, Buscapé, maior portal de pesquisa de preços na Internet da América Latina, havia anunciado que comprara seu maior concorrente, o Bondfaro. De acordo com o anunciado, as ferramentas de conteúdo do Bondfaro seriam implementadas no Buscapé e vice-versa, mas os sites e as estruturas e negócios das empresas seriam mantidos de forma independente. Buscapé.com e Bondfaro têm atuação no Brasil, Argentina, Chile, México e Colômbia.

À época, pelo ano-base 2005, as companhias tinham juntas um faturamento de R$ 29,8 milhões, sendo 18,1 milhões do Buscapé, com 9 milhões de usuários cadastrados, e 11,7 milhões do Bondfaro e seus 1,8 milhão de usuários.

Logo o Programa de Afiliados das duas empresas foi unificado, havendo até hoje um FAQ na Central de Negócios do Buscapé que oferece orientações aos afiliados.

Hoje, sábado, 10 de fevereiro, parece que a pesquisa pelo site do Bondfaro foi desativada, pois os acessos a seus domínios (bondfaro/bomdefaro .com e .com.br) redirecionam para o endereço buscape.com.br.

Sem Bondfaro no mercado de buscadores de preço do e-comércio, as principais alternativas ao gigante Buscapé no Brasil atualmente são Shopping UOL e Jacotei. Para o mercado dos EUA, você encontra serviço similar em portais como Price Grabber e PriceSCAN.

Para saber mais: