Mini-Curso Design Patterns com Java

novembro 4, 2009

Essa notícia é meio urgente, pois trata-se do mini-curso que estarei ministrando amanhã, durante a III Semana de Informática da UNICAP.

Para quem estiver interessado, sugiro se apressar, pois a inscrição é até amanhã de manhã.

Optei por dar este curso, porque, além de não ser normal aqui em Recife, acho que todos os envolvidos com linguagens orientada a objetos, devem versatilizar seu ponto de vista sobre boas práticas de programação, mesmo que com constante refactoring inicial que caracteriza um certo engano no seu design inicial e na adoção de princípios de O.O e padrões de projeto, quando necessários.

Então resolvi assumir este desafio, e estabelecer esta proposta, compartilhando conhecimento e, desenvolvendo  aprendizado com interessados, como objetivos finais.

Infelizmente grupos de estudos e usuários de tecnologias não são muito motivados por aqui.

Neste curso abordarei apenas os principais Design Patterns da GoF, pois o escopo da carga horária do curso foi reduzida para atender cronograma do evento.

E quem estiver achando que vai ser só teoria e diagramas UML, pode tirar o cavalinho da chuva, exceto apenas breve introdução. Estarei a cada padrão associando teoria e prática, com estudo de caso, cenários e exemplos a implementarmos juntos. Será praticamente 70% programação

Atendendo a pedidos, segue uma das apresentações

Antecipo desculpas pelo tamanho das fontes. Espero vocês lá!

Maiores informações :: http://www.dei.unicap.br/sic/

Vai encarar concurso, federal, pense 2 vezes!

agosto 5, 2009

Interessante você pensar hoje em concurso público, quando se há, cada vez menos tempo para se dedicar. Isto não conta apenas o tempo que você precisa para estudar, mas sim o que você desenvolveu no dia-a-dia: seja com erros ou acertos; seja no trabalho ou didática própria em livros, artigos e referências; seja atuando em cursos e eventos como professor ou como ouvinte; seja a partir do network pessoal ou rede de relacionamentos; então, se você concorda comigo até aqui, você começa a perceber que além do estudo para preparação até o dia da prova, você deveria ter acrescentado aquele hábito de aprendizado diário voltado para área de conhecimento que você não teve afinidade ou oportunidade para aprender. E isto não é nenhuma novidade!

Pelo que pude acompanhar em editais para o semestre de 2009.1, temos uma interseção de que praticamente 65% do assunto cobrado nos editais são os mesmos em IHMO, isto para o cargo de Analista de Sistemas para Desenvolvimento de Software. No entanto, os outros 35% fica por conta de novos conceitos e paradigmas, juntamente outros assuntos inexistentes que varia de edital para edital.

Bem, não sou especialista em concurso público, tampouco concurseiro, longe disto, bem como sequer pensei ou planejei publicar algo sobre o assunto, mas não pude deixar passar a oportunidade de expor algumas considerações de forma espontânea, após ter feito prova para o concurso para Tribunal de Contas da União (TCU) do cargo de Analista de Desenvolvimento de Sistemas, mesmo ainda no aguardo do resultado.

Fiquei surpreso não só pela distribuição dos temas e questionamentos abordados nas provas objetivas e discursivas, mas pela organização e didática ao ilustrar com imagens e textos de referências que ajudam a nos contextualizar sobre o assunto. Não estou falando isto porque é da cespe, meu foco é sobre o desafio da prova, e apenas isto.

A prova foi dividida em 2 dias, tendo consequentemente 2 provas com respectivo caderno para conhecimentos básicos e específicos, possuindo assim 100 questões objetivas em conjunto com 2 questões discursivas para cada carderno de prova. Fiz abaixo uma ilustração de como ocorreu (veja aqui de forma analítica retirada de edital):

concurso_composicao

Não contei acima com a avaliação de titulações, que dependendo do seu coeficiente, vai fazer uma diferença danada, mas focando nas provas, podemos perceber que a experiência no assunto facilita bastante na resolução, bem como no desenvolvimento dos hábitos acima citados. Esta experiência não necessariamente precisa ser atuada, ela pode ser passiva como por exemplo ouvindo a rádio voz do brasil, assistindo vídeo-aulas, entre outras formas de aprendizado interativo.

