sexta-feira, 5 de setembro de 2008

Javascript Engines Vs. Silverlight 2

Com o lançamento do Chrome e com o alpha da versão 3.1 do Firefox, tem se observado que as engines javascript tem feito o IE 8 comer poeira.

Esse aumento de velocidade tem uma razão bem simples: o javascript começa a ter características de um programa compilado em detrimento do modelo interpretado. Podemos dizer que será o novo paradigma para engines javascript dos browsers modernos.

V8 e Minefield (engines javascript do Chrome e do FF respectivamente) são engines que encabeçam esse novo paradigma, onde código javascript é compilado. Isso é uma evolução que não existe no IE 8 , pelo menos não nos testes (o que pode fazer parecer que o IE se isolou), não concordo, e estou incrédulo se ninguem na MS não acompanha a algum tempo o Minefield, afinal, não é um projeto de 10 dias atrás, é um projeto que já tem bastante história inclusive.

So que no caso da MS o que uns vêem como inconpetência ou falta de criatividade, eu vejo como estratégia. Afinal você tem que ser realmente ingênuo para acreditar que a MS não focaria numa engine que consiga atingir os mesmos resultados simplesmente por "falta de criatividade" em função do isolamento. É como achar que desenvolvedores MS nunca tiveram história dentro do Open Source: balela. Desenvolveram muito mais projetos Open Source do que muitos atuantes defensores do Software Livre (não quero levantar polêmica, mas é uma verdade).

Mas então porquê não focar no javascript? Vamos investigar:

Olhem esse comentário:
http://www.udm4.com/forum/showthread.php?t=696

Chris Wilson, arquiteto do IE, dizendo que o javascript tem que ficar como está??

Isso quer dizer que a MS está procurando meios de embarcar no browser tecnologia necessária para rodar aplicações WEB. Bingo!

Ela procurou focar num subset do .net framework que terá o mesmo princípio de compilação de código, mas não de javascript APENAS (Silverlight 1), mas de qualquer linguagem do .net framework. Então, é bem simples o ponto: enquanto o Google corre pro javascript, a MS vai correr por fora com o Silverlight 2.

Eu não sei sobre você, leitor, mas frequentemente sou obrigado a trabalhar em códigos javascript é visível que a linguagem carece de uma estrutura sólida para ser uma linguagem de desenvolvimento de um framework (tanto é verdade que o próprio Brendan Eich chefe da divisão de tecnologia da Mozilla quer remodelar completamente o javascript pra próxima versão).

E sejamos racionais: se eu, desenvolvedor .net, pudesse trabalhar em C# no cliente, assim como já trabalho no servidor, seria muito melhor, e isso será feito! Programar no cliente com C#, manipulando DOM, e fazendo tudo aquilo que você faria com javascript, e com o desempenho de uma tecnologia também compilada, com o mesmo ganho de performance das novas engines javascript. Aí se vai ver aplicações cada vez mais ricas na Web.

Vamos ver se essas previsões se concretizam, os dados estão rolando.

4 comentários:

ASF disse...

O que você afirma está correto e é óbvio. Também responde pelo nome de embrace, extend and extinguish.

E quanto a Silverlight vs JavaScript? (é uma pena que o ECMA faça parte da folha de pagamento)

Um belo exemplo de poder de um framework baseado em JavaScript: SproutCore (open source).

O Chrome também pode ser considerado uma resposta do Google a estratégia da MS de tentar levar adiante a prática do embrace, extend and extinguish agora para a cloud computing.

Afinal de contas, será que faz mesmo algum sentido usar uma máquina virtual proprietária rodar aplicações na web quando existem ótimas e poderosas opções acessíveis a todos?

Leandro Koiti disse...

O único problema da "resposta" da Microsoft é que irá gerar mais problemas para nós desenvolvedores, diferente da idéia do Chrome e do Firefox que é melhorar aquilo que nós já utilizamos.

O silverlight nasceu como possível concorrente do Flash da Macromedia e agora já está creditado como sucessor de poderosas engines de Javascript?

