JScript es el dialecto heredado [2] de Microsoft del estándar ECMAScript [3] que se utiliza en el navegador web Internet Explorer de Microsoft y en las aplicaciones HTML , y como lenguaje de scripting independiente de Windows.
JScript se implementa como un motor de secuencias de comandos activas . Esto significa que se puede "conectar" a aplicaciones de automatización OLE que admitan secuencias de comandos activas, como Internet Explorer , Active Server Pages y Windows Script Host . [4] También significa que dichas aplicaciones pueden utilizar varios lenguajes de secuencias de comandos activas, por ejemplo, JScript, VBScript o PerlScript .
JScript fue soportado por primera vez en el navegador Internet Explorer 3.0 lanzado en agosto de 1996. Su versión más reciente es JScript 9.0, incluida en Internet Explorer 9.
JScript 10.0 [5] es un dialecto independiente, también conocido como JScript .NET , que añade varias características nuevas de la cuarta edición abandonada del estándar ECMAScript. Debe compilarse para la versión 2 o la versión 4 de .NET Framework , pero las anotaciones de tipo estático son opcionales.
JScript ha sido criticado por ser inseguro y tener múltiples errores de seguridad "explotados por actores de estados nacionales", [6] lo que llevó a Microsoft a agregar una opción para deshabilitarlo. [7]
Como explicó Douglas Crockford en su charla titulada El lenguaje de programación JavaScript en YUI Theater,
[Microsoft] no quería tratar con Sun Microsystems sobre el problema de la marca registrada, por lo que llamaron a su implementación JScript. Mucha gente piensa que JScript y JavaScript son lenguajes diferentes pero similares. Ese no es el caso. Son simplemente nombres diferentes para el mismo lenguaje, y la razón por la que los nombres son diferentes fue para evitar problemas de marca registrada. [8]
Sin embargo, JScript admite la compilación condicional , que permite a un programador ejecutar código de forma selectiva dentro de comentarios de bloque . Se trata de una extensión del estándar ECMAScript que no es compatible con otras implementaciones de JavaScript, por lo que la afirmación anterior no es completamente cierta, aunque la compilación condicional ya no es compatible con el modo Estándar de Internet Explorer 11.
Otras diferencias de implementación interna entre JavaScript y JScript, en algún momento, se notaron en Microsoft Developer Network (MSDN). [9] El valor de tipo predeterminado para el elemento script en Internet Explorer es JavaScript, mientras que JScript era su alias. [10] En una aparente transición de JScript a JavaScript, en línea, la Guía para desarrolladores de Microsoft Edge hace referencia a la biblioteca de referencia web Mozilla MDN como su documentación definitiva. [11] A partir de octubre de 2017, las páginas MSDN de Microsoft para scripts en Internet Explorer también se están redirigiendo allí. [12] Esta información puede no incluir objetos específicos de JScript, como Enumerator, que se enumeran en la referencia del lenguaje JavaScript en Microsoft Docs. [13] Estos proporcionan características adicionales que no están incluidas en los estándares ECMA, ya sea que sean compatibles con el navegador Edge o su predecesor. [14]
El JScript original es un motor de secuencias de comandos activas . Al igual que otros lenguajes de secuencias de comandos activas, está basado en la plataforma de automatización COM/OLE y ofrece capacidades de secuencias de comandos para alojar aplicaciones.
Esta es la versión utilizada cuando se aloja JScript dentro de una página web mostrada por Internet Explorer , en una aplicación HTML anterior a IE9 , así como en scripts clásicos de ASP , Windows Script Host y otros entornos de automatización .
A veces se hace referencia a JScript como "JScript clásico" o "JScript Active Scripting" para diferenciarlo de las versiones más nuevas basadas en .NET.
Algunas versiones de JScript están disponibles para varias versiones de Internet Explorer y Windows. Por ejemplo, JScript 5.7 se introdujo con Internet Explorer 7.0 y también se instala para Internet Explorer 6.0 con Windows XP Service Pack 3 , mientras que JScript 5.8 se introdujo con Internet Explorer 8.0 y también se instala con Internet Explorer 6.0 en Windows Mobile 6.5 .
La implementación de Microsoft de ECMAScript 5th Edition en Windows 8 Consumer Preview se llama JavaScript y la versión beta correspondiente de Visual Studio 11 Express incluye un editor de JavaScript "completamente nuevo" y con todas las funciones, con mejoras de IntelliSense para la sintaxis HTML5 y ECMAScript 5 , anotaciones "VSDOC" para sobrecargas múltiples, configuración DOM simplificada , coincidencia de llaves, esquema colapsable e "ir a la definición". [15]
JScript también está disponible en Windows CE (incluido en Windows Mobile, opcional en Windows Embedded CE). La versión de Windows CE no tiene depuración activa.
Managed JScript es una implementación de JScript para Dynamic Language Runtime y forma parte de los lenguajes dinámicos de Microsoft para .NET junto con IronRuby , IronPython y Dynamic Visual Basic . A diferencia de JScript .NET, que es menos dinámico que el JScript original pero ofrece compatibilidad con CLS , Managed JScript está diseñado sobre DLR y ofrece las características necesarias para los escenarios de scripting.
Si bien actualmente está diseñado principalmente para usarse dentro de Silverlight y ASP.NET, también se puede integrar fácilmente dentro de cualquier aplicación .NET. [20]
Existen dos compilaciones de Managed JScript: una para Desktop CLR y otra para Silverlight CoreCLR.
JScript administrado no es compatible con .NET Compact Framework .
(Fuente: versiones de archivos de Microsoft.JScript.Runtime.dll en las carpetas ASP.NET Futures y Silverlight 1.1)
JScript "Chakra" se basa en la versión JScript (COM classic), pero ha sido rediseñado para mejorar el rendimiento en Internet Explorer 9 [21] a expensas de la compatibilidad adecuada con el motor Active Scripting. Requiere una API específica de Microsoft JavaScript Hosting (JsRT) para su uso correcto. Por lo tanto, se instala junto con JScript 5.x y solo lo utilizan Internet Explorer 9 y versiones posteriores, así como los hosts JsRT, mientras que otros hosts Active Scripting siguen utilizando la versión 5.x cuando solicitan el motor JScript.
Existen dos versiones del motor Chakra JsRT. La original se utilizó en Internet Explorer 9 y versiones posteriores y a veces se la denomina "jscript9.dll" o "motor Chakra heredado", y la segunda se utiliza en el navegador Microsoft Edge Legacy y a veces se la denomina "nuevo motor Chakra", "motor Edge" o "Chakra.dll". Ambas versiones de Chakra JsRT pueden utilizarse en otras aplicaciones que utilicen la API JsRT y pueden instalarse en paralelo. [24]
También existe una versión COM Classic de Chakra llamada internamente "JScript 9 Legacy" (proporcionada por jscript9Legacy.dll), introducida con Windows 11 24H2, que recupera la compatibilidad con los hosts de Active Scripting y está pensada como un reemplazo compatible directo para JScript 5.8. Aunque es en gran medida compatible con el JScript 5.8 original, existen notables diferencias de ruptura. [25]
Consulte la página separada sobre el nuevo motor Chakra (Edge) .
JScript .NET es una implementación de JScript de Microsoft .NET . Es un lenguaje CLI y, por lo tanto, hereda características muy potentes, pero carece de muchas características del lenguaje JScript original, lo que lo hace inadecuado para muchos escenarios de scripting. JScript .NET se puede utilizar para páginas ASP.NET y para aplicaciones .NET completas, pero la falta de soporte para este lenguaje en Microsoft Visual Studio lo coloca más como una ruta de actualización para ASP clásico utilizando JScript clásico que como un nuevo lenguaje de primera clase.
JScript .NET no es compatible con .NET Compact Framework . [ cita requerida ]
Nota: Las versiones de JScript .NET no están relacionadas con las versiones clásicas de JScript. JScript .NET es un producto independiente. Aunque JScript .NET no es compatible con el IDE de Visual Studio, sus versiones están sincronizadas con otras versiones de lenguajes .NET ( C# , VB.NET , VC++ ) que siguen sus versiones correspondientes de Visual Studio.
.NET Framework 3.0 y 3.5 se basan en 2.0 y no incluyen la versión más reciente de JScript.NET (versión 10.0 para .NET Framework 4.0).
(Fuente: versión de archivo del compilador JScript.NET jsc.exe y Microsoft.JScript.dll instalado con .NET Framework)