sábado, 30 de junho de 2007

Eclipse Europa

Finalmente o tão esperado Eclipse Europa foi lançado. Já fazia um tempo que a comunidade java estava anciosa e voltada para esse lançamento, esperando as novas funcionalidades.

Confira as melhorias e funcionalidades
  • Melhor suporte a debugging, incluindo hyperlink stepping
  • Uma nova funcionalidade de Quick Access (ctrl-3) para melhorar a navegação na IDE
  • Refactoring adicional e "Quick Fix/Assist"
  • Task-focused development (Mylyn)
Confira a lista completa de funcionalidades

Download

Mais um livro da série Head First

Vai ser lançado mais um livro dos amantes da série Head First. Em agosto será disponibilizado para vendas o livro Head First SQL (HFSQL). No início de suas publicações, a série tinha o intuito de se focar no java, porém já lançou diversos livros direcionados a outros assuntos, como PMP, HTML e CSS, AJAX e outros. Será se vai ser mais um excelente livro dessa série?

Pré-lançamento do livro

sexta-feira, 29 de junho de 2007

Passei na Sun Certified Web Component Developer


Hoje fiz a prova SCWCD e passei com o escore de 73%. Achei a nota boa, por ter tido pouco tempo para estudar.

Achei essa prova mais fácil do que a SCJP, justamente por não ter cascas de banana e pegadinhas. Essa prova é bastante direta, ou você sabe ou não sabe. A matéria é maior do que a de programador, com bastante coisa para decorar. O tempo é muito justo, fiz a prova em 1 hora e a revisei em 15 minutos. O único simulado que fiz foi o do livro (HFSJ) , que é mais difícil do que a prova. O que achei mais impressionante foi a semelhança entre as questões da prova e as do simulado do livro, tinha uma questão na prova idêntica a do livro.

A prova

Nº de questões: A prova consta de 69 questões e você tem que acertar no mínimo 44 questões
Tempo: 2h e 15 minutos

Tipo de Questões

  • Múltipla escolha (2 e 3 opções)
  • Drag and drop
  • Uma resposta

Resumo da prova

  • Design Patterns - caiu umas 6 questões, com foco em Intercepting Filter
  • Segurança - foi um dos tópicos que caiu mais e um dos que mais errei, justamente por ter bastante configuração no deployment descriptor (web.xml)
  • EL e Standards Actions - várias questões sobre sua utilização
  • Filtros - teve umas 4 questões, bem fácil
  • Custom Tags - para a minha sorte, caíram poucas questões
  • Tecnologia Servlet - bem fáceis
  • Session Management - foi o assunto que mais caiu na minha prova, foram mais de 10 questões sobre sessões
  • Distribuição de aplicações web - caiu bastante também, questões sobre configuração de servlets, filtros, listeners, ejbs, páginas de erro, welcome file...

Recomendações

Livro: Head First Servlets & JSP
Especificações: Servlet 2.4, JSP 2.0 e JSTL 1.1
Simulados: JWebplus e Whislabz
Fóruns: JavaRanch (excelente), Portal Java e GUJ

Downloads

Resumos
Web.xml completo

quarta-feira, 27 de junho de 2007

NullPointerException não devia se chamar ErrorOfProgrammerException?


Recentemente no trabalho fui chamado por um Analista para tirar uma dúvida no seu código. Adivinha qual era o erro? Claro que o erro era de NullPointerException, mais conhecido como "erro do programador". O Phillip Calçado escreveu um excelente artigo, chamado Contratos Nulos, onde ele explica claramente e absurdamente bem como evitar esse erro, utilizando boas práticas de programação.

Mas a questão é, por que os programadores não evitam esse tipo de erro?

Um exemplo bem comum desse erro:

Método algumaCoisa


Método main





Se por algum motivo o método algumaCoisa receber por parâmetro um objeto String que aponta para null, esse método irá lançar uma NullPointerException. O erro se dá por conta do objeto param chamar o método equals sem ter uma referência.

Então, para evitar esse erro faça:

Método algumaCoisa





Com certeza deve existir outras formas de evitar vários erros de NullPointerException, mas a principal falha é dos programadores, por não "visualizarem" esses erros nos seus códigos.

segunda-feira, 25 de junho de 2007

Jazoon 2007


Começou neste domingo (24/06) a maior conferência sobre Java da Europa, o Jazoon 2007. O evento tem lugar em Zurique, na Suiça, e conta com dois representantes do CEJUG (Ceará Java Users Group): Felipe Gaúcho e Hildeberto Mendonça. O Jazoon teve início no domingo, com vários tutoriais sobre a plataforma Java. A conferência propriamente dita começará na segunda-feira e se estenderá até quinta-feira.

Mantenha-se atualizado sobre o evento no site do CEJUG!

domingo, 24 de junho de 2007

Evitando códigos java na JSP


