Microsoft портирует .NET на Линукс и Макинтош и открывает исходный код всего стека.
Заголовок выглядит как какая-то первоапрельская
шутка или сатиристическая статья какого-нибудь the Onion:
Microsoft открывает доступ к ко всем исходникам .NET, Microsoft портирует .NET на Линукс и Mac OS; Microsoft запускает
бесплатные версии своих инструментов в противовес к своим же платным версиям.
Так или иначе... это все
правда.
Совсем недавно Microsoft объявила о радикальных изменениях
в своем подразделении инструментов разработки, эти изменения затмевают все
предыдущие аннонсы этого года вместе взятые. Самым важным из заявлений стало
пожалуй приверженность тспользования .NET на всех основных платформах. Microsoft самостоятельно
будет заниматся сопровожением .NET на Linux и Mac OS. Будет
увеличена кооперация с Xamarin,
для еще большего охвата мобильного сектора.
Из этих двух платформ, Linux очевидно
наиболее важная. Сегодня Mictosoft получает большую часть своих доходов от продажи своих
энтерпрайз-продуктов (SQL Server,
SharePoint, Exchange и
пр.) В случае запуска .NET на Linux,
сейчас становится возможным запуск этих продуктов на подавляющем большинстве
серверных платформ, За исключением Solaris, все платформы будут исеть возможность запускать эти
приложения без необходимости тратить деньги на покупку лицензий Microsoft Server.
Но еще более важным аспеком нежели серверные
преимущества являются преимущества получаемые в облачном аспекте. Виртуальные
машины в облаке, особенно в публичном облаке принципиально базируются на Linux. Виртуальные машины Window существуют,
но по гораздо более высокой цене. В связи с нынешним анонсом, приложения .NET могут
выполнятся где бы то ни было в облаке – или если перефразировать иначе – между
сервером и облаком – приложения могут выполнятся везде.
Портирование на Mac OS наименее
важное, и на Mac уже можно выполнять Windows достаточно хорошо (через Parallels или другую
технологию виртуализации). Я полагаю, что в данном случае преследуются цели
расширения десктопного покрытия .NET и привлечения большего числа
разработчиков, которым по некоторым причинам удобнее работать на MacBook. (Если вы попадете на
какую-либо конференцию, хакатон или опенсорс-мероприятие – большинство
ноутбуков которые вы увидите там очевидно будут MacBook’ами... я имею ввиду что их там
будет не просто много – их там будет болшинство)
Последняя часть пазла – это .NET на мобильных
устройствах, который потребует взаимодействия с Xamarin, который продает полезный
продукт позволяющий создавать приложения для разных платформ. В недавнем анонсе, Microsoft более
тесное сотрудничество с командой Xamarin. Все это выглядит хорошо, но все равно остается загадкой,
почему Microsoft до сих пор не купить Xamarin. Мне сложно найти ответ на этот вопрос.
Следует также отметить, что для разработки не
нативных мобильных приложений, в Visual Studio 2013 уже существует HTML Tools. Последующее обновление, неизбежно добавит еще больше
возможностей для Apache Cordova,
например эмулятор Andriod.
Больше всего выгоды от этих нововведений получат
разработчикии C#. Теоретически,
портируемость всех .NET языков будет одинаковой, но ни для кого не секрет что C# - язык #1 для данной платформы
(в данный момент Xamarin поддерживает только его и F#). Microsoft была прекрасным распорядителем языка, изменяя его аккуратно
и всегда к месту. Разработчики, которые его используют весьма лояльны и
довольны, что отличает его от большинства других языков, где наличие каких то
препятствий и недовольств гораздо больше.
Игроком, кто потеряет больше всех является
безусловно Java. Преимуществом
Java долгое
время была возможность выполнения приложений без дополнительной модификации или
перекомпиляции на всех основных платформах. Подобных возможностей не
предоставлял никто из конкурентов. Если у Microsoft получится портировать .NET на
другие платформы также эффективно как это сделано в Java, то очевидно JVM получит себе
очень серьезного соперника.
Более того, если это произойдет, то .NET будет
иметь ключевое преимущество для своих клиентов. Несмотря на стремительный
прогресс JavaFX основанной на Swing, Java не является основным десктопным решением для какой либо
платформы, в то время как .NET является стандартным для бизнес-приложений.
В течение многих лет C# был привлекательным языком для
разработчиков, но ограниченный одной родительской платформой Windows. С сегодняшним анонсом, весь мир
отрывается для .NET: почти
весь десктоп, серверное окружение и облачные окружения теперь в зоне доступа.
Это огромный шаг вперед для C#
и для .NET предоставляет огромный прогресс Microsoft перед
светлым будущим.