.NET как альтернатива Java
. NET Framework (произносить Dotnet) - среда выполнения программного обеспечения, созданная Microsoft. Изначально она работала на Windows, но стала открытой и совместимой с Linux. .NET предлагает библиотеку функций для графических интерфейсов, доступа к данным, сетей и веб-приложений, компиляторов и виртуальной машины. Она позволяет запускать приложения для обычного рабочего стола, а также приложения Modern UI, которые имеют WinRT в бэкенде.
12 ноября 2014 года компания объявила, что делает .NET открытым исходным кодом (под лицензией MIT) и отныне будет работать также и в Linux и MacOS. .NET - это три различных продукта, все три из которых работают на языке C #:
-
.NET
- Framework, оригинал, который работает только в Windows.
- .NET Core, многоплатформенная версия, разрабатываемая, но уже пригодная для серверных приложений.
- Mono, версия для рабочего стола или мобильных устройств Android или iOS, которая постепенно делится кодом ядра .NET .
С введением .NET 5 в 2019 году осталась только одна платформа, работающая на Windows, Linux, Mac, Android и iOS. Она заменяет .NET Framework в Windows, .NET Core и Mono и других системах.

Программиста в первую очередь интересует выбор языка программирования и инструментов для его компиляции, а также доступных API для реализации приложения. На .NET работают следующие языки: Ada, Basic, C #, C++, Cobol, Eiffel, Fortran, Haskell, Oberon, Pascal, Perl, Python, Ruby, Scheme, SmallTalk. Смотрите полный список.
Переход на открытый источник и .NET Core
В апреле 2014 года Microsoft решила сделать .NET действительно открытым исходным кодом и сделать его под эгидой независимого фонда - фонда .NET. Она предоставляет исходный код компиляторов C # и Visual Basic для различных систем, используя код Microsoft и код Mono. ASP.NET также становится открытым исходным кодом. Для робототехники Micro Framework, также будет управляться фондом и по лицензии Apache .
В ноябре 2014 года Microsoft сама носит .NET под Linux и Mac OS. Это включает ядро и фреймворк .NET, помимо ASP.NET и компилятора C #. Время выполнения, то есть JIT, запланировано на GitHub на 2015 год .
Даже Visual Studio становится бесплатной с версией Community.
Почему этот переход на open source? Сделать .NET более открытым будет много преимуществ :
- Разработка их платформы Azure, поддерживающей Linux, которая является источником значительного дохода в будущем, поэтому все крупные игроки в Сети запустили свои собственные «облачные» версии.
- Совместимость систем позволяет продвигать такие продукты Microsoft, как сервер, база данных и другие.
- Привлечь больше разработчиков на Windows Phone.
В 2015 году Microsoft представила .NET core, модульную архитектуру для замены .NET framework (которая фактически составляла несколько фреймворков в зависимости от типов систем). Это обеспечивает единую библиотеку классов для всех типов устройств и является открытым исходным кодом. Например, это позволяет реализовать ASP.NET в Linux.
В 2018 году Microsoft анонсировала поддержку Windows Form, WPF и UWP XAML в .Net Core 3. Это делает .Net Core преемником .Net Framework с тем преимуществом, что тебе не нужно устанавливать разные версии Framework в зависимости от приложения, как это было.
Но это касается только Windows: Windows Form зависит от Windows и не может быть полностью перенесен на Linux или Mac. Windows Forms зависит от GDI Plus и WPF DirectX, двух графических bibiliotheces, характерных для Windows. Однако предусматривается, что они будут открыты .
В мае 2019 года Microsoft объявляет о завершении работы .NET Framework, которая останется в версии 4, и которая заменяется на .NET 5, уникальную и универсальную версию, которая также заменяет .NET Core, Mono, Xamarin. Она также сможет создавать код WebAssembly .
Что такое open source в .NET
?На диаграмме ниже (от Microsoft, переведена на французский и серая по .fr) компоненты с открытым исходным кодом находятся на цветовом фоне, а на сером - закрытые компоненты, которые работают только под Windows.
С открытым исходным кодом:
- Платформа компиляции Roslyn для языков C #, Visual Basic со всеми инструментами. Языки компилируются в код IL, работающий на любой настольной и мобильной ОС .
- JIT нового поколения RyuJIT интерпретирует код IL и преобразует его в родной код. Это при первом исполнении, впоследствии коренной код выполняется напрямую. Работает на рабочем столе и сервере, но на 64-разрядном процессоре.
Он поддерживает протокол SIMD, который обеспечивает параллельное выполнение нескольких данных. - .NET Core - это модульная инфраструктура, работающая на всех платформах. Это набор классов, обеспечивающих все необходимые функции для приложений.
Это портативная и открытая альтернатива фреймворку 4.6 и предыдущим версиям под Windows. - Ядро CLR. Ядро выполнения приложений .NET, компилирует их в двоичный файл и связывает со временем выполнения.
- .NET Родной. Компилятор AOT, переводящий C # или любой другой язык в родной код. Приложение быстрее и компактнее, чем с JIT. Microsoft объявляет о повышении скорости на 40% помимо преимущества подавления зависимости от времени выполнения .
- ASP.NET. Фреймворк веб-приложений, работающих на сервере. Альтернатива PHP, Node, Rail и т.д.
- WCF (Windows Communication Fundation). Размещён на Гитубе 20 мая 2015 года. Это фреймворк веб-сервисов, платформа REST (среди прочих).
Закрыты:
- .NET Framework. Включена в Windows и на которой уже несколько лет базируются все приложения.
- Библиотеки фреймворка.
- WPF. В графическом интерфейсе Vista.
- Формы Windows. Графические компоненты.
- Универсальное приложение Windows. Модель приложения для магазина Windows Store (магазин мобильных устройств и «современные приложения» под Windows), который работает с .NET Native, а потому компилируется в бинарный код .
Стандартный API
В сентябре 2016 года Microsoft объявила о создании стандартного API для всех платформ .NET: .NET Framework, изначально разработанного для Windows, .NET Core, открытой и портативной версии, и Mono - версии Xamarin (сейчас принадлежит Microsoft) для мобильных ОС, кроме Windows.
Это соответствует следующей диаграмме:
Разработчикам на .NET Framework не нужно будет менять свой код: WPF или другие интерфейсов остаются прежними. Новый API позволяет расширить возможности .NET Core .
Нужно ли использовать Java или .NET
?Для создания приложения необходимо выбрать среду Java или .NET? Совместимость и богатство функций являются ключевыми для лучшего выбора, но необходимо учитывать и другие факторы .
С ноября 2008 года Java находится под лицензией Open Source, GPL хотя бы частично (это не относится к мобильной версии).
Несколько языков программирования переносятся на эту платформу и компилируются в байтекод, интерпретируемый JVM. Особенно Питон и Руби.
.NET теперь управляется независимым фондом, и с ноября 2014 года она стала такой же свободной, как Java (которая на самом деле не работает на мобильных устройствах). Также есть бесплатная Visual Studio для создания приложений для всех систем.
C # современнее и полнее Java, но не больше, чем Scala + Java-библиотека. Основное внимание будет уделяться тому, что предлагает библиотека для конкретного приложения. Преимущество Java в том, что старые приложения работают с каждым новым runtime, в то время как приложения .NET требуют точной версии runtime: тебя могут обязать установить на компьютер несколько старых версий...
XAML или JavaFX
У Mono и .NET был актив, это был Silverlight, веб-технология, использующая облегченную версию многопользователя .NET, и для которой Mono предлагала порт под Linux, Moonlight, который теперь заброшен.
Но Silverlight не работает в интерфейсе Modern UI Windows 8 и заменяется HTML 5 + JavaScript или XAML + C #. Будь то XAML или HTML 5, даже если принципы отличаются, легко описать интерфейс с декларативным языком .
Со своей стороны, Java имеет JavaFX, который поддерживают основные средства разработки (см. ниже).
Можно сказать, что обе платформы имеют эффективный инструмент для создания графического интерфейса пользователя и повышения производительности.
Издатели более чем неохотно используют Modern UI, вплоть до того, что игровой редактор запустил собственную версию Linux, чтобы не использовать её, SteamOS, а производители рассматривают возможность замены MUI на Android, работающую в Windows! Эта вторая инициатива выступает в пользу Java .
Mono и .NET Core
Mono - многоплатформенная версия, совместимая с .NET, изначально выполненная компанией Novell. После покупки Novell компанией Attachmate команда разработчиков Mono решила сформировать независимую компанию Xamarin. Она продолжает проект Mono и предоставляет коммерческие версии для основных смартфонов, включая Android и iOS.
Mono является портативным: он может работать на всех UNIX, MacOS и Windows. Преимущество Mono в том, что можно компилировать C # в родной код под этими системами точно из того же исходного кода, делать даже такие игры, как показывает Unity, которая специализировалась на игре под Mono. Они также работают на мобильных и игровых приставках .
.NET Core - новая версия платформы, запущенная Microsoft для создания ноутбука .NET, особенно для использования на сервере Linux в облачной службе Azure. Поэтому она конкурирует с Mono, но не предоставляет в 2018 году таких же возможностей. Для создания исполняемого файла всегда требуется Mono.
Оба фреймворка используют один и тот же компилятор Roslyn.
Mono и .NET Core теперь заменены единым фреймворком, .NET 5.
Мобильные телефоны
Даже если ты программируешь на рабочем столе, мобильные телефоны - это фактор, который нужно учитывать, потому что это плюс, если ты можешь использовать свой опыт в будущем на этих устройствах. Это также сфера, где предстоящие разработки будут наиболее важными
Платная виртуальная машина Java на мобильных устройствах вытесняется Dalvik - альтернативным интерпретатором для Android и также переносится на другие ОС.
Программировать в C # на Android можно благодаря порту .NET компанией Xamarin. Это язык предубеждений на Windows Phone .
Учитывая важность Android, Java - это тот язык, который преобладает над смартфонами. Реальная альтернатива здесь с Objective C от iOS.
В 2014 году Microsoft добавила в Visual Studio .NET Native: возможность компилировать исходный код на бинарном языке, для магазина Windows Store, так на мобильных устройствах или Windows 8. Таким образом, проходит этап компилирования байтекода при первом использовании приложения. Это экономит место, занимаемое файлами на промежуточном языке .
Заключение
Java имеет преимущества стажа: стабильность, сообщество, документация, многочисленные инструменты разработки, в то время как .NET предлагает больше открытости: почти все языки, новые идеи ,
В Windows .NET сохраняется для приложений на классическом рабочем столе, но заменяется подмножеством для иммерсивных приложений Modern UI. А MUI - привилегированный интерфейс для новых приложений Windows. Так что, если мы ищем универсальную переносимость, HTML 5 может быть решением на самом деле.
Если вы выбрали .NET, загрузите Visual Studio EDI для создания приложений.
А если ты нерешителен, знай, что АО перекомпилирует сборки .NET в JavaScript, PHP или Java...
Инструменты
LLILC. Компилятор MSIL на базе LLVM. Это и альтернатива JIT, и компилятор AOT.