MouseOver Studio

MouseOver Studio header image 2

Haml4j, Haml na plataforma Java

August 26th, 2008 por Diego Carrion · 6 comentários

O que é Haml?

Haml é uma DSL para construir layouts em HTML utilizando nada menos que Ruby.

Quase nada tem se falado sobre Haml no Brasil mas tenho certeza que é bastante utilizado. Para entender a idéia dele podem acessar esse post do Fábio Akita.

No começo um pode ate não gostar do Haml por estar acostumado com as tags HTML, mas com o tempo os sentimentos vão mudando. O Haml é uma ferramenta excelente, muito produtiva e é uma das tecnologias das quais sento muitas saudades na plataforma Java. Foi por tal motivo que decidi criar o Haml4j.

O que é Haml4j?

O Haml4j é um projeto muito simples, porém muito poderoso devido a que permite utilizar o melhor do Haml nos containers de servlets Java. Para conseguir tal objetivo, o Haml4j utiliza o JRuby como implementação da especificação JSR 223, que define como as diferentes linguagens de script existentes (Ruby nesse caso) devem interagir com a plataforma Java.

Como funciona?

Basicamente o Haml4j é uma servlet que carrega scripts Haml e utiliza o próprio parser do Haml através do JRuby para convertir tal código em HTML. Seguidamente ele substitui as variáveis do script (no formato ${xpto}) com o valor correspondente que provem do controller ou request.

Haml4j em ação

Para demonstrar o funcionamento do Haml4j criei uma aplicação de demonstração no Github. A aplicação utiliza um fork do VRaptor (do qual vou falar proximamente) como controller e o Haml4j se encarrega das views.

Requisitos

Para poder executar a aplicação é necessário que o JRuby tenha instalada a Gem Haml. Para o JRuby poder utilizar as Rubygems na JVM é necessário que ele conheça algumas propriedades do sistema. A forma mais fácil de indicar ao JRuby as propriedades é passando elas como parâmetros na inicialização da JVM. Eu realizei os testes no Tomcat e criei um script onde seto os valores das propriedades e logo chamo o script de inicialização do servidor, assim:

export JRE_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home"
export JRUBY_HOME="/Users/dcrec1/plataform/jruby-1.1.3"
export JRUBY_SHELL="/bin/sh"
export JAVA_OPTS="-Djruby.home=$JRUBY_HOME -Djruby.lib=$JRUBY_HOME/lib -Djruby.script=jruby -Djruby.shell=$JRUBY_SHELL"
./startup.sh

Finalizando

Espero que gostem do projeto e poda ser útil. Caso alguem tenha alguma correção para algum erro ou alguma modificação, não duvidem em me avisar, criar um fork ou solicitar acesso de escrita ao repositório.

Tags: haml · haml4j · java · jruby · ruby

6 respostas ate agora ↓

Deixar um comentário