On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Анализ .NET

Маду Сиддалинджайя (Madhu Siddalingaiah)

8 Ноября 2000 г. -- Microsoft представила свою новую web-стратегию, называемую .NET. Информации о платформе .NET мало, но некоторые ее сходства с платформой JavaTM видны уже сейчас. Является ли .NET радикально новой и передовой платформой, как заявляет Microsoft? Или это другой путь для Windows-разработчиков, которые еще не перешли на платформу Java?

Microsoft раскручивает .Net как передовую и новую платформу, но реально это просто модернизированный комплект наручников для разработчиков.

.NET состоит из трех основных частей: набора framework-ов уровня приложений, набора базовых framework-ов, и независимой от языка исполняющей среды (common language runtime, CLR). Как предполагает Microsoft, это позволит разработчикам создавать устойчивые программные продукты, используя общий набор API. Архитектура - определенно в духе 90-х. Динамическая, объектно-ориентированная среда исполнения, в противоположность статическому окружению как в C/C++ или VB. Набор API доступен из любых поддерживаемых средой исполнения языков. Имеется прямая поддержка сетевого взаимодействия и распределенных вычислений. Явное улучшение того, что Microsoft предлагала Windows-разработчикам ранее. Но эти улучшения определенно не являются новыми или передовыми. В большей степени платформа .NET предназначена для улучшения работы тех разработчиков, которые пишут только под Windows. По существу, .NET это попытка помочь программистам на Visual C++ и Visual Basic начать идти в ногу со временем.

В основе платформы .NET лежит независимая от языка исполняющая среда (common language runtime). Эта среда, обеспечивающая также сборку мусора и контроль типов, исполняет код на внутреннем языке (internal [intermediate] language, IL). Андерс Хейлсберг (Anders Hejlsberg), архитектор исполняющей среды, признал, что такая концепция не нова и сравнил ее с интерпретатором пи-кода, таким как UCSD Pascal. Хейлсберг показал, что использование промежуточного внутреннего языка (IL) имеет ряд преимуществ, таких как возможность поддержки различных процессорных архитектур и введение контроля типов. Хейлсберг также отметил, что IL может быть верифицирован перед исполнением, что повышает безопасность. Конкретные детали пока еще неизвестны, поэтому сложно объективно оценить эту среду выполнения или сравнить ее с виртуальной машиной Java (JVMTM). На основе доступной информации можно сделать вывод, что обещанная CLR предназначена для достижения многих из тех целей, которые уже реализованы и проверены временем в виртуальной машине Java.

CLR имеет доступ к набору базовых framework-ов, или общих классов. Таковыми являются классы для сетевого взаимодействия, ввода-вывода, безопасности, коллекций, интернационализации и т.д. Классы рассортированы по функциональным группам при помощи пространств имен. Это не очень сильно отличается от пакетов Java. Но поражает тот факт, что имена этих классов удивительно похожи на имена классов из Java core API.

Framework-и приложений включают в себя улучшенные active server pages (ASP+) и ActiveX Data Objects (ADO+) вместе с новыми компонентами пользовательского интерфейса (WinForms и WebForms). Страницы ASP+ могут компилироваться в промежуточный язык так же, как и JavaServer PagesTM в конечном итоге компилируются в Java байткод. Но для ASP+ нет независимых поставщиков, в то время как существует множество поставщиков продуктов на базе JSPTM для различных платформ. Кроме того, проект Apache перенял reference-реализацию JSP и поддерживает ее как freeware.

Microsoft также анонсировала новый язык программирования с названием C#. C# - язык со сборкой мусора из семейства C/C++. Он обладает некоторым сходством с языком Java. C# - полностью объектно-ориентированный язык, в нем существует единственный базовый класс и множественное наследование, реализуемое при помощи интерфейсов. Оценка различий между языками Java и C# главным образом субъективна, сложно аргументированно доказать кто из них действительно лучше. Microsoft заявила о том, что C# будет передан органам стандартизации. Это звучит ободряюще, но C# - это только язык, но не платформа .NET целиком. Microsoft не только не заявляла, но даже и не намекала на то, что платформа .NET целиком может быть представлена для стандартизации.

Тем не менее, разработчики, проектирующие приложения на 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 может быть написан и отлажен на десктопе, а потом перенесен на мощнейший сервер или даже mainframe. Приложение, написанное для платформы .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.




Языки программирования: разное