Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

Сравнивая .NET и Java
В данной публикации сравниваются две ведущие конкурирующие плафтормы разработки программного обеспечения .NET и Java

Введение.

Почти два года назад 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 из полученных файлов, закачать которую можно на сайте www.dotsite.spb.ru . По поводу багов и предложений пишите на andrew@dotsite.spb.ru

Заключение.

Я думаю, что Вы уже поняли, что платформы весьма и весьма отличаются и если быть полным то для описания всех похожестей и различий понадобится приложить к публикации полную документацию к обоим.

Если Вы не уверены в том, что выбрать, пишите в форум "Дебаты" на www.dotsite.spb.ru

Если же Вашей компании необходим анализ, детальная оценка и четкие технические комментарии, пишите по адресу andrew@dotsite.spb.ru

С уважением, Андрей Филёв.

Об авторе:
Андрей Филёв является ведущим консультантом созданной им компании dotSITE Ltd.Co., сертифицированным специалистом, работает с .NET почти два года, до этого специализировался на Java приложениях.


Может пригодится:


Автор: Андрей Филев
Прочитано: 4616
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (1)

Прислал: Igor
Статья не понравилась т.к. в ней нет объективности. Видно, что Автор больше склонен к .NET но чем плоха JAVA из статьи вообще не понятно. Если уж писать такого рода статью то необходимо подходить к этому объективно и аргументировано либо не писать во

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру