terça-feira, 6 de janeiro de 2015

Conhecendo o LiveOak, novo projeto JBoss

FIquei impression com o um screencast do LiveOak. Última vez que fiquei assim quando eu vi a aplicação de olá mundo do PlayFramework.

Então, estive decidido a criar minha primeira aplicação usando isso mesmo tendo tantas outras coisas para fazer. Nessa postagem eu vou compartilhar minha experiência criando uma aplicação simples de blog usando o LiveOak.


Sobre LiveOak


Uma definição do site do LiveOak:

LiveOak is a backend-as-a-service stack that simplifies development for mobile and standard web clients. Its goal is to enable client-side access to traditional backend services without having to write server-side code.

LiveOak's fundamental architectural approach is REST to the core. LiveOak provides publish/subscribe, push-to-the-mobile-client, and REST-based APIs to shuffle data between mobile handsets, traditional desktops, and other servers in a local cluster or in the cloud.

A primeira coisa que gostei é que ele tem um painel de administrador, assim toda as coisas do lado servidor são feitas em uma forma gráfica(sem código). O código de verdade é basicamente feito totalmente no cliente e é muito baseado em chamadas REST.

Lembre-se que LiveOak é um novo projeto e no momento que escrevi isso a versão lançada era 1.0 Beta01.

Configurando o ambiente


Os requerimentos básicos são Java 8 e Maven 3.x. O download vem com o Wildfly instalado.
Então, você simplesmente tem que baixar o LiveOak, descompactar em um diretório de sua preferência e rodar o servidor;

$LIVEOAK_HOME/bin/standalone.sh -b 0.0.0.0

A primeira execução pode levar um pouco de tempo se você não tiver MongoDB, o motivo é que será feito o download e a instalação automática. As inicializações subsequentes levarão menos de 10 segundos!

Assim que você inicializar o servidor, acesse localhost:8080/admin  e logue usando admin/admin. Note que pela primeira vez você terá que trocar de senha, mas você pode usar admin/admin novamente.

Para mais informações por gentileza veja o Getting Started guide.

Minha primeira aplicação


Foi mais fácil que tudo que já vi até hoje. De verdade. Eu simplesmente precisar navegar para Application e create new Application. É tão inituitivo e com as dicas da interface você não vai se perder:




Depois disso eu precisei criar meu objeto de modelo, que é post com duas colunas: content e title.
Para isso, criei um storage e uma coleção chamada post:





Agora estou pronto para fazer as coisas do lado cliente. Em Javascript. Usando JQuery. Sim, não sou um desses caras legais que usam AngularJS. Eu ainda prefiro JQuery. Mas algum dia eu vou usar AngularJS. Ok, parei.

O lado cliente  

 

Criei uma simples, simples, app app de uma página para fazer operações de criação, recuperação e remoção do objeto post que criei.
Eu estava perdido: onde eu deveria colocar meu código? A documentação tem diversos exemplos, mas eu ainda estava perdido.
Para encontrar onde eu deveria colocar minhas coisas, eu adicionar a aplicação chat-html na minha instalação e percebi que as coisas foram adicionadas em $LIVEOAK_HOME/apps dir.
Percebi que a aplicação é configurada em $LIVEOAK_HOME/apps/{app}/application.json e então adicionei a linha "html-app" : "/app/index.html" nesse arquivo e um simples HTML em  $LIVEOAK_HOME/apps/blog/app/index.html para acessar do browser.

Não funcionou mesmo após reiniciar o servidor, parecia que estava em um loop infinito, e então fiz um diff com o application da aplicação de chat e adicionar a declaração de app no meu arquivo de configuração;

    "app" : {
      "type" : "filesystem",
      "config" : {
        "directory" : "${application.dir}/app/"
      }  
    }




Reiniciei o servidor e PA! Pude ver o Hello World em http://localhost:8080/blog, Funcionou!!! Agora vamos mexer com a aplicação de blog.

Minha página tem um formulário para submeter um post e uma div com os posts já submetidos. Aqui estão o HTML e o javascript, que foram inspirados nos arquivos da aplicação chat-html:





A chave é o objeto LiveOak, que nos permite interagir com o servidor de forma simples. Lembre-se que não escrevi nenhuma linha de código no lado servidor


Um ponto interessante é que LiveOak tem o conceito de subscribe, onde o cliente pode ser notificado quando uma coleção é modificada no lado servidor. NO meu javascript o que eu faço é carregar todos os posts quando a coleção é modificada e então eu atualizo a div que contém todos os posts. A parte legal é que se eu for no lado servidor e apagar uma postagem do storage, a modificação é refletida na view rapidamente. Essa é minha aplicação linda:



Conclusão

Esse foi um exemplo muito simples para brincar com o LIveOak, e, obviamente, o projeto é muito mais que isso e só está começando!

My application source on github

Nenhum comentário:

Postar um comentário