Сравнивая
.NET и Java
Оригинал
статьи Автор: Andrew Filev
Введение.
Почти два года назад Microsoft выпустила первую версию новой платформы
для разработки приложений. Новая платформа сначала рекламировалась, как
базис для разработки веб-приложений и веб-служб и потому получила название
.NET. Именно в то время термин веб-сервис вошел в широкое употребление.
Практически сразу стало ясно, что новая платформа станет основным
конкурентом Java платформе. Под Java платформой мы подразумеваем Java 2
Standard Edition (J2SE), Java 2 Enterprise Edition (J2EE), Java 2 Micro
Edition(J2ME). Не заставила ждать себя и Sun, практически сразу объявившая
о выпуске новой технологии, полностью поддерживающей веб-сервисы - Sun
ONE. Правда, оказалось, что общедоступных примеров и полной документации
тогда не было, но это не важно - стало понятно, что гонка началась.
Практически тогда же начались, как и можно было ожидать языковые и
платформенные войны среди разработчиков, вылившиеся в дебаты, и между
компаниями-производителями, результатом которых было появление на рынке
новых продуктов.
Мы не хотим продолжать традицию лоббистских публикаций, коих в
Интернете сейчас итак хватает, тем более, что в отличии от многих авторов
мы хорошо знаем обе платформы. Цель нашей статьи дать Вам представление о
платформе .NET, отталкиваясь от сравнения и предоставить выбор Вам,
снабдив предварительно достаточным количеством информации.
Архитектуры платформ.Если Вы знакомы с Java, архитектура платформ
покажется Вам похожей, особенно на высоком уровне.
Приложение на Java компилируется в байт-код, на .NET в промежуточный
язык MSIL (Microsoft Intermediate Language). Для работы приложения на Java
требуется поставить на клиента JRE (Java Runtime Environment), для работы
.NET требуется наличие CLR (Common Language Runtime).
И с той, и с другой платформой поставляется обширная библиотека базовых
классов, готовых к использованию.
Теперь о некоторых отличиях, больших и не очень.
|
.NET |
Java |
Библиотеки. |
В .NET ставится один .NET Framework SDK. |
Если говорить про разработку приложений для настольных
компьютеров и для серверов, в Java для этого используются разные
пакеты разработчиков - J2SE и J2EE. |
Сервера приложений. |
Достаточно серверной операционной системы. Веб-сервер и
поддержка COM+ входят в стандартные возможности Windows 2000
Server/Advanced Server/Datacenter, Windows .NET |
Для полноценного использования возможностей J2EE Вам необходимо
воспользоваться сервером приложений (бесплатным или
купленным). |
Отдельно хочется выделить одну из ключевых возможностей архитектурного
решения .NET, которое позволяет говорить о его уникальности. Корпорация
Microsoft с первых дней представления .NET заявила, что дает разработчику
свободу выбора языка. И это не пустые слова.
Технология предоставляемая в Microsoft .NET намного проще в
использовании и более прозрачна, чем ранее используемые средства
интеграции объектов в разных средах (COM, CORBA, Java RMI). Суть нового
решения в том, что программный код всех языков, поддерживаемых .NET,
компилируется не в родной код платформы, а в промежуточный код. Данный
промежуточный код фактически является ассемблером, но в отличии от
традиционного ассемблера для x86 платформы является
объектно-ориентированным и поддерживает несколько высокоуровневых
конструкций.
Скептики при таких заявлениях сразу стали утверждать, что языков-то,
видимо, будет раз-два и обчелся. Но если бы мы верили скептикам, мы бы
игнорировали многие технологии. Вряд ли мы поверили бы кому-то в
возможности запускать один и тот же код на java в абсолютно различных
программных средах. Креативные личности и компании не подвели
разработчиков и сейчас под .NET есть порядка 20-ти языков, включая версии
для Visual Basic, C++, Java, COBOL, Pascal и другие.
Размеры нашей публикации не позволяют углубляться более детально во все
особенности каждого архитектурного решения. Оба решения красивы, оба
достойны внимания и оба обладают индивидуальностью при том, что они
похожи.
Интеграция бизнес-приложений.
В этой области решение о выборе платформы может быть принято только
после детального анализа существующей инфраструктуры и требований к ее
изменению (созданию новой). Тем более, что зачастую вопрос выбора
технологии не стоит, в связи с огромными потерями при создании системы с
нуля.
Вместе с выходом .NET компания Microsoft предоставило возможность
интегрировать самые современные решения с существующим кодом, скажем на
COBOL. И это безусловно даст новой технологии огромный рынок. Полная
поддержка XML позволяет говорить об идеальной среде для создания B2B
приложений. А одна из передовых разработок компании Microsoft - BizTalk
Server позволяет максимально использовать возможности этой среды, при этом
осуществляя связь с легаси системами (например, включая поддержку EDI).
Война за будущее. Веб сервисы.
Здесь первенство несомненно принадлежит Майкрософт. С другой стороны
J2EE сейчас тоже имеет API, позволяющее оперировать SOAP запросами и
полноценно работать с веб-сервисами.
Но не стоит забывать, что .NET - это экс "Next Generation Web Services"
(одна из первых марок новой технологии). XML технологии были у всех на
уме, когда проектировался .NET. Именно по этой причине работа с Xml в .NET
намного проще, а иногда вообще не требует от программиста усилий.
Представив новую технологию для работы с данными в .NET - ADO.NET,
ориентированную на создание сервисов и веб-приложений (disconnected
model), нам представили и встроенную Xml интеграцию. JDBC же таких простых
способов работы с XML и XSD не имеет.
Примерно то же самое можно сказать и про XML
сериализацию/десериализацию, работа с которой в .NET стала проще за счет
использования концепции атрибутивного программирования (в Java отсутствуют
атрибуты как элемент языка, а следовательно и как элемент стандартной
платформы).
Таким образом сервисы можно делать на разных платформах - выбор в деле
вкуса и потребности бизнеса.
Надо заметить, что как и обещано сервисы обеспечивают работу в
многородной среде - мы сами использовали .NET веб-сервисы из Java и Perl
(и vice versa).
Сравнивая C# и Java.
Честно говоря тема эта кажется мне несколько заезженной, потому весьма
коротко для тех, кто не в курсе.
C# (произносится "си шарп") - это основной язык новой платформы, он
создавался параллельно с созданием .NET для максимально удобного
использования всех возможностей платформы.
Мне довелось писать парсеры обоих языков, так что грамматику и того и
другого я знаю достаточно хорошо. Оба языка имеют много различий и в то же
время достаточно похожи. В C# больше языковых конструкций, а значит дает
больше гибкости для реализации задач. В то же время, на мой взгляд,
создателям языка удалось сохранить стройность концепции и сделать красивый
язык.
Скажем, в Java остались примитивные типы, так как их наличие достаточно
критично по быстродействию. Создатели C# же обошли эту проблему
предоставив возможности использовать примитивные типы в качестве объектов
(так называемая упаковка/распаковка).
В C# было введено понятие делегата. Если упростить - это
объектно-ориентированный указатель на функцию. Таким образом использование
обратных вызовов и событий стало намного проще и понятнее.
В C# введено понятие свойства (в Java beans тоже реализуются свойства,
но там это вопрос соглашения об именовании функций, в C# же это
компилируемая языковая конструкция). Реализация свойств весьма проста и
удобна в использовании.
Индексаторы позволяют использовать коллекции при помощи привычного по
работе с массивами синтаксиса "[]".
Если добавить сюда концепцию события на уровне поддержки компилятора -
становится понятно, почему язык так удобен для разработки компонент.
Недаром одним из основных архитекторов C# был Хайлсберг, известный всем по
огромному вкладу в Delphi.
Есть еще два основных момента, про которые мы расскажем - это поддержка
XML комментариев (очень удобно, XML расширяем в отличии от javadoc
формата) и стандартизация языка.
В остальном - советую посмотреть следующие темы: деструкторы,
статические конструкторы, внутренние классы, неуправляемый код,
переопределение операторов (в том числе приведения типов). Материала там
не на одну статью.
Кстати, если Вас привлекла возможность использования XML комментариев,
можете воспользоваться моей бесплатной утилиткой для получения HTML из
полученных файлов, закачать которую можно на сайте http://www.dotsite.spb.ru/ . По
поводу багов и предложений пишите на andrew@dotsite.spb.ru
Заключение.
Я думаю, что Вы уже поняли, что платформы весьма и весьма отличаются и
если быть полным то для описания всех похожестей и различий понадобится
приложить к публикации полную документацию к обоим.
Если Вы не уверены в том, что выбрать, пишите в форум "Дебаты" на
http://www.dotsite.spb.ru/
Если же Вашей компании необходим анализ, детальная оценка и четкие
технические комментарии, пишите по адресу andrew@dotsite.spb.ru
С уважением, Андрей Филёв.
Об авторе: Андрей Филёв
является ведущим консультантом созданной им компании dotSITE Ltd.Co.,
сертифицированным специалистом, работает с .NET почти два года, до этого
специализировался на Java приложениях.
© 2001 Корпорация
Microsoft. Все права защищены. Правила
использования | Политика
защиты | Кодекс
поведения
|