Основные различия между 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 не требует функции main() , которую операционная система должна вызывать напрямую при выполнении приложения 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, но не созданы. Таким образом, пользовательские события трудно эмулировать в JScript .NET.
JScript .NET не требует явного объявления типов переменных. (В C++ использование шаблонов и дженериков можно сравнить с этим, вольно эмулируя специализацию шаблонов и т. д.)
JScript .NET также не требует явного приведения типов при использовании переменных в программе. Код, используемый для извлечения строки символов, но используемый только для целых чисел, может быть приведен неявно; обратное может быть сделано без ошибок во время компиляции, но есть вероятность потери точности или данных.
Синтаксис и лексические соглашения JScript .NET похожи на Java, поскольку оба произошли от C. JScript изначально был реализацией ECMAScript от Microsoft , более известной как JavaScript , хотя она не связана с Java. Таким образом, пользователи Java и других языков, производных от C, найдут JScript более простым для изучения.
JScript .NET позволяет разработчикам использовать нетипизированные переменные и иногда может выводить их тип из их использования для оптимизации скомпилированного кода. С другой стороны, Java требует, чтобы все переменные были типизированы.
JScript .NET может добавлять свойства и методы к объектам во время выполнения , в то время как объекты Java всегда соответствуют своему объявленному интерфейсу.
JScript .NET позволяет разработчикам объявлять переменные и функции с информацией о типе (например, var x : String; ), в то время как информация о типе для переменных и функций JScript не может быть объявлена (например, var x; ).
Скрипты JScript .NET не интерпретируются, а выполняются независимо. При выполнении приложение JScript .NET вызовет CLR . CLR выполнит инструкции CIL без использования интерпретатора.
JScript .NET может быть запущен без браузера или другого скриптового движка , поскольку компилятор может генерировать автономные исполняемые файлы и сборки. Однако для их запуска по-прежнему требуется установленный .NET Framework .
JScript .NET обеспечивает доступ к .NET Framework BCL ( библиотеке базовых классов ), предоставляя гораздо больше функциональных возможностей.
JScript .NET доступен только как язык сценариев для ASP.NET , технологии, используемой для генерации веб-страниц; таким образом, JScript .NET играет ту же роль, что и PHP и другие серверные языки сценариев. Однако Internet Explorer по-прежнему использует только старый движок JScript, поэтому JScript.NET нельзя использовать для сценариев веб-страниц (или HTA или HTC). В этом отношении JScript гораздо более универсален, чем JScript .NET.