desenvolvimento de aplicações web em dart

12
Desenvolvimento de aplicações web em Dart Roger Ritter 1 , Artur Nunes 2 1 Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo (UPF) Caixa Postal 611 – 99.052-900 – Passo Fundo – RS – Brasil [email protected], [email protected] Abstract. Through the desire to eliminate some problems and ballast legacy of the JavaScript language arose Dart, Google's alternative to JavaScript. Due to the emergence of this new language of the search giant, curiosity leads us to better understand how it works and its application revealing its inception, objectives and structure. Resumo. Através do desejo de eliminar alguns problemas e o lastro legado da linguagem JavaScript surgiu o Dart, uma alternativa do Google ao JavaScript. Devido ao surgimento desta nova linguagem da gigante de buscas, a curiosidade nos leva a conhecer melhor como é seu funcionamento e a sua aplicação revelando seu surgimento, objetivos e sua estrutura. 1. Introdução Mark S. Miller¹ em outubro de 2010 apresentava através de uma lista de e-mail interna na Google Inc. uma alternativa ao JavaScript denominada inicialmente de ‘Dash’. Um ano após reformulações era apresentada na conferência de GOTO na Universidade de Aarhus, em Aarhus, Dinamarca, a linguagem ‘Dart’ ou ‘Dartlang’ (Dart Language) por Gilad Bracha² e Lars Bak³. Segundo Schürmann (2012) o código escrito na linguagem de programação Dart do Google se parece muito com uma mistura de JavaScript e Java com uma pitada de Scala. Essa semelhança é intencional: a linguagem de programação foi projetada com base no desejo de eliminar alguns problemas e o lastro legado do JavaScript. A premissa é que os programas Dart possam ser executados mais rapidamente e com melhor segurança, que trabalhem em qualquer dispositivo compatível com Internet e que sejam adequados para projetos

Upload: roger-ritter

Post on 26-Dec-2014

664 views

Category:

Technology


4 download

DESCRIPTION

Desenvolvimento de Aplicações Web em Dart. Trabalho desenvolvido na disciplina de Sistemas Distribuidos

TRANSCRIPT

Page 1: Desenvolvimento de aplicações web em Dart

Desenvolvimento de aplicações web em Dart

Roger Ritter1, Artur Nunes2

1Instituto de Ciências Exatas e Geociências – Universidade de Passo Fundo (UPF)Caixa Postal 611 – 99.052-900 – Passo Fundo – RS – Brasil

[email protected], [email protected]

Abstract. Through the desire to eliminate some problems and ballast legacy of the JavaScript language arose Dart, Google's alternative to JavaScript. Due to the emergence of this new language of the search giant, curiosity leads us to better understand how it works and its application revealing its inception, objectives and structure.

Resumo. Através do desejo de eliminar alguns problemas e o lastro legado da linguagem JavaScript surgiu o Dart, uma alternativa do Google ao JavaScript. Devido ao surgimento desta nova linguagem da gigante de buscas, a curiosidade nos leva a conhecer melhor como é seu funcionamento e a sua aplicação revelando seu surgimento, objetivos e sua estrutura.

1. Introdução

Mark S. Miller¹ em outubro de 2010 apresentava através de uma lista de e-mail interna na Google Inc. uma alternativa ao JavaScript denominada inicialmente de ‘Dash’. Um ano após reformulações era apresentada na conferência de GOTO na Universidade de Aarhus, em Aarhus, Dinamarca, a linguagem ‘Dart’ ou ‘Dartlang’ (Dart Language) por Gilad Bracha² e Lars Bak³.

Segundo Schürmann (2012) o código escrito na linguagem de programação Dart do Google se parece muito com uma mistura de JavaScript e Java com uma pitada de Scala. Essa semelhança é intencional: a linguagem de programação foi projetada com base no desejo de eliminar alguns problemas e o lastro legado do JavaScript. A premissa é que os programas Dart possam ser executados mais rapidamente e com melhor segurança, que trabalhem em qualquer dispositivo compatível com Internet e que sejam adequados para projetos ainda maiores no qual mostrem o objetivo desta nova linguagem para o grupo.

Existe disponível no site oficial da linguagem Dart [DARTLANG, 2013] a documentação oficial, ressaltando que quando este artigo foi escrito a versão mais recente da documentação era a versão 0.42.

_________________________