Hoje em dia todo programador sabe que é uma boa prática de programação não colocar scriptlets, expressões e declarações em páginas JSPs. Mas você é um gerente de projeto ou líder de uma equipe antenado e atualizado e pediu formalmente
para seus programadores não colocarem esses códigos nas páginas. Mas e se eles continuarem colocando esses códigos, mesmo sabendo que não é permitido no projeto? Você poderá tomar algumas providências drásticas caso isso ocorra, como por exemplo dar um grande puxão de orelha na pessoa que fez isso.

Então, para evitar coisas como essa:




Por favor, no Deployment Descriptor (web.xml) da sua aplicação coloque esse código abaixo :



Se você colocar esse código na JSP:

<% Object object = new Object(); %>

Você irá ver esse bonito erro:

Scripting elements ( <%!, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed here.

Então, mesmo pedindo para seus programadores não utilizarem esses códigos, não custa nada garantir a não utilização desses códigos de uma forma mais segura.

sexta-feira, 22 de junho de 2007

Mais um framework MVC made in Brasil

Foi lançado mais um framework MVC brazuca, o Neo Framework. A moda já pegou e a comunidade java brasileira está cada vez mais centralizada em criar seus próprios frameworks. Pessoalmente eu acho isso muito bom, pois observo que a cada dia que passa as pessoas estão caindo na real de que nós não podemos "viver presos à outras nações", ou seja, presos aos idiomas e documentações. Não estou sendo radical, é bom e essencial para a nossa área saber inglês e outras línguas, pelo contrário, gosto muito de inglês e de bandas com letras nesse idioma. Apenas estou querendo dizer que esse lado é bom, pois valoriza a comunidade java brasileira.

Outro exemplo de framework brasileiro é o Mentawai, que está sendo bastante utilizado e eu tive o prazer de conhecer o seu funcionamento, criando alguns testes. Ele é baseado em configuração programática, sem a utilização de arquivos XML, Annotations ou qualquer outro tipo de metadata. Informo aos meus conterrâneos da terra da luz (Fortaleza) que o site/sistema do Tribunal de Contas do Estado do Ceará utiliza o Mentawai como framework MVC. A sua documentação é bastante rica, com diversos exemplos de utilização e webapps de exemplos e possui um fórum para tirar dúvidas.

Como framework MVC tem ainda o VRaptor, criado pelo pessoal da Caelum e pelos administradores do GUJ. A versão atual do GUJ, chamada de GUJ2, foi feita utilizando esse framework para a camada de controller. Sua configuração é baseada em Annotations, sua lógica é baseada em POJOs, tem integração com displaytag e suporte à frameworks de apresentação, como velocity e sitemesh.

Para o Swing, tem o framework SwingBean, de autoria do Eduardo Guerra, atual editor-chefe e colunista da revista Mundo Java. O seu intuito é simplificar a vida dos programadores desktop. Confira mais características e funcionalidades no site do projeto.

A edição número 21 da Mundo Java tem como matéria principal esses frameworks citados acima (também fala sobre o JSenna, antigo JBanana), com exceção do Neo. A edição 23 fala sobre o JSpider, outro framework brasileiro.

E não acaba por aí, tem também o Spring Annotations, uma biblioteca criada pelo Rodrigo Urubatan com o intuito de configurar toda a sua aplicação em Spring utilizando annotations. Na próxima edição da revista Mundo Java terá um artigo sobre essa biblioteca. Clique aqui para conferir a documentação em português.


Comparação NetBeans versus Produtividade

O Handerson Frota postou no seu blog uma comparação entre NetBeans e produtividade, vale a pena ler o artigo.

quinta-feira, 21 de junho de 2007

Quem avisa amigo é

Estou estudando o Struts2 e antes de iniciar vários posts sobre o assunto irei logo adiantar que junto com o pacote completo ou o pacote de apps, de nomes struts-2.0.8-all e struts-2.0.8-apps respectivamente, possui um showcase, é isso mesmo que você leu, você poderá fazer o deploy no seu gato véi (tomcat) preferido e visualizar imagens e códigos fontes sobre o Struts2 feito em Struts2, isso não é maravilhoso? Você verá como construir cruds, utilizar AJAX, irá conhecer as tabpanels (abas), interceptors, principais tags, integrações com SiteMesh, temas e muito mais.

terça-feira, 19 de junho de 2007

Coletânea de material de JavaEE

Encontrei (www.4shared.com) na web uma coletânea compactada contendo várias apresentações, artigos e PDFs. Os assuntos são: JSF, Struts, Spring, AJAX, Web services, JINI, Hibernate e Ant. Vale a pena conferir!

Por sinal o 4shared é um excelente repositório de arquivos, possui uma excelente ferramenta de busca e você ainda vê o conteúdo do arquivo antes de baixá-lo.

Download da coletânea

segunda-feira, 11 de junho de 2007

Criando uma Tag File

A Tag File faz parte da especificação JSP 2.0 e muita gente não sabe quais os benefícios que ela traz no desenvolvimento de aplicações para a web. Uma Tag File nada mais é do que um pequeno código de arquivo JSP. A sua função é justamente criar pequenos fragmentos de códigos para um determinado fim. Ela ajuda na orgazinação e design da sua aplicação, retirando uma fatia de códigos comuns e repetitivos das suas páginas JSPs. Suporta EL, JSTL e quaisquer tag libs, incluindo tags de frameworks, como por exemplo as tags do Struts.

No exemplo utilizei apenas JSTL. No final do post você encontrará o caminho para baixar o jar.

Onde colocar as tag files

A especificação determina que as tags sejam criadas em um .jar no diretório META-INF/tags. Para essa configuração é necessário criar arquivos tlds que contêm a configuração necessária para o funcionamento das tags.

Para ser mais fácil e rápido, no exemplo iremos colocar a tag file no diretório WEB-INF/tags, com isso não precisamos ficar gerando o jar a cada alteração na tag.

Principais tags

- tag

Tag inicial que informa qual o encoding da tag file. Seu principal atributo é o pageEncoding.

- attribute

Essa tag é encarregada de informar para o desenvolvedor quais os atributos que a tag file disponilizida. Seus principais atributos são:

name: determina um nome para o atributo

type: define um tipo (Object, String, Boolean, Integer e etc)

required: informa se o atributo é obrigatório

rtexprvalue: informa se o valor do atributo pode ser uma expressão JSP. Ela deve ser processada antes de ser enviada para a tag.


Codificando

Vamos criar uma tag file simples, de nome text, que tem como lógica renderizar um input do tipo text ou password, dependendo do valor do atributo tipoInput passado.

Tag File

<%@tag pageEncoding="UTF-8"%>

<%-- Importando a JSTL --%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%-- Atributos --%>

<%@attribute name="tipoInput" type="java.lang.Boolean"%>

<%@attribute name="tituloCampo"%>

<%@attribute name="id"%>

<%@attribute name="name"%>

<%-- Tags condicionais da JSTL --%>

<c:choose>

<c:when test="${tipoInput}">

${tituloCampo} <input type="text" name="${name}" id="${id}">

</ when>

<c:otherwise>

${tituloCampo} <input type="password" name="${name}" id="${id}">

</ otherwise>

</ choose>


JSP

<%@taglib prefix="tag" tagdir="/WEB-INF/tags" %>

<html>
<
head>
<title>Exemplo Tag File</ title>
<head>

<body>

<tag:text tituloCampo="Campo" id="text" name="text" />

</ body>
</ html>


Considerações Finais

Ao executar esses códigos numa aplicação web o resultado será a renderização de um campo na tela do tipo input text ou password, dependendo da opção que você escolher.

O valor default de um objeto do tipo Boolean é null, então para podermos mostrar na tela um input do tipo text precisaremos passar o valor true no atributo tipoInput na JSP.

Note que não precisei configurar o Deployment Descriptor (web.xml) e nem criar um arquivo de configuração de tag libs (.tld).

Portanto, a utilização de tag files traz grandes benefícios para o desenvolvedor e para quem precisar refatorar ou modificar os códigos das JSPs da aplicação no futuro, por diminuir a quantidade de códigos repetidos e trazer simplicidade e dinamismo.


Download do .jar da JSTL

quinta-feira, 7 de junho de 2007

Novo livro da série Head First

Vem aí mais um livro da série Head First: Software Development (Desenvolvimento de Software). Todos já sabem o quanto essa série está fazendo sucesso para os mais diversificados grupos de desenvolvedores Java, sejam iniciantes ou avançados.

A didática e a explanação dos livros da série são excelentes, prendendo e chamando a atenção dos leitores. Eu já li em algum fórum (provavelmente no Portal Java ou GUJ), uma pessoa dizendo que estava louca para chegar logo em casa para ler o seu livro da série (não lembro qual era). Quando comecei a conhecer Java, comprei o livro Java como Programar dos irmãos Deitel que na época era o livro mais recomendado na comunidade. Mas hoje em dia quando alguém me pergunta um bom livro pra aprender Java ou outras tecnologias relacionadas, indico um dos livros da série.

Lista dos livros da série Head First:

  • Head First PMP
  • Head First OOA&D
  • Head Rush Ajax
  • Head First HTML with CSS & XHTML
  • Head First Design Patterns
  • Head First Java (2nd edition)
  • Head First Servlets & JSP
  • Head First EJB

Não estou fazendo marketing dos livros da série Head First e nem querendo que vocês leiam todos esses livros, apenas relatando o meu grau de satisfação com a série. No blog do Phillip Calçado tem excelentes recomendações de livros, vale a pena ler.