Los primeros motores de JavaScript eran intérpretes del código fuente , pero los motores modernos utilizan la compilación justo a tiempo para mejorar el rendimiento. [ 1 ] Los motores de JavaScript suelen ser desarrollados por los proveedores de navegadores web , y todos los navegadores principales incluyen uno. En un navegador, el motor de JavaScript se ejecuta junto con el motor de renderizado a través del Modelo de Objetos del Documento y los enlaces Web IDL . [ 2 ] Sin embargo, el uso de motores de JavaScript no se limita a los navegadores; por ejemplo, el motor V8 es un componente central del sistema de tiempo de ejecución de Node.js. [ 3 ] También se les llama motores ECMAScript , por el nombre oficial de la especificación. Con la llegada de WebAssembly , algunos motores también pueden ejecutar este código en el mismo entorno aislado que el código JavaScript normal. [ 4 ] [ 3 ]
Historia
El primer motor JavaScript fue creado por Brendan Eich en 1995 para el navegador web Netscape Navigator . [ 5 ] Era un intérprete rudimentario para el lenguaje naciente que Eich inventó. [ 6 ] (Este evolucionó hasta convertirse en el motor SpiderMonkey , que todavía utiliza el navegador Firefox . [ 5 ] )
Google lanzó su navegador Chrome en 2008, introduciendo el motor JavaScript V8 que en ese momento era mucho más rápido que su competencia. [ 7 ] [ 8 ] Esto desató una carrera entre los proveedores de navegadores para ofrecer motores JavaScript cada vez más rápidos. [ 9 ] Las innovaciones clave alrededor de esta era fueron el cambio de intérpretes básicos de recorrido de árbol a intérpretes de VM de código de bytes basados en pila y registro , compilación justo a tiempo (JIT), almacenamiento en caché en línea (clases ocultas) y GC generacional . Apple lanzó el motor Nitro habilitado para JIT en junio de 2008 para su navegador Safari , que tenía un rendimiento un 30% mejor que su predecesor. [ 10 ] [ 11 ] Mozilla siguió el ejemplo en agosto de 2008 con TraceMonkey, el primer compilador JIT para el motor SpiderMonkey, lanzado en Firefox 3.1. [ 12 ] Opera se unió a la carrera del rendimiento con su motor Carakan basado en código de bytes de registro y habilitado para JIT, 2009 [ 13 ] y lanzado en abril de 2010. [ 14 ] El primer motor Chakra habilitado para JIT de Microsoft , en desarrollo desde 2008, [ 15 ] debutó como parte de Internet Explorer 9 en 2011. Su reescritura principal apareció en Microsoft Edge Legacy en 2015 y se publicó como código abierto como ChakraCore en 2016.
Más adelante se lograron mejoras de rendimiento adicionales en los principales motores de JavaScript con la introducción de arquitecturas JIT de múltiples niveles. Se utilizan compiladores JIT progresivamente avanzados para optimizar los puntos críticos en el código del usuario, y cada nivel siguiente ofrece un código nativo cada vez más eficiente a costa de un tiempo de compilación más lento. Chrome fue el primero en implementarlo en V8 en 2010 con la introducción de Crankshaft, un compilador JIT de 2 niveles. [ 16 ] Para 2023, la arquitectura de V8 evolucionó a 4 niveles: Ignition – intérprete de bytecode basado en registros, Sparkplug – un compilador JIT rápido sin optimización, Maglev y TurboFan – compiladores JIT optimizadores más lentos. [ 17 ] JavaScriptCore hoy tiene una arquitectura similar de 4 niveles, [ 18 ] mientras que SpiderMonkey y ChakraCore de Firefox tienen 3 niveles (intérprete y JIT de 2 niveles). [ 19 ] [ 20 ] Sin embargo, esta complejidad cada vez mayor de los compiladores JIT ha sido criticada como una fuente abundante de errores en los navegadores, lo que ha llevado a algunos proveedores de navegadores a deshabilitar JIT por completo, como el "Modo súper seguro" de Microsoft Edge , introducido en 2021 y que, según se informa, tiene un impacto mínimo en el rendimiento para la navegación diaria. [ 21 ]
La influencia de V8 se extendió más allá de los navegadores con el lanzamiento de Node.js en 2009 y su gestor de paquetes npm en 2010. A medida que su popularidad se disparó, V8 también se convirtió en el motor que impulsaba grandes cantidades de código JavaScript del lado del servidor. [ 22 ] [ 23 ] En 2013, apareció el framework Electron que permitió a los desarrolladores crear aplicaciones de escritorio con tecnologías web, utilizando Chromium con V8 y Node.js como base. [ 24 ]
Aprovechando las mejoras de rendimiento en los motores de JavaScript, el compilador Emscripten de C/C++ a JavaScript apareció entre 2010 y 2011 y permitió ejecutar código C/C++ complejo existente, como motores de juegos e incluso máquinas virtuales completas , directamente en el navegador. asm.js , un subconjunto de JavaScript de bajo nivel altamente optimizable para dichos compiladores, surgió en 2013, siendo Firefox el primero en implementar optimizaciones específicas para él con el módulo OdinMonkey. [ 25 ] Finalmente, asm.js y NaCl (una tecnología competidora de Google) evolucionaron hasta convertirse en el estándar WebAssembly en 2017, y todos los motores principales agregaron soporte para él. [ 4 ]
La brecha de seis años entre ECMAScript 5 (2009) y ES6 (2015) marcó un punto de inflexión importante para el desarrollo de motores JavaScript. Mientras que ES5 era un lenguaje relativamente compacto con una implementación básica sencilla, ES6 introdujo los fundamentos del JavaScript moderno, con una complejidad sustancialmente mayor, así como un ciclo de lanzamiento anual para nuevas versiones de la especificación. Esto centró la atención no solo en la optimización del rendimiento, sino también en mantenerse al día con los estándares en rápida evolución (tanto de ECMAScript como del ecosistema web en general) y condujo a una consolidación en torno a los motores que tenían los recursos para hacerlo. Muchos proyectos más pequeños no terminaron implementando completamente la especificación ES6, y Opera y Microsoft dejaron de desarrollar sus motores y adoptaron V8 en 2013 y 2021. [ 26 ] [ 27 ] El motor Nashorn fue eliminado de OpenJDK debido a una preocupación similar sobre el rápido desarrollo de ECMAScript. [ 28 ]
Lista
Motores históricos
Estos motores se han descontinuado y resultan interesantes principalmente desde una perspectiva histórica. Algunos aún podrían utilizarse hoy en día con fines heredados (especialmente los antiguos motores de Microsoft que siguen incluyéndose en Windows ).
Véase también
Referencias
- ↑ Looper, Jen (21 de septiembre de 2015). "Una guía de motores JavaScript para principiantes" . Telerik Developer Network. Archivado del original el 8 de diciembre de 2018. Recuperado el 8 de diciembre de 2018 .
- ↑ "Cómo funciona Blink" . Consultado el 12 de marzo de 2024 .
- 1 2 "Documentación · V8" . Google . Consultado el 3 de marzo de 2024 .
- 1 2 Nelaturu, Keerthi (septiembre de 2020). "WebAssembly: ¿Cuál es el gran problema?" . medium.com . Recuperado el 3 de marzo de 2024 .
- 1 2 Eich, Brendan (21 de junio de 2011). "Nuevo propietario del módulo del motor JavaScript" .
- ↑ Fin JS (17 de junio de 2016), "Brendan Eich – CEO de Brave" , YouTube , consultado el 7 de febrero de 2018.
- ↑ "Prueba comparativa de navegadores: Internet Explorer vs. Firefox, Opera, Safari y Chrome" . PC Games Hardware . Computec Media AG. 3 de julio de 2009. Archivado del original el 2 de mayo de 2012. Consultado el 28 de junio de 2010 .
- ↑ Purdy, Kevin (11 de junio de 2009). "Pruebas de velocidad de Lifehacker: Safari 4, Chrome 2" . Lifehacker . Archivado del original el 14 de abril de 2021. Consultado el 8 de mayo de 2021 .
- ↑ "Mozilla pregunta: '¿Ya somos rápidos?'"" . Wired . Archivado del original el 22 de junio de 2018 . Consultado el 18 de enero de 2019 .
- ↑ " Apple lanza Safari 5" . www.prnewswire.com
- ↑ Shankland, Stephen (2 de marzo de 2010). "Opera 10.5 trae un nuevo motor JavaScript" . CNET . CBS Interactive. Archivado del original el 3 de octubre de 2013. Recuperado el 30 de enero de 2012 .
- ↑ "TraceMonkey: JavaScript Lightspeed, Blog de Brendan Eich" . Archivado del original el 4 de diciembre de 2015. Consultado el 22 de julio de 2020 .
- 1 2 3 "Carakan" . Archivado del original el 31 de mayo de 2009. Recuperado el 9 de julio de 2009 .
- ↑ "Opera 10.50: ¿un navegador al que vale la pena cambiarse? - NYTimes.com" . archive.nytimes.com . Consultado el 29 de diciembre de 2025 .
- ↑ "El motor JavaScript de Microsoft Edge se convertirá en código abierto" . 7 de diciembre de 2015.
- ↑ "Un nuevo cigüeñal para V8" . Blog de Chromium . 7 de diciembre de 2010. Consultado el 22 de abril de 2011 .
- ↑ "Maglev - El JIT de optimización más rápido de V8 · V8" .
- 1 2 "Especulación en JavaScriptCore" . 29 de julio de 2020.
- 1 2 "SpiderMonkey — Documentación de Firefox Source Docs" .
- 1 2 "Descripción general de la arquitectura" . GitHub .
- ↑ "Modo súper seguro" . 4 de agosto de 2021.
- ↑ "Deno 2 llega con soporte a largo plazo y compatibilidad con Node.js" . The New Stack . 19 de junio de 2024. Consultado el 25 de agosto de 2025 .
- ↑ Camden, Raymond K. (2015). Apache Cordova en acción . Manning. págs. 2–15 . ISBN 9781617292392.
- ↑ "Electron Internals: Using Node as a Library" . electronjs.org . 8 de agosto de 2016. Archivado del original el 9 de noviembre de 2017. Consultado el 3 de julio de 2020 .
- 1 2 "Asm.js de Mozilla se acerca un paso más al rendimiento nativo" . 21 de diciembre de 2013.
- 1 2 "Dev.Opera: 300 millones de usuarios y migración a WebKit" . Archivado del original el 28 de junio de 2014.
- ↑ El nuevo Microsoft Edge reemplazará a Microsoft Edge Legacy con la actualización de Windows 10 de abril , publicada el martes. Microsoft, 12 de febrero de 2021, archivado del original el 11 de marzo de 2021 , consultado el 12 de marzo de 2021.
- 1 2 "JEP 335: Desaprobar el motor JavaScript Nashorn para su eliminación" .
- ↑ "JavaScriptCore – WebKit" . trac.webkit.org .
- ↑ "Context Threading: Una técnica de despacho flexible y eficiente para intérpretes de máquinas virtuales" (PDF) . Archivado del original (PDF) el 14 de mayo de 2025.
- ↑ "Presentamos SquirrelFish Extreme" . 18 de septiembre de 2008.
- 1 2 "Especulación en JavaScriptCore" . 29 de julio de 2020.
- ↑ "Conjunto de cambios 94559 – WebKit" .
- ↑ "Presentación del JIT FTL de WebKit" . 13 de mayo de 2014.
- ↑ "Presentación del compilador JIT B3" . 15 de febrero de 2016.
- ↑ "Dirigirse a motores Edge frente a motores heredados en las API de JsRT" . Consultado el 10 de septiembre de 2015 .
- ↑ "Motor JavaScript LibJS" . libjs.dev . Consultado el 30 de junio de 2023 .
- ↑ "LibJS: Comienza a desarrollar un código de bytes para el motor JavaScript :^) · LadybirdBrowser/Ladybird@69dddd4" . GitHub .
- ↑ "LibJS: ¡Eliminemos el intérprete AST! :^) · LadybirdBrowser/ladybird@2eaa528" . GitHub . Consultado el 10 de julio de 2024 .
- ↑ "Conoce el navegador Ladybird, un prometedor navegador web multiplataforma - gHacks Tech News" . 20 de junio de 2023.
- 1 2 3 4 "Descripción general de las tecnologías JavaScript - JavaScript | MDN" . 8 de julio de 2025.
- ↑ "LibJS: Añadir implementación en Rust de analizador léxico, analizador sintáctico, AST y generador de código de bytes" . GitHub .
- ↑ "LibWASM: Añadir intérprete de código de bytes de ensamblador escrito a mano" . GitHub .
- ↑ "LibWASM: Es hora de JIT" . GitHub .
- ↑ "Historia del rinoceronte" . Fundación Mozilla . Archivado del original el 22 de octubre de 2020. Consultado el 20 de marzo de 2008 .
- ^ "JEP 174: motor JavaScript Nashorn" .
- ↑ "GitHub · Donde se crea el software" . GitHub . Consultado el 29 de diciembre de 2025 .
- ↑ "Oracle Nashorn: Un motor JavaScript de próxima generación para la JVM" . www.oracle.com .
- ↑ Lagergren, Marcus. "Historias de guerra de Nashorn (de un veterano con cicatrices de batalla de invokedynamic)" (PDF) . Oracle Corporation .
- ↑ "JEP 372: Eliminar el motor JavaScript Nashorn" .
- ↑ "Uso de Nashorn con diferentes versiones de Java" . GitHub . Consultado el 23 de enero de 2025 .
- ↑ "Truffle: Un sistema de tiempo de ejecución autooptimizable" (PDF) . Oracle Corporation . Consultado el 23 de agosto de 2013 .
- ↑ Wimmer, Christian; Würthinger, Thomas (2012). «Truffle: Un sistema de ejecución autooptimizable» . Actas de la 3.ª conferencia anual sobre sistemas, programación y aplicaciones: Software para la humanidad . págs. 13-14 . doi : 10.1145/2384716.2384723 . ISBN 978-1-4503-1563-0.
- ↑ Seaton, Chris (20 de septiembre de 2016). "Ruby y JavaScript más rápidos con GraalVM" (PDF) . chrisseaton.com .
- ↑ "Usando Hermes" . Facebook . Consultado el 9 de abril de 2021 .
- 1 2 Wen, Elliott; Zhou, Jiaxiang; Luo, Xiapu; Russello, Giovanni; Dietrich, Jens (2024). "Keep Me Updated: An Empirical Study on Embedded JavaScript Engines in Android Apps" . MSR '24: Proceedings of the 21st International Conference on Mining Software Repositories . Lisboa, Portugal: ACM. pp. 361–372 . doi : 10.1145/3643991.3644901 .
- ↑ Xie, Juanying; Kaiser, M. Shamim; Rathore, Vijay Singh (2023). Tecnologías de la información y la comunicación para estrategias competitivas (ICTCS 2022): Estrategias inteligentes para las TIC . Springer Nature Singapur. pág. 562. ISBN 9789811993046.
- ↑ "React Native 0.82 - Una nueva era · React Native" . reactnative.dev . 8 de octubre de 2025. Consultado el 29 de diciembre de 2025 .
- ↑ "Duktape" . Consultado el 21 de septiembre de 2013 .
- 1 2 3 4 5 Meng Wu; Weixin Dong; Qiang Zhao; Zhizhong Pan; Baojian Hua (2023). "Un estudio empírico de motores JavaScript ligeros". 2023 IEEE 23rd International Conference on Software Quality, Reliability, and Security Companion (QRS-C) . IEEE. págs. 413–422 . doi : 10.1109/QRS-C60940.2023.00103 . ISBN 979-8-3503-5939-8.
- ^ Minsu Kim; Hyuk-Jin Jeong; Luna Soo-Mook (2016). Motor JavaScript de tamaño reducido . Saltador. págs. 103-116 . doi : 10.1007/978-3-319-42304-3_6 .
- 1 2 Grunert, Kai (2020). "Descripción general de los motores JavaScript para microcontroladores con recursos limitados". Quinta Conferencia Internacional sobre Tecnologías Inteligentes y Sostenibles (SpliTech) de 2020. págs. 1–7 . doi : 10.23919/SpliTech49282.2020.9243749 . ISBN 978-953-290-105-4.
- ↑ "moddable/readme.md" . GitHub . Consultado el 9 de julio de 2026 .
- ↑ " Moddable | JavaScript para sistemas embebidos" . www.moddable.com
- ↑ "MuJS" . Consultado el 22 de septiembre de 2014 .
- ↑ "Motor de JavaScript QuickJS" .
- ↑ Tadashi Saito; Hideya Iwasaki (2025). "Integración de la optimización estática y la naturaleza dinámica en JavaScript". GPCE '25: Actas de la 24.ª Conferencia Internacional ACM SIGPLAN sobre Programación Generativa: Conceptos y Experiencias . ACM. págs. 41–53 . doi : 10.1145/3742876.3742877 .
- ↑ "V4 - Wiki de Qt" .
- ↑ Tandel, Mrunali; Joshi, Uday; Golhani, Amit (2016). "Revisión de la literatura: Scripting en Qt para el desarrollo de motores de scripting" (PDF) . Revista Internacional de Ciencias de la Computación y Tecnologías de la Información . 7 (3): 1347– 1350. Recuperado el 20 de septiembre de 2025 .
- ↑ Strakhov, Pavel Vladimirovich (2018). Programación de juegos con Qt 5: Guía para principiantes: Crea juegos increíbles con Qt 5, C++ y Qt Quick (2.ª ed.). Packt Publishing Ltd. ISBN 9781788390651Consultado el 21 de septiembre de 2025 .
- ↑ "Programación de scripts para Plasma Desktop | Desarrollador" . develop.kde.org . Consultado el 29 de diciembre de 2025 .
- ↑ "Qt-5-Beta - Wiki de Qt" .
- ↑ "Nuevas características en Qt 5.2 - Wiki de Qt" .
- ↑ Pannu, Mandeep; Kay, Iain; Gill, Bod (17–19 de octubre de 2019). "Vulnerabilidades heredadas: comparación de la codificación segura del motor JavaScript V4 con la de V8 de Google". 2019 IEEE 10th Annual Information Technology, Electronics and Mobile Communication Conference (IEMCON) . Vancouver, BC, Canadá: IEEE. doi : 10.1109/IEMCON.2019.8936228 .
- ↑ "Entorno de host de JavaScript | Qt QML | Qt 6.10.0" .
- ↑ «V4-Qt Wiki» . wiki.qt.io. Consultado el 24 de abril de 2021 .
- ^ "Qt-contributors-summit-2013-QML-engine - Qt Wiki" .
- ↑ "Lanzamientos · Samsung/Escargot" . GitHub .
- ↑ Hyukwoo Park; Seonghyun Kim (2024). "Optimización de llamadas de cola adaptada para la utilización de la pila nativa en entornos de ejecución de JavaScript" . IEEE Access . 12 : 111801–111817 . Bibcode : 2024IEEEA..12k1801P . doi : 10.1109/ACCESS.2024.3441750 .
- ↑ "Consola de JavaScript" .
- ↑ "Construyamos un motor JavaScript" . 2019.jsconf.eu . Consultado el 23 de marzo de 2022 .
- ↑ "GitHub - boa-dev/boa: Boa es un motor JavaScript experimental e integrable escrito en Rust" . GitHub . Consultado el 8 de abril de 2022 .
- ↑ "Motor JavaScript Kiesel" . kiesel.dev . Consultado el 30 de septiembre de 2025 .
- ↑ kiesel-js. "kiesel" . Codeberg.org . Consultado el 30 de septiembre de 2025 .
- ↑ "Test262: Suite de pruebas ECMAScript" . Consultado el 30 de septiembre de 2025 .
- ↑ "¡Temporal_rs ya está aquí! La biblioteca de fechas y horas que impulsa Temporal en Boa, Kiesel y V8" . 24 de septiembre de 2025. Consultado el 30 de septiembre de 2025 .
- ↑ "Netscape Navigator 2.0b1 para Windows" . Archivado del original el 14 de junio de 1997.
- ↑ "Netscape Communicator 3.0.2 Source Tree" . Archive.org . 28 de octubre de 2011. Consultado el 23 de septiembre de 2025 .
- 1 2 3 4 Wirfs-Brock, Allen; Eich, Brendan (2020). "JavaScript: los primeros 20 años" . Actas de la ACM sobre lenguajes de programación . 4 (HOPL): 1–189 . doi : 10.1145/3386327 .
- ↑ "Noticias de la tierra de los Conquistadores - Blogs de KDE" . blogs.kde.org . Consultado el 29 de diciembre de 2025 .
- ↑ Brockmeier, Joe (28 de febrero de 2024). "El escritorio KDE se renueva con Plasma 6" .
- ↑ Ratanaworabhan, Paruj; Livshits, Benjamin; Zorn, Benjamin G. "JSMeter: Comparación del comportamiento de los benchmarks de JavaScript con aplicaciones web reales" (PDF) . USENIX .
- ↑ "Introducción a JScript .NET | Microsoft Learn" . msdn.microsoft.com . Consultado el 29 de diciembre de 2025 .
- 1 2 "Información de la versión de JScript" . learn.microsoft.com .
- ↑ "Referencia de JScript" . learn.microsoft.com .
- ↑ "Funciones de Microsoft JScript - No ECMA (Visual Studio - JScript)" . learn.microsoft.com .
- ↑ "Recorrido por el lenguaje JScript | Microsoft Learn" . learn.microsoft.com . Consultado el 29 de diciembre de 2025 .
- ↑ Preguntas frecuentes , Microsoft , 13 de marzo de 2010, archivado del original el 22 de marzo de 2010 , consultado el 18 de marzo de 2010
- ↑ "El motor de scripting JScript9Legacy ahora está habilitado de forma predeterminada - Blog de Windows IT Pro" . techcommunity.microsoft.com . Consultado el 29 de diciembre de 2025 .
- ↑ "¿Windows 11 22H2 tiene una forma diferente de usar el motor JS? - Preguntas y respuestas de Microsoft" . learn.microsoft.com .
- ↑ "Historial de versiones archivadas de Opera 1-12" .
- ↑ "Blog del equipo de Opera Desktop | Opera" . Archivado del original el 3 de marzo de 2006.
- ↑ "Epimeteo" .
- ↑ "Versión 2.1pre17" . Archivado del original el 11 de marzo de 2005. Consultado el 16 de septiembre de 2025 .
- ↑ "Motores y productos de JavaScript" .
- ↑ Clark, Mitchell (18 de agosto de 2022). "El telescopio espacial James Webb ejecuta JavaScript, al parecer" . The Verge . Consultado el 2 de septiembre de 2022 .
- Motores JavaScript