¹Mark S. Miller: Americano, projetista da linguagem Caja, atualmente trabalhando na Google Inc. como cientista de pesquisas e membro do comitê ECMAScript (JavaScript)

²Gilad Bracha: É criador da linguagem Newspeak e engenheiro de software do Google Inc. pesquisador na área de linguagens de programação orientadas a objeto.

²Lars Bak: Dinamarquês, é um veterano em máquinas virtuais orientadas a objetos, atualmente trabalhando na Google Inc. onde contribuí com o navegador Chrome através do motor de JavaScript V8.

Page 2: Desenvolvimento de aplicações web em Dart

No site oficial do Dart é possível obter exemplos de funcionamento e tutoriais para quem quiser se aventurar com esta promissora linguagem.

Com duas formas que fazer uma aplicação entrar em funcionamento, a linguagem pode ser compilada através de um gerador de código JavaScript ou rodar em uma máquina virtual com suporte a Dart, como pode ser visto no Esquemático 1.

Esquemático 1. Execução do Dart.

Tiobe (2013) destaca que a linguagem JavaScript é geralmente considerado como uma linguagem de programação no qual é fácil cometer erros. A linguagem JavaScript é interpretado, por isso, a maioria dos erros aparecem apenas em tempo de execução. Destaca também que por estes fatores o Google Inc. está projetando o Dart, que ocupa atualmente a posição 80 em seu ranking (figura 1), como sucessor do JavaScript. Mas também outras linguagens de programação foram projetadas para gerar o código JavaScript em vez de escrevê-lo manualmente. Exemplos disso são CoffeeScript, atualmente ocupando a posição 139 em seu ranking.

Figura 1. Indicador de popularidade das linguagens de programação, segundo a Tiobe.

Page 3: Desenvolvimento de aplicações web em Dart

2. Objetivo do Dart

Schürmann (2012) destaca que Dart é, sobretudo, um substituto adequado do PHP, pois além da máquina virtual, o projeto oferece um par de bibliotecas cujas funções oferecem suporte à manipulação conveniente da árvore de um site DOM (Document Object Model ou Modelo de Objeto de Documentos).

Segundo Miller (2010) JavaScript possui deficiências que não podem ser fixadas na evolução da linguagem. Adotando uma estratégia em duas partes para o futuro do JavaScript:

- Harmônico (de baixo risco): Visando continuar a trabalhar em conjunto para evoluir o JavaScript.

- Dash (de alto risco): Desenvolver uma nova linguagem, visando manter a dinâmica do JavaScript, com uma melhora no desempenho e passível de ferramentas para grandes projetos.

Miller (2010) descreveu o principal objetivo do Dart, desde o seu nascimento, é substituir JavaScript como a linguagem principal embutida nos navegadores com a preponderância de eliminar alguns problemas e o lastro legado do JavaScript, procurando manter as peças que fizeram a internet ser bem sucedida, mas preencher lacunas que todos concordam que ele tem.

3. Trabalhando com Dart

Segundo Dartlang (2013), Dart foi projetado para o fácil desenvolvimento de aplicativos modernos e capazes de implementação de alto desempenho para web. Por ser uma linguagem de tipagem opcional, mesmo que haja um tipo de objeto definido, o mesmo pode ser violado sem que seja interrompida a execução. São organizados de forma modular em unidade chamadas de bibliotecas, responsáveis pelo encapsulamento que podem ser mutuamente recursiva.

Dart foi mesclando com vários facilitadores, como por exemplo, o seu editor fortemente baseado no Eclipse (figura 2), versão em linhas no qual usuários podem abreviar uma definição de função individual, classes, serviços de contêiner, paralelismo e acesso DOM.

Schürmann (2012) destaca que Dart está em um estágio muito inicial de desenvolvimento e, portanto, não é adequado para uso em produção. Inventores do Dart intencionalmente lançaram a sua especificação em um estágio inicial para coletar tantas sugestões de melhorias quanto fosse possível, bem como para melhorar a aceitação. É também precisamente por isso que a especificação da linguagem tem sido colocada sob a licença Creative Commons Atribution 3.0 e o código do programa publicado pelo projeto sob a licença BSD Google [GOOGLE, 2013].

Dart ainda dispõem de um ambiente online, denominado Dartboard, [DARTBOARD, 2013] para que desenvolvedores testem, conheçam e explorem a nova linguagem.

