четверг, 27 ноября 2014 г.

Повсеместный .NET



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 перед светлым будущим.