Введение

JScript NET — это язык программирования .NET, разработанный Microsoft. Основные различия между JScript и JScript NET можно суммировать следующим образом: во-первых, JScript является скриптовым языком, и как таковой программы (или, точнее, скрипты) могут выполняться без предварительной компиляции кода. Это не относится к компилятору командной строки JScript NET, поскольку эта версия нового поколения полагается на среду выполнения .NET Common Language Runtime (CLR) для выполнения, что требует компиляции кода в Common Intermediate Language (CIL), ранее известную как Microsoft Intermediate Language (MSIL), перед запуском. Тем не менее, JScript NET по-прежнему обеспечивает полную поддержку интерпретации кода во время выполнения (например, через конструктор Function или функцию eval), и интерпретатор может быть доступен пользовательским приложениям, использующим движок JScript NET через интерфейсы VSA. Во-вторых, JScript имеет прочную основу в технологиях Microsoft ActiveX/COM и в основном использует компоненты ActiveX для обеспечения большей части своей функциональности (включая доступ к базам данных через ADO, работу с файлами и т. д.), в то время как JScript NET использует .NET Framework для предоставления эквивалентной функциональности. Для обеспечения обратной совместимости (или в тех случаях, когда эквивалентная библиотека .NET отсутствует), JScript NET по-прежнему обеспечивает полный доступ к объектам ActiveX через .NET/COM Interop, используя как конструктор ActiveXObject, так и стандартные методы класса .NET Type. Хотя .NET Framework и языки .NET, такие как C# и Visual Basic .NET, получили широкое распространение, JScript NET не привлек особого внимания ни со стороны СМИ, ни со стороны разработчиков. Он не поддерживается в основном инструменте разработки Microsoft, Visual Studio .NET. Однако ASP.NET поддерживает JScript NET.

Языковые различия

Ниже приведены яркие примеры языковых различий между JScript .NET и другими языками .NET, в том числе сопоставления.

Различия с C#

JScript NET не требует наличия главной функции, которую операционная система должна вызывать напрямую при запуске приложения JScript NET, поэтому логика программы JScript NET может основываться на глобальном коде. Благодаря очень слабой системе проверки типов, JScript NET легко освоить, поскольку явное объявление типов не является обязательным. JScript NET не требует явных ссылок на базовую библиотеку классов .NET Framework, так как некоторые функции, присутствовавшие в более ранних версиях JScript, доступны и в JScript NET (например, функции для вычисления тангенса угла в прямоугольном треугольнике). JScript NET тесно связан с синтаксисом языка C, что делает его легким в изучении для разработчиков, знакомых с C#, Java или C++. Хотя JScript NET можно использовать для создания приложений Windows Forms, он может столкнуться с некоторыми трудностями, поскольку делегаты можно только использовать в JScript NET, но не создавать. Таким образом, реализовать пользовательские события в JScript NET достаточно сложно.

Разница с Java

Синтаксис и лексические правила JScript NET схожи с синтаксисом Java, поскольку оба языка произошли от C. Изначально JScript был реализацией Microsoft стандарта ECMAScript, более известного как JavaScript, хотя он не имеет отношения к Java. Поэтому пользователям Java и других языков, произошедших от C, будет проще освоить JScript. JScript NET позволяет разработчикам использовать переменные без явного указания типа, а также может определять их тип на основе использования для оптимизации скомпилированного кода. В отличие от этого, Java требует, чтобы всем переменным был задан тип. JScript NET позволяет добавлять свойства и методы к объектам во время выполнения, в то время как объекты Java всегда соответствуют своему объявленному интерфейсу. JScript NET поддерживает глобальные переменные, чего не делает Java.

Различия с более старыми версиями JScript

JScript .NET позволяет разработчикам объявлять переменные и функции с информацией о типе (например, var x : String;), в то время как для переменных и функций JScript объявление информации о типе невозможно (например, var x;). Скрипты JScript .NET не интерпретируются, а выполняются независимо. При выполнении приложение JScript .NET вызывает CLR. CLR выполняет инструкции CIL без использования интерпретатора. JScript .NET может выполняться без браузера или другого механизма сценариев, поскольку компилятор способен генерировать автономные исполняемые файлы и сборки. Однако для их запуска все равно требуется установленная платформа .NET Framework. JScript .NET предоставляет доступ к BCL (базовой библиотеке классов) .NET Framework, что значительно расширяет функциональность. JScript .NET доступен только как язык сценариев для ASP.NET – технологии, используемой для генерации веб-страниц; таким образом, JScript .NET выполняет аналогичную роль, что и PHP и другие серверные языки сценариев. Однако Internet Explorer по-прежнему использует устаревший механизм JScript, поэтому JScript .NET нельзя использовать для написания сценариев для веб-страниц (или HTA или HTC). В этом плане JScript гораздо более универсален, чем JScript .NET.