Descripción general de Dart

Dart es un lenguaje de programación hecho por Google, al igual que Go, otro lenguaje impulsado por esta misma empresa.

Google lo sacó al mercado en 2011, desarrollado por Lars Bak y Kasper Lund, los ingenieros que diseñaron el núcleo del motor V8.

En sus orígenes se pensó para reemplazar JavaScript en el desarrollo de páginas web; después pasó a ser el único lenguaje del framework Flutter, enfocado en el desarrollo multiplataforma de cliente (móvil, web y escritorio).

Muchos servicios clave internos de Google como YouTube, GCP y sus infraestructuras usan Dart de forma masiva. Tiene una comunidad muy amplia y un ecosistema independiente del apartado de aplicaciones cliente.

Su punto fuerte es que con un mismo código puedes generar apps para múltiples plataformas: Android, iOS, macOS, Linux, Windows y muchas más.

Enfoque general del lenguaje

Dart es un lenguaje multiplataforma optimizado para el desarrollo de aplicaciones cliente. Su objetivo es ofrecer una experiencia de creación eficiente para todos los dispositivos, con un motor de ejecución flexible que soporta frameworks de aplicaciones. Es la base sobre la que se construye Flutter. Además, trae herramientas nativas para formatear código, análisis estático, pruebas unitarias y más. Se puede compilar y distribuir en web, dispositivos móviles, escritorio y otras plataformas.

Características técnicas

Durante el desarrollo cuenta con recarga en caliente (hot reload).

Para el lanzamiento a producción, permite generar aplicaciones de alta calidad para cualquier plataforma.

Seguridad de tipos

  • Tipado estático estricto (sound typing): obliga a que los tipos coincidan, aunque se pueden omitir las anotaciones gracias a la inferencia de tipos;
  • Compatible con el tipo dinámico dynamic, con comprobaciones en tiempo de ejecución, para cubrir escenarios donde se requiere una codificación flexible y dinámica.

Seguridad nula completa (sound null safety)

Por defecto, ninguna variable puede tener valor nulo; solo se admiten valores vacíos si se declara explícitamente. El análisis estático evita errores de puntero nulo en ejecución, y las variables no nulas mantienen esa condición en todo momento.

Cuenta con sintaxis muy variada: librerías integradas, llamadas asíncronas, tipos anulables y no anulables, funciones flecha, generadores, flujos, getters y otras utilidades.

Amplias librerías estándar de Dart

  • dart:core: imprescindible para cualquier programa Dart, aporta tipos básicos, colecciones y funcionalidades generales esenciales
  • dart:collection: amplía las colecciones con colas, listas enlazadas, mapas hash, árboles binarios y otros contenedores avanzados
  • dart:convert: herramientas para codificar y decodificar datos, compatible con JSON, UTF-8 y otros formatos
  • dart:math: constantes matemáticas, funciones de cálculo y generadores de números aleatorios
  • dart:async: base de la programación asíncrona, con clases fundamentales como Future y Stream
  • dart:typed_data: arrays binarios de longitud fija eficientes (enteros sin signo de 8 bits, etc.) y tipos numéricos SIMD
  • dart:io: solo para entornos que no son web, gestiona archivos, sockets, peticiones HTTP y otras operaciones de entrada/salida
  • dart:ffi: interfaz de funciones externas al estilo C, para intercambiar código con programas hechos en C
  • dart:isolate: hilos independientes para concurrencia, similares a los hilos clásicos pero sin memoria compartida, solo se comunican mediante mensajes
  • dart:js_interop / package:web: exclusivo para web, sirve para manipular elementos HTML, el DOM del navegador y comunicarse con JavaScript

Además de las librerías principales integradas, el equipo oficial mantiene muchos paquetes complementarios: characters, intl, http, crypto, markdown. Por otro lado, la comunidad de desarrolladores externos ha publicado miles de paquetes adicionales que soportan XML, integración con el sistema Windows, SQLite, compresión de datos y muchas otras funciones.

Plataformas donde se ejecuta Dart

Dart funciona en múltiples entornos gracias a distintas técnicas de compilación:

1. Plataformas nativas (móvil / escritorio)

Cuenta con dos sistemas de compilación internos: la máquina virtual Dart con compilación instantánea (JIT) y el compilador de precompilación (AOT), capaz de generar código máquina.

2. Plataforma web

Tiene dos modos de compilación, uno para desarrollo y otro para producción, que transforman Dart en JavaScript o en WebAssembly.

Flutter es el paquete de herramientas UI multiplataforma más usado basado en Dart. Viene con todas las herramientas de desarrollo y librerías de interfaz necesarias para crear aplicaciones para iOS, Android, macOS, Windows, Linux y páginas web.

Compilación nativa de Dart (JIT + AOT)
  • Fase de desarrollo (JIT): la máquina virtual compila de forma incremental y admite recarga en caliente, además de monitorizar el rendimiento en tiempo real y depurar con herramientas completas, lo que agiliza mucho las iteraciones;
  • Lanzamiento a producción (AOT): se compila a código máquina nativo para arquitecturas ARM o x64, logrando un arranque rápido y estable de las aplicaciones;
  • El motor de ejecución trae una gestión de memoria muy robusta: recolección de basura generacional, asignación rápida de objetos y un cumplimiento estricto de las reglas de seguridad de tipos de Dart.
Compilación web de Dart (JS / WasmGC)

Convierte el código Dart a JavaScript para ejecutarlo en navegadores como Chrome (motor V8), o también se puede compilar a WebAssembly:

  1. Modo de compilación para desarrollo: compilador incremental de JavaScript con recarga en caliente, para depurar y probar cambios rápidamente;
  2. Compilación JS para producción: optimiza y comprime el código, elimina código sin usar y genera archivos JS ligeros y eficientes;
  3. Compilación WasmGC para producción: transforma el código en WebAssembly GC de alto rendimiento, aumentando notablemente la velocidad de ejecución.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *