¿Por qué Electron?
Electron es un marco que permite a los desarrolladores crear aplicaciones de escritorio multiplataforma para macOS, Windows y Linux combinando tecnologías web (HTML, JavaScript, CSS) con Node.js y código nativo. Es de código abierto, licenciado por el MIT y gratuito tanto para uso comercial como personal. En este documento explicaremos por qué empresas y desarrolladores eligen Electron.
Podemos dividir los beneficios de Electron en dos preguntas: En primer lugar, ¿por qué deberías utilizar las tecnologías web para construir tu aplicación? Entonces, ¿por qué deberías elegir Electron como el marco para hacerlo?
Si ya estás usando tecnologías web para tu aplicación, puedes saltar directamente a la sección ¿Por qué Electron?
de abajo.
¿Por qué elegir tecnologías web?
Las tecnologías web incluyen HTML, CSS, JavaScript y WebAssembly. Son el escaparate de Internet moderna. Estas tecnologías han surgido como la mejor opción para construir interfaces de usuario, tanto para aplicaciones de consumo como para aplicaciones de negocios de misión crítica. Esto es cierto tanto para las aplicaciones que necesitan ejecutarse en un navegador como para las aplicaciones de escritorio que no son accesibles desde un navegador. Nuestra audaz afirmación aquí es que esto no es solamente cierto para las aplicaciones multiplataforma que necesitan ejecutarse en múltiples sistemas operativos, sino también en general.
Como ejemplo, el Control de Misión de la NASA está escrito con tecnologías web. El Terminal de Bloomberg, el sistema informático que se encuentra en cada institución financiera, está escrito con tecnologías web y corre dentro de Chromium. Cuesta US$25,000 por usuario, por año. El kiosco de McDonald's, que domina el mayor almacén de alimentos del mundo, está totalmente construido con Chromium. La cápsula espacial del Dragón 2 de SpaceX usa Chromium para mostrar su interfaz. El punto: las tecnologías web son un gran stack tecnológico para construir interfaces de usuario.
Estas son las razones por las que nosotros, los mantenedores de Electron estamos apostando en la web.
Versatilidad
Las versiones modernas de HTML y CSS permiten a sus desarrolladores y diseñadores expresarse plenamente. El escaparate de la web incluye Google Earth, Netflix, Spotify, Gmail, Facebook, Airbnb o GitHub. Cualquiera que sea la interfaz que tu aplicación necesite, podrás expresarla con HTML, CSS y JavaScript.
Si quieres concentrarte en construir un gran producto sin averiguar cómo puedes realizar la visión de tu diseñador en un marco específico de interfaz de usuario, la web es una apuesta segura.
Fiabilidad
Las tecnologías web son la base más utilizada para las interfaces de usuario en el planeta. Se han endurecido en consecuencia. Las computadoras modernas han sido optimizadas desde la CPU hasta el sistema operativo para ser buenas a la hora de ejecutar tecnologías web. Los fabricantes de los dispositivos de tu usuario —ya sea un teléfono Android o el último MacBook— se asegurarán de que pueden visitar sitios web, reproducir vídeos en YouTube, o mostrar correos electrónicos. A su vez, también se asegurarán de que tu aplicación tenga una base estable, incluso si solo tienes un usuario.
Si quieres concentrarte en construir un gran producto sin depurar una extraña rareza que nadie ha encontrado antes, la web es una apuesta segura.
Interoperabilidad
Cualquiera que sea el proveedor o la información del cliente que necesite para interactuar, probablemente habrá pensado en una ruta de integración con la web. Dependiendo de su elección tecnológica, incrustar un vídeo de YouTube tarda 30 segundos o requiere que contrate un equipo dedicado al streaming y a la decodificación de vídeo acelerada por hardware. En el caso de YouTube, usar cualquier reproductor que no sea uno de los proporcionados va en contra de sus términos y condiciones, por lo que probablemente incorporarás un marco de navegador antes de implementar tu propio decodificador de transmisión de video.
No habrá prácticamente ninguna plataforma en la que tu aplicación no pueda funcionar si la construyes con tecnologías web. Prácticamente todos los dispositivos con una pantalla, sea un cajero automático, un sistema de información del coche, un televisor inteligente, un frigorífico o un Nintendo Switch—vienen con medios para mostrar tecnologías web. La web es una apuesta segura si quieres ser multiplataforma.
Ubiquidad
Es fácil encontrar desarrolladores con experiencia en la construcción de tecnologías web. Si eres un desarrollador, será fácil encontrar respuestas a tus preguntas en Google, Stack Overflow, GitHub, o una IA de programación de tu elección. Cualquiera que sea el problema que necesitas resolver, es probable que alguien lo haya resuelto bien antes y que puedas encontrar la respuesta al rompecabezas en línea.
Si deseas centrarte en crear un gran producto con amplio acceso a recursos y materiales, la web es una apuesta segura.
¿Por qué elegir Electron?
Electron combina Chromium, Node.js y la capacidad de escribir código nativo personalizado en un framework para construir potentes aplicaciones de escritorio. Hay tres razones principales para utilizar Electron:
Nivel empresarial
Electron es confiable, seguro, estable y maduro. Es la mejor opción para las empresas que construyen su producto de bandera. Tenemos una lista de algunas de esas compañías en nuestra página principal, pero solo entre aplicaciones de chat, Slack, Discord, y Skype están construidas con Electron. Entre las aplicaciones de IA, tanto ChatGPT de OpenAI como Claude utilizan Electron. Visual Studio Code, Loom, Canva, Notion, Docker, y muchos otros desarrolladores líderes de software apuestan en Electron.
Priorizamos hacer que Electron sea fácil de trabajar y un placer para los desarrolladores. Esa es probablemente la razón principal por la que Electron se hizo tan popular como hoy — pero lo que mantiene a Electron vivo y emocionante es el foco del mantenedor en hacer que Electron sea tan estable, asegura, ejecutable y capaz de casos de uso de misión crítica para usuarios finales como sea posible. Estamos construyendo un Electron que está listo para ser usado en escenarios donde bugs irreparables, los agujeros de seguridad no enmarcados, y los cortes de cualquier tipo son los peores escenarios.
Maduro
Electron ha crecido priorizando el talento en su grupo de mantenedores, fomentando excelentes y sostenibles prácticas de ingeniería en la gestión del mantenimiento continuo, e invitando activamente a las empresas que apuestan en Electron a contribuir directamente al proyecto. Somos un proyecto de impacto con la fundación OpenJS, que es parte de la fundación Linux. Compartimos recursos y experiencia con otros proyectos de fundación como Node.js, ESLint, Webpack - o el Linux Kernel o Kubernetes.
- Calendario de lanzamiento confiable: Electron lanzará una nueva versión principal al mismo tiempo que cada segundo lanzamiento principal de Chromium, generalmente el mismo día que Chromium. Se necesita mucho trabajo, tanto en forma de creación de procesos y herramientas, como también en términos de horas brutas invertidas cada semana, para lograr que esto suceda.
- No hay dictadores: A veces, apostar a una tecnología también requiere apostar a una sola persona o empresa. A su vez, requiere que tú confíes en que la persona o empresa nunca tiene una avería, comienza a combatirte directamente, o hace cualquier otra cosa drástica que te obligará a repensar toda tu acumulación de tecnología. Electron es mantenido por un conjunto diverso de empresas (Microsoft, Slack/Salesforce, Notion, y más) y seguirán dando la bienvenida a más empresas interesadas en garantizar su “puesto en la tabla de toma de decisiones”.
Estabilidad, seguridad, rendimiento
Electron ofrece la mejor experiencia en todas las plataformas de destino (macOS, Windows, Linux) integrando la última versión de Chromium, V8 y Node.js directamente con el binario de la aplicación. A la hora de ejecutar y renderizar contenidos web con la mayor estabilidad, seguridad y rendimiento, actualmente creemos que este stack es “el mejor en su clase”.
¿Por qué el empaquetamiento?
Puede que te preguntes por qué empaquetamos el web stack de Chromium con nuestras aplicaciones cuando la mayoría de los sistemas operativos modernos ya envían un navegador y alguna forma de vista web. El empaquetamiento no solo aumenta la cantidad de trabajo para los mantenedores de Electron dramáticamente, también aumenta el tamaño total del disco de las aplicaciones Electron (la mayoría de las aplicaciones son >100MB). Muchos mantenedores de Electron alguna vez desarrollaron aplicaciones que hicieron uso de vistas web embebidas — y desde entonces han aceptado el mayor tamaño de disco y el trabajo de mantenedor como una operación digna de compensación.
Al usar la vista web integrada de un sistema operativo, está limitado por la versión del navegador incluida en la versión más antigua del sistema operativo que necesita soportar. Hemos encontrado los siguientes problemas con este enfoque:
- Estabilidad: El web stack tecnológico moderno web es complejo y, como resultado, tarde o temprano te encontrarás con errores. Si utilizas la vista web del sistema operativo, tu único recurso será pedir a tus clientes que actualicen su sistema operativo. Si no hay actualización disponible para esa máquina (debido a que no hay capacidad para actualizar a la última macOS o Windows 11), tendrás que pedirles que compren un nuevo ordenador. Si no tienes suerte, ahora estás perdiendo un gran cliente porque no actualizará toda su flota de miles de máquinas solamente porque un equipo quería probar la aplicación de tu startup. No tienes ninguna ayuda en esta situación. Incluso el riesgo de que esto suceda es inaceptable para las empresas que emplean a los mantenedores de Electron.
- Seguridad: similar a cómo puedes arreglar errores de estabilidad lanzando una actualización de la aplicación, también puede liberar correcciones de seguridad a tu aplicación sin pedir a tu cliente que actualice su sistema operativo. Incluso si los proveedores de sistemas operativos priorizan las actualizaciones de sus navegadores integrados, no hemos visto que actualicen de manera confiable las vistas web integradas con una urgencia similar. Empaquetar un renderizador web te da a ti, el desarrollador, el control.
- Rendimiento: Para documentos HTML simples, una vista web incorporada a veces utilizará menos recursos que una aplicación con un framework empaquetado. Para aplicaciones más grandes, es nuestra experiencia que podemos ofrecer un mejor rendimiento con la última versión de Chromium que con vistas web integradas. Puedes pensar que la vista integrada puede compartir muchos recursos con otras aplicaciones y el sistema operativo, pero por razones de seguridad, las aplicaciones tienen que ejecutarse en sus propios sandboxes, aislados unos de otros. . En muchas aplicaciones, nuestra experiencia es que la combinación de Chromium y Node.js nos permite crear experiencias mejores y con mayor rendimiento.
¿Por qué combinar Chromium y Node.js?
¿Por qué combinar Chromium y Node.js? Chromium es actualmente el mejor stack de renderizado multiplataforma disponible. Node.js utiliza el motor JavaScript V8 de Chromium, lo que nos permite combinar las potencias de ambos.
- Código nativo cuando lo desees: gracias al maduro sistema de complementos nativos de Node.js, siempre puedes escribir código nativo. No hay ninguna API del sistema fuera de su alcance. Cualquiera que sea la característica de macOS, Windows o Linux querrá integrarse con — siempre y cuando lo pueda hacer en C, C++, Objetivo C, Rust, u otro idioma nativo, podrás hacerlo en Electron. De nuevo, esto le da al desarrollador, el máximo control. Con Electron, tu puede utilizar tecnologías web sin elegir sólo tecnologías web.
Experiencia de Desarrollador
Para resumir, nuestro objetivo es construir un Electron que sea maduro, de grado superior y listo para aplicaciones de misión crítica. Priorizamos la confiabilidad, la estabilidad, la seguridad y el rendimiento. Dicho esto, también puedes elegir Electron por su experiencia para desarrolladores:
- Potente ecosistema: Cualquier cosa que encuentres en npm correrá dentro de Electron. Cualquier recurso disponible sobre cómo trabajar con Node.js también se aplica a Electron. Además, Electron en sí mismo tiene un ecosistema próspero — incluyendo muchas opciones para instaladores, actualizadores, integración más profunda del sistema operativo y más.
- Muchas de las capacidades incorporadas: En los últimos diez años, el núcleo de Electron ha ganado muchas capacidades nativas que puede que necesites para construir tu aplicación. Escrito en C++ y Objetivo C, Electron tiene docenas de API fáciles de usar para una integración más profunda del sistema operativo — como la personalización avanzada de ventanas para widgets transparentes o extrañamente formados, recibir notificaciones push de la red de notificaciones de Apple Push, o manejar un protocolo de URL personalizado para tu aplicación.
- Código abierto: todo el stack es de código abierto y está abierta a su inspección. Esto asegura su libertad para añadir cualquier característica o corregir cualquier error que pueda encontrar en el futuro.
- Código nativo cuando lo necesitas: Conviene repetir que Electron te permite mezclar y combinar tecnologías web y C++, C, Objetivo C, Rust, y otras lenguajes nativos. Ya sea SQLite, un LLM completo, o simplemente la capacidad de llamar a una API nativa específica, Electron lo hará fácil.
¿Por qué elegir otra cosa?
Como se ha descrito anteriormente, la web es una plataforma asombrosa para construir interfaces. Eso no significa que nosotros, los mantenedores, construiríamos todo con HTML y CSS. He aquí algunas excepciones notables:
Entornos con recursos limitados e IoT: En escenarios con memoria o potencia de procesamiento muy limitada (por ejemplo, un megabyte de memoria y 100MHz de potencia de procesamiento en un ARM Cortex-M de bajo consumo), probablemente necesitarás usar un lenguaje de bajo nivel para comunicarse directamente con la pantalla y generar texto e imágenes básicos. Incluso en dispositivos de un solo chip un poco más altos, puede que desee considerar un entorno de interfaz embebido. Un ejemplo clásico es un reloj inteligente.
Ocupa poco espacio en disco: las aplicaciones Electron comprimidas suelen ocupar entre 80 y 100 megabytes. Si un requisito imprescindible es ocupar menos espacio en el disco, tendrás que usar otra cosa.
Frameworks y bibliotecas de interfaz de usuario del sistema operativo: Al permitirte escribir código nativo, Electron puede hacer todo lo que una aplicación nativa puede hacer, incluido el uso de los componentes de interfaz de usuario del sistema operativo, como WinUI, SwiftUI o AppKit. En la práctica, la mayoría de las aplicaciones de Electron hacen un uso poco frecuente de esa capacidad. Si deseas que la mayoría de su aplicación se construya con componentes de interfaz provistos por el sistema operativo, probablemente sea mejor construir aplicaciones completamente nativas para cada sistema operativo que desee seleccionar. No es que sea imposible con Electron, es probable que sea un proceso de desarrollo general más fácil.
Juegos y gráficos en tiempo real: Si estás construyendo un juego o aplicación de alto rendimiento que requiera gráficos 3D complejos en tiempo real, frameworks nativos como Unity, Unreal Engine, o DirectX/OpenGL proporcionarán un mejor rendimiento y acceso más directo al hardware de gráficos. Los aficionados a la web pueden señalar las advertencias, como el hecho de que incluso Unreal Engine viene con Chromium — o que WebGPU y WebGL se están desarrollando rápidamente y muchos motores de juegos, incluyendo los listados aquí, ahora puede mostrar sus juegos en un formato que se ejecuta en un navegador. Dicho esto, si nos pidieras que construyamos el próximo juego de AAA, probablemente usaríamos algo más que solo tecnologías web.
Incorporación de sitios web livianos: las aplicaciones Electron generalmente son, en su mayoría, aplicaciones web con código nativo incluido cuando resulta útil. Las aplicaciones Electron pesadas tienden a escribir la interfaz de usuario en HTML/CSS y construir el backend en Rust, C++, u otro idioma nativo. Si estás planeando construir una aplicación primordialmente nativa que también quiera mostrar un pequeño sitio web en una vista específica, podrías estar mejor usando la vista web proporcionada por el SO o algo como ultralight.