quarta-feira, 19 de novembro de 2008

ColdFusion 9 Centaur

Logo ColdFusion 9 - Centaur

Das novidades anunciadas, umas da que eu mais esperava!

O ColdFusion 9, de code-nome Centaur, na minha opinião apresenta-se com um pacote de inovações técnicas na sua infra-estrutura que remetem à força e dedicação da Adobe em torná-lo cada vez mais uma plataforma competitiva em relação a outros servidores de aplicação disponíveis no mercado.

As novidades desta versão, conforme o que já foi publicado oficialmente pela Adobe (há mais, acreditem), deixam isso bem claro. Faço abaixo meus comentários pessoais a respeito de cada recurso:

Mapeamento de Objetos Relacionais (ORM)

A idéia é diminuir a necessidade de implementação personalizada e geralmente repetitiva para que se obtenha consistência e agilidade no desenvolvimento de aplicações no que se refere à dados. Com este recurso, de uma forma bastante simples o ColdFusion irá expor ao desenvolvedor, a partir de uma configuração bastante simples, objetos que representam dados do banco de dados, considerando a relação existente entre os mesmos.
Hoje, para atingir uma situação/ambiente de desenvolvimento semelhante, utilizo o framework Transfer-ORM desenvolvido, mantido e disponibilizado por Mark Mandell.
Infelizmente acho que códigos que exponham tal recurso ainda não podem ser publicados, mas se você deseja ter uma prévia do que será este recurso no ColdFusion 9 Centaur, conhecer o Transfer-ORM é uma boa introdução.

Melhorias na linguagem em sí

Até mesmo para expor o recurso de mapeamento de objetos relacionais (orm) citado acima, a linguagem necessitava de implementações. Haja visto que o próprio Transfer-ORM acaba pecando em alguns dos seus aspectos internos e capacidade de integração com outras camadas da aplicação, justamente por algumas limitações que o CFML/CFScript apresentavam até então. No caso do Transfer-ORM isso é notável principalmente quando implementa-se uma integração com o Flex/AIR por exemplo. Em resumo, é necessário criar algumas soluções alternativas para integrar os objetos gerados pelo Transfer (os TransferObjects) às capacidades AMF (Remoting/LiveCycle) do ColdFusion.

Essas melhorias na linguagem são basicamente:

  • Possibilidade de escrever componentes (CFCs) totalmente utilizando CFScript
  • Palavra chave “new” para simplificar o instanciamento de componentes bem como sua inicialização
  • Palavra chave “import” para definir o acesso a objetos de dependência em um componente
  • Definição explícita de getters e setters (métodos com diretivas get/set)
  • Definição de um escopo para variáveis locais que simplificará até mesmo a estrutura de um componente
  • CFFINALLY e CFCONTINUE que complementam a logica do TRY/CATCH e LOOPs
  • Enfim, a eliminação das diferenças entre CFTAGs e CFSCript

Ao mesmo tempo que temos que avaliar que isso tudo é extremamente positivo em termos de recursos, capacidade e robustez do ColdFusion, acho que foi importante a preocupação em manter a simplicidade do CFML em sí afim de que o ColdFusion não perca a agilidade da programação declarativa.

Outro fator importante é a proximidade de sintaxe, na questão dos scripts, da estrutura de código e da lógica que será possível de se implementar com o CFSCRIPT em relação às tecnologias concorrentes. Creio eu que além de diminuir uma resistência – que é imediata em relação as TAGs – aumenta a capacidade de se compreender o ColdFusion por parte de desenvolvedores PHP, ASP/.Net, Java, etc.

Serviços ColdFusion expostos ao Flex/AIR através de bibliotecas AS3 específicas (SWCs)

Como desenvolvedor Flash/Flex/AIR, este para mim é o principal recurso que fará diferença no meu dia-a-dia a respeito do ColdFusion 9 Centaur. Vários recursos, que não sei se já podem ser citados publicamente ainda por isso não o farei agora, que hoje dependem de uma implementação manual e repetitiva de aplicação para aplicação, já será abstraída pelo ColdFusion, permitindo o consumo direto desses recursos por meio de objetos em uma API definida em AS3 que poderá ser implementada nas aplicações como RSLs (Runtime Shared Libraries) assinadas digitalmente, que farão parte do framework compartilhado de distribuição única, ou seja, que o usuário baixa uma única vez ao primeiro acesso à aplicação Flex (o AIR não necessita desse download adicional).
Este recurso será certamente considerado um grande diferencial na adoção do ColdFusion para integração com Flex em aplicações RIA robustas.