Outro aspecto importante deste desafio, além da corrida conta o tempo foi com certeza a prova discursiva, onde cada área de conhecimento exigida associa você a uma perspectiva de perfil esperada pela organização, ou seja, é constatado que além da avaliação dos aspectos técnicos, são avaliados capacidade de assertividade e melhor eficiência na resolução do problema tratado, o que nos faz concluir que quanto maior seu envolvimento no assunto, boas são as chances de manter esta assertividade.

Para prova de conhecimentos básicos caíram 2 questões discursivas, a 1ª questão abordou processo decisório na perspectiva do processo e do problema, ainda requerendo também sob decisões programadas e não-programadas, contextualizando com informações do ponto de vista de Chiavenato e da Matemática. Já a 2ª questão tratou de um problema específico de Licitações, quanto a sua modalidade com ou sem dispensa, bem como formas de contratação para outra esfera da administração(direta e/ou indireta) formulados a partir de um texto dissertativo fundamentado de entendimento do TCU.

Focando na prova específica, foi bem interessante, para não dizer difícil, inclusive a discursiva, o qual a 1ª questão exigiu expor informações e diferenças sutis específicas entre o ITIL em versão 3 e COBIT, e a 2ª questão descrever e elaborar uma arquitetura de projeto de software envolvendo diversos requisitos funcionais e não-funcionais de cordo com  necessidade especificada. Considerei difícil apenas porque nunca tive contato, até o momento, com ITIL e COBIT, mas planejo em breve estudar e conhecer mais sobre o assunto.

Não vou entrar em mais detalhes, inclusive técnicos, mas faço um desfecho motivando as pessoas a se auto-avaliar após a realização de concursos sob aspectos que possibilite avaliar: seus próprios conceitos e argumentações; seus acertos, falhas e equívocos; apronfundar e reformular seu senso crítico; aspectos técnicos a revisar, entre outros; onde de fato, a partir daí, você começa a desenvolver suas próprias correntes de pensamento, melhorando além de seu conhecimento e sua área de atuação, e é claro, consequentemente sua capacidade assertiva(eficiência). É notório não querer seguir o caminho inverso ?

Em concursos como este, e, principalmente os de autarquia federal existindo questões objetivas e discursivas neste nível, não adianta comprar materiais apostilandos express, bem como inscrever em cursinhos macdonalds motivacionais.

Poupe seu dinheiro, trace objetivos de curto prazo quanto ao que você realmente precisa e monte um plano de ação mesmo que em paralelo. Afinal, é importante haver um começo, uma mudança, e de hábito, mesmo que seja de tempo irrizório como 1 hora diária. É como correr na academia, primeiro você começa correndo 400 metros sem parar, daqui a pouco você percebe que está correndo 4 quilômetros.

Caso você queira fazer concurso por experiência/aprendizado ou por sua conta em risco(sua intuição), quanto a isto tudo bem, mas do contrário, você irá gastar dinheiro em vão, podendo realizar o download da prova depois em casa e honrar sua capacidade e competência. Para a prova discursiva, você pode também digitalizar o rascunho e enviar por e-mail para um amigo ou conhecido corrigir, para que pelo menos você tenha feedback crítico de alguém que estudou e saiba mais sobre o assunto. Mais ou menos como fez este colega.

Então se você for encarar um concurso, analise bem os riscos e sua capacidade, leia atentamente o edital, acompanhe grupos de discussões e fóruns, faça provas anteriores e simulados, veja quantitativo de vagas, requisitos e atribuições para avaliar ao menos se vale a pena concorrer e fazer valer a pena o investimento de inscrição e egresso para realização de prova, e antes de ocorrer a infelicidade de não passar nos 10% de aproveitamento, como foi no meu caso, mas valeu bastante o aprendizado e fica para uma próxima oportunidade! 😀

Deixo por final algumas informações interessantes mencionadas por Willian Douglas sobre como proceder para passar em concurso público, bem como as provas com respectivos gabaritos oficialmente definitivos após recursos:

Prova Dia 1  :  Conhecimentos BásicosGabarito

Prova Dia 2  :  Conhecimentos EspecíficosGabarito

Entendendo propósito JSR 299 : JCDI/Web Beans

fevereiro 15, 2009