Ou eu não entendi alguma coisa ou isso é simplesmente apelação para não dizer que a Microsoft está ficando para trás nessa fatia do "mercado".

Eu desenvolvo com .NET há bastante tempo e adoro muitas das ferramentas que a Microsoft lançou, mas pra mim a idéia do Silverlight
é simplesmente sem cabimento.

Quem usa Flash não vai para o Silverlight só porque é o "hype", e quem precisa de Javascript não vai exigir que seus usuários baixem plugins para enfeitar um pouco algo que sempre esteve presente.

Agora eu concordo com você de que o Javascript precisa pular para o próximo nível, só não acho que tenha que ser simplesmente deixando de ser Javascript.

Olavo Rocha Neto disse...

Fala Antônio!

Sempre "embrace, extend and extinguish".. :-) bem, eu não vou comentar nada sobre isso, mas vamos aos fatos:

Silverlight é Open Source.

Silverlight rodará em vários browsers, inclusive Safari com suporte pela MS;

Silverlight terá suporte a linux pelo Moonlight/Novel.

Tem muitas opções como php, python, java caso você não queira .net. E duvido muito que essas tecnologias vão ser descontinuadas por um bom tempo, então você sempre terá opções.

Sobre o javascript, eu posso enumerar não só o SproutCode, mas muitos outros que fazem coisas até mais espetaculares (inclusive o ASP.net AJAX, mas eu também já vi gente fazer coisa espetacular em Delphi, e hoje é coisa do passado, pois não teve como evoluir, e o javascript é desse jeito há mais de 10 anos.

Sobre a sua pergunta, a resposta é sim. O Flash é prova disso. O público não se importa se a tecnologia é proprietária ou livre.
Aliás, vejo o Flash como o real oponente do Silverlight, o javascript nunca chegou nem perto.

Não vou deixar de usar o youtube porque tem ele condiciona meu acesso a baixar uma máquina virtual proprietária. Isso é irrelevante para 99% dos usuários.

Olavo Rocha Neto disse...

Olá koiti!

Por algum tempo me pareceu mesmo que o Silverlight seria única e exclusivamente concorrente do flash, mas depois de uma conversa que tive com o Fernando Cerqueira no TechEd 2007 mudei um pouco minha visão. Antes de mais nada, temos que analisar o verdadeiro escopo do flash?

Se você considera o Flash apenas para embarcar pequenas funcionalidades e fazer animações, então o silverlight não e concorrente desse flash. Inclusive, para animações, é possível embarcar os vídeos Flash dentro de uma aplicação Silverlight.

Mas se você considera o que a Adobe considera do Flash, isto é, uma plataforma de desenvolvimento web, então você pode dizer que o Silverlight é concorrente sim do Flash, pois é exatamente o que o Silverlight vai se propor.

Por outro lado, eu discordo que Silverlight veio para complicar, afinal, Silverlight não passa de um subset do WPF, então já está tudo aí pronto pra usar. Só que o Silverlight permitirá que o WPF se extenda a aplicações Web, tornando efetivamente transparente o desenvolvimento de interfaces, sejam elas Web ou Windows, pois tudo ficará sobre o .net Framework.

Em termos práticos, lhe faço umas perguntas de desenvolvedor .net pra desenvolvedor .net: você nunca quis seu validador de formulários validando os dado no cliente utilizando a mesma biblioteca de validação de dados do servidor sem correr o perigo de ter o javascript desabilitado com uma simples opção no browser ?

Já pensou como seria bom se pudesse dispor de eventos onclick no cliente em C#, manipulando objetos DOM com todos os recursos de intelisense e linq? Com tipagem forte (graças a deus)! :-)

E quanto a multithread REAL no cliente (não tou falando do time slicing do Google Gears) ?

Como desenvolvedor, mal posso esperar por isso. :-) Espero ter esclarecido algumas dúvidas.

O Scott'Gu tem um artigo legal sobre Silverlight 2, está meio velinho, mas serve:
http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx