Java vs .NET: почему .NET

.NET превалирует над Java в сегменте малого и среднего бизнеса.

Различия, достоинства и недостатки каждой из платформ проистекают из исходных различий в идеологии Java и .NET. Идеологию Java можно выразить фразой «написано однажды, работает везде», а идеология .NET заключается в максимально полном использовании ресурсов платформы, на которой работает среда выполнения .NET. В результате возможности Java ограничены усредненным набором функций API виртуальной машины, и программистам на Java недоступны все функции той или иной платформы, на которой выполняются приложения. В случае с .NET среда выполнения предоставляет доступ к специфичным возможностям Microsoft Windows, позволяя приложению тесно взаимодействовать с операционной системой и пользоваться всеми преимуществами платформы Windows, например прозрачно работать с COM-объектами, службами Window (без S?) (в частности, Active Directory), кроме того, пользователь имеет дело с удобным и привычным графическим интерфейсом Windows. Разумеется, при использовании Java можно «докопаться» до возможностей платформы, но зачастую это требует написания большого количества нетривиального кода.

Еще одно идеологическое различие между Java и .NET состоит в том, что первая изначально создавалась для одного языка программирования — Java. В то время как .NET была спроектирована с учетом поддержки неограниченного количества языков программирования за счет реализации общеязыковых сред инфраструктуры CLI и выполнения CLR, накладывающих определенные правила на используемые в языке типы и вызовы функций, позволяющие взаимодействовать коду, написанному на разных языках программирования, поддерживающих CLI. Таким образом, на настоящий момент существует порядка 30 известных реализаций языков программирования для платформы .NET, в то время как поддержка других языков на Java находится на этапе зарождения и весьма скудна.

В контексте применения .NET или Java в решениях для бизнеса интеграция с наиболее распространенным офисным пакетом является весьма существенным аргументом. За счет использования привычного интерфейса и приложений, входящих в Microsoft Office, можно в значительной степени упростить работу конечного пользователя с системами документооборота и управления ресурсами. Благодаря возможности прозрачно использовать COM-объекты, .NET приложения могут с легкостью взаимодействовать с объектной моделью Microsoft Office. А начиная с версии Microsoft Office 2003 можно создавать расширения для Microsoft Office с помощью .NET.

Не менее важна доступность средств разработки. Для .NET имеется интегрированная среда разработки Visual Studio, позволяющая писать приложения, задействуя весь функционал платформы .NET и Microsoft Windows. В Visual Studio существуют встроенные средства для отладки настольных и Web-приложений, включая отладку кода клиентских скриптовых языков, выполняемых в Web-браузере, и отладку приложений для мобильных устройств с использованием программных эмуляторов. Более того, есть несколько редакций среды разработки Visual Studio, обладающие расширенным набором возможностей для различных ролей участников проекта, таких как архитектор, разработчик, специалист по тестированию и разработчик баз данных. Вместе с серверным решением для обеспечения процесса разработки программного обеспечения Team Foundation Server данные инструменты позволяют писать высококачественные приложения в весьма сжатые сроки.

Модели компиляции и выполнения Java и .NET приложений достаточно схожи – в обоих случаях в результате компиляции получается некоторый промежуточный код (байт-код в Java и код на промежуточном языке MSLI в .NET), который затем обрабатывается средой выполнения. Для повышения производительности используется модель компиляции в машинный код по мере необходимости — just-in-time compilation (JIT). Производительность .NET-приложений для большинства задач значительно превышает производительность Java-приложений за счет того, что в .NET компиляция JIT реализована на уровне методов, а в Java — на уровне классов. Даже если для работы приложения требуется вызов лишь одного определенного метода в классе, то в случае с Java произойдет полная компиляция промежуточного кода класса, что приводит к выполнению лишней работы и снижению общей производительности.

Платформа .NET является, пожалуй, самой быстроразвивающейся платформой для разработки приложений на настоящий момент. Компания Microsoft инвестирует огромные средства в развитие новых технологий, призванных унифицировать доступ к данным, создание и взаимодействие с распределенными приложениями, разработку богатых пользовательских интерфейсов и приложений, ориентированных на решение бизнес-задач. Недавно были выпущены новые компоненты под общим названием .NET Framework 3.0 (www.netfx3.com), включающие в себя:
Windows Presentation Foundation (WPF) – компоненты для создания графического интерфейса с использованием специального XML-подобного языка XAML, призванные сделать возможной реализацию самых смелых идей в области дизайна графического интерфейса пользователя, а также максимально разделить работу дизайнера интерфейса от работы разработчика;
Windows Communication Foundation (WCF) – компоненты для унификации создания распределенных приложений, позволяющие абстрагироваться от конкретного протокола и формата передачи данных, используя единую модель для создания приложений, взаимодействующих между собой с применением различных технологий;
Windows Workflow Foundation (WF) – набор компонентов для программной реализации бизнес-процессов, предоставляющих возможность изменения бизнес-процесса специалисту предметной области, не обладающему знаниями технологий разработки.

Для облегчения разработки Ajax-приложений были выпущены Microsoft Ajax Extensions (http://ajax.asp.net), позволяющие легко внедрить Ajax-функциональность в существующие Web-приложения на платформе .NET, а также в значительной степени упростить создание клиентских скриптов, выполняющихся в Web-браузере. Кроме того, в недалеком будущем планируется выпуск финальной версии революционной технологии, унифицирующей доступ к данным за счет использования интегрированного языка запросов (LINQ), который позволит единообразно связать источники реляционных данных с объектной моделью приложения (http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx). Конечно, уже имеется большое количество наработок по взаимодействию Java-приложений с компонентами .NET 3.0, а также Ajax-библиотеки для Java и множество решений третьих фирм для доступа к данным. Однако в случае.NET все решения поставляются одним производителем вместе с самой платформой и полноценно интегрируются между собой, чего не всегда можно достичь при использовании набора компонентов сторонних производителей для Java.

Поскольку большинство современных настольных компьютеров работают под управлением операционной системы Microsoft Windows, сообщество пользователей Windows и разработчиков для этой операционной системы воистину огромно. В связи с этим регулярно появляются оригинальные решения сообщества, которые могут быть интегрированы с решениями, создаваемыми для Windows. В то же время значительную часть сообщества разработчиков на Java составляют приверженцы UNIX/Linux-платформ, многие из которых сильно различаются между собой. Поскольку платформа .NET тесно интегрируется с Windows, то опыт, накопленный сообществом пользователей Windows, полноценно переносится на базу .NET. Для разработчика под Windows в значительной степени проще перейти к использованию платформы .NET, чем Java, и возникает банальная проблема поиска кадров и обучения сотрудников при попытке создавать и поддерживать Java-приложения на платформе Windows. Преимущества Microsoft-ориентированной инфраструктуры в этом случае связаны даже не столько с опытом пользователя операционной системы Windows, сколько с наличием полного спектра легко интегрируемых решений Microsoft – от офисных пакетов, серверов приложений и баз данных до мощных CRM- и ERP-приложений.

В итоге на сегодняшний день .NET позволяет максимально повысить производительность разработчика, что в конечном итоге сказывается на возможностях скорейшего реагирования ИТ-инфраструктуры на быстро меняющиеся условия бизнеса. И .NET превалирует над Java в сегменте малого и среднего бизнеса.
Но жесткая конкуренция между Java и Microsoft .NET идет на пользу обеим платформам: развиваются базовые функции платформ, вводятся улучшения в языки программирования и создаются новые технологии. Так, язык Java заимствовал у языка C# расширенные возможности цикла for (foreach в C#), автоматическую упаковку и распаковку объектов, типобезопасную реализацию перечислений, переменное количество аргументов функций (ключевое слово params в C#) и мета-атрибуты. В свою очередь платформа .NET заимствует и улучшает идеи, появившиеся при разработке Java.

 

Источник: www.itspecial.ru

«Мы должны образовывать людей таким образом, чтобы общества не раскалывались на маленькие группы, воюющие друг с другом»

Митио Каку

Научный подход на Google Play

Файлы

Наука и миф

Псевдонаука и паранормальные явления

XXI век в зеркале футурологии

Мозг и душа