Dec
01

Algumas observações sobre o desenvolvimento em HTML+JS+CSS

Depois de várias semanas a trabalhar em dois projectos básicos mas sérios com HTML (5, inclusivé), Javascript (jQuery) e CSS, deixo aqui os comentários das conclusões que retirei enquanto responsável pela equipa – do ponto de vista do desenvolvimento e tendo o desenvolvimento em Flex como base de comparação. De notar que este é um post de opinião pessoal na base da minha recente experiência, pelo que algumas observações poderão mesmo estar erradas.

  • IDE/apoio ao developer: A maturidade das ferramentas de desenvolvimento (Aptana+Dreamweaver+Firebug) está uns bons pontos abaixo da maturidade dos IDEs de desenvolvimento em Flex (e naturalmente JAVA).
  • Frameworks: Existem “n” frameworks de desenvolvimento em JS, que puxam o JS para um patamar muito interessante, mas ainda assim correspondem a menos de 1/10 das bibliotecas disponíveis no Flex SDK. Sobra (demasiado) trabalho para os developers no desenvolvimento de componentes, ferramentas e bibliotecas utilitárias.
  • Práticas:

    • Copy paste: Ainda impera muito a prática do copy-paste no mundo HTML, não sendo fácil encontrar recursos bem documentados. Por outras palavras, é normal encontrar-se no site de qualquer componente Javascript o código “copy paste” simples, directo e intuitivo para colocar a coisa a funcionar; porém nem sempre disponibilizam directamente a API/documentação que é essencial para quando queremos fazer “algo mais” (exemplo: http://videojs.com ).
    • OOP não é fantástico: Frameworks JS conhecidas estão relativamente bem documentadas. Porém, em vários casos a qualidade do código surpreende-me pela negativa – ainda se usa pouca composição/heranças no mundo JS. Não é que a qualidade habitual do código seja má; simplesmente não é fantástica…
  • Dores de cabeça:

    • Compatibilidades entre diferentes browsers e diferentes dispositivos: *Ainda* é terrível. Mesmo tendo cuidado e fazendo código “by-the-book”, há sempre um browser que estraga tudo. Ou um browser de dispositivo onde a coisa aparece de forma diferente. E mesmo depois das coisas estarem no ar, supostamente estáveis, por vezes ainda aparece a pessoa x ou y a dizer que aparece não sei quê desformatado… E há o medo do futuro: ” e se sai um browser/dispositivo novo que me lixa tudo?”
    • Magia negra: Há alguns comportamentos que parecem inexplicáveis, e muitos “brick-walls” que vão surgindo pelo caminho e que só desaparecem com a experiência de quem já os enfrentou, ou com muitas pesquisas no Google.
  • Video: O suporte de vídeo no HTML5 está muito abaixo da minha expectativa. Foi o meu maior “letdown”. Basicamente, algo que normalmente nos retira cerca de 20 minutos, retirou-nos cerca de 2 a 3 dias:
    • O rendering de vídeo HTML5 de cada browser é ainda muito susceptível aos parâmetros de encoding. Tivemos que testar vários cenários para obter uma boa relação qualidade/bitrate/compatibilidade com browser(s). Um mesmo vídeo MP4 que corre bem no Chrome nem sempre corre bem no iPhone. Já agora, recomendo vivamente: http://diveintohtml5.org/video.html .
    • Para um vídeo correr em vários/todos os browsers, é preciso colocar no servidor uma diferente cópia desse vídeo com um encoding diferente para quase cada browser: Mp4, OGV e/ou WebM. Um vídeo de 20 MB, necessitará de pelo menos 60 MB no servidor para as cópias restantes. Agora imagine-se que queremos ainda diferentes 3 bitrates para o vídeo. Multiplicando por “n” vídeos… conseguimos facilmente entupir um servidor.
    • O vídeo em HTML5 nos dispositivos móveis só corre em Full Screen, mediante um “click”. Aparentemente não dá para colocar um pequeno vídeo a passar embebido num canto. Porém, no meu Droid 2 com Froyo (suporte a Flash Player 10.1) o vídeo aparece nos websites embebido nos locais correctos, sem qualquer problema.
    • O vídeo em HTML5 nos dispositivos móveis não faz autoplay. Isto é propositado para gerir melhor a largura de banda (e bateria), mas devia ser opcional (não sei se é, mas por defeito o autoplay vem desligado).
    • A performance está uns furos abaixo do Flash Player. O mesmo vídeo HD, em MP4 corre com fluídez no Flash Player 10.1, mas com menor fluídez em HTML5 no mesmo browser. Dá-me a impressão que se perdem cerca de 4 ou 5 frames por segundo, pois parece haver um género de “stutter”.
  • Text layouting: De longe, e naturalmente, a *MELHOR* característica do mundo HTML. Isto não é novidade para ninguém, mas ainda assim é sempre importante realçar que o text layouting de HTML é centenas de vezes superior ao text layouting do Flash/Flex.
  • Separacão de “contextos”: Neste aspecto, o desenvolvimento em HTML+JS+CSS é até bastante confortável e elegante.
  • Performance: A performance do JS, para uma linguagem não previamente compilada, é bastante interessante, andando possivelmente a par e par com a performance do Flash Player dentro do browser SEM aceleracão por hardware, e sem recurso a PixelBender/outros. Porém, notam-se demasiado as diferenças de performance entre diferentes browsers, que têm um impacto variável na experiência do utilizador.
  • Ubiquidade: No que toca a penetração, apesar dos impressionantes 98% do Flash Player (no desktop), o conjunto HTML+JS+CSS é de longe aquele que dá mais garantias que irá correr em mais browsers e, principalmente, dispositivos. *Porém* é também o mais fragmentado e problemático: tem comportamentos diferentes em diferentes browsers e dispositivos, o que em certos tipos de aplicação é assustador e completamente impensável. O Flash Player continua a ser superior no que toca a garantir o mesmo em resultado em qualquer sítio que corra – desde que corra.

Disclaimer:

Isto não é um “rant” nem serve para iniciar um “HTML vs Flash”, ou um debate daqueles acesos, mas sim um conjunto de conclusões que retirei (que podem estar erradas) e que considerei importantes para partilhar aqui. Tirei mais conclusões, mas estas são as mais relevantes. Só queria deixar três pontos explícitos de claros pontos fortes da combinação HTML+CSS+JS:

1. Se o que se pretende é uma aplicação web a correr no browser e que também abra em dispositivos móveis, HTML+CSS+JS é combinação correcta, desde que haja a consciência de que o resultado final pode variar de browser para browser (i.e. aplicações não críticas). Esqueçam (por agora) o Flash Player para este efeito, pois em telemóveis corre relativamente bem mas não é fantástico. Mas no que toca a criar aplicações instaláveis, então o Adobe Air é de longe a solução correcta, a seguir, naturalmente, às aplicações nativas.
2. Se o que se pretende é mostrar texto, formatar texto, gerir texto, saltar entre documentos, nem pensar em usar a plataforma Flash. Este é o território demarcado do HTML.
3. É uma lufada de ar fresco não termos que esperar 30 segundos em compilações sempre que se faz uma alteração ao código.

——-

João Saleiro (Webfuel)




Feb
07

Javascript – Hope and Opportunity

Javascript a linguagem que não serve para nada, serve para tudo, que não presta e é muito boa… mais à frente entenderão.

Com a introdução do conceito Web 2.0  e com o aparecimento de frameworks como Jquery, Prototype ,Mootools,etc.. começaram a surgir RIAs em HTML/Javascript, sem recorrer a plugins – aplicações como Gmail, GoogleDocs, GoogleCalendar e  mais recentemente o GoogleWave (mencionei estas mas podia ter mencionado ‘N’; estas se calhar já todos nós experimentamos). No meio de tudo isto nasce também o conceito de Ajax (Asynchronous JavaScript and XML), a tecnologia base que permite um novo tipo de interacções do browser com o servidor.

O Javascript até então era uma “besta” adormecida que era vista por muitos como uma linguagem de “designers” sem grande valor, assim como o Flash/Actionscript era visto antes da última versão do ActionScript a 3.0.

E porquê todo este “frenesim”? Porque o HTML/Javascript estão prestes a ser revistos e vem ai o HTML5 e o ECMAscript 3.1 aka Harmony aka ECMAscript 5 que vai ser a nova base do Javascript  e que vão trazer coisas novas como:

  • Web Forms
  • Audio/video
  • Canvas
  • Drag & Drop
  • Editable
  • History api
  • Undo
  • XDomain
  • Messaging
  • Storage
  • Geolocation
  • Databases
  • QuerySelector
  • Sockets
  • Workers

Entre outras. Deixo também aqui um vídeo interessante de uma apresentação que fala de algumas especificações e dá exemplos práticos. Estas coisas já podem ser usadas hoje em dia, basta para tal termos um browser “moderno”. Existe uma lista disponibilizada pelo Yahoo das compatiblidades de cada browser, onde podemos consultar em que browsers é que vai funcionar o quê, e dependendo do nosso target/necessidades ponderar se é viavel ou não.
E o que é possivel fazer hoje em dia com Javascript? Frameworks(vou omitir Jquery e companhia) etc.. fica uma lista de links/Exemplos :
Aqui podem ver  uma compilação de 47 demos de CSS3 e as suas capacidades, desde relógios, cubos em 3d, rotações de imagens, enfim dá para ter uma noção geral do que aí vem.
E aqui um impressionante proof of concept com Javascript e o novo elemento <canvas>  do HTML5 que é uma versão do jogo “Another World”.

Frameworks:
http://sproutcore.com/ – A framework com o backup da apple.
http://cappuccino.org/ – Uma framework que apesar de não se programar directamente em Javascript o resultado final é javascript e tem um excelente demo http://280slides.com/ que vale a pena ver para ficar com uma noção das possiblidades que esta framework oferece.
http://qooxdoo.org/
http://www.extjs.com/
http://mochaui.com/
http://www.effectgames.com/effect/ – uma Framework totalmente dedicada á criação de jogos em Javascript.

Deixo aqui mais uns artigos que acho interessantes sobre este tema:
http://www.stimuli.com.br/trane/2010/feb/01/the-web-doe-not-need-flash/
http://lifehacker.com/5416100/how-html5-will-change-the-way-you-use-the-web/

Podia estar aqui o dia todo e provavelmente nem chegaria a metade do que existe por aí mas qualquer pesquisa no Google sobre o tema e chega-se lá. E isto é apenas uma parte do que o javascript tem actualmente para oferecer – sim há mais.

Pois, como todos sabemos uma aplicação web não é só client side (e o javascript serve para tudo como eu disse na introdução, ou já se esqueciam?). O Javascript também está a abarbatar o server side e começa também a ser uma linguagem a considerar.
Há cerca de dois anos atrás no SapoCodeBits 2008 conheci o Srº Mário Valente(MV), e foi quando ouvi falar nisto pela primeira vez, obviamente que o que me veio à  cabeça foi “O quê??? Javascript???”. Mas depois de ouvir os argumentos dele, fez-se luz. Passaram-se dois anos e tenho a dizer que as previsões estavam certas. E hoje em dia já se vê Javascript no servidor a fazer as mesmas coisas que qualquer outra linguagem de servidor. Neste post do blog do MV ele faz uma descrição da framework de desenvolvimento que ele idealiza.Na semana passada disse também possivelmente ter encontrado essa framework – chama-se “Pintura”.
Ainda não experimentei o pintura. Tenho feito apenas uns testes e lido umas coisas sobre Node.js, que é considerado por um dos criadores do Django(python) como “the most exciting new project I’ve come across in quite a while“ .

Ficam aqui uns links sobre o tema javascript-server-Side:
A Apresentação do nodeJS aconselho a verem para perceberem as potencialidades.
http://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/

Continuando… Para finalizar e como o javascript é uma verdadeira “besta”, não nos podemos esquecer que numa aplicação Web temos uma terceira  componente que é a  base de dados. E sim o Javascript também está lá  bem representado, temos o CouchDB que é uma document-oriented database, que guarda documentos em Json (Javascript Object Notation) e oferece uma forma query e indexação através de funções de MapReduce, funções estas programadas em Javascript.

Uns links para quem quiser investigar sobre isto:
um pequeno video nas GoogleTechTalks sobre couchDB
http://jan.prima.de/~jan/plok/archives/108-Programming-CouchDB-with-Javascript.html

Bem esperero não vos ter maçado com esta coisa do javascript e deixo aqui um cartoon engraçado “roubado” ao MV que por sua vez também “roubou” aqui. Espero que dêem  uma vista de olhos no Javascript que é capaz de vos ser útil no futuro.
Javascript é que é!




Apr
17

Adobe eSeminars – Finalmente Online!!

Depois de muito procurar e virar de “ponta-cabeça” o site da Adobe não consegui encontrar os downloads dos seminários que foram aqui notificados coisa que achei bem estranha já que na altura da subscrição desses mesmos seminários era-nos dito que seriam gravados e disponibilizados para download.

Depois de recorrer a vários motores de busca lá consegui começar a colher informações de onde se encontravam estes seminários… ainda não estão propriamente disponíveis para download, mas já podem ser vistos no “centro multimédia” Adobe Acrobat Connect.

Apenas não consegui encontrar 3 destes seminários, mas em contrapartida encontrei alguns também bem interessantes. Então deixo aqui a lista:

Extras:

Bem, já está aqui uma grande lista, mas com certeza que terá muita utilidade.




Apr
01

Sessões do AirTour em Madrid

Para quem infelizmente não pode estar em Madrid para o AirTour pode agora visualizar todas as apresentações do dia.





Keynote (Enrique Duvos)








Building your first Adobe AIR application with Adobe Flex (Mike Chambers)






Building your first AIR application with HTML and JavaScript (Kevin Hoyt)






Leveraging HTML and JavaScript within Adobe AIR (Kevin Hoyt)






Deploying and Updating AIR Applications (Serge Jespers)






Adobe AIR API Overview (Daniel Dura)






Data Intensive Enterprise AIR Applications (Enrique Duvos)






HTML / JavaScript desktop applications on Adobe AIR. (Chris Brichford)






Using JavaScript Frameworks in AIR Applications (Andre Charland)






AIR Conditioning (Lee Brimelow)





Online Videos by Veoh.com




Mar
20

Semana de seminários online gratuítos sobre as tecnologias Adobe para desenvolvimento de RIAs

A Adobe está a disponibilizar gratuitamente cerca de 20 seminários online sobre Flex, Air, Flash Lite 3, ColdFusion, Blaze DS, Dreamweaver, etc. Para aceder aos seminários precisará somente de um computador ligado à Internet com o Flash Player instalado e de fazer uma pré-inscrição aqui nas sessões individuais que pretender assistir.

Quer assistir a uma sessão mas não tem disponibilidade à hora marcada? Não tem problema – a Adobe disponibilizará mais tarde as gravações dos seminários.

As sessões serão as seguintes:

Segunda

Extending Web to the Desktop with AIR
Segunda, 24 de Março – 16:00 às 17:00

Getting Started with Flash Lite 3 and CS3
Segunda, 24 de Março – 18:00 às 19:00

What’s New in ColdFusion 8

Segunda, 24 de Março – 20:00 às 21:00

Building Rich Internet Applications with Flex 3

Segunda, 24 de Março – 23:00 às 00:00

Terça

Introduction to Adobe Blaze DS
Terça, 25 de Março – 16:00 às 17:00

Integrating Salesforce.com and Flex

Terça, 25 de Março – 18:00 às 19:00

Building AIR Applications with Flash CS3

Terça, 25 de Março – 20:00 às 21:00

Dreamweaver: Effective Standards-based Workflows for Ajax

Terça, 25 de Março – 23:00 às 00:00

Quarta

Adobe AIR Local Data Storage Options With Emphasis on Using Embedded SQL Databases
Quarta, 26 de Março – 16:00 às 17:00

Flash Lite and Flex for Tourism
Quarta, 26 de Março – 18:00 às 19:00

ColdFusion Powered Rich Applications for the Internet and Desktop
Quarta, 26 de Março – 20:00 às 21:00

Flex and Java – Tying the Knot!

Quarta, 26 de Março – 23:00 às 00:00

Quinta

Flex Data Services
Quinta, 27 de Março – 16:00 às 17:00

Adding Live Chat with ColdFusion & Adobe Blaze DS
Quinta, 27 de Março – 18:00 às 19:00

Blood from a Stone: Flash Game Optimization on Low-end mobile devices
Quinta, 27 de Março – 20:00 às 21:00

Flex Visual Data & Charting

Quinta, 27 de Março – 23:00 às 00:00

Sexta

The Essential Guide to Dreamweaver CS3 with CSS, Ajax, and PHP
Sexta, 28 de Março – 16:00 às 17:00

ILOG Elixir: Your Remedy for Vibrant Data Visualization
Sexta, 28 de Março – 18:00 às 19:00

AIR Native Drag and Drop
Sexta, 28 de Março – 20:00 às 21:00

Flex Architecture
Sexta, 28 de Março – 23:00 às 00:00

Fiz a conversão das horas para GMT somando 7 horas ao US/Pacific. Se me tiver enganado, deixe um comentário neste post para que possa efectuar a correcção o quanto antes.

Clique aqui para fazer a inscrição ou para mais informações.

top