Dart, el lenguaje de programaci贸n web del futuro creado por Google

Opini贸n: Mucho se est谩 hablando de la web 2.0, la programaci贸n estructurada, el desarrollo 谩gil, y los cambios en el paradigma de programaci贸n donde cobra especial inter茅s el desarrollo de aplicaciones en el lado cliente.

驴Qu茅 es Dart y c贸mo surge?

Dart es un lenguaje de c贸digo abierto, estructurado y flexible, orientado a objetos, basado en clases, con herencia simple y soporte de interfaces, clases abstractas y tipado opcional de datos.

Ha llegado para permitir que los desarrolladores puedan crear aplicaciones web m谩s complejas, con un mantenimiento m谩s estructurado y con un rendimiento much铆simo superior a lo que nos tienen acostumbrados las aplicaciones web.

Detr谩s de su creaci贸n est谩n Lars Bak y Kasper Lund dos de los creadores del motor V8 de JavaScript para Google Chrome, por lo que a la hora de desarrollar Dart tanto el rendimiento como la eficiencia se han tenido muy presentes.

Tambi茅n involucrado en la creaci贸n de Dart est谩 Gilad Bracha creador del lenguaje Newspeak y coautor de las especificaciones de Java y del desarrollo de la segunda edici贸n de la m谩quina virtual de Java.

A finales de 2014 la previsi贸n de usuarios de internet es de 3 billones (el 40% de la poblaci贸n mundial), cifra que se ha doblado en los 煤ltimos 5 a帽os. El cloud computing y los dispositivos m贸viles con acceso a internet, han tra铆do consigo el acceso masivo a las aplicaciones web y para poder procesar esta grand铆sima cantidad de solicitudes que son recibidas por los servidores, es necesario descargarlos de todos los procesos que puedan ser realizados desde el lado cliente.

Adem谩s, nuevas formas de ocio digital est谩n ganando terreno, como el uso de contenidos en formato video o la reproducci贸n en streaming. Las previsiones indican que para 2017, el 70% de la navegaci贸n por internet estar谩 dirigida al consumo de estos dos contenidos, lo que supone un gran consumo de recursos para los servidores que es necesario gestionar del modo m谩s eficiente posible, y ah铆 es donde destaca Dart.

De sintaxis parecida a Java y con una filosof铆a de trabajo similar JavaScript, no ha sido creado para sustituirlo, pero s铆 pretende ofrecer una opci贸n alternativa m谩s moderna en el desarrollo web y eficiente, sobre todo, para grandes proyectos web centrados en el lado cliente. JavaScript no es lo suficientemente robusto para estos grandes desarrollos, padece de grandes problemas de gesti贸n de memoria y el c贸digo se vuelve demasiado complejo de gestionar y mantener.

Por estos motivos, los desarrolladores de Google al crear sus aplicaciones utilizando JavaScript consideraron que no era el lenguaje ideal para hacerlo e intentaron buscar otras alternativas como GWT, con lo que consiguieron un enfoque estructurado, pero muy poco optimizado para la web.

De aqu铆 surge Dart, un lenguaje que permita combinar ambos mundos, el dinamismo de JavaScript con la potencia y estructura de lenguajes como C# o Java.

Dart permite desarrollar tanto aplicaciones complejas, del mismo modo que con Java o C#, como crear peque帽os scripts para realizar tareas sencillas y concretas para p谩ginas web, del mismo modo que con JavaScript.

Compatibilidad de Dart con los sistemas y navegadores web modernos

Dart utiliza la misma filosof铆a que Java, tiene su propia m谩quina virtual (DartVM) para ejecutarse, por lo que es multiplataforma y funciona perfectamente en MacOS, Linux y Windows.

Dart tambi茅n es compatible con todos los navegadores web modernos porque puede ser compilado a c贸digo JavaScript y correr de manera nativa en los motores JavaScript de los navegadores.

En un futuro cercano Dart correr谩 de manera nativa en nuestros navegadores web cuando estos incluyan la m谩quina virtual de Dart.

Google Chrome planea incluir DartVM de forma nativa por lo que se podr谩n ejecutar aplicaciones Dart nativamente en el navegador y aprovechar todo el rendimiento que nos brinda este fant谩stico lenguaje.

A煤n as铆, el rendimiento es sorprendente, Dart corriendo en su m谩quina virtual (DartVM) es del orden de dos veces m谩s r谩pido que Java. Incluso compilado a JavaScript ya es m谩s r谩pido que c贸digo nativo JavaScript corriendo en V8 en muchas de las pruebas de rendimiento.

dart-int-1_650px

Caracter铆sticas que hacen de Dart un lenguaje especial

Dart, es un lenguaje adelantado a su tiempo, ya que incluye gran parte de las funciones y APIs que incluir谩 la pr贸xima versi贸n 6 de JavaScript (esperada para finales de 2014).

Por ejemplo, estas son algunas de las novedades que veremos en JavaScript 6 y que Dart ya incorpora:

鈼 Variables de 谩mbito de bloque.

鈼 Valores por defecto en funciones.

鈼 Par谩metros opcionales por nombre.

鈼 Interpolaci贸n de strings.

鈼 Arrow functions.

鈼 API Promises.

Las variables de 谩mbito de bloque son variables 鈥渧ivas鈥 s贸lo para ese 谩mbito de trabajo y fuera de 茅l no existe. En JavaScript 6 se han creado para solucionar ciertos de los problemas de memoria de los que padece este lenguaje y se crean utilizando la palabra reservada let. En Dart no hace falta declararlas de ninguna forma especial, Dart aplica el 谩mbito de bloque de forma nativa.

dart2

Poder establecer valores por defecto en las funciones es algo muy interesante y 煤til.

dart3

Los par谩metros posicionales por nombre son extremadamente 煤tiles, mejoran la auto documentaci贸n de llamada a las funciones o m茅todos y permiten llamar a las funciones sin necesidad de respetar el orden de los par谩metros.

dart4
Poder realizar interpolaci贸n de cadenas trabajando con Dart o JavaScript es algo que ayudar谩 mucho sobre todo a las personas nuevas que se acercan a cualquiera de estos dos lenguajes, les evitar谩 muchos errores de aperturas y cierres de cadenas que nos han tra铆do de cabeza a muchos de nosotros.

dart5
Para funciones que tan solo contienen una simple expresi贸n puedes utilizar arrow functions.

dart6

Programaci贸n as铆ncrona

Para implementar el API Promises que tendr谩 JavaScript en su versi贸n 6 Dart ha creado el API dart:async donde debemos prestar especial atenci贸n a la clase Future que permite crear c贸digo completamente as铆ncrono, pudiendo ejecutar m煤ltiples tareas sin bloquear el sistema del usuario hasta que se reciba la respuesta.

Un objeto Future representa un proceso, funci贸n o valor de retorno que se recuperar谩 en un futuro en modo diferido. Ejecutaremos una funci贸n, por ejemplo, y el valor de retorno de la funci贸n no lo obtendremos de manera inmediata sino en otro momento.

Cuando el objeto Future reciba el valor tras la ejecuci贸n de su tarea podremos trabajar con el resultado y mostr谩rselo al usuario, actualizar la interfaz o realizar cualquier otro proceso.

Veamos un sencillo ejemplo de uso de Future para realizar peticiones as铆ncronas.

var xhr = HttpRequest.getString(‘http://www.google.es’)
..then((resp) => print(resp))
..catchError((e) => print(‘Error!’));

Herramientas para trabajar con Dart

Los ingenieros de Google han lanzado este nuevo lenguaje con un estupendo SDK. Puedes descargar DartEditor, el editor de Dart y ya tienes a tu disposici贸n todas las herramientas para comenzar a trabajar con Dart, crear aplicaciones de l铆nea de comandos, aplicaciones web en el lado cliente o aplicaciones que ejecuten en el lado del servidor.

El editor de Dart est谩 basado en eclipse, tienes autocompletado de c贸digo, debug paso a paso y acceso directo a los paquetes de terceros que tengas instalados y al SDK de Dart por si necesitas consultar cualquier clase o m茅todo mientras desarrollas.

Dart tambi茅n viene con PUB su gestor de paquetes. Esta herramienta permite localizar f谩cilmente una librer铆a que necesites para tus proyectos, descargar el c贸digo y comenzar a utilizarlo.

PUB adem谩s se ocupa de las dependencias y de mantener actualizados tus paquetes a la versi贸n que t煤 desees.

dart2js es otra de las herramientas que acompa帽an a Dart y es la herramienta encargada de realizar la compilaci贸n de c贸digo Dart a c贸digo JavaScript para que puedas ejecutar tus proyectos en cualquier navegador.

Como ya hemos comentado para Dart es importante el rendimiento, pero tambi茅n es importante el rendimiento de tus aplicaciones y para que puedas realizar mediciones adecuadas y detectar posibles errores de memoria incorpora una nueva aplicaci贸n llamada Observatory que permite analizar el consumo de tiempo, p茅rdidas o fragmentaci贸n de memoria, las l铆neas de c贸digo ejecutadas y la memoria asignada.

Para completar este elenco Dart dispone de algunos extras muy interesantes:

鈼 dartfmt herramienta para auto formatear c贸digo y que todos los proyectos tengan una estructura similar.

鈼 dartanalyzer que se ocupa de analizar en tiempo real el c贸digo Dart que escribes para detectar errores en tiempo de desarrollo. Tambi茅n muestra informaci贸n y avisos de inter茅s para que puedas ser m谩s productivo.

鈼 docgen es el encargado de generar toda la documentaci贸n de tus proyectos a partir de los comentarios de documentaci贸n.

Conclusi贸n

Como has podido ver Dart ya pone a tu disposici贸n muy buenas caracter铆sticas para que puedas comenzar a trabajar con 茅l en el lado cliente, en el lado servidor o crear aplicaciones de l铆nea de comandos.

Para muchos de nosotros, Dart se convertir谩 en el pr贸ximo est谩ndar de programaci贸n y revolucionar谩 el desarrollo web, marcando un antes y un despu茅s en el modo de estructurar y desarrollar aplicaciones web.

Por Mois茅s Belch铆n, desarrollador experto en tecnolog铆as web y BigData. Trabaja con Dart desde su nacimiento en 2011 y colabora en su desarrollo y difusi贸n entre la comunidad de desarrolladores hispano-hablantes.聽Es el creador de los primeros puntos de referencia sobre este lenguaje en castellano blogdart.es y autor del libro Aprende Dart.




Contacto | Diario TI es una publicaci贸n de MPA Publishing International Ltd.