Com pouco mais de 6 meses da especificação JSR 299 Web Beans ter sido aprovada, houve uma interessante entrevista com Gavin King, líder da especificação, quanto aos questionamentos levantados pelo pessoal do infoQ. Hoje, a especificação saiu da seção de public review, finalizada em 9 de fevereiro de 2009, conforme consta no site do jcp.

Recentemente, após processo de conclusão da seção pública ainda em versão draft da especificação, Gaving divulgou em seu blog, as mudanças existentes, após pedido de revisão pelo Expert Group, no qual implicaram algumas medidas enérgicas:

  • Qual o nome de batismo?
    • Modelo de componente, deve estar de acordo com outros existente na plataforma Java EE, portanto, nós do expert group te batizamos de JCDI, e não te chamarás mais de Web Beans!
    • Moral para isto eles têm! 😀
  • Web Bean Manager ficou por conta do Java EE
    • A implementação deste recurso ficou por conta do Java EE
  • Empacotamento
    • Cada um no seu quadrado, javax.context, javax.inject, javax.event, javax.inject.manager
  • Possibilidade de DI de qualquer recurso Java EE
    • Agora é possível fazer injeção de dependência, desde referência de componentes remotas EJB até Web Services.
  • Melhor definição do uso dos metadados, bem como regras de herança
    • Praticamente um temlapte method para os Web Beans, onde será oferecido a partir de um generic bean, uma classe de template.
    • Segundo Gaving, esta melhoria provavelmente extinguirá o formato existente do deployment descriptor do EJB
  • Notificação de Eventos de forma assíncrona
    • Eventos do tipo Observer agora poderão receber notificação de objetos de forma assíncrona
    • Eles também poderão ser mapeados a partir de um JMS Topic, possibilitando sincronizar o estado de um evento com de outras camadas intermediárias, mesmo que seja em ambiente clusterizado
  • Novo recurso de fluxo por atividades
    • É possível agora, a partir da API, você definir o seu ciclo de atividades através de funcionalidades, de forma a gerenciar o estado inicial e final de seu ciclo, como utilizado em fluxo por processos, entre outros orientados à tarefas.
  • Configuração de DI para resolução de dependência de metadados
    • Adição de nova interface InjectPoint que possibilita fazer DI em casos que antes eram feitos:
      • Logger log = Logger.getLogger(MyClass.class.getName());
    • Agora pode ser escrito assim:
      • @Current Logger log;
  • Uniformalização dos Interceptors
    • Interceptor/Decorators se tornaram uma idéia para uso adjacente em conjunto com a API, tendo consequente remoção da especificação e consequente transformação das idéias motivadas a partir de um apêndice.

Então, teremos pouco mais de um mês se tudo correr bem para liberação do release final desta especificação, e provavelmente algumas semanas para liberação do Seam com implementação após mudanças.

Conforme o próprio Gavin mencionou, esta especificação tem sido fortemente influenciada pelos frameworks Seam e Guice, em que estes foram advindos de tendências interessantes motivadas pelo Spring.

Na verdade o Web Beans agora, se tornou uma especificação maior dentre as alternativas atuais(Spring, Seam e Guice), assim como houve transição similar do Hibernate com o JPA.

Só para entender um pouco das características padrões e fundamentais destes frameworks, a proposta inicial submetida desta JSR tem sido:

  • Changes to EJB 3 that will be needed for EJB’s to act as JSF managed beans
    • Facilitar compatibilidade entre EJB e JSF com recursos de DI. Conforme JSR, o Web Bean pode se tornar um EJB Bean, permitindo uso direto do EJB com qualquer página JSF
    • Para manter isto o Web Bean gerencia esta integração com JSF se beneficiando da própria API JSF
  • Annotations for manipulating contextual variables in a stateful, contextual, component-based architecture
    • Metadados para obtenção de modelos contextuais com estado(statefull), entre outros modelos de componente compatível
  • An enhanced context model including conversational and business process contexts
    • Modelo de componente que possibilite manter o estado conversacional entre contexto de modelo de objetos e o contexto de serviços que necessitam de permissas de regras de negócio, e por este motivo manter o estado conversacional ativo
  • Extension points to allow the integration of business process management engines
    • Modelo de componente para gerenciar escopo de fluxo de atividades, processos de gerenciamento de negócio ou orientados à tarefas
  • Integration of Java Persistence API extended persistence contexts
    • Integração facilitada com o EntityManager JPA com o Web Bean

Percebe-se então que o Web Beans procurou atacar mais estratégias de DI para dar suporte à nova especificação do Java EE 6 que está chegando, assim como o gavin mencionou após processo de revisão pelo expert group. Então, além dos propósitos acima mencionados, a especificação contempla outros importantes recursos como:

  • Decorators
    • Segue sua definição vide especificação no item 6.3, apesar de ter sido removido da próxima versão da especificação conforme citei anteriormente:
      • A decorator implements one or more API types and intercepts business method invocations for methods defined by the implemented API types. These API types are called decorated types.
    • Apesar de favorecer o mesmo propósito que o interceptor, a diferença está justamente na sua semântica, ou seja, o objetivo foi desacoplar como por exemplo, o gerenciamento de transação e segurança da lógica de negócio, motivando seu fim.
    • Por padrão, os decorators, são desabilitados, bastando declará-los no arquivo de configuração web-beans.xml, sendo obviamente chamados após interceptors, conforme consta no item 6.3.4.
  • Stereotypes
    • Segue sua definição vide especificação no item 2.7:
      • In many systems, use of architectural patterns produces a set of recurring Web Bean roles. A stereotype allows a framework developer to identify such a role and declare some common metadata for Web Beans with that role in a central place.
    • Interessante recurso que dispõe um meio de efetuar DI em um metadado, personalizando-o com outros metadados, afim de uniformalizar um comportamento padronizado, diminuindo o uso de anotações, necessitando apenas de um único metadado declarado, evitando assim o famoso Mega Zord.
    • Na especificação é existe a definição:
    • Existe um interessante artigo motivando uso de Stereotypes, relatando o fato de não ser um conceito novo e sim, apenas uma forma simples de implementar ao invés de usar herança com o design pattern template method
  • Deployment Types
    • Segue sua definição vide especificação sob o item 2.5:
      • Deployment types allow the Web Bean manager to identify which Web Beans should be enabled for use in a particular deployment of the system. The deployment type also determines the precedence of a Web Bean, used by the resolution algorithms specified in Chapter 4, Lookup, dependency injection and EL resolution.
      • Recurso que possibilita o desenvolvedor configurar um cenário de deployment para uma determinada implementação de uma API qualquer
  • Web Beans Scoped

    • Segue sua definição em especificação sob o item 2.4:
      • All Web Beans have a scope. The scope of a Web Bean determines the lifecycle of its instances, and which instances of the Web Bean are visible to instances of other Web Beans, as defined in Chapter 8, Scopes and contexts. A scope type is represented by an annotation type.
    • Importante recurso do Web Beans, são as definições de escopo e suas restrições, em que diferentemente do JSF, bem como Servlets, EJB e JavaBeans, impossibilita o uso de singletons e objetos stateless, necessitando que seu estado seja compartilhado pelo cliente, executados dentro de um mesmo contexto.
    • Também pode ser definido um escopo personalizado, utilizado pela anotação @ConversationScoped, que se beneficia do gerenciador de contexto, possibilitando também referenciar objetos dependentes deste estado conversacional através da anotação @Dependent
  • Events
    • Segue abaixo breve descrição em especificação no capítulo 7:
      • Web Beans may produce and consume events. This facility allows Web Beans to interact in a completely decoupled fashion, with no compile-time dependency between the two Web Beans. An event comprises:
        • A Java object (the event object)
        • A (possibly empty) set of instances of binding annotation types (the event bindings)
    • Possibilita um Web Bean propagar o estado de um produtor para consumidor, fazendo com que este efetue uma ação ao ser notificado de uma determinada mudança, utilizando a mesma semântica do design pattern Observer
  • Interceptors
    • Os interceptors sofreram alguns ajustes após processo de revisão, porém não custa lembrar de seu propósito, conforme especificação antes da revisão pública segue definição abaixo, apesar de ter sido removido da especificação, conforme citei anteriormente:
      • A Web Beans interceptor is a simple Web Bean with an implementation class that is also an interceptor class as defined by
        the EJB specification. Web Beans interceptors must declare at least one interceptor binding type.
      • A Web Beans interceptor may be either a business method interceptor, a lifecycle callback interceptor or both.
    • Interceptor são usualmente utilizados para resolver problemas de modularização para separação de preocupações, diferentemente dos decorators que são type-safes e que não podem ser utilizados para este caso