Page 4: Desenvolvimento de aplicações web em Dart

Figura 2. Ambiente de Trabalho do Dart, fortemente baseado no Eclipse.

Segundo Dartlang (2013) o Dart pode haver três tipos de erros que são tratáveis:

- Erros de Compilação: Devido a sua falta de tratamento, param a execução e a compilação do programa;

- Avisos Estáticos: Encontrados em tempo de execução, porém não influenciam na execução do programa, servem apenas para o aprimoramento do desenvolvimento do código;

- Erros do tipo Dinâmico: Também encontrados em tempo de execução. Caso o erro não seja tratado, a parte do código que o envolve é ignorada.

3.1. Tipos de Dados Suportados

Dart suporta os tipos de dados listados na figura 3 no qual são objetos internos.

É possível, em Dart, criar listas e mapas com um simples comando new, conforme código 1.

Código 1. Criar uma nova lista.

As variáveis que ainda não tiveram um valor atribuído automaticamente têm o valor especial null.

Page 5: Desenvolvimento de aplicações web em Dart

Figura 3. Tipos de dados suportados pelo Dart.

Como no PHP, o Dart pode inserir o conteúdo de variáveis em Strings:

Código 2. Variáveis em String.

Dentro das chaves {} pode até haver expressões completas ou chamadas de função.

3.2. main()

O início de um programa é definido por main()como em Java (código 3), através das classes e superclasses suportados pelo Dart podemos repetir menos escrita de código e definir classes e métodos abstratos. Além disso Dart é uma linguagem orientada a objetos em todos os sentidos e, como no JavaScript, as variáveis podem assumir valores arbitrários a qualquer momento.

Código 3. A semelhança da linguagem com Java.

3.3. Clássico

O Dart herdou interfaces do Java. Quando uma classe implementa uma interface, ela garante que a função especificada na interface seja fornecida. Logo uma classe pode implementar várias interfaces, mas apenas herda exatamente uma classe (ou seja, usa extends para estender a classe). Se o nome da variável ou uma função começa com um sublinhado ela é privada, e só é possível acessar a variável ou função dentro da própria classe.

3.4. Serviço de Contêiner

O Dart contém os tipos genéricos, também conhecidos como generics, com os quais provavelmente estamos familiarizados por causa do Java. Programadores C++ também

Page 6: Desenvolvimento de aplicações web em Dart

conhecem esse conceito como templates, no qual é possível usá-los para criar rapidamente recipientes para objetos arbitrários, nas quais, as listas de funções embutidas e mapas são genéricos.

Por exemplo, List<Car> cria uma lista de objetos Carro, conforme código 4.

Código 4. Serviço de Contêiner em Dart.

3.5. Paralelismo

Programadores normalmente mudam as tarefas que precisam ser executadas em processos paralelos separados e, em seguida, trabalham duro para unir os resultados intermediários. O Dart remove as dores de cabeça desse processo: um objeto derivado da classe Isolate básica, se assim se deseja, é executado separadamente do programa principal em seu próprio processo.

Para ser capaz de trocar resultados intermediários, os Isolates podem enviar mensagens uns para os outros. Esta mensagem é primeiramente enfileirada até que o receptor Isolate pegue o que é conhecido como uma porta. Este modelo lembra muito o modelo atual do Erlang ou Scala. O código 5 mostra um exemplo completo.

Código 5. Serviço de Contêiner em Dart.

4. Comparando com outras linguagens

A linguagem Dart nasceu para disputar diretamente com o JavaScript, mas sua tecnologia também já está sendo utilizada em conjunto com outras tecnologias

Page 7: Desenvolvimento de aplicações web em Dart

emergentes como por exemplo o HTML5.

4.1. JavaScript

Tanto o JavaScript quanto o Dart podem ser descritos em arquivos separados do HTML, para JavaScript utiliza-se a extensão .js e para Dart utiliza-se a extensão .dart.

Ambos arquivos podem ser incluídos no HTML utilizando o mesmo código, para Dart utiliza-se <script type = “application/dart” scr=

”nomeArquivo.dart”></script> e para JavaScript utiliza-se <script type = “text/javascript” scr=”nomeArquivo.js”></script>.

Como em JavaScript, todas as declarações de funções possuem uma assinatura e um corpo descrevendo o que deve-se fazer, porém, na assinatura também é indicado o tipo de dado que a mesma irá retornar.

