Falando em Java 2008

May 20, 2008

No último domingo estive no Falando em Java 2008. Foi um evento excelente, muito bem organizado pelo pessoal da Caelum. Na minha opinião os destaques foram:

  • A apresentação sobre Domain-Driven Design (DDD) do Sérgio Lopes. No dia anterior eu tinha participado de um workshop sobre DDD bastante interessante. Mas essa apresentação foi simplesmente show. No pouco tempo disponível – apenas 40 minutos – o Sérgio conseguiu passar o que é a essência de DDD: foco no domínio para resolver o problema; resgate da Orientação a Objetos; utilização da Linguagem Ubíqua, onde os mesmos termos utilizados na conversa com o cliente apareciam no modelo expresso em código. Fez isso usando um exemplo prático, onde a partir de uma conversa com o cliente implementava o sistema que este queria. Excelente!
  • A palestra do Fabio Kung sobre JRuby on Rails. O Kung deu uma aula sobre Ruby, JRuby e Rails. O mais interessante foi o final, onde ele mostrou que, apesar de JRuby on Rails (assim como Ruby MRI on Rails) ser lento e ter seus problemas para deploy em produção, a versão 3 do GUJ (feita em JRuby on Rails) consegue atender diversas vezes mais requisições por segundo do que a versão atual, em java.
  • A presença do Emmanuel Bernard, líder de diversos projetos do Hibernate. O Emmanuel fez duas apresentações. A primeira foi sobre a versão 2.0 do Java Persistence API (JPA). Basicamente eles estão incluindo nesta nova versão diversas funcionalidades que já existem no Hibernate e em outras ferramentas de ORM. A segunda foi sobre o Hibernate Search, uma ferramenta que utiliza o Apache Lucene e possibilita full text search de modelos de domínio persistentes. Muito interessante!
Advertisements

Workshop de Modelagem Ágil e DDD

May 20, 2008

Nos dias 16 e 17/05 estive em São Paulo para um workshop de Modelagem Ágil e DDD, organizado pela Fratech.

A parte de Modelagem Ágil começou com uma explicação mais teórica: modelos ágeis servem para facilitar a comunicação e não substituir a comunicação face a face; modelos devem ser criados e mantidos somente quando trouxerem valor real para o cliente; modelo não é a mesma coisa que documentação. Depois foram apresentados os conceitos de UML em Cores e Mind Map Modeling (M3). Minha impressão é que esses conceitos vão contra o que a modelagem ágil sugere. Estão mais para documentação do que modelagem. Não acredito que eles favorecem a utilização de abordagens ágeis na modelagem. O único conceito apresentado que, para mim, tem a ver com modelagem ágil é o AgileDraw, que nada mais é do que uma formalização dos rabiscos e rascunhos que fazemos nos quadros brancos, como bem disse o Bruno Carvalho.

Já a apresentação sobre Domain-Driven Design (DDD) foi bem mais interessante. O nível técnico em geral foi bem elevado assim como o nível das discussões. Alguns participantes já tinham um bom conhecimento sobre o assunto e a troca de experiências foi bastante produtiva.

Além disso, tive a oportunidade de conhecer diversas pessoas interessantes. Pena não termos conseguido marcar um chope. Na próxima não pode faltar!


“Modelagem Ágil e DDD” e “Falando em Java 2008”

May 12, 2008

Nesse próximo final de semana estarei em São Paulo para 2 eventos, junto com Vitor Pellegrino e Bruno Carvalho. O primeiro é um workshop de Modelagem Ágil e Domain-Driven Design que vai acontecer na sexta e sábado (dias 16 e 17). O segundo é o Falando em Java 2008 da Caelum, que acontece no domingo (dia 18). Neste evento, vamos estar acompanhados também do Guilherme Chapiewski.

Depois vou postar aqui as minhas impressões desses 2 eventos que prometem!


Classes *Util

January 14, 2008

Já vi muita gente espalhar classes “utilitárias” por todo o sistema. StringUtil, NumberUtil, DateUtil… Daqui a pouco vamos ter UtilUtil.

Considero esse hábito no mínimo condenável. O nome dessas classes não revela qual sua real função, tornando o código difícil de entender e manter. Esse tipo de classe costuma crescer e virar um verdadeiro saco de gatos, contendo diversos métodos que praticamente não tem nada a ver uns com os outros.

Nomes de classes (e também métodos, variáveis, etc.) deveriam ser cuidadosamente definidos. Idealmente, deveria se ter em mente o conceito de Ubiquitous Language (algo como Linguagem Onipresente) do DDD na hora de se criar os nomes das classes. Ou seja, todo o comportamento do sistema deveria estar implementado em classes cujos nomes fazem parte do domínio do problema. Nomes que têm o mesmo significado tanto para a equipe técnica quanto para clientes e usuários finais. Isso facilita a comunicação entre todos e, também, o entendimento do código e sua manutenção futura.

Minha sugestão é, então, que se evite criar classes chamadas *Util. Provavelmente existe um nome melhor, que vai expressar melhor qual a responsabilidade da classe e, consequentemente, vai deixar o código mais limpo e claro.


Qi4j

November 27, 2007

Hoje estava lendo sobre o Qi4j que, como informado na página inicial do mesmo, trata-se de um framework para desenvolvimento de aplicações centrados no domínio, utilizando conceitos evoluídos de AOP, DI e DDD. Trata-se de uma implementação em Java de algo conhecido como Composite Oriented Programming.

O objetivo desse framework parece com o de vários outros: deixar o desenvolvedor se concentrar no modelo de domínio do sistema – que é onde está o valor do software – sem se preocupar com o resto, como detalhes técnicos de infra-estrutura.  Para isso ele utiliza o tal do Composite Oriented Programming, um paradigma radicalmente diferente. Vale a pena dar uma olhada no site para entender melhor do que se trata.

A implementação ainda se encontra num estado instável mas parece bastante promissor. Eu certamente vou acompanhar de perto sua evolução.