.NET: Да или Нет?

.NET: Да или Нет? 8 ноября 2000 года Microsoft представила свою стратегию, названную .NET. Это шаг вперед, как заявляет Microsoft, или это попытка сделать Java для Windows? Попытаемся разобраться.

.NET состоит из трех основных частей: набора framework-ов уровня приложений, набора базовых framework-ов и независимой от языка исполняющей среды (common language runtime, CLR). По словам Microsoft, использование общего набора API позволит разработчикам создавать устойчивые программные продукты. Динамическая, объектно-ориентированная среда исполнения в противоположность статическому окружению как в C/C++ или VB. Набор API доступен из любых поддерживаемых средой исполнения языков. Имеется прямая поддержка сетевого взаимодействия и распределенных вычислений. Явное улучшение того, что Microsoft предлагала Windows-разработчикам ранее. Но эти улучшения определенно не являются новыми или передовыми. В большей степени платформа .NET предназначена для улучшения работы тех разработчиков, которые пишут только под Windows. По существу, .NET — это попытка помочь программистам на Visual C++ и Visual Basic начать идти в ногу со временем; программистам Visual J++ — совсем не пропасть.
В основе платформы .NET лежит независимая от языка исполняющая среда (Common Language Runtime). Эта среда, обеспечивающая также сборку мусора и контроль типов, исполняет код на внутреннем языке. Такая концепция не нова, ее можно сравнить с интерпретатором пи-кода, таким как UCSD Pascal. Использование промежуточного внутреннего языка (IL) имеет ряд преимуществ, таких как возможность поддержки различных процессорных архитектур и введение контроля типов. IL может быть верифицирован перед исполнением, что повышает безопасность. На основе доступной информации можно сделать вывод, что обещанная CLR предназначена для достижения многих из тех целей, которые уже реализованы и проверены временем в виртуальной машине Java.
CLR имеет доступ к набору базовых framework-ов, или общих классов. Таковыми являются классы для сетевого взаимодействия, ввода-вывода, коллекций, безопасности, интернационализации и т.д. Классы рассортированы по функциональным группам при помощи пространств имен. Это не очень сильно отличается от пакетов Java. Но поражает тот факт, что имена этих классов удивительно похожи на имена классов из Java Сore API.
Framework-и приложений включают в себя улучшенные Active Server Pages (ASP+) и ActiveX Data Objects (ADO+). Страницы ASP+ могут компилироваться в промежуточный язык так же, как и Java Server Pages TM в конечном итоге компилируются в Java байткод. Но для ASP+ нет независимых поставщиков, в то время как существует множество поставщиков продуктов на базе JSP TM для различных платформ.
Microsoft также создала новый язык программирования с названием C#. C# — язык со сборкой мусора из семейства C/C++. Он обладает некоторым сходством с языком Java. C# — полностью объектно-ориентированный язык, в нем существует единственный базовый класс и множественное наследование, реализуемое при помощи интерфейсов. Оценка различий между языками Java и C# главным образом субъективна, сложно доказать, кто из них действительно лучше.
Разработчики, проектирующие приложения на C#, оказываются в ловушке. Любое более или менее серьезное приложение нуждается в использовании высокоуровневого API (например, для доступа к базам данных и т.д.), который наверняка не будет входить в состав библиотек, представленных для стандартизации. Это не означает, что 100% кода вашего приложения будет привязано к .NET в результате закрытости платформы — только лишь одна его критическая часть. Таким образом, любое серьезное приложение наверняка будет крайне сложно портировать под другую операционную систему. В результате Вы замыкаетесь на одного производителя, и этот производитель — Microsoft. Язык Java, VM и API — все эти составляющие части независимы от производителя.
Преимущество платформы Java по сравнению с .NET очевидно. Основное отличие в том, что платформа Java — зрелое кроссплатформенное решение, не привязанное к какой-либо операционной системе. Что нельзя сказать о .NET — решении только для Windows. Даже если независимая от языка исполняющая среда (Common Language Runtime) будет портирована под другие операционные системы, это всего лишь часть .NET. Многие из базовых компонент и все framework-и уровня приложений непосредственно связаны с Windows. Это означает, что серьезные приложения, построенные на платформе .NET, будут работать только под Windows.
В отличие от .NET, любая совместимая реализация среды исполнения Java содержит в точности один и тот же набор базовых API, независимо от операционной системы. Совместимые JRE существуют для Windows, MacOS, Linux, Solaris, даже для OS/390. Это означает, что код на Java может быть написан и отлажен на десктопе, а потом перенесен на мощнейший сервер. Приложение, написанное для платформы .NET будет работать только на платформе Microsoft. Очевидно, что основная задача .NET — утвердить зависимость от платформы. Microsoft раскручивает .NET как передовую и новую платформу, но реально это просто модернизированный комплект наручников для разработчиков.
Платформа Java означает выбор. Sun не единственный поставщик платформы Java. IBM, Symantec, Apple, а также множество проектов Open Source разработали реализации платформы Java и инструментарий для множества операционных систем. С платформой Java разработчики имеют выбор инструментария, в то время как Microsoft настойчиво склоняет их в сторону Visual Studio (или другому инструменту, подключаемому к Visual Studio).
Независимые эксперты проинспектировали общедоступный исходный код платформы Java на предмет проблем с безопасностью. Признаков того, что Microsoft когда-либо целиком откроет исходный код платформы .NET, нет.
Платформа Java означает выбор для корпораций, где среда исполнения Java может быть получена из разных источников, и является взаимозаменяемой. Sun поставляет reference-реализацию платформы Java 2, Enterprise Edition. Многие другие производители предлагают устойчивые, промышленные решения на базе J2EE, такие как BEA Weblogic, IBM Websphere, Bluestone Saphire/Web. Все эти решения конкурируют по производительности и инструментальной поддержке, здесь нет вопросов совместимости и беспокойства по поводу замыкания на поставщика. Код на Java, написанной для любого из этих серверов приложений, может быть перенесен на любой другой сервер приложений без изменения. Это явное конкурентное преимущество в сегодняшней гетерогенной среде.
Нет сомнений, что Microsoft пришла к такому же выводу, как и любой другой в индустрии: платформа Java — превосходная технология, пользующаяся громадным успехом. Вместо того, чтобы принять кроссплатформенное, нейтральное по отношению к производителю решение, которым является платформа Java, Microsoft все еще проталкивает одноплатформенное, ориентированное на одного производителя решение. Платформа .NET — шаг вперед для программистов на Visual C++ и Visual Basic, но это лишь еще одна проприетарная платформа Microsoft, которая приковывает разработчиков к Windows, пусть даже и .NET-овскому варианту Windows.
Я думаю, что вы не будете менять машину из-за того, что в ней нет специального крепления для радиоприемника. Именно это и предлагает Microsoft. Из-за своей политики Microsoft продолжает создавать колеса, когда необходимо перейти в мир реальных технологий, решений других компаний. Маркетинговая монопольная система, созданная однажды, продолжает работать и сейчас. Только вопрос: кому это нужно?

Дмитрий Пачинин aka Windmaster windmaster@tut.by
По материалам www.java.sun.com



Компьютерная газета. Статья была опубликована в номере 15 за 2002 год в рубрике программирование :: разное

©1997-2024 Компьютерная газета