Método “onServerStart” no Application.cfc

Bom, para quem é usuário do CF e já implementa o Application.cfc em suas soluções, a importância já é implícita. Mas enfim, dá ao desenvolvedor a capacidade de executar uma rotina personalizada na inicialização de um servidor.

 

Para ler dados oficiais do anúncio e candidatar-se a Beta Tester, visite a página dedicada ao lançamento no Adobe Labs:
http://labs.adobe.com/wiki/index.php/Centaur

Adicionalmente, eu não poderia deixar de comentar que ainda espero que exista alguma novidade em relação a politica comercial do ColdFusion. Mas como ainda estamos em fase de discutir o produto em sí, o que nos resta é aguardar.

De qualquer forma, repito, na minha opinião a Adobe encontrou várias formas de justificar e reforçar o diferencial do ColdFusion em relação aos seus concorrentes. E digo isso sustentando que eu mesmo me surpreendi.

4 comentários:

Pedro Claudio disse...

Como disse só resta esperar.

Anônimo disse...

Legal o post Vicente, e essas novidades serão muito bem aproveitadas por nós! :-D

E como vc disse, esses novos recursos nos aproximando ainda mais da POO (algo que hj é possível, mas não 100%) aumentará a capacidade de se compreender o ColdFusion por parte de desenvolvedores PHP, ASP/.Net, Java, etc.

Sobre a interação com AIR, minha preferida, já é publico através de vários blogs, que teremos novas classes que permitam uma maior integração do CF com o AIR como por exemplo a possibilidade do AIR ler/executar ações diretas com os nossos datasources.

Eu ainda aposto em algo referente ao comercial, uma vez que o Railo vem por aí e está no grupo JBoss que acredito que terá uma atenção especial. Talvez nã na enterprise mas na versão standard.

Sinceramente estou ancioso pelo beta e como foi citado por vc tb o lançamento da IDE Bolt.

jpetilo disse...

Quem me conhece sabe que o Backend realmente é o que me interessa no CF e essas novidades dispararam uma série de processos na minha cabeça.. ahah preciso de um quadcore já!!

Estou ansioso por esse ORM, até mesmo porque esse assunto muito me interessa, espero que não se limite a mapear apenas tables e views e os relacionamentos, que venha com algo mais. Isso também não implica na eliminação de framweorwks multi-camadas, uma vez que só uma camada vai ser "remodelada". Outras possibilidades são enormes e certamente tornarão o desenvolvimento mais robusto e simples de ser codificado.

O grande desafio da comunidade para tornar a CFML mais popular, será encontrar uma forma de direcionar o modo de desenvolvimento.

Os iniciantes sempre começam com código misturado, sempre tem as mesmas dúvidas que os levarão a repensar todo seu modo de codificação e sempre terão dificuldade de migrar de um paradigma para outro.

Cabe a nós, mostrarmos um ponto de partida, mostrar que aprender no paradigma mais moderno, tornará os novos usuários mais capazes de contribuir em alto nível a médio-longo prazo e isso precisa ser feito já.

Desde já agradeço ao Vicente pela rapidez com que estamos sendo informados sobre as novidades, sem essas iniciativas normalmente só teríamos essas informações acessíveis ou quando o beta final estivesse disponível para download. ou quando a comunidade já estivesse batido bastante o assunto pelos blogs mundo afora.

Jeff

Vicente Maciel Junior disse...

@pedro claudio, @tofinha, realmente... eu tb espero algum boa noticia em relação a parte comercial pois me parece agora que é o único ponto para o qual a Adobe precisa apontar alguma novidade competitiva ja que nos demais aspectos ela tem superado até mesmo as expectativas

@jeff, uma das primeiras coisas que pensei quando começei a detalhar essas novidades foi exatamente o seu projeto WS, que na minha opinião será um framework bastante competitivo quando você o colocar disponível. ví nesses recursos, posso estar enganado, uma possibilidade de simplificar e generalizar ainda mais o seu projeto. depois queria saber o que vc pensou ja em relação a isso.
quanto a questão de padronizações acho que o que falta mais são recursos e referências que ajudem os usuários a adotá-los. concordo que você que temos que nos sentir responsáveis por isso.
e quanto ao esforço, agradeço bastante o reconhecimento. o q eu queria justamente é que nos pudessemos colocar nossas opinioes o mais brevemente possivel até mesmo para ajudar a criar e formar outras dentro da nossa comunidade antes de serem influenciadas só por pensamentos e diretrizes apontadas pelo o que existe/acontece lá fora, que é o que geralmente ocorre.

Valeu pessoal! Obrigado!