Aplicações Ricas com Flex? Não, obrigado!


Você está pensando em fazer uma aplicação (dita rica) na web? Qual caminho tomar? Flex (que usa o Adobe Flash) ou o Silverlight?

Dúvida a lá Shakespeare. Ser ou não ser.

Eu ainda não precisei lidar com estas tecnologias, mas tenho colegas que estão (condenados?) a lidar com isto e vejo no dia-a-dia deles que por traz de uma interface bonitinha tem um código ordinário.

Eu conheço mais o Flex do que o Silverlight e neste post vou me ater mais a ele.

Para ser bem direto. Eu desenvolveria algo comercial em Flex? NÃO.

Se for para morrer aos 50 ou 60 anos, prefiro que seja de formas mais naturais (câncer, ataque cardíaco ou excesso de cafeína no sangue) e não contaminado por um framework de araque.

Na época do seu surgimento, o Flex trouxe sem sombra de dúvida uma resposta para todos os desenvolvedores que queriam entregar uma experiência de uso superior para o seu usuário.

Mas conforme o tempo foi passando, o desenvolvimento web foi evoluindo, e os tradicionais problemas de outros tempos foram sendo removidos.

Ainda assim, indiscutivelmente o Flex traz uma experiência visual mais aprimorada para o usuário final, mas isso por si só não paga o custo da sua utilização.

Vamos ver alguns pontos que tornam o Flex menos atrativo para o desenvolvimento de aplicações:

Write once, run everywere

O Flex usa o Adobe Flash Player para funcionar. Apesar da sua aplicação poder funcionar tanto em Windows, quanto em OS X e Linux, o player não possui a mesma qualidadade de implementação em todos os sistemas.

Como era de se esperar, o plugin com maior qualidade está disponível para o ambiente Windows, o que realmente não impressiona, visto que é ai que se encontra a maior base de usuários.

Aliás, mesmo em Windows você não conseguirá rodar o player de forma nativa em 64-bits.

Hell Playgound dos programadores

Espera-se ainda que o comportamento da aplicação seja a mesma em qualquer lugar, independentemente do sistema operacional, afinal o Flash Plugin vai proteger você disto.

Hummm, más notícias sobre isto. Como citei a melhor implementação do plug-in está no Windows. A versão OS X já seria qualificada classe média baixa, e a implementação Linux está abaixo da linha da pobreza.

Lendo o post The best way for Adobe to save Flash is by killing it de Steven Wei ele cita o caso do OS X em que qualquer requisição HTTP retorna o status 0. Se você precisa receber um 304 para seguir um redirecionamento, pode esquecer.

Mas para que se preocupar com isso, não é? Afinal isso só é pertinente para aplicações na web. Oops…

Ambiente de Desenvolvimento Estável

Quem já usou a combinação Eclipse + Flash já sabe no que dá. E não é culpa do Eclipse não, que é muito bom como IDE de desenvolvimento. Eu poderia citar várias coisas, mas uma pequena coisa já ilustra bem.

E se para saber se tem um erro na compilação você tivesse de “colocar na mão” outro erro para então ver se tem erros.

Lamentavelmente acontece.

Enfim…

Não vou dizer que desenvolver aplicativos neste estilo seja algo que não tem futuro, mas fico realmente pasmo de ver os problemas que o Flex apresenta, e mais ainda, como pode que o Flex, que tem muito mais tempo de estrada que o Silverlight até hoje não tenha uma oferta de ferramentas para testes automatizados?

A Telerik já disponibiliza um toolkit para testes de software baseados em Silverlight.

O advento do HTML5 então traz uma série de respostas para os problemas que antes se tinha ao querer desenvolver aplicações web mais robustas e com boa interface com o usuário.

Definitivamente temos melhores caminhos para optar.