Código 6. Funções.

No código 6, verifica-se, que Dart não precisa informar que é um function, porém declara o tipo de retorno, seguindo o mesmo padrão para a passagem de parâmetros. Entretanto, se for um evento ocorrido com o mouse, é obrigatório o parâmetro MouseEvent, diferente do JavaScript que já declara o evento no próprio objeto. No código 6, já existe este objeto com uma declaração onMouseOver, já no Dart, há uma chamada no main que é responsável por chamar a função, como pode ser visto no código 7.

Código 7. Chamada de eventos.

Seguindo o código 7, ainda é possível analisar que na tag div referenciada pelo id com valor mouseOver, em Dart a declaração do evento onMouseOver se torna desnecessário, pois a linguagem já irá identificar em que objeto a referência se

Page 8: Desenvolvimento de aplicações web em Dart

encontra, assim podendo ativar os eventos correspondentes, separando as informações de script das informações de marcação do HTML.

4.2. HTML5

Diferente de JavaScript a linguagem Dart, não faz disputa diretamente com HTML5, mas sim aproveita a tecnologia de apresentação de conteúdo para desenvolver o denominado Dartflash e outras bibliotecas no grupo DartGameDevs, [DARTGAMESDEVS, 2013], segundo o grupo, Dart expõe todas as APIs do HTML5 disponível no navegador, incluindo lona e WebGL, Web Audio API, Web Sockets, entre outras. Com Dart você pode escrever jogos 2D e 3D, tanto para single-player e multi-players.

Com Dart e HTML5 podemos através do Gerente de Recursos, por exemplo, adicionar imagens para o gerenciador de recursos, marcar com um nome único cada URL e quando o gerente de recursos terminar de carregar as imagens, obter um BitmapData conforme na figura 4.

Figura 4. BitmapData.

O código 8 representa o exemplo do BitmapData resultando na figura 4.

Código 8. Gerente de Recursos.

O Gerente de recursos é somente um exemplo do que se consegue fazer utilizando a nova tecnologia Dart com HTML5.

5. Instalação

Page 9: Desenvolvimento de aplicações web em Dart

Encontra-se no site oficial [DARTLANG, 2013], todo material necessário para que seja possível realizar o download e criar seus códigos.

No pacote é trazido o ambiente de desenvolvimento baseado na IDE Eclipse, onde foi adaptado para dar suporte ao Dart e as demais linguagens necessárias para seu funcionamento, como HTML e CSS, por exemplo. O pacote compreende a máquina virtual necessária para compilar programas, o Chromium e um conversos para JavaScript integrado com a IDE de desenvolvimento.

6. Conclusão

Tudo sobre Dart soa bastante atraente através de sua proposta, porém a linguagem conta com uma pequena desvantagem, Dart está em estágio inicial de desenvolvimento, portanto não é adequado para uso em produção, por mais que já existam alguns exemplos de aplicação.

No site está se formando uma comunidade com intuito de difundir, aprimorar e relatar acontecimentos sobre a linguagem. Há muitas questões que já foram realizadas e respondidas, muitas delas acabaram se tornando base para novas implementações.

Dart terá um longo caminho pela frente, até que os principais navegadores deem suporte e conquiste os desenvolvedores que seus métodos e técnicas devem ser mais favoráveis a grande comunidade de programadores.

7. Referências

SCHÜRMANN, T. (2012) “Bull's-eye”, In: Linux Magazine.

TIOBE, (2013) “Tiobe Index”, http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html <Acessado em 25.Jun.2013>

MILLER, S. M. (2010) “Future of Javascript”, In: MarkMail, http://markmail.org/message/uro3jtoitlmq6x7t <Acessado em 25.Jun.2013>

DARTLANG, (2013) “Dart: Structured Web Apps”, http://www.dartlang.org/ <Acessado em 25.Jun.2013>

GOOGLE, (2013) “Google BSD License”, http://code.google.com/intl/de-DE/google_bsd_license.html, <Acessado em 25.Jun.2013>

DARTBOARD, (2013) “Try Dart”, http://try.dartlang.org/, <Acessado em 25.Jun.2013>

DARTGAMESDEVS, (2013) “DartGameDevs”, http://dartgamedevs.org/, <Acessado em 25.Jun.2013>