Flex versus ActionScript – the debate gets new life
http://gregsramblings.com/2011/09/06/flex-vs-actionscript-the-debate-gets-new-life


Alguns dias atrás, um leitor comentou no meu post no blog, "O time de desenvolvedores Flex discutem o futuro do Flex" e isto trouxe o debate frequente do Flex vs Actionscript. Este assunto já foi debatido muitas vezes antes do Flex ter aparecido, mas ultimamente tem aparecido como um tópico quente novamente, especialmente com os desenvolvedores mudando seus focos para apps móveis.

Desenvolvedores precisam saber o bastante para saber usar a ferramenta certa para o tipo certo de serviço e isto é uma verdade para qualquer tecnologia e não somente Flex. Sim, alguns desenvolvedores estão usando Flex para coisas as coisas as quais o Flex não deveria ser usado. Flex é um framework que nos traz componentes, uma linguagem declarada (linguagem MXML), modelos sofisticados de eventos, data binding, view management e muitas úteis e facilitadoras caracteriscticas.Quando você compila uma app Flex, tudo é convertido para puro ActionScript como o primeiro passo no processo de desenvolvimento. E seria por acaso este Actionscript gerado optimizado para todos os casos de uso? Claro que não. Os gerentes e engenheiros do Flex dispuseram muito esforço em priorizar aonde investir tempo de desenvolvimento baseados numa longa disposição de casos de uso, mas eles obviamente não conseguiram fazer esta optimização para todos os cenários existentes. Por outro lado, uma tonelada de horas de desenvolvimento foram investidas em optimizar o framework Flex, e você deveria tirar vantagem disso ao invés de investir seu próprio tempo em construir um Actionscript customizado.Tudo depende simplesmente do seus requisitos.

Então, quando considerar entre desenvolver uma aplicação com o framework Flex ou desenvolver em puro Actionscript, você está na verdade tomando uma decisão entre usar Actionscript pré-feitos/gerados que foram criados para um amplo estudo de casos ou em escrever o seu próprio Actionscript que será bem especifico ao seu estudo e caso. Claro que, a última opção vai algumas vezes ter uma melhor performance pois seu código foi exatamente criado para aquilo que deveria executar, mas por outros lado usualmente vai levar muito mais tempo para escrever sua app.

Você pode elevar a busca pela melhor performance ao extremo. Se você deseja a melhor performance possível, desenvolva sua app que aponte para um dispositivo específico e crie uma versão diferente para cada processador que sua app irá rodar. A performance vai ser extraordinária pois cada instrução vai ser específica para sua app mas o esforço no desenvolvimento vai levar anos!

Realizei que isto é uma comparação louca, mas novamente, nós, desenvolvedores temos que fazer algumas decisões inteligentes ao decidir o que desenvolver, criar. Frameworks como o Flex salvam nosso tempo mas eles tem sérios custos em termos de performance. Só para constar, essa afirmação também é verdadeira para Javascript. Recentemente eu desenvolvi uma aplicação que utilizou muito JQuery. JQuery me salvou uma tonelada de tempo, e ainda bem que na minha app, a performance foi adequada sem que precisasse refazer nenhuma das funções de JQuery com minhas próprias funções em Javascript. (Se você procurar, você achará que existem pessoas que estão tendo o mesmo debate sobre JQuery versus Javascript).

Nós estamos vendo uma nova vida no debate Flex versus Actionscript por causa da recente lançada versão 4.5.X do Flash Builder, a qual suporta o desenvolvimento de apps Flex que rodam no iOS, Android e tablets Blackberry. Todos nós que passamos o tempo desenvolvendo apps para dispositivos móveis temos que pensar na performance muito mais que o normal pois estes dispositivos dramaticamente se constituem de recursos muito mais lentos do que os modernos desktop/laptop que existem atualmente. Subitamente nós estamos nos preocupando com todas as otimizações e cada byte de memória como nós preocupavamos algum tempo atras. Quando a performance é um risco, a escolha de usar um framework que trocar ela por um processo de desenvolvimento mas curto não deve ser levada como brincadeira, então o custo versus a análise de benefícios é a chave. Apesar de tudo, não é uma questão de tudo ou nada...

Os rapazes na HD Interactive tem desenvolvido grande games que estão disponiveis na Apple Store, Android Market, B&N Nook Store e outros markets. Os games incluem Kung Fu Battle Slots, Pyramis, MrMixit, Neptune, e muito mais (a home page deles tem todos os links para você checar cada um). Eu estive muito impressionado com a performance de suas apps, então sentei com eles e observei como eles as fazem. As apps são realmente todas feitas em Flex aonde eles tiram vantagem das Flex views, os modelos de componentes e os modelos de eventos. Ainda assim muitas das animações, transições e efeitos foram desenvolvidos em puro Actionscript que é específico para o game pois eles precisam da melhor performance possível para cada caso específico. Por exemplo, alguns dos efeitos e transições no Flex são ótimos para a maioria das apps, mas eles não são rápidos o bastante para manusear os tipos de animações e os gráficos avançados as quais a HD´s games demandava, então eles tomaram a decisão correta de investir um tempo extra e desenvolver seus próprios códigos de animação. Eles se tornaram mestres em usar a ferramenta certa para o serviço certo. Utilizam Flex aonde irá reduzir tempo de desenvolvimento e desenvolvem Actionscript específico quando necessário.

A maioria das apps as quais estou envolvido são apps empresariais data-driven as quais estão bem servidas em Flex. Flex me traz um grande ganho de tempo pois o framework fornece muitos blocos de desenvolvimento que tipicamente essas apps exigem. Para estes tipos de apps a decisão de usar Flex é acéfala. E este é usualmente o caso para apps empresariais. Em todo o caso, para outros tipos de apps, a decisão pode não ser tão clara. Mas como muitos das decisões que desenvolvedores tem a fazer a resposta sempre é "Vai depender...".

Nenhum comentário:

Postar um comentário