domingo, outubro 29, 2006

Cada dia parece que sei menos

Nos últimos três dias fiquei na Internet procurando coisas mais empolgantes do que meus estudos de mestrado. Pra variar um pouco, procurei assuntos relacionados ao Merlin :-)
A sensação do momento é o Ajax. Na verdade faz tempo isso, mas tudo bem. Pensando nisso e no Java 6 que tá por vir e que conterá o Rhino como implementação padrão para scripting (subentenda-se aqui Javascript ou ECMAscript), me dediquei a repensar o mecanismo de scripting que estava implementando no Merlin. Por padrão, portei as idéias sobre Event Driven Programming da Eiffel para o meu framework e, de quebra incorporei o suporte a duas coisas que eu acho importante: inicialização de propriedades e ligação de scripts, ora bolas!
A inicialização de propriedades é uma funcionalidade importante quando não queremos que os controles gerados assim o sejam com base nos valores default computados pela dupla Configuração-Histórico. Nesse sentido, o Agente associado ao controle, além de ligar eventos e ações (como é o padrão em Eiffel), também permite coisas como "quero esse controle com fundo verde, fonte verdana itálica 11pt, texto branco e borda de 2px laranja" tudo isso em uma linha de comando, como essa:

@Agent(
property = "
background=Color.green;
font=new Font(\"verdana\",Font.ITALIC,11);
foreground=Color.white;
border=BorderFactory.createLineBorder(Color.orange,2)"
)
String nome;

Já a associação de scripts aos elementos de interface é uma comodidade versátil, como comenta John O'Conner em Scripting for the Java Platform (embora o exemplo que ele deu não me convenceu muito).
Por padrão, a engine do Merlin usa o BeanShell como interpretador de scripts. O BeanShell é um interpretador simples e otimizado, muito bom para as tarefas de corriqueiras de interface de usuário, como cópia de valores, arraste e aplicação de efeitos simples e validações. Linguagens como o Groovy, Javascript e outras que a JSR223 deve guiar também devem ser suportadas transparentemente pelo esquema que bolei. Em outras palavras, os agentes apontam para um script, seja ele interno (uma string) ou um mapeamento para um recurso externo (um arquivo ou endereço de rede, sei lá). De qualquer forma, basta ter o interpretador instalado que darei um jeito de detectar o tipo de script e automaticamente executá-lo.
Na prática, eu ampliei o conceito de agentes do Eiffel ao mesmo tempo que mantive a simplicidade e o baixo acoplamento, o que é muito bom (mas tem consequências que vou falar em outro post).
Entretanto, o termo Agente ainda não me convenceu muito...fica parecendo aqueles caras chatos do Matrix. Vou ficar pensando e se eu achar outra palavra melhor, o Eclipse me ajuda com um Control+Shift+R...
Tem mais coisas que fiz nesses últimos dias também, como ativar os lembretes via celular no Google Gmail (e aprender que existe um tal padrão iCal também), reativar o meu Netvibes e ficar mais uma noite sem dormir (se meu médico ler isso ele me puxa a orelha, no mínimo).
Bem, mas o que eu queria falar mesmo é sobre o futuro (futuro que eu prevejo) da programação, do desenvolvimento de sistemas e a própria forma com que encaramos as aplicações e a forma de usar os computadores. Mas isso eu falo no próximo post.
Att.

0 comentários: