sexta-feira, 7 de setembro de 2007

Tapestry :: O básico 1

Estou faz alguns dias - ok, alguns meses -trabalhando com o Tapestry 4.1 e notei que não existem muitos tutoriais desse framework em português. Decidi então colocar algumas coisas nesse blog pra dar uma turbinada na comunidade tap brasuca.


Começo então dando uma introdução sobre como o Tapestry funfa e depois eu vou entrar em detalhes mais práticos (tutoriais propriamente dito). Tanto por que estou com preguiça de abrir o eclipse e talz (feriado, uhu!). :D


O Tapestry é um framework web feito em Java que faz uso extenso de reflection. É um framework focado em componentes - tão focado que até as páginas são componentes. De forma resumida, um componente é constituído por uma classe Java, um arquivo descritor XML e um arquivo HTML. Em determinadas ocasiões cada um desses elementos pode ser omitido (o comportamento do framework em cada caso é específico e eu devo entrar em mais detalhes em um artigo futuro; isso se eu continuar essa série).


Outra característica chave do Tapestry é o uso extensivo de expressões OGNL (Object-Graph Navigation Language). Essa linguagem permite embutir expressões complexas dentro de seu código HTML.


Uma aplicação Tapestry interage com um container web convencional (como o Apache Tomcat) por meio de um servlet(org.apache.tapestry.ApplicationServlet). Esse servlet é responsável por interpretar a chamada HTTP e transferir para um serviço hivemind apropriado (normalmente o serviço Page).


Bom, estou entrando em muita complicação para o que interessa agora; o importante é saber que, assim como um endereço HTTP pode representar uma página, ele também pode representar uma classe Java arbitrária que pode implementar, por exemplo, um repositório de imagens geradas automaticamente.


O serviço de páginas é responsável por criar cache e fazer chamada para as páginas corretas (a localização das mesmas será descrita em um outro post). Cada página tem sua gerência de estado própria e acesso aos objetos compartilhados de sessão.


Enfatizo objetos aqui pois o Tapestry toma conta de converter tipos dinamicamente conforme necessário. Embora isso torne as coisas um pouco nebulosas no começo, sem dúvida facilita no futuro. Em um artigo mais adiante eu pretendo explicar como implementar tais conversores de tipo.


Bom, por hora é só.



quinta-feira, 2 de agosto de 2007

odeio java, mas...

Quem me conhece sabe que eu tenho pavor da palavra Java.

Para mim essa linguagem é um band-aid code em cima de outro band-aid code.


Fazendo uma analogia mais simples, digamos que você queira uma casa. Digamos que existam, entre várias opções, uma casa feita com vigas de concreto super sólidas, um ótimo telhado, ... (uma casa como a gente conhece, vai), que demora meses para ser construída. Suponha agora que existe uma outra opção, de uma casa feita de isopor.

Ela só funciona direito se o clima for ideal. Se bater um vendaval ela desmpenca toda. E não tem fundação, então ela pode começar a sair do lugar do nada. Só que essa casa de isopor já está pronta. Existem milhares de modelos, todos com comunidades enormes de proprietários. Algumas casas de isopor até falam com você, mas isso implica que menos gente pode entrar na tal casa.. ou que você vai gastar muito mais dinheiro comprando um terreno maior para ela.

Java é assim. São tanto band-aids grudados um no outro q vc tem uma casa de band-aid (ou de isopor).

E o mais bizarro: justamente por ser um band-aidão, por tirar da costas do programador o compromisso com um código realmente eficiente e controle de memória (coisas técnicas "malas"; não vou entrar muito pra esse lado), jogando o compromisso por uma máquina "parruda" pro cliente (geralmente o ser que rodará o programa), que Java é tão usado.

Calma calma! Não estou falando que java é usado pq é pesado e nem que programador java não sabe lidar com esses problemas!

Estou vivendo um problema agora. Ou eu escolho algo que seja bom por ser bom. Ou escolho algo pela velocidade em fazer algo que funcione.

Ambos os lados são importantes. Mas, voltando aos band-aids, até q existem curativos limpinhos. :P

É o caso do Tapestry.

Estou usando esse treco. Fui contra à recomendação de que "eu preciso de vários programadores já treinados" e adotei uma ferramenta nem tão usada. O tempo passou, aprendi mais sobre a ferramenta.. entrei em contato com a comunidade de usuários.. e.. uau!! Eu realmente curti esse band-aid! rs


resumindo, odeio java mas tapestry é legal. :D