, , ,

  1. #1 by Brustulim on 16 de março de 2010 - 13:13

    Você criará (ou já criou) algum post sobre “Qual a melhor plataforma na sua opnião” ?
    Pois estou estudando justamente isso… o que usar… flex? html5? silverlight? ajax puro?…
    Tenho desenvolvido sistemas para a web a muito tempo e somente com a utilização de uma dessas tecnologias consigo (de forma coerente) alguns recursos como gráficos atraentes, arrastar e soltar, cover flow… Tenho utilizado o Flex, mas penso na hipótese de migrar para silverlight (pela facilidade em integrar com .Net, que utilizo no core das minhas aplicações), html5, ou algo do gênero….
    Você falou bastante contra a web 2.0 e o flex, mas acredito que ficaria mais interessante complementar com a sua opnião.
    Até comecei a escrever minha opnião, mas começou ficar grande demais…. e acabaria virando um post… rsrsrsrs
    Então Fico por aqui… sugerindo um post que “sugira”…
    um abraço!

    • #2 by Adilson Carvalho on 16 de março de 2010 - 15:08

      Obrigado pelo comentário.

      Na verdade contra a web 2 eu não tenho nada, mas vejo os problemas que meus colegas que desenvolvem em Flex encontram que realmente me fazem questionar o quão “profissional” ele é.

      Existem frameworks como o cappucino.org que oferecem essa cara de ‘desktop’ que todo mundo quer na web com uma implementação que eu acho melhor que o Flex.

      Concordo com você que o Silverlight tem como maior ponto forte a integração com o .net, que depois do projeto mono vai virar algo global.

      Se sua opinião deu um post, eu publico :)

      Abraços e obrigado por comentar

  2. #3 by Andre on 29 de maio de 2010 - 13:22

    Isso n é opinião de quem veste a camisa da MS?

    Sou analista de sistemas, por muito tempo usei (uso) as ferramentas da MS, mas gostei muito do que vi feito em Java e Flex (amigos meus), tudo bem q n são sistemas para web em si, são corporativos, mas a combinação ficou muito boa.

    • #4 by Adilson Carvalho on 30 de maio de 2010 - 00:46

      Olá Andre,

      O texto em nada “veste a camisa da MS”. Apesar de eu gostar do C#. Veja que tenho posts falando de como curto linguagens como Ruby, Phyton e Boo.

      Eu não vejo a MS como sendo a melhor escolha para o mundo web. Eles são bons em muitas coisas, mas minhas experiências com as ferramentas web deles não são das melhores, principalmente com o Sharepoint.

      O que eu comento é que eu não consigo ver o Flex como uma boa opção para o desenvolvimento web. Eu atualmente acho muito melhor usar um framework a lá JQuery para fazer as coisas que desenvolver em Flex ou em Silverlight, principalmente pela falta de alguns recursos, notavelmente a falta de ferramentas para automação de testes. O Silverlight até tem, mas realmente acho que ainda não é o momento para abraçar nenhuma das duas tecnologias.

  3. #5 by Andre on 29 de maio de 2010 - 13:27

    Chamar o Flex de framework de araque, n é um certo exagero?
    E, cá pra nós Mono tá bem longe de ser realmente bom. Quando comecei a usar o Linux, pensava “blz, usarei o C# sem problemas lá”, e não é bem assim.

    • #6 by Adilson Carvalho on 30 de maio de 2010 - 00:47

      Grande Andre,

      Você chama de framework algo que não consegue serializar data/hora do cliente para o servidor e vice-versa sem ter problemas com o GMT, levando aplicativos que dependem desta informação terem de contornar o problema serializando esta informação em texto? Ele ainda tem muito para caminhar. Os componentes visuais tem internamente comportamentos diferentes para as mesmas chamadas.

      Dá para notar que o padrão foi sofrendo alterações durante o desenvolvimento. Lá na empresa tiveram de desenvolver componentes específicos, que foi quando a coisa começou a pegar.

      E isto não tem nada a ver com mono, C# e afins. Eu acho que deve-se usar as ferramentas no ambiente para o qual ela foi desenvolvida. Qualquer coisa fora disto é adaptação. Usei muito pouco o mono, justamente porque se programo em C#, deixo no windows. Não é falta de confiança no trabalho do pessoal que o desenvolve, mas como disse, adaptação é adaptação.

      Forte abraço

  4. #7 by Ygor on 11 de abril de 2011 - 13:51

    Post pra lá de antigo, mas achei totalmente superficial a sua opnião.
    Ficou muito no “meu amigo que disse”, dando a parecer que não tem experiencia em Flex. Realmente a ferramente tem muito a melhorar(principalmente nos players de outra plataforma que se não Windows) mas chama-lo de “araque”… exagero de quem não conhece a tecnologia

(não será publicado)


  • Translator