Enquanto isto a especificação Java EE 6 encontra-se disponível para revisão pública, e estará passível a mudanças, assim como houve com o JCDI/Web Bean.

Contudo, o processo de revisão do Expert Group me pareceu essencial para definir um modelo de componente e serviços possibilitassem maior integração com o modelo de componentes Java EE ao invés de criar um novo modelo de componente. A partir daí, podemos observar que a implementação nos motiva cada vez menos o uso do xemelê e mais tipagem segura.

Afim de deixar este artigo mais objetivo, disponibilizei um documento com referências e pesquisas que efetuei sobre o assunto, e sempre que possível estarei atualizando-o.

Really Achieving Your Childhood Dreams

dezembro 24, 2008

child-dream

Você já parou para pensar nos seus sonhos enquanto criança e que não conseguiu realizar. Pois é, também pensei um bocado e me relembrei bastante, após ter revisto um dos maiores aprendizados de vida já registrados.

Estou falando de Randy Pausch, e aproveito para registrar aqui, como estamos na véspera de Natal e chegada de próximo ano 2009, ano ímpar, uma mensagem que ficou como um marco para mim, inclusive foi apresentado no fantástico, e que merece ser lembrado, como Pausch o fez em sua última aula, mencionando diversas vezes, como

Really Achieving Your Childhood Dreams

Há 2 semanas atrás, presentiei minha irmã, com o livro, The Last Lecture, e o considero como leitura obrigatória e aprendizado de vida, assim como sua última aula.

E não se esqueça, aprendizagem é atividade competitiva, como bem dizia Waldez Ludwig.

Boas festas!  :^)

Sun Tech Days in Campina Grande’PB with PBJUG

setembro 28, 2008

Neste sábado, 13/09/2008, me aventurei com alguns amigos do trabalho, Helmut Migge e Igor Cavalcanti, a participar da abertura de uma série de eventos que a Sun Microsystems está promovendo no Brasil todo. Vejam abaixo o roteiro planejado para este ano.

Explicando um pouco mais sobre o evento, o Sun Tech Days, trata-se de um evento que ocorre mundialmente, sendo executado em diversos países, e promovido pela própria Sun Microsystems e motivado pelos JUG’s locais de forma a disceminar conhecimento, práticas, metodologias e tecnologias utilizando plataforma Java bem como outras tecnologias relacionadas.

No Brasil, o Sun Tech Days 2008 está sendo executado independente em cada estado em dias diferenciados, de forma que possamos acompanhar caso seja transmitido via webcast. O evento principal ocorrerá em São Paulo, veja aqui a programação, que iniciará no dia do meu aniversário. Para os outros dias através de outros estados você pode conferir aqui a programação, bem como mais informações.

Bem, falando em específico do evento, participamos da abertura em Campina Grande-PB. Partimos às 05:40 de Recife-PE chegando por volta das 08:45 no auditório da FIEP. Seguimos este roteiro de carro, tanto na ida como na volta.

Chegando lá, a abertura do evento foi iniciada por Rodrigo Rebouças (album de fotos do evento), chairman do evento e membro do PBJUG. Após isto se deu início a programação esperada do evento.

Um breve resumo do que rolou por lá, deixei disponível neste documento a fim de deixar este post mais coeso o entendimento de ambos.

Contudo foi um evento muito legal e divertido de ter participado, com a presença de evangelistas da SUN,  empresas patrocinadoras, público bastante atento às inovações do mercado e o próprio membro do PBJUG que está de parabéns pelo feito.

Debian Day 2008 in Recife (15 years)

agosto 14, 2008

Estamos nas prévias para os preparativos do evento: Debian Dia D 2008, no qual realizaremos nos dias 15 e 16 na UNICAP. Para quem estiver interessado, acesse o site do Grupo de Usuários Debian de Pernambuco e efetue a sua reserva de inscrição.

Neste ano estamos com um projeto social para ajuda de instituições beneficentes. Estaremos arrecadando 1kg de alimento. A entrada é gratuita tanto para mini-cursos, bem como no ingresso das palestras. Possivelmente transmitiremos via TV Software Livre que nos apoiou neste evento.

Garanta sua vaga e venha participar conosco neste debate e troca de experiências e conhecimentos.

Agradecemos quem puder nos ajudar na divulgação, segue o nosso flyer de informe nesta campanha de 2008.

