Сравнение платформ Java и .NET
Эту статью необходимо обновить . ( октябрь 2013 г. ) |
Сравнение платформ Java и .NET .
Юридические вопросы
[ редактировать ].СЕТЬ
[ редактировать ]Проект Mono направлен на то, чтобы избежать нарушения каких-либо патентов или авторских прав, и в случае успеха проект можно безопасно распространять и использовать под лицензией GPL . 2 ноября 2006 г. Microsoft и Novell объявили о совместном соглашении, в соответствии с которым Microsoft пообещала не подавать в суд на Novell или ее клиентов за нарушение патентных прав. [1] Согласно заявлению в блоге руководителя проекта Mono Мигеля де Икаса , это соглашение распространяется только на Mono для разработчиков и пользователей Novell. [2] Из-за возможной угрозы патентов Microsoft FSF рекомендует людям избегать создания программного обеспечения, зависящего от Mono или C# . [3] [4]
Соглашение Microsoft-Novell подверглось критике со стороны некоторых представителей сообщества открытого исходного кода , поскольку оно нарушает принципы предоставления равных прав всем пользователям конкретной программы (см. Соглашение с Microsoft и Mono и патенты Microsoft ).
В ответ на соглашение между Microsoft и Novell Фонд свободного программного обеспечения пересмотрел свою Стандартную общественную лицензию GNU , чтобы закрыть лазейку, используемую Microsoft и Novell для обхода очень строгих и защитных положений GPL в отношении патентных сделок (которые Microsoft считает ограничительными). [5] FSF также заявил, что, продавая купоны на программное обеспечение Novell для Linux (механизм, с помощью которого Microsoft обошла лицензию GNU), он считает, что Microsoft является поставщиком Linux и, таким образом, подчиняется полным условиям, изложенным в GPL. [5]
Рынок .NET начал меняться в 2013 году, когда Microsoft решила открыть исходный код многих своих основных технологий .NET Framework под лицензией Apache . [6] еще больше средств было пожертвовано недавно созданному .NET Foundation в 2014 году. [7] Технологии с открытым исходным кодом включают ASP.NET MVC , Entity Framework , Managed Extensibility Framework, Roslyn инфраструктуру компилятора как услуги (вместе с компиляторами C# и Visual Basic .NET ), F# , компилятор функционального языка [8] и многое другое. [9] Microsoft и Xamarin объявили о сотрудничестве с намерением повысить кроссплатформенную доступность .NET в Mac OS , Linux и мобильных устройствах . [10]
В июне 2016 года Microsoft выпустила .NET Core 1.0, представляющую собой кроссплатформенную среду с открытым исходным кодом и упрощенную версию чистой реализации Windows. [11]
Традиционные компьютерные приложения
[ редактировать ]Настольные приложения
[ редактировать ]Хотя библиотеки Java AWT ( Abstract Window Toolkit ) и Swing не стесняются своих функций, Java изо всех сил пытается закрепиться на рынке настольных компьютеров. компания Sun Microsystems также работала медленно. По мнению некоторых, [ нужна ссылка ] продвигать Java среди разработчиков и конечных пользователей таким образом, чтобы сделать ее привлекательным выбором для настольного программного обеспечения. Даже такие технологии, как Java Web Start , которые имеют мало аналогов среди конкурирующих языков и платформ, практически не продвигаются. [ нужна ссылка ]
Выпуск версии Java 6.0 11 декабря 2006 г. вновь привлек внимание к рынку настольных компьютеров благодаря обширному набору новых инструментов для более тесной интеграции с настольными компьютерами. На конференции JavaOne 2007 года Sun сделала дополнительные объявления, связанные с настольными компьютерами, в том числе новый язык, предназначенный для замены Adobe Flash ( JavaFX ), новый облегченный способ загрузки JRE, при котором первоначальный объем данных сокращается до менее 2 МБ , а также новый акцент на мультимедийные библиотеки.
Альтернативой AWT и Swing является Standard Widget Toolkit ( SWT ), который изначально был разработан IBM и теперь поддерживается Eclipse Foundation . Он пытается добиться повышения производительности и визуализации настольных приложений Java, полагаясь, где это возможно, на базовые собственные библиотеки.
В Windows .NET от Microsoft — это популярная разработка для настольных компьютеров, предоставляющая как Windows Forms (облегченную оболочку Win32 API), Windows Presentation Foundation, так и Silverlight. Благодаря интеграции .NET в платформу Windows приложения .NET становятся первоклассными элементами в среде Windows с более тесной интеграцией с ОС и собственным внешним видом по сравнению с Java Swing.
За пределами Windows Silverlight можно переносить на рабочий стол Mac OS X. Mono также становится все более распространенным в системах с открытым исходным кодом и бесплатном программном обеспечении из-за его включения. [12] во многих средах рабочего стола Linux.
Серверные приложения
[ редактировать ]Вероятно, это та область, в которой две платформы наиболее близки к тому, чтобы считаться соперниками. Java через свою платформу Java EE (также известную как Java Platform Enterprise Edition) и .NET через ASP.NET конкурируют за создание динамического веб-контента и приложений.
Обе платформы хорошо используются и поддерживаются на этом рынке. Из 1000 крупнейших веб-сайтов примерно 24% используют ASP.NET, а также 24% используют Java, тогда как из всех веб-сайтов примерно 17% используют ASP.NET и 3% используют Java. [13]
Некоторые лицензионные соглашения Oracle для Java EE, связанные с Java, определяют некоторые аспекты платформы Java как коммерческую тайну. [14] и запретить конечному пользователю вносить вклад в стороннюю среду Java. В частности, по крайней мере одна действующая лицензия на пакет разработки Oracle Java EE содержит следующие условия: «Вы можете создать одну архивную копию Программного обеспечения, но не имеете права копировать, изменять или распространять Программное обеспечение иным образом». — «Если правоприменение не запрещено действующим законодательством, вы не имеете права декомпилировать или перепроектировать Программное обеспечение». — «Вы не имеете права публиковать или предоставлять результаты каких-либо эталонных или сравнительных тестов Программного обеспечения какой-либо третьей стороне без предварительного письменного согласия Oracle». — «Программное обеспечение является конфиденциальным и защищено авторским правом». [14] Однако, хотя на программное обеспечение Oracle распространяются вышеуказанные условия лицензии, ссылка на API Oracle Java EE была реализована под лицензией с открытым исходным кодом проектами WildFly (первоначально JBoss) и JOnAS.
от Microsoft Реализация ASP.NET не является частью стандартизированного интерфейса командной строки, и хотя среда выполнения и инструменты разработки Microsoft не подпадают под действие соглашений о конфиденциальности, сопоставимых с Java EE, официальные инструменты Microsoft не являются открытым исходным кодом или свободным программным обеспечением и требуют серверов Windows. Однако реализация ASP.NET кроссплатформенного бесплатного программного обеспечения является частью проекта Mono (за исключением веб-частей и улучшений веб-служб ). [15] Mono поддерживает ASP.NET 4.0, включая веб-формы, Microsoft AJAX и ASP.NET MVC. [16]
Встроенные приложения
[ редактировать ]Мобильные приложения
[ редактировать ]для мобильных приложений Google Популярная платформа Android основана на Java. Google внедрила специальную виртуальную машину под названием Dalvik для оптимизации выполнения кода Java на мобильных устройствах.
Oracle предоставляет Java ME ; эталонная реализация для OEM-поставщиков мобильных устройств. Java ME состоит из различных профилей, которые являются подмножествами среды рабочего стола Java, с дополнительными библиотеками, предназначенными для разработки мобильных устройств и телеприставок. Java ME имеет очень большую базу на рынках мобильных телефонов и КПК , и только самые дешевые устройства теперь лишены KVM (урезанная JVM для использования на устройствах с ограниченной вычислительной мощностью). Программное обеспечение Java, включая многие игры, является обычным явлением.
Хотя многие функциональные телефоны включают в себя JVM, они не всегда широко используются пользователями (особенно в Южной Африке). Первоначально Java-приложения на большинстве телефонов обычно состояли из систем меню, небольших игр или систем для загрузки мелодий звонка и т. д. Однако более мощные телефоны все чаще продаются с предварительно загруженными простыми приложениями, такими как словари переводов, отображение мирового времени (темнота/темнота). свет, часовые пояса и т. д.) и калькуляторы. Некоторые из них написаны на Java, хотя, вероятно, неизвестно, как часто владельцы телефонов на самом деле их используют.
В настоящее время Microsoft поставляет .NET Compact Framework , которая работает на Windows CE и мобильных устройствах, приставках и КПК, а также на Xbox 360 . Microsoft также предоставляет .NET Micro Framework разработчикам встраиваемых систем с ограниченными ресурсами.
В качестве альтернативы Novell лицензирует встраиваемые версии Mono третьим лицам для использования в их устройствах, а Xamarin коммерчески распространяет платформу MonoDroid и MonoTouch для разработки под Android и iPhone соответственно.
Windows Phone 7 использует Silverlight для собственных приложений, но в Windows Phone 8 основными языками являются C# и XAML.
Технологии домашних развлечений
[ редактировать ]Java нашла рынок цифрового телевидения, где ее можно использовать для предоставления программного обеспечения, которое дополняет программирование или расширяет возможности данной телеприставки . TiVo , например, имеет средство под названием « Home Media Engine », которое позволяет Java TV передавать программное обеспечение на соответствующее устройство TiVo в качестве дополнения к программированию или предоставления дополнительных функций (например, персонализированные биржевые котировки в программе деловых новостей).
Вариант Java был принят в качестве официального программного инструмента для использования на технологии оптических дисков следующего поколения Blu-ray через интерактивную платформу BD-J . Это будет означать, что интерактивный контент, такой как меню, игры, загружаемые материалы и т. д. на всех оптических дисках Blu-ray, будет создаваться на платформе Java.
Вместо использования Java, HD DVD (несуществующий преемник DVD высокой четкости ) использовал технологию HDi, совместно разработанную Disney , которая Microsoft и была основана на XML , CSS , JavaScript и других технологиях, сравнимых с теми, которые используются в стандартной сети. браузеры .
платформы BD-J API более обширен, чем у его конкурента iHD, и насчитывает предположительно 8000 методов и интерфейсов, в отличие от 400 у iHD. [17] И хотя Microsoft продвигает уровень представления XML iHD, включая его в Windows Vista, iHD по-прежнему является новичком в секторе рынка, где технологии Java уже стали обычным явлением. [18]
Однако тот факт, что от формата HD DVD отказались в пользу Blu-ray, означает, что HDi больше не поддерживается ни в одном формате оптических дисков , что делает формат BD-J явным победителем. [19]
Включение среды выполнения в операционные системы
[ редактировать ].NET/Моно
[ редактировать ]В Windows Microsoft продвигает .NET как свою флагманскую платформу разработки. [20] путем включения среды выполнения .NET в Windows XP с пакетом обновления 2 и 3, Windows Server 2003, Windows Vista, Windows Server 2008 и Windows 7. Microsoft также бесплатно распространяет среду разработки Visual Studio Express, [21] и среду разработки Visual Studio Community бесплатно, с ограниченным использованием для организаций. [22]
Среда выполнения .NET Framework 3.5 не предустановлена в версиях Windows до Vista SP1 и должна быть загружена пользователем, что подвергалось критике из-за ее большого размера (загрузка 65 МБ для .NET 3.5). [23] [24]
Хотя ни .NET, ни Mono не устанавливаются вместе с Mac OS X «из коробки», проект Mono можно загрузить и установить отдельно бесплатно для любого пользователя Mac, который хочет создать или запустить программное обеспечение C# и .NET. По состоянию на 13 мая 2008 г. System.Windows.Forms 2.0 компании Mono является полной API (содержит 100% классов, методов и т. д. в Microsoft System.Windows.Forms 2.0); также System.Windows.Forms 2.0 изначально работает в Mac OS X.
C# и CLI включены и используются в ряде операционных систем на базе Linux и BSD посредством включения бесплатного программного обеспечения Mono Project. [25] [26] [27]
В результате включения сред выполнения .NET или Mono в дистрибутивы Windows и Linux приложения без графического пользовательского интерфейса, использующие программные интерфейсы, общие для .NET и Mono, могут быть разработаны на C# или любом другом языке .NET, а затем развертывается во многих операционных системах и процессорных архитектурах с использованием среды выполнения, доступной как часть установки операционной системы. [28] [29] [27] И Microsoft .NET, и проект Mono имеют полную поддержку стандартизированного Ecma и ISO языка C# и среды выполнения .NET, а многие из нестандартизированных программных интерфейсов .NET Microsoft реализованы или находятся в стадии разработки в Mono. [30] но каждая среда включает в себя множество компонентов, которые не были реализованы в другой.
Ява
[ редактировать ]Ни одна текущая версия Windows не поставляется с Java; они прекратили поставки с Windows XP SP1a. Однако Microsoft в настоящее время поддерживает и распространяет Java.
Java была предварительно установлена на всех новых компьютерах Apple, начиная с Mac OS X 10.0 и заканчивая 10.6 , после чего Java 6 стала дополнительной загрузкой Apple. [31] [32] Java 7 и более поздние версии предоставляются Oracle. [33]
Java предустановлена во многих коммерческих версиях Unix, в том числе от Hewlett Packard , IBM и Oracle . По состоянию на июнь 2009 года Debian , [34] Федора 9 , [35] Мандрива , [36] OpenSUSE , [37] Дополнительное программное обеспечение Slackware , [38] и Убунту 8.04 [39] Дистрибутивы доступны с OpenJDK, полностью основанным на бесплатном коде с открытым исходным кодом . [40] С июня 2008 года OpenJDK прошел все тесты совместимости с Java SE 6 JCK и может претендовать на звание полностью совместимой реализации Java 6. [41] [42] OpenJDK может запускать сложные приложения, такие как Eclipse , GlassFish , WildFly или Netbeans .
Лицензия дистрибьютора операционной системы для Java (DLJ) [43] была инициативой Sun, направленной на облегчение проблем с распространением операционных систем на базе Linux или OpenSolaris.
Если Java не установлена на компьютере по умолчанию, она может быть загружена пользователем в виде веб-плагина. Процесс веб-плагина подвергся критике из-за размера плагина Java. В отличие от других плагинов, загрузка Java представляет собой полноценную среду выполнения, в которой можно запускать не только апплеты, но и полноценные приложения, а также динамические приложения WebStart. Из-за этого воспринимаемый объем загрузки больше, чем у некоторых веб-плагинов. Однако по сравнению с Java другие популярные плагины для браузера имеют больший размер: Java 6 JRE — 13 МБ, Acrobat Reader — 33 МБ, QuickTime — 19 МБ, Windows Media Player — 25 МБ, среда выполнения .NET Framework 3.0 — 54 МБ, а Размер среды выполнения .NET Framework 3.5 составляет 197 МБ (это единый пакет для x86, x64 и IA-64; каждая часть имеет примерно 60 МБ).
На мероприятии JavaOne в мае 2007 года компания Sun объявила, что проблемы развертывания Java будут решены в двух крупных обновлениях в течение срока службы Java 6 (изменения не будут перенесены в Java 7). К ним относятся:
- Представлена новая потребительская версия JRE с первоначальным объемом 2 МБ и возможностью загрузки остальных 9 МБ по разделам с использованием методологии по требованию.
- Разработка встроенного кроссплатформенного кода JavaScript , который можно использовать с веб-страницы для установки необходимой JRE для данного апплета или расширенного интернет-приложения , если это необходимо. запуска
- Улучшение поддержки автоматической загрузки обновлений в JRE.
- Поддержка предварительной загрузки JRE, поэтому апплеты и приложения, написанные на Java, запускаются практически мгновенно.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Microsoft и Novell объявляют о широком сотрудничестве в области совместимости и поддержки Windows и Linux.
- ^ «Заявление в блоге руководителя проекта Mono Мигеля де Икасы относительно патентной защиты Mono» . 04.11.2006 . Проверено 6 ноября 2006 г.
- ^ Столлман, Ричард (26 июня 2009 г.). «Почему свободное программное обеспечение не должно зависеть от Mono или C#» . Фонд свободного программного обеспечения . Проверено 2 июля 2009 г.
Мы должны систематически стремиться к тому, чтобы как можно меньше зависеть от свободных реализаций C#. Другими словами, мы должны отговаривать людей писать программы на C#. Поэтому нам не следует включать реализации C# в стандартную установку дистрибутивов GNU/Linux, и мы должны по возможности распространять и рекомендовать приложения, отличные от C#, а не сопоставимые приложения C#.
- ^ «Пустые обещания Microsoft» . Фонд свободного программного обеспечения . 16 июля 2009 г. Проверено 3 августа 2009 г.
Пока этого не произойдет, разработчикам свободного программного обеспечения не следует писать программы, зависящие от Mono. Реализации C# по-прежнему могут быть атакованы патентами Microsoft: «Обещание сообществу» предназначено для того, чтобы дать компании несколько возможностей, если она этого захочет. Мы не хотим, чтобы тяжелая работа разработчиков была потеряна для сообщества, если мы потеряем возможность использовать Mono, и до тех пор, пока мы полностью не отменим патенты на программное обеспечение, использование другого языка — лучший способ предотвратить это.
- ^ Перейти обратно: а б Microsoft бросает вызов свободному миру.
- ^ Microsoft по-прежнему открывает источники большего количества технологий, чем многие думают.
- ^ Microsoft открывает исходные коды большего количества своих технологий .NET.
- ^ Фонд программного обеспечения F #
- ^ Проекты .NET Foundation
- ^ «Xamarin сотрудничает с Microsoft, чтобы обеспечить повсеместное распространение .NET» . Архивировано из оригинала 1 сентября 2014 г. Проверено 29 августа 2014 г.
- ^ ядро: Домашний репозиторий для .NET Core , .NET Foundation, 14 января 2018 г. , получено 14 января 2018 г.
- ^ Моно-приложения? Много!, OSNews
- ^ «Использование серверных языков программирования с разбивкой по рейтингу» . W3Techs.com . Проверено 30 мая 2015 г.
- ^ Перейти обратно: а б Java EE SDK 5, обновление 2 Нет страницы загрузки JDK (ссылка на лицензионное соглашение) [ постоянная мертвая ссылка ]
- ^ Моно: ASP.NET
- ^ Моно: ASP.NET
- ^ «HD-DVD против Blu-ray, раунд 2» . Архивировано из оригинала 8 марта 2007 г. Проверено 23 апреля 2007 г.
- ^ Войны форматов — Blu-ray против HD DVD
- ^ Захаров-Ройтт, Алекс (21 февраля 2008 г.). «С уходом HD DVD уровень интерактивности Microsoft HDi теряется, но имеет ли это значение?» . itwire.com . Проверено 27 августа 2008 г.
Хотя многие утверждали, что создать интерактивность с помощью HDi было намного проще, чем с использованием BD-J, тот факт, что HD DVD увидит несколько будущих выпусков после 2008 года, означает, что, какова бы ни была позиция энтузиастов относительно относительных преимуществ HDi по сравнению с BD-J, BD-J Интерактивный формат J стал победителем
[ мертвая ссылка ] - ^ Статья Microsoft, в которой C# упоминается как «флагманский» язык.
- ^ «Визуальная Студия Экспресс» . Майкрософт . Архивировано из оригинала 12 июня 2011 г. Проверено 3 декабря 2010 г.
- ^ Сообщество Visual Studio
- ^ «Дорогой Майкрософт» . 09.01.2008. Архивировано из оригинала 5 февраля 2008 г. Проверено 3 февраля 2008 г.
- ^ «.NET framework 3.5, размер 166 МБ!» . 10 ноября 2007 г. Архивировано из оригинала 5 февраля 2008 г. Проверено 3 февраля 2008 г.
- ^ «Fedora поддерживает Mono — ZDNet UK» . Архивировано из оригинала 27 декабря 2007 г. Проверено 19 апреля 2007 г.
- ^ Моно-пакеты Debian
- ^ Перейти обратно: а б Arc.Ask3.Ru использует Mono; Mono интегрирован в Ubuntu/Debian - OSNews.com
- ^ «Fedora ловит моно» . Архивировано из оригинала 5 апреля 2007 г. Проверено 19 апреля 2007 г.
- ^ «Выпущена SUSE 10.1» . Архивировано из оригинала 11 декабря 2006 г. Проверено 19 апреля 2007 г.
- ^ «Моно – Планы» . Проверено 23 декабря 2008 г.
- ^ «Внутри Mac OS X 10.7 Lion: отсутствует среда выполнения Front Row, Rosetta и Java» . AppleInsider. 26 февраля 2011 г.
- ^ «Загрузки Java» . Apple Инк.
- ^ «Информация и системные требования для установки и использования Oracle Java в Mac OS X» . Корпорация Оракл.
- ^ «Пакет: openjdk-6-jdk» . debian.org. 14 февраля 2009 г. Проверено 16 февраля 2009 г.
- ^ Уэйд, Карстен (13 марта 2008 г.). «OpenJDK в Fedora 9!» . redhatmagazine.com. Архивировано из оригинала 21 апреля 2008 г. Проверено 5 апреля 2008 г.
Томас Фитцсиммонс обновил исходные страницы примечаний к выпуску Fedora 9, указав, что Fedora 9 будет поставляться с OpenJDK 6 вместо реализации OpenJDK 7 IcedTea. Fedora 9 (Sulphur) должна быть выпущена в мае 2008 года.
- ^ Java-пакет Mandriva
- ^ «Пакет: OpenJDK» . opensuse.org. Архивировано из оригинала 27 мая 2009 года . Проверено 1 июня 2009 г.
- ^ «Пакет Slackware Java» . Архивировано из оригинала 10 июня 2008 г. Проверено 31 октября 2018 г.
- ^ «openjdk-6 в Ubuntu» . Проверено 19 апреля 2008 г.
- ^ Рейнхольд, Марк (24 апреля 2008 г.). «Нельзя терять ни минуты!» . Архивировано из оригинала 29 апреля 2008 г. Проверено 19 апреля 2008 г.
- ^ Шарплс, Рич (19 июня 2008 г.). «Java наконец стала свободной и открытой» . Архивировано из оригинала 20 июня 2008 г.
- ^ Ангел, Лилиан (13 марта 2008 г.). «OpenJDK заменит IcedTea в Fedora 9» . Архивировано из оригинала 18 апреля 2008 г. Проверено 5 апреля 2008 г.
- ^ Лицензия дистрибьютора операционной системы для Java (DLJ) [ постоянная мертвая ссылка ]
Внешние ссылки
[ редактировать ]- Переход на C# и .NET Framework в MSDN
- ECMA-335 Common Language Infrastructure (CLI), 4-е издание (июнь 2006 г.) — бесплатная загрузка стандарта Ecma CLI.
- ISO/IEC 23271:2006 Разделы I–VI Common Language Infrastructure (CLI) — официальный стандарт ISO/IEC CLI.