Porque Coldfusion
Olá Pessoal,
Esse é um post que sempre tive vontade de escrever: Um relato de como aconteceu a minha escolha pelo Coldfusion/CFML e qual a minha conclusão sobre esta opção alguns anos mais tarde.
Como um dos amantes da linguagem, naturalmente, o post ficou um pouco tendencioso, mas posso assegurar-lhes que o relato é verídico e sem exageros.
A seis anos e meio atrás, quando recebi a proposta para trabalhar na empresa e re-desenvolver o produto dentro de uma nova estratégia e visão de mercado, tive “carta branca” para escolher a tecnologia a ser utilizada:
- Ronan, podes desenvolver na linguagem que você preferir: Python, PHP, Coldfusion ou o que você achar melhor. Pra ser sincero, não sei porquê, mas eu tenho uma ótima impressão do Coldfusion. De qualquer forma, isso fica a seu critério.
E desta forma eu, que até então conhecia muito pouco de Coldfusion, iniciei uma pesquisa sobre os prós e contras de cada opção (linguagem de programação).
Sobre tudo que pesquisei, o que mais me chamou a atenção foram algumas afirmações do tipo: “O que você fizer em qualquer outra linguagem, você faz em dois-terços do tempo com Coldfusion.
Então eu pensei:
- “Não vou ser tão otimista, vou considerar 3/4 no lugar dos 2/3. Isso quer dizer que o que fazemos com quatro programadores de outra linguagem, é possível fazer com 3 programadores Coldfusion;
- O Coldfusion tem a desvantagem de ser pago, mas ao mesmo tempo, o preço de uma licença Standard é infinitamente menor do que o salário de um programador, uma vez que a licença é paga apenas uma vez;
- E ainda existe o fato de que o Coldfusion, por ser Java, requer um servidor mais potente (e caro). Porém, com o barateamento e evolução de capacidade dos hardwares, esse custo ainda se demonstra mais vantajoso em função do ganho de produtividade sobre as outras linguagens.
E sobre o ponto de vista do negócio:
- Atualmente o tempo de resposta (às mudanças) ao mercado é de fator preponderante para o negócio. Por conta disto o Coldfusion ganha mais um ponto no meu conceito, por permitir que projetos sejam entregues em menos tempo.
E a partir daí, eu acredito que ficou claro pra todos, a nossa escolha foi mesmo pelo Coldfusion. O projeto foi desenvolvimento, muito bem aceito e, Graças a Deus, continua em constante evolução.
Logicamente, no inicio tudo isso era apenas especulação, ou melhor, expectativas em cima da pesquisa que eu havia feito. Hoje, seis anos e meio depois, muitos projetos finalizados, alterados, corrigidos, evoluídos, servidores ampliados, atualizados, tunados e eu continuo com a sensação de ter feito a escolha certa.
Toda essa experiência foi legal porque me mostrou outros pontos fortes da CFML:
FACILIDADE DE APRENDIZAGEM DA LINGUAGEM
É fato que encontrar programador CFML “pronto” não é uma tarefa assim tão fácil.
Na nossa equipe, todos os desenvolvedores, sem exceção, foram contratados como desenvolvedores PHP. E todos esses desenvolvedores, sem exceção, se adaptaram facilmente e rapidamente à CFML.
Com isso, saber programar CFML nunca foi uma exigência pra nós, mas saber programar em qualquer linguagem web, sim.
COMPATIBILIDADE ENTRE VERSÕES
Para várias outras linguagens de programação, atualizar a versão no servidor pode ser uma tarefa cansativa, demorada e passível de erros.
Não para o Coldfusion.
Desde que colocamos o nosso produto no ar, aplicamos todas as atualizações do Coldfusion (e posteriormente do Railo), sempre com a necessidade de poucos ajustes de compatibilidade.
Falando especificamente em negócios e produtividade, isso quer dizer que conseguimos manter a nossa aplicação em constante evolução (tanto em nível técnico quanto em nível de mercado), sem ter que parar a equipe para adaptar a aplicação às novas versões da linguagem.
NOTA: Na verdade, alguns ajustes de compatibilidade foram necessários, sim. Mas todos feitos em tempo hábil o suficiente para não prejudicar o negócio.
EVOLUÇÃO DA LINGUAGEM
Falando mais especificamente sobre o Coldfusion: Em média, a cada um ano e meio é lançada uma nova versão, e, em todas elas sempre há várias novidades interessantes que vão da evolução da própria linguagem (como melhor suporte a orientação a objetos, suporte nativo a ajax) às mais variadas “firulas” que tanto agradam aos usuários finais (como os Flash Forms e popups embutidas).
Alguns exemplos são a versão 9 do Coldfusion que incluiu suporte nativo ao framework Hibernate e o suporte completo à cfscript, que permite a criação de códigos CFML inteiramente em linguagem de script. Isso sem contar os avanços das versões anteriores como gráficos e formulários em flash, e as inúmeras e excelentes melhorias de performance.
Do lado do Railo podemos citar as magic functions (que criam os getters e setters automaticamente), os web-contexts (que criam um ambiente administrativo específico para cada site hospedado, criando um nível maior de independência, controle e segurança sobre a aplicação), as built-in functions (que possibilita ao desenvolvedor criar suas próprias funções e incorporá-las como parte nativa da linguagem), API nativa de integração ao Amazon S3, entre outras coisas, sem contar as inúmeras e excelentes melhorias de performance.
SEGURANÇA
Sobre o aspecto segurança eu gostaria de destacar tanto a baixíssima quantidade de vulnerabilidades encontradas, quanto a facilidade de aplicação de hotfixes.
Mas eu não poderia falar em segurança sem dar um destaque especial ao Railo, que desde o inicio teve os quesitos performance e segurança como pontos fortes e principais diferenciais perante às outras engines CFML.
Além dos web-contexts citados anteriormente, a facilidade de atualização de versões (o que inclui a correção de bugs) é simplesmente a mais fácil e prática que eu já vi no campo das linguagens de programação.
Basta acessar o ambiente administrativo e dar um clique na opção “Update”. Pronto!
Isto para os mais cautelosos que optaram pela atualização manual, mas o Railo também oferece opção para atualização automática.
NOTA: Eu estou no grupo dos mais cautelosos. Pelo menos por enquanto.
O Railo Admin conta com uma série de alternativas (onde muitas delas vêm marcadas por padrão) como proteção contra ataques cross-site scripting em todos os escopos (cookies, formulários e URL’s) e proteção contra SQL Injection (também presente no Coldfusion).
Outro ponto forte do Railo é a rapidez na resposta a bugs. Uma rapidez surpreendente para uma linguagem de programação.
Para deixar mais claro o que eu quero dizer com isso, já vi bug ser corrigido e liberado em 4 horas.
Mesmo que determinado bug (ou funcionalidade) não seja corrigido no tempo desejado (por não ser algo tão crítico), ainda existe a opção de pagar separadamente pelo desenvolvimento de qualquer funcionalidade, assim como existe a possibilidade de contratar a equipe técnica do Railo para outros serviços como a instalação de um cluster para a aplicação.
E assim como em outras linguagens, também é possível restringir o acesso a determinadas funções ou diretórios, com apenas alguns cliques no ambiente administrativo.
ESCALABILIDADE
É importante lembrar que a medida que a aplicação vai crescendo a ponto de um servidor não ser mais o suficiente para suportar a demanda, as aplicações desenvolvidas em Coldfusion contam com todo o potencial do Java para escalabilidade, clusterização, distribuição de sessões e etc.
Posso dizer, por experiência própria, que um cluster de aplicações em CFML funciona de forma impecável.
Ou em outras palavras… “CFML escala, sim. E muito bem!”
OPENSOURCE
Esta foi, sem dúvida, uma das maiores surpresas para mim: O surgimento de uma engine CFML OpenSource, que oferecesse tão alto nível de qualidade.
Atualmente temos opções tanto com o OpenBD quanto com o Railo, entre outras.
A conclusão disto é que atualmente é possível utilizarmos grande parte do potencial da CFML através de engines OpenSource.
O “grande parte” citado acima se dá ao fato de que cada empresa (Adobe, Railo Technologies e New Atlanta) têm suas estratégias de mercado e, com isso, complementam suas engines de forma diferente.
Isso quer dizer que essas engines não são idênticas. Elas suportam o padrão CFML, mas ao mesmo tempo oferecem diferenciais distintos.
A CFML, em si, pode ser utilizada em qualquer uma dessas engines, porém, cada uma delas oferece um “algo mais” diferenciado.
MAIORES INFORMAÇÕES
Se interessou pelo assunto?
Não esqueça de visitar os sites abaixo:
Ensina-me CF (Excelente iniciativa do Ricardo Parente)
Site Oficial do Railo OpenSource
Site Oficial do Coldfusion
Site Oficial do Blue Dragon Open Source
Ronan Lucio Pereira

Olá. Bacana seu post. Você poderia falar um pouco sobre o panorama do CF no Brasil?
Eu sou curioso sobre a linguagem e acho as idéias de baixa curva de aprendizado, maior produtividade e forte integração com outras soluções Adobe muito atraentes. Porém, os custos de servidores CF é alto. A idéi de utilizar web hosts que vendam hospedagem em CF, na minha opinião, atende a projetos e empresas pequenos, daí o custo do servidor soar como grande impeditivo para uma maior adoção da linguagem.
Nas vezes em que pesquisei sobre o assunto, encontrei poucas opções free (ou quase) de servidores CF porém com menções sobre o limite de recursos de CF que poderiam ser aplicados nesses servidores. Ou seja, para utilizar o poder total do CF seria necessário um servidor CF Adobe, que custa muito caro.
Sou apenas um curioso no momento, mas agradeço se puder comentar sobre essas questões. Abraços e sucesso!
Olá Beto,
Perguntinha difícil de responder eim!!
Difícil porque depende muita da forma de ver de cada um. Uns veem o copo meio cheio e outros veem o copo meio vazio.
A umas duas semanas atrás rolou uma discussão sobre esse assunto na lista cfbrasil e as opiniões foram bem diversas.
O que houve em comum em todas as opiniões foi que todos enxergam o potencial da linguagem e o quanto produtiva ela é. O que é um excelente sinal.
A maioria das reclamações era referente a alguns CIO’s que, por modismo, insistiam dar preferência à linguagens mais conhecidas, e a alguns “parceiros” que não estavam fazendo um bom trabalho, priorizando linguagens terceiras que justificassem o re-desenvolvimento da aplicação, para assim fechar contratos maiores e mais longos.
De qualquer forma vamos ver se eu consigo ajudar:
VAGAS
Sobram vagas para desenvolvedor Coldfusion na lista cfbrasil. Então oportunidade de trabalho há de sobra.
LINGUAGEM
Fora as controvérsias sobre o papel que a Adobe deveria assumir no mercado brasileiro, onde uns acham que a Adobe deveria patrocinar mais eventos e fazer maior publicidade, o trabalho que Adobe (Coldfusion) e Railo Technologies (Railo) têm feito nos últimos anos foi excelente e vai desde melhorias de performance na engine, passando por uma série de melhorias na CFML como linguagem (melhorias na orientação a objetos, programação por script, proteção contra ataques e etc) e chegando à vários novos recursos (como integração com Amazon S3, suporte nativo a Ajax, tratamento de imagens, gráficos em flash e etc.).
Em suma, CFML como linguagem de programação é sim uma excelente opção.
HOSTINGS
Esta continua sendo uma das críticas a CFML. Realmente as opções de hostings no Brasil são poucas, mas os poucos que temos parecem estar fazendo um bom trabalho:
- Digitrum
- Porta 80
- CFusion
- entre outros, que sinceramente eu não lembro todos…
Quanto a hostings internacionais, na página do Railo tem uma relação com mais 4:
Hosting Providers
Apesar de poucos, para quem tem aplicação escrita em CFML, há opções, sim.
MERCADO
Para quem vive de desenvolvimento, naturalmente o legado de aplicações PHP é muito maior do o que aplicações CFML.
Para quem vive de freelance, saber PHP é praticamente um requisito porque a probabilidade de surgirem manutenções em projetos PHP é muito grande.
Por outro lado, a maior produtividade da CFML é quase sempre uma oportunidade de entregar projetos em menos tempo.
OPEN SOURCE
É sempre bom lembrar que agora temos o Railo, que é uma engine CFML Open Source.
Para qualquer empresa que possa investir cerca de R$ 1.000,00 em um hardware para servidor interno ou intranet, é uma excelente opção.
Ajudou?
Qualquer coisa manda aeh,
[]s
Ronan
[...] Não conhece CFML? Dê uma lida no post abaixo: Porque Coldfusion [...]
[...] Não conhece CFML? Dê uma lida no post abaixo: http://ronanlucio.wordpress.com/2010/08/09/porque-coldfusion/ [...]
Nossa… A última vez que dei uma ‘fuçada’ no Coldfusion foi em 2002 se não me engano, acho que era Coldfusion 5 ou algo do gênero, não lembro bem.
Eu pensava que estava linguagem já estava morta e muito bem sepultada, mas pelo visto eu estava errado.
Valeu pelo post. Muito esclarecedor.
Abraço.
Fala Adler,
Em 2002 eu acredito que o CF estava na versão 5 mesmo.
A partir da versão 6 o CF passou a ser desenvolvido em Java, e de lá pra cá ouve uma evolução muito grande em n áreas: linguagem, recursos oferecidos, performance, escalabilidade e etc.
Na versão 6 acrescentaram os CFC’s, que em CFML são definidos como “components”, mas que na prática trouxe a possibilidade de trabalharmos com classes e objetos.
A partir daí a CFML evoluiu muito como linguagem. Passou-se a falar muito mais em orientação a objetos e Design Patterns e, com isso, os frameworks CFML também evoluíram bastante. Surgiram então frameworks como o Mach-II, um framework indicado para quem trabalha fortemente com orientação a objetos, o Transfer, que é um framework ORM, o ColdSpring que é um framework IoC e AOP, o ColdBox que é um framework MVC XML-free, entre vários outros.
Na última versão do CF (9) foi integrado o framework Hibernate do Java.
Mas fora os frameworks da vida, a CFML passou a ganhar um enfoque muito mais “linguagem de programação”, e não mais apenas como uma “markup language”.
Na última versão do CF (9) já é possível criar uma aplicação inteira apenas com linguagem de script, ou apenas com tags, como preferir.
E claro, outra coisa que eu não poderia deixar de comentar é que a partir do ano passado, passamos a contar com duas novas engines Open Source: Railo e Blue Dragon Open Source.
O mais legal disso tudo é que após toda essa evolução que aconteceu nesses últimos anos, a CFML concentra uma série de pontos fortes presentes em várias outras linguagens:
+ Todo o potencial RAD (Rapid Application Development) do Coldfusion
Que se traduz em facilidades no desenvolvimento de tarefas que envolvam gerenciamento de conexões com Banco de Dados, Servidores FTP, Amazon S3, upload de arquivos, tratamento de imagens, criação de gráficos, formulários em Flash, event gateways e etc
+ O potencial de legibilidade e facilidade de codificação das linguagens scripting;
+ O potencial das linguagens orientadas a objeto;
NOTA: Apesar de a CFML não oferecer o mesmo nível de orientação a objetos do Java e Python, o que ela oferece é o suficiente para a grande maioria das aplicações orientadas a objeto.
+ O potencial das IDE’s como Eclipse (CFEclise) e Coldfusion Builder;
+ O potencial de escalabilidade do Java
+ O suporte a bibliotecas mais baixo nível do Java
Então Adler, na minha opinião, quando analisamos a CFML como linguagem e como potencial de retorno de investimento, ela está mais viva do que nunca…
Obrigado pelo comentário,
Grande abraço,
Ronan
Oi, Ronan
Você é desenvolvedor ColdFusion? Se sim, como posso entrar em contato com você para discutirmos um projeto de website?