My new checkpoint, SCBCD5.0 Passed!!!

agosto 6, 2008

Nesta segunda-feira pela manhã, tive o desafio de realizar o exame de SCBCD 5.0 da Sun Microsystens, e é com muita satisfação e felicidade que compartilho aqui deste momento. Estarei em alguns dias detalhando a partir deste post informações a respeito deste exame, desde preparação, bem como surpresas advindas de meus estudos.

Compartilhei também, deste momento com a comunidade do guj, debian-pe e javaranch nas quais participo mais ativamente.

A minha desculpa, em não disponibilizar logo informações sobre esta certificação, é de que estou muito envolvido com o projeto do debian e não estou tendo fôlego agora para me dedicar a isto. Inclusive não tive muito tempo para me dedicar a esta certificação, pois estive envolvido na 5ª maratona de cursos da poli/UPE e ainda estou com o projeto do debian-pe.

Apesar de tudo estou muito feliz, pois tudo saiu conforme planejado.

Assim que me liberar, prometo disponibilizar aqui informações importantes para quem deseja obtê-la futuramente e o que é preciso para se preparar.

Desde já, peço paciência pessoal, assim que puder aviso a todos. Obrigado e grande abraço!!!

Sport campeão Copa Brasil 2008!

junho 12, 2008

Finalmente a recompensa. Sport, campeão da Copa do Brasil 2008! Eita que time que faz a diferença. O Leão deu uma chibatada na gavioa que ela nunca mais vai esquecer. Depois de ter perdido de 3×1 para o Corinthians, matou o jogo na ilha do retiro por 2×0.

Hoje somos o primeiro garantido na libertadores de 2009. Valeu Leão!

Pelo Sport Nada? Tudo! Pelo Sport nada? Tudo!

Então como é, como é que vai ser e sempre será?

Cazá, Cazá, Cazá, Cazá, Cazá!

A turma é mesmo boa, é mesmo da fuzarca! Sport! Sport! Sport!

JavaOne 2008 :: Sessões apresentadas disponíveis

junho 5, 2008

Encontram-se disponíveis, todas as sessões apresentadas na última conferência do JavaOne 2008. Olhei rapidamente e achei interessante a apresentação sobre o novo conceito incorporado sobre closures, dentre outros a partir do próximo jdk 7, codnome dolphin, já disponível, hà tempos! 😀

Avaliando técnicas de debugging javascript para diversos browsers

maio 30, 2008

A partir da dificuldade da equipe na qual faço parte existe uma grande dilema para debug de javascript para browser’s como Internet Explorer a fim de obter as mesmas facilidades do firebug, indo bem além de um simples debug.

Existem alguns outros pontos que podem ser incorporados a fim de manter facilidade para desenvolvimento de aplicações como JQuery, muito legal a idéia, ainda melhor utilizado em conjunto com outros componentes como ExtJS, Dojo, Prototype, DWR, entre outros. Resumindo um pouco dos benefícios que o JQuery temos facilidade na obtenção de elementos, manipulação de DOM, tratamento de eventos, animações, uso de AJAX e melhor de tudo oferecendo compatibilidade incorporada, sem termos que nos preocuparmos com browser’s, entre outros pontos como versões de CSS(preocupante). Posteriormente estarei testando em minhas aplicações. Segue abaixo algumas referências:

Bem chega de papo. Voltando as origens, e levando em consideração as indicações que fiz anteriormente no uso do firebug, venho no mesmo barco noticiando uma pequena novidade disponível de que foi lançado o Firebug Lite a pouco tempo com o objetivo de oferecer suporte a API para auxílio de debug a partir do seu console. Isto demonstra a necessidade enormemente e ausência total de poder no controle do stack point do código em execução, entre outros facilitadores importantes como [Inspeção e edição de HTML], [Visualização de Métricas de nível CSS], [Monitoramento de atividade da rede por solicitação/resposta], bem como navegação de conteúdo DHTML renderizado.

Espero que em pouco tempo, também tenhamos esta facilidade para outros browser’s, assim como o firebug lite vem buscando oferecer. Acho que não demorará muito, pois a comunidade vêem aumentando! E quando isto acontece, é um sinal para apostar suas fichas nela. É como bolsa de valores. Já desenvolveram até com suporte ao IPhone.

A adoção também vêem aumentando a partir do navegador Opera, ainda mais pela comunidade que liberou a nova versão do Opera Dragonfly. Ele tem quase todos os requisitos funcionais do firebug, bem como adicional suporte a versão mobile. Se você for analisar direitinho no seu dia-a-dia, aplicações comerciais(atacado, varejo, farmácias, logísticas, etc.) que foram desenvolvidas em ambientes lamp, pelo que tenho visto, vem sendo sugeridos uso do opera/firefox no cliente. E a garantia é fácil saber.

Em contrapartida, existem algumas considerações em relação à outras possibilidades disponíveis bastante recomendadas e sugeridas, que podem ser tranquilarmente absorvidas pela equipe, necessitando apenas configuração de ambiente para isto. Existem diversos post sobre o assunto no google,(interessantes [1][2]) inclusive do plugin IETester no qual oferece renderização de conteúdo para teste em uma determinada versão, no qual transparecem que eles se sentiram tão culpados de tantas incompatibilidades que agora estão tentando correr atrás dentre plugins e novas ferramentas como atrativos. Não sei as raízes mas pode ser um parceiro ou empresa comprada da microsoft.

Ainda sobre o IETester, andei verificando que eles desenvolveram também o DebugBar. Achei uma puta sacanagem eles colocarem que é de graça e logo abaixo bem pequeno que apenas para uso pessoal e ainda trial por 60 dias. Tava tão feliz testando os recursos que deu logo um desânimo. Embora, não quero desmerecer o mérito da equipe que a desenvolveu, mas não vi nenhum recurso adicional e/ou diferencial em relação ao firebug. Aproveitando aqui também, eles desenvolveram o CompanionJS que visa atender os mesmos requisitos atuais iniciais do firebug lite, exceto compatibilidade entre diversos browsers.

Avaliando outros fornecedores que dispõe de funcionalidade similar, não achei a altura. Apenas o Nitobi,simples, porém útil. A Minha lista de ferramentas como add-on’s e plugins disponíveis resume-se aqui.

Analisando agora do ponto de vista das IDE’s, e puxando sem querer para o lado do java, =D, seguem algumas correntes que podem ser aproveitadas e avaliadas para adequação no seu projeto do qual será e/ou está sendo desenvolvido:

Eclipse

NetBeans (comparativo recente com VS2008)

Bem como outras opções a partir do IntelliJ IDEA e WebSphere (até a versão 5 acredito não ser possível).

Com todas estas informações em suas mãos é verídico que cada browser oferece uma particularidade prática de ferramentas para automatizar e garantir compatibilidade buscando motivação dentre a comunidade no qual desenvolve aplicações utilizados por este(mesmo browser).

Levando em consideração a isto, caso você tenha caído na lista dos que deverão oferecer compatibilidade no seu projeto para diversos browser’s, prepare-se pois a equipe de testes está por vir, e eles não terão piedade em salientar situações adversas. Se eles forem mais espertinhos utilizarão técnicas como pairwise e decision tables. Lembrando que o objetivo final deste artigo não é abordar ferramentas para testes, isto é outro espectro! Só estou mostrando de onde nascem as correntes que motivam os desenvolvedores terem ferramentas como resguarda ou também chamado arma secreta.

Não podemos garantir a usabilidade. Então a dica é não se arriscar e tampouco se bitolar. Procure se beneficiar a partir das ferramentas disponíveis para cada browser em particular e siga corretamente as especificações recomendados pela w3c. Caso seja necessário ative/instale o uso de memory leak do seu browser, visualize layout para diversos navegadores, bem como boas técnicas, boas referências e resumos para cada tipo de tecnologia.

Mas generalizando os fatos, recomendo utilizar o firefox, não só porque ele é mais rápido, mas porque oferece uma variedade de ferramentas irão contemplar todas as suas necessidades, fora suporte a diversas plataformas(win+mac+linux+unix). Seguem boa relação de ferramentas para incrementar seu firefox:

Contudo isto foi só um resumo e parecer do que andei pesquisando e avaliando, afinal hoje temos bastantes opções de fornecedores, e isto é um ponto muito positivo, do qual estabelece competitividade e grandes inovações a fim de atrair novos mercados neste mundo utópico que parece não ter mais caminho de volta.

Gostaria de um feedback de quem quiser complementar ou criticar meu ponto de vista. Fallow!!!