| Сравнивая Java и .NET |
|
|
| Автор Westry | |
| 17.12.2007 г. | |
|
Почти два года назад 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 Sharp и Java. Честно говоря тема эта кажется мне несколько заезженной, потому весьма коротко для тех, кто не в курсе. C Sharp (произносится "си шарп") - это основной язык новой платформы, он создавался параллельно с созданием .NET для максимально удобного использования всех возможностей платформы. Мне довелось писать парсеры обоих языков, так что грамматику и того и другого я знаю достаточно хорошо. Оба языка имеют много различий и в то же время достаточно похожи. В C Sharp больше языковых конструкций, а значит дает больше гибкости для реализации задач. В то же время, на мой взгляд, создателям языка удалось сохранить стройность концепции и сделать красивый язык. Скажем, в Java остались примитивные типы, так как их наличие достаточно критично по быстродействию. Создатели C Sharp же обошли эту проблему предоставив возможности использовать примитивные типы в качестве объектов (так называемая упаковка/распаковка). В C Sharp было введено понятие делегата. Если упростить - это объектно-ориентированный указатель на функцию. Таким образом использование обратных вызовов и событий стало намного проще и понятнее. В C Sharp введено понятие свойства (в Java beans тоже реализуются свойства, но там это вопрос соглашения об именовании функций, в C Sharp же это компилируемая языковая конструкция). Реализация свойств весьма проста и удобна в использовании. Индексаторы позволяют использовать коллекции при помощи привычного по работе с массивами синтаксиса "[]". Если добавить сюда концепцию события на уровне поддержки компилятора - становится понятно, почему язык так удобен для разработки компонент. Недаром одним из основных архитекторов C Sharp был Хайлсберг, известный всем по огромному вкладу в Delphi. Есть еще два основных момента, про которые мы расскажем - это поддержка XML комментариев (очень удобно, XML расширяем в отличии от javadoc формата) и стандартизация языка. В остальном - советую посмотреть следующие темы: деструкторы, статические конструкторы, внутренние классы, неуправляемый код, переопределение операторов (в том числе приведения типов). Материала там не на одну статью. Источник - http://fububy.na.by/index.php?elif=net/12f745af7832b69092994888b9a4ebf0.htm |
| « Пред. | След. » |
|---|


