Nota: Únase a la comunidad Dart de habla rusa en Telegram , Slack y Google+ . Y al final del artículo encontrarás un pequeño anuncio.
El renacimiento de Dart como un lenguaje de programación popular para el desarrollo móvil y web
Hoy anunciamos el lanzamiento de una versión estable del lenguaje de programación Dart - 2.0, así como la plataforma web Dart, que ofrece una combinación única de productividad, rendimiento y escalabilidad.

Los desarrolladores de Flutter aprovechan las muchas características de Dart 2 ya que Flutter ha estado utilizando versiones preliminares del SDK Dart 2 durante varios meses. Sin embargo, el lanzamiento de la versión estable de Dart 2 es otro paso importante hacia el lanzamiento de Flutter debido a la estrecha conexión entre el marco y el lenguaje. Si aún no ha instalado Flutter, puede
probarlo ahora .
Con el lanzamiento de Dart 2, ahora y los desarrolladores web también pueden usar esta versión del lenguaje, todas las bibliotecas y herramientas recibirán una serie de mejoras específicas para la Web. Toda la información necesaria sobre la instalación y creación de la primera aplicación se puede encontrar
aquí .
Dart: creciente popularidad
Dart 2 es un hito importante en el camino para revivir a Dart como un lenguaje de programación popular enfocado en el desarrollo rápido y conveniente de aplicaciones móviles y web. Queremos que los desarrolladores que crean aplicaciones cliente sean productivos: con un lenguaje, marco y componentes que reducen el código repetitivo y les permiten centrarse en la lógica empresarial, así como en herramientas que identifican errores en las primeras etapas, ayudan en la depuración y generan compactos y código rápido
Hemos visto un fuerte aumento en la popularidad de Dart durante el año pasado. Nuestra propia analítica muestra un aumento de diez veces en el uso externo. El último trimestre, Dart fue
uno de los idiomas de
más rápido crecimiento en GitHub medido por solicitud de extracción;
Las preguntas crecientes en StackOverflow también muestran una tendencia positiva en la popularidad de Dart:

Para Google, Dart es uno de los pocos idiomas que utilizamos para desarrollar aplicaciones web con millones de líneas de código de muchos proyectos diferentes, incluidos Google Ads, Google Shopping y nuestros propios proyectos de infraestructura interna.
De hecho, ya podría usar Dart sin darse cuenta: el popular
preprocesador de estilo Sass fue
reescrito recientemente
en Dart para hacerlo más rápido, más portátil y más fácil de desarrollar. Sass ahora se distribuye como un ejecutable independiente en Homebrew y Chocolatey y se compila para JavaScript en npm. Dart facilita la instalación de aplicaciones en cualquier lugar sin dependencias externas, así como la implementación de flujos de trabajo para los usuarios que escriben en Dart, así como para los usuarios que no lo hacen.

Dart 2 se centra en tres aspectos:
fortalecer y ajustar el lenguaje, desarrollar nuestro soporte para plataformas web y móviles, y crear herramientas y componentes que admitan el uso de Google Dart para el mundo exterior. El resto de este artículo cubrirá estos tres temas.
Dart 2: un lenguaje optimizado para el desarrollo del cliente
Como
dijimos en febrero (
versión rusa )
, el sistema de tipo Dart es
explícito . Esto significa que antes de que los usuarios inicien su aplicación, pasará por la etapa de análisis y compilación, durante la cual a menudo se descubre una gran clase de problemas. Cuando escalamos Dart a aplicaciones extremadamente grandes en Google, el sistema de tipos detectó muchos errores en una etapa temprana de desarrollo, lo que condujo a la creación de un mejor código.
Con Dart 2, no puede entrar en un estado en el que se ejecuta una expresión con un valor que no coincide con el tipo estático de esta expresión. Esto significa que puede escalar su base de código a millones de líneas, refactorizar grandes proyectos e implementar su código en producción, confiando en ello.
No se preocupe:
explícito no significa montañas de código innecesario. El sistema de tipos incluye salida extendida, incluso para argumentos de tipo
genérico .
final _field = [3.14, 6.28]; void main() { // , <int> print([1, 2, 3].runtimeType); // List<int> // , // int (1) double (3.14) `num` print([1, 3.14].runtimeType); // List<num> // print(_field.runtimeType); // List<double> }
Obtenga más información sobre el sistema de tipo Dart 2 en
esta página.
Como se mencionó en publicaciones de blog anteriores, Dart 2 también reduce el ruido del lenguaje en varias áreas clave: por ejemplo, la
nueva palabra clave ahora es opcional, y la palabra clave
const es opcional en el
contexto apropiado .
Finalmente, hicimos mucho trabajo detrás de escena para unificar las diversas herramientas auxiliares, que ahora están unidas por una
interfaz común que admite nuestros compiladores y
tiempos de ejecución . Esto proporciona coherencia a nuestros usuarios y promete mejorar la velocidad y la calidad de las nuevas funciones a medida que Dart continúa evolucionando.
Dart 2 en la Web: marco rico y potente
Las aplicaciones web desde el principio han sido fundamentales para la misión de Darth. De hecho, la mayoría de los desarrollos Dart de Google son para aplicaciones web. Uno de los más grandes es Google Ads, que proporciona miles de millones de dólares de economía en línea. En el proceso de transferir código a Dart, redujeron el tamaño de la base de código de la interfaz de usuario en un 40%, al tiempo que mejoraron el rendimiento y la calidad de la aplicación.
Si bien el Dart SDK principal proporciona bibliotecas para acceder a las API de navegador modernas, también admitimos un marco robusto basado en Angular para crear aplicaciones web complejas.
AngularDart 5 , enviado como parte de Dart 2, aprovecha el sistema de tipo Dart
explícito y el
nuevo sistema de compilación (descrito a continuación) para que el usuario pueda usar compilaciones incrementales rápidas en tiempo de diseño y un JavaScript compilado más compacto.
Una de las instrucciones principales en esta versión era reducir la cantidad de código que se procesa cuando se carga la página, lo que reduce significativamente el "tiempo de interactividad" para las páginas web. En muchas aplicaciones, el tamaño del código se ha reducido en más de la mitad en comparación con AngularDart 4.
Para demostrar las mejoras en la plataforma web Dart, creamos una
implementación de cliente basada en Dart para el sitio web HackerNews como una aplicación web progresiva; se publica junto con otros ejemplos en el popular
sitio web de
HNPWA . Utilizando las mejores prácticas para crear aplicaciones web en Dart, pudimos crear una aplicación completamente funcional que es completamente interactiva en un segundo en dispositivos modernos y hasta cinco segundos en un dispositivo móvil modesto en una red 3G lenta. Esto es competitivo incluso en comparación con los marcos web ligeros optimizados para aplicaciones pequeñas.
https://hnpwa.dartlang.org/Nuestras inversiones en infraestructura también se extienden a nuestra
biblioteca de componentes , que también actualizamos. Ahora tiene acceso a 100 nuevas clases, incluidos varios
componentes de material . Puede explorar todos nuestros componentes en
la galería de componentes .
El selector de fecha de material es uno de los componentes disponibles para su aplicación web.
Kit de herramientas para Dart 2
Junto con Dart 2, Dart se convierte en el lenguaje compilado en JavaScript de primera clase, con el ciclo de desarrollo esperado por los desarrolladores web y excelentes características de rendimiento en tiempo de ejecución. Esto se logra gracias a las ventajas que la mayoría de los lenguajes orientados a JS no brindan: un sistema de tipo
explícito y un excelente soporte para aplicaciones móviles nativas.
Con Dart 2, nuestras herramientas web cubren un modelo de desarrollo 100% JavaScript con dos compiladores JavaScript adicionales. El compilador de desarrollo,
dartdevc , proporciona una compilación incremental rápida al generar JavaScript que es fácil de leer y depurar. Esto permite que nuestro compilador
dart2js se centre en crear JavaScript altamente optimizado para aplicaciones web avanzadas para aplicaciones de escritorio empresariales móviles y complejas. Ambos compiladores usan el sistema de tipo Dart explícito para optimizar su salida.
Nuestras herramientas web se basan en un
nuevo sistema de compilación diseñado para ser rápido, depurado y extensible. Ahora, tareas como generar código de serialización, compilar Sass en CSS y compilar Dart en JavaScript, todo se realiza en una cadena de herramientas, que admite actualizaciones rápidas e incrementales a medida que cambian las partes de su aplicación. El sistema de compilación también está diseñado para admitir el uso fuera de la Web. Ejemplo: es utilizado por los desarrolladores de Flutter para generar código para la
serialización en JSON .
Junto con Dart 2, tenemos un conjunto ampliado de herramientas para desarrolladores. Además de admitir
las herramientas de
Android Studio y JetBrains, incluidas
IntelliJ IDEA y
WebStorm , también
admitimos Visual Studio Code con la extensión
Dart Code . Y también tenemos una plataforma para la experimentación:
DartPad , que se ha actualizado completamente para Dart 2.
Finalmente, el SDK Dart viene con un conjunto de otras herramientas útiles: un administrador de paquetes que funciona con nuestro
sitio web , un
analizador estático , un linter que puede usar desde la línea de comandos o como un paquete, así como herramientas para
la documentación web y el
formato que cumplen
con los estándares del lenguaje. DartAprende más
Consulte nuestra Guía de inicio de
Flutter y el
Kit de herramientas Web Dart .
Las
notas de la versión proporcionan información técnica detallada sobre muchas otras mejoras menores realizadas desde Dart 1, algunas de las cuales son críticas. Si encuentra problemas que Google no puede resolver, le recomendamos comenzar con
StackOverflow . Suscríbase al boletín de
anuncios de Dart y síganos en
Twitter para recibir actualizaciones. También nos gustaría verte en nuestras comunidades, por ejemplo, en
Gitter y
r / dartlang reddit .
Gracias
Dart se ha convertido en un lenguaje de uso general optimizado para el desarrollo en la Web y en dispositivos móviles. Hemos estado trabajando en Dart 2 durante varios años, durante los cuales afectó todos los aspectos de nuestro ecosistema y requirió la migración de millones de líneas de código y cientos de paquetes.
Agradecemos a las comunidades
Dart y
Flutter , así como a los cientos de ingenieros de Google que nos han ayudado en este viaje. ¡No podríamos haberlo hecho sin ti!
De la comunidad
Me gustaría felicitar al equipo de desarrollo de Dart por un evento tan importante, este es realmente un hito importante para el desarrollo del lenguaje. Por supuesto, muchas de las palabras en este artículo pueden parecer bastante
discutibles para usted, puede discutirlas tanto en los comentarios como en nuestros chats de
Telegram ,
Slack y
Google+ .
Y el anuncio prometido: además de pequeños mitaps, realizamos grandes eventos anuales dedicados al lenguaje, herramientas, Flutter, AngularDart y todo lo relacionado con ellos. El año pasado, fuimos visitados por ingenieros de Google, elaboramos
una cerveza especial y, en general, fue divertido. ¡Este año intentaremos hacerlo aún mejor! Por lo tanto, reserve a fines de noviembre, principios de diciembre, y esté atento a los anuncios.