Adobe onAIR Tour Madrid - Parte 2 (Tarde)
O Ricardo Castelhano ficou com os dedos cansados e pediu substituição na tarefa de blogger. Portanto, aqui vai o resumo do que se vai passando durante a tarde.
[13:45] Adobe AIR API Overview (Daniel Dura)
O Daniel Dura está a demonstrar as funcionalidades da API do Adobe Air. Acabou de mostrar o quão simples é criar uma janela normal do sistema operativo (NativeWindow), e definir as suas propriedades. Por exemplo, alterar o chrome.
Explicou que existem vários tipos de NativeWindowType:
- Normal - janela normal do sistema operativo
- Lightweight - ideal para usar por exemplo em popups.
- Utility - ideal para usar por exemplo em paneis dockable, e janelas para complementar a janela “Normal”
Está neste momento a demonstrar a api de File I/O, que obviamente permite a leitura e escrita de dados no disco local. Podemos escrever as nossas próprias janelas de diálogo para interagir com o disco, ou usar as do sistema operativo.
Explicou que existem duas formas de interagir com ficheiros: sincrona e assincrona. Para quem não sabe, a síncrona irá interromper a aplicação enquanto um ficheiro carrega. A assíncrona permite que a aplicação continue a correr como normalmente, e quando o ficheiro termina de carregar é lançado um evento a avisar que o ficheiro está disponível.
Acabou agora de explicar que é possível chamar a janela de dialogo do sistema operativo para “browse” de ficheiros de três diferentes formas:
- browseForDirectory
- browseForSave
- browseForOpen
Está neste momento a mostrar que ao abrir um ficheiro é possível ir buscar praticamente todo o tipo de informação do ficheiro, como por exemplo, a imagem do ícone.
Chegou o momento de demonstrar como fazer ligações SQL a partir do Adobe Air. É realmente muito simples - muito semelhante ao que se faz em PHP.
[Nota: presentes no evento a representar a Adobe, vi o Ryan Stewart, Lee Brimelow, Daniel Dura, Mike Chambers, Enrique Duvos, Serge Jespers, Chris Brichford, Andre Charland, a Sumi Lim e o nosso Paulo Coelho. Também me cruzei com o Carlos Rovira e outros nomes que não me recordo agora]
Estamos agora na API de Drag/Drop e de acesso ao Clipboard. Esta é de longe uma das funcionalidades mais interessantes, visto que não é particularmente fácil criar um sistema de drag&drop multi-plataforma. Está a mostrar uma aplicação que permite arrastar uma “imagem” da aplicação para fora da mesma para outras aplicações no sistema operativo. O Luís da Flag explicou-me que o suporte multi-plataforma é conseguido graças ao facto de que todos os sistemas operativos possuem um clipboard, e foi através disso que foi implementado o suporte de drag&drop.
Chegou a altura de ver o suporte de icones. As aplicações Air recebem ícones no formato PNG, e é possível definir ícones para quase tudo (tray icon, application icon, etc) e em runtime.
O Daniel Dura está neste momento a mostrar como se faz para monitorizar se a aplicação está ligada ou não à Internet. É realmente fácil: basta instanciar um URLMonitor, e adicionar os respectivos eventListeners para escutar as alterações ao estado da ligação.
Outras funcionalidades genéricas são por exemplo: gravar localmente dados encriptados; notificações de dock; e notificações de idle. No blog do Daniel Dura existem/existirão variados exemplos de como usar quase todas as funcionalidades da API do Adobe Air.
[14:30] Data Intensive Enterprise AIR Applications (Enrique Duvos)
Começa a sessão do Enrique Duvos. Em Espanõl… Vai ser um bocado complicado acompanhar esta, mas vamos ver o que se consegue fazer…
O Enrique começa por mostrar o Census feito pelo James Ward, uma aplicação para comparar em termos de performance e largura de banda as diferentes tecnologias/métodos de comunicação com o servidor. Dá obviamente destaque à performance do Flash Remoting, que é de longe a mais eficiente de todas.
Explica que o Flex pode ligar a praticamente qualquer backend, e começa a explicar as vantagens do LCDS - LiveCycle Data Services. Tais como poder “empurrar” dados para os clientes (sim, o servidor toma iniciativa), sincronizar dados entre todos os terminais, etc.
Explica que existe uma solução open-source suportada pela Adobe que possui parte das funcionalidades do LCDS, o BlazeDS. Está a demonstrar uma aplicação “fictícia” que permite que todos os clientes possam ver em real time os dados da bolsa. Sempre que é actualizado o valor de uma acção no servidor, todos os clientes recebem esses dados.
Mostra a versão Air da aplicação, de forma a demonstrar que é possível ter múltiplos clientes tanto web como desktop a consumir mensagens.
[Nota: O Ricardo Castelhano também está a bloggar sobre o evento em real time. ]
O Enrique está agora a demonstrar aplicações que se sincronizam assim que a ligação volta a ficar disponível. Isto é, se tivermos a trabalhar, e a ligação cair, quando a ligação é reposta o data management permite sincronizar os dados sem que se percam. Ou por exemplo, podemos construir uma aplicação que pode correr tanto offline como online usando os mesmos dados. Quando está offline, os dados são gravados localmente. Quando a ligação é reposta, são sincronizados com o servidor (com gestão de conflitos incluída). Chama-se a isto “Offline synchronization using LCDS Data Management”.
Termina a sessão do Enrique. Não consegui acompanhar tudo, mas ficou aqui o principal…
(Ricardo Castelhano here…o PC do João Saleiro está com stresses…falta-lhe o RedBull ! Vamos aguardar para o PC arrefecer um pouco, e o João já voltará ao “live posting”)
[João Saleiro: back to live blogging. Aparentemente o portátil estava excessivamente quente... Uff!!]
A sessão do Chris Brichford já vai quase no fim, e já não consigo perceber bem o que se está a fazer. Basicamente, o tema é:
[15:05] HTML / JavaScript desktop applications on Adobe AIR. (Chris Brichford)
Learn how add desktop functionality to an HTML application running on Adobe AIR on the desktop. Learn about using the drag and drop API, the file system API, and other Adobe AIR APIs from HTML.O Chris está neste momento a mostrar como é possível fazer ligações a um servidor SQL a partir de HTML/Javascript usando a API do Adobe Air.
Começa a sessão seguinte.
[15:35] Using JavaScript Frameworks in AIR Applications (Andre Charland)
O Andre apresenta-se, e apresenta a empresa dele: Nitobi. Explica que trabalham sobretudo com AJAX, e que é uma empresa relativamente pequena. Apesar disso trabalham com empresas com a BMW, Nintendo (e outras que não me lembro do nome, já passou o slide).
Porquê usar AJAX com Air?
- Reutilização de código
- Reutilização de skills
- HTML é realmente bom em algumas coisas
- Manter alguns padrões de UI
- O Javascript continua a crescer
As frameworks AJAX compatíveis com AIR:
- Spry
- jQuery
- mochikit
- nitobi
- mootools
- extjs
- yahoo ui library
- dojo
São demonstrados alguns exemplos de aplicações AIR feitas com AJAX. Está agora a mostrar um exemplo de um “FishEye Menu” feito em AJAX a correr dentro do AIR. Concorrência ao meu (versão em Flash). A fluídez do menu pareceu-me um bocado “choppy”, mas talvez seja do computador do Andre.
Explica que os clientes muitas vezes exprimem preocupações relativamente à necessidade de se ter que descarregar e instalar um runtime para se instalar uma aplicação, mas que o install badge do Adobe Air vem resolver todos esses problemas, bastando ao utilizador fazer um clique, e o resto é gerido pelo Air.
O Andre falou de algumas experiências pessoais/profissionais com o AJAX e o Adobe Air.
Termina a sessão.
[16:30] AIR Conditioning (Lee Brimelow)
Nesta sessão vão mostradas as funcionalidades da API do Adobe Air usando Flash. É uma sessão direccionada sobretudo aos Flash Designers. A primeira API a apresentar será a Windowing API.
São mais uma vez apresentados os Window Types do Air, Normal, Utility e LightWeight. O Lee explica que a Lightweight window não cria janela nenhuma: somos nós que a temos que desenhar. Relativamente ao “chrome”, existem:
- System chrome;
- Custom (opaque);
- Custom (transparent);
É mostrado o código para criar uma NativeWindow. É extremamente fácil e intuitivo. A classe NativeWindow possui métodos e propriedades como:
- activate()
- alwaysInFront=true;
- close()
- maximize()
- minimize()
- orderInBackOf(otherWin);
- orderInFrontOf(otherWin);
- …
O Lee explica agora como adicionar essa Window ao nosso Stage. Basta simplesmente definir as propriedades da janela (largura, altura, alinhamento, etc) fazer um addChild ao Stage. Simplicíssimo!
São agora apresentados os eventos:
- activate
- deactivate
- closing
- close
- moving
- move
- resizing
- resize
- display_state_changing
- display_state_change
O Lee explica que numa aplicação Flash tradicional que corra em Full Screen não é possível ler dados do teclado por motivos de segurança. Com Air é possível contornar isso, visto tratar-se de uma aplicação desktop que o utilizador tem que instalar explicitamente.
Está agora a apresentar uma mini-aplicação que permite criar janelas dinamicamente para mostrar as diferenças entre os tipos de janelas.
Começa a explicar os Native Menu Types que são possíveis de criar no Air:
- Application menus
- Window Menus
- Context Menus
- Dock and System tray menus
- Popup menus
O Lee explica que há certos OSes podem não suportar menus. Para verificar isso, pode ser usado uma estrutura condicional if (NativeApplication.supportsMenu).
Entramos outra vez na API de File I/O. Como já se falou muito na File I/O API, o Lee está a passar por cima disso muito rapidamente. É novamente explicado que a API pode ser síncrona e assícrona (ver acima). A API possui ainda algo extremamente útil, um conjunto de métodos que devolve as directorias de sistema independentemente do sistema operativo.
O Lee está agora a falar em Encripted Storage, que permite gravar no local Filesystem dados encriptados, como passwords, e outra informação sensível.
O Lee explica agora como se cria uma base de dados local, como se faz uma ligação e como se acede aos dados.
Surge então a parte de “OS Interaction”. Existe uma propriedade no Air que permite activar o “Launch on Login”, que permite que uma aplicação corra automaticamente quando um utilizador faz login no Windows. É possível também gerir as associações dos ficheiros do sistema operativos.
Outra coisa interessante, é escutar eventos que indicam se o utilizador está ou não a usar a aplicação, nomeadamente detectando se um utilizador está idle ou não. É também possível detectar se o utilizador está a fechar a aplicação, para, por exemplo, gravarmos dados antes que esta feche.
Voltamos à parte da ligação à internet, que permite gerir ligações ocasionalmente ligadas, permitindo detectar tanto o HTTP Status como o estado de uma ligação por sockets.
O Air permite ainda colocar duas aplicações a comunicar entre elas, através do LocalConnection. Para identificar as aplicações é usado o appID.
O Lee diz que é já possível descompilar código Actionscript de aplicações para o Flash 9. Está a mostrar o AOL Music - Top 100 vídeos, uma aplicação AIR muito gira e que uso várias vezes. Pergunto-me o que irá ele fazer… descompilar a aplicação? Ok, e foi mesmo isso. Simplesmente abriu o SWF, e o Sothink SWF Decompiler mostra tudo: imagens, morphs, código, etc. O código não é 100% descompilado, mas sim 95%. Há algumas coisas que não são possíveis recuperar.
Chega a hora da imperial! ![]()
2 Comments
Make A CommentComments RSS Feed TrackBack URL
This entry was written by
March 31st, 2008 at 4:05 pm
Pessoal, então depois dessas passeatas todas têm k vir preparadinhos para uns workshops sobre o assunto, né?
April 1st, 2008 at 1:17 am
É o que se pretende do RIAPT e do UserGroup…
No próximo sábado já irá haver mais…