Пока не появился финальный релиз Windows 10 и Visual Studio 2015, мы старались по максимуму подготовить читателя к тем фичам, которые были обещаны Майкрософтом нашему брату-программисту. И вот десятая винда вышла в свет, и ее уже установили миллионы пользователей, среди которых, как мне доподлинно известно, есть программисты :). А это значит, что пора сравнить ожидания и реальность и посмотреть на те возможности, которые нам теперь доступны: Xamarin, Apache Cordova, UWP, поддержка Python, .NET Native, DirectX 12, VS Code, Windows IoT и многое другое. Вперед!

Visual Studio 2015 — качай Community-версию!

А все потому, что Community-версия содержит практически все основные возможности профессиональной версии и их с избытком хватает для разработки любых приложений. Перед Express-версиями она выигрывает тем, что содержит весь комплект тулз и тебе не надо устанавливать отдельные наборы для Windows, Web и для Desktop.

Выбор устанавливаемых компонентов
Выбор устанавливаемых компонентов
 

Термоядерная кросс-платформенность

Разрабатывать кросс-платформенные мобильные приложения позволяет платформа Xamarin. С ее помощью можно создавать приложения для трех основных мобильных операционных систем (Windows Phone, iOS, Android), используя одну кодовую базу на языке C#. Таким образом, Xamarin служит слоем между C# и нативными API разнообразных операционных систем. Поддержка Xamarin в студии реализована через продукт Xamarin for Visual Studio, начальный выпуск которого включен в Visual Studio 2015. После создания проекта на платформе Xamarin будет предложено скачать дополнительные инструменты: Android SDK, Xamarin Studio, GTK# for .NET; а также добавить аккаунт.

Бесплатно, к сожалению, можно зарегистрировать только триальную лицензию, которая предполагает существенные ограничения: системный splash-экран без возможности его замены, работа приложения на устройстве только в течение суток. Тем не менее у разработчика есть все необходимые для разработки мобильных приложений инструменты, в том числе продвинутый конструктор макетов.

Эмулятор Xamarin
Эмулятор Xamarin

Еще один способ создания кросс-платформенных мобильных приложений заключается в использовании инструментов Apache Cordova, предоставляющих средства для создания мобильных приложений на веб-языках: HTML, CSS, JavaScript. Благодаря Apache Cordova программист может, используя JavaScript, разрабатывать приложения для Windows Phone, Android, iOS. При этом приложения будут иметь доступ к определенным API конкретной операционной системы. Это достигается подключением модулей, предназначенных для работы с каждой операционной системой.

Теперь, когда JavaScript — полноправный язык Visual Studio 2015 (Игорь Антонов, чувствую, в восторге ;). — Прим. ред.), студия предоставляет разработчику все содержащиеся в ней передовые возможности по написанию, редактированию и отладке кода, JavaScript IntelliSense, проводник DOM, консоль JavaScript, точки останова, контрольные значения, языковые стандарты, а также многое другое.

Эмулятор Apache Cordova
Эмулятор Apache Cordova

Кросс-платформенные приложения могут быть созданы и с помощью Visual C++. Пока только для двух платформ: Windows 10 и Android. Но Microsoft обещает добавить возможность разработки приложений на C++ для iOS из Студии в ближайшее время. По сути, C++ достаточно низкоуровневый язык, и написанный на нем код выполняется на большинстве платформ без дополнительных извращений. Поэтому большое значение имеют написанные на C++ библиотеки, которые используются в приложениях, предназначенных для разных платформ.

Visual Studio 2015 содержит шаблоны приложений на C++ как для Windows, так и для Android. В последнем случае создаются приложения Android Native Activity с использованием NDK. Такие приложения стоит создавать, только когда программе требуется работа с устройством на низком уровне, например в приложениях, в которых реализуются кастомные системы управления ресурсами, в том числе оперативной памятью, и графический пайплайн. В других же случаях рекомендуется использовать высокоуровневые средства, это упростит разработку, и к тому же скорость выполнения не будет уступать оптимизированному нативному коду.

Разрабатывая приложение для Android на C++ в Visual Studio, разработчик получает все преимущества последней: специфическое для платформы дополнение кода — IntelliSense анализирует соответствующие для конкретной платформы API и создает корректный код. Можно билдить сборки для ARM и x86. Тестировать приложение для Android реально как в эмуляторе от Microsoft, так и в родном эмуляторе из Android SDK.

Universal Windows Platform тоже позволяет собирать кросс-платформенные приложения. Она представляет собой среду выполнения наравне с Win32 и dotNet. Она работает на всех устройствах под управлением Windows 10, в том числе смартфонах и планшетах, игровых приставках и настольных компьютерах. В основе этой платформы находится общее ядро OneCore — одинаковое для всех устройств. Для разных платформ с разными возможностями и аппаратным обеспечением предлагаются разные пакеты SDK (расширения SDK), однако общий функциональный код, не обращающийся к специфическим аппаратным возможностям, один и идентично выполняется на различных девайсах.

Впервые данная платформа появилась под именем Metro в Windows 8. В то время универсальные приложения также могли выполняться на любом девайсе под управлением Windows 8, они имели строго полноэкранный вид. Для UWP существует специальный тип приложений — универсальное приложение для Windows. Приложения для универсальной платформы в большинстве своем распространяются через магазины Windows.

Эмулятор Windows 10
Эмулятор Windows 10

Еще один тип кросс-платформенных приложений, которые можно создавать в Visual Studio 2015, — это игры на двух движках: Cocos2d-X и Unity 3D. Можно прямо из окна создания нового проекта, перейдя в папку шаблонов Game, установить тулзу интеграции с соответствующим движком!

 

Поддержка интерпретируемого языка Python

Теперь писать код на Python можно в Visual Studio. Для подготовки и запуска программ на нем надо скачать интерпретатор. Это можно сделать, не выходя из Cтудии.

Поддержка Python в Cтудии организована с помощью PTVC (Python Tools for Visual Studio), которая разрабатывается в рамках проекта с открытым исходным кодом. Из ее особенностей можно отметить поддержку различных интерпретаторов (CPython, IronPython, IPython), продвинутую систему проектов, позволяющую управлять кодом проекта и разделять его, тестовый код, веб-страницы, JavaScript-код, сценарии сборки. PTVC содержит шаблоны для консольных приложений, веб-проектов, приложений Azure и прочие.

Особенного внимания заслуживает проект с открытым исходным кодом Azure SDK for Python — средство для использования служб облака Microsoft Azure и управления ими. Кроме Windows, пакет поддерживает Linux и OS X.

 

.NET 2015

.NET 2015 состоит из .NET Framework 4.6 и .NET Core.

.NET Framework 4.6 включает в себя обновленный ADO.NET, главное нововведение которой — это функция «Всегда зашифровано». Впервые она реализована еще во второй ознакомительной версии SQL Server 2016. Эта функция позволяет выполнять операции с зашифрованными данными, при этом ключ шифрования хранится в самом приложении в доверенной среде клиента, а не на сервере. Плюс к этому данные клиента надежно защищены от администраторов БД. Операции шифрования и расшифровки производятся на уровне драйвера, поэтому для обновления унаследованного программного обеспечения нужны минимальные усилия.

Новый 64-разрядный компилятор RuiJIT, включенный в .NET 4.6, обладает значительно большей производительностью. Скомпилированное с его помощью приложение будет выполняться в 64-разрядном процессе только в соответствующей по разрядности операционной системе.

Усовершенствованный загрузчик сборок экономит виртуальную память путем выгрузки сборок IL после загрузки NGEN. Это особенно полезно при использовании больших 32-разрядных приложений; дополнительно в таком случае экономится физическая память.

Расширились базовые классы: добавились новые коллекции, среди которых IReadOnlyCollection. Свойство CurrentCulture объекта CultureInfo теперь доступно для записи.

Сборщик мусора стал более интеллектуальным. С помощью метода GC.Collect(Int32, GLCollectionMode, Boolean, Boolean)* можно контролировать, какие операции над кучей больших или маленьких объектов выполняются: очистка и сжатие или только очистка.

Увеличилось количество типов с поддержкой SIMD: Matrix3x2, Matrix4x4, Plane, Quaternion, Vector2, Vector3 и Vector4, включенных в пространство имен System.Numerics. Их использование вкупе с новым компилятором, включающим аппаратное ускорение, заметно повышает производительность.

Криптографический API System.Security.Cryptography был дополнен поддержкой API CNG, реализующим алгоритм RSA, он находится в классе RSACng.

Поскольку в сетях могут быть компьютеры с разными операционными системами, в том числе UNIX-подобными, в структуру DateTimeOffset были добавлены функции для преобразования дат и времени в UNIX-формат и обратно.

В WСF (Windows Communication Foundation) добавлена поддержка новых версий SSL: TLS 1.1, TLS 1.2 при использовании NetTcp с безопасностью транспорта и проверкой подлинности клиента. Теперь можно выбрать, какой протокол использовать, или отключить старые, менее безопасные. В новой версии WCF пользователи могут отправлять сообщения, используя разные HTTP-подключения.


В Windows 10 увеличено число возможных параллельных подключений для сетевого взаимодействия по TCP (с 16 384 до 64 000). Раньше это ограничение могло снижать масштабируемость при высокой нагрузке.
 

.NET Native

.NET Native компилирует C# и/или Visual Basic.NET код не в промежуточные IL-сборки (которые при запуске программ преобразуются JIT-компилятором в двоичный код, что вызывает задержку перед запуском), а напрямую в машинный код. Стоит подчеркнуть, этот двоичный код предназначен для выполнения под управлением Windows 10 на любом поддерживаемом устройстве.

В итоге разработчик получает быстрее запускаемое и быстрее выполняемое приложение, продолжая использовать ресурсы фреймворка .NET, такие как сборщик мусора, автоматическое управление памятью и обработка исключений.

 

DirectX 12

Помимо возможности использования сторонних движков, о которых я уже писал выше, игроделов порадовала новая версия DirectX. Центральным компонентом DirectX 12 служит модуль трехмерной графики Direct3, который претерпел немало усовершенствований. Рассмотрим лишь некоторые из них.

Значительное повышение производительности в Direct3D 12 по сравнению с Direct3D 11 достигнуто благодаря смене модели программирования, позволившей приложению быть ближе к железу.

В Direct3D 12 появился набор перекрестных объектов, через которые можно управлять такими состояниями конвейера, как входной ассемблер, пиксельный шейдер, растеризатор и другие.

Так как многие GPU комбинируют состояния графического конвейера в одно аппаратное представление, а модель программирования Direct3D 11 позволяет изменять их только независимо, драйвер не дает выполнить действие, пока не будет известно состояние при отрисовке, поэтому происходят задержки. Direct3D 12 решает эту проблему, унифицируя большую часть состояния конвейера в неизменяемый объект состояния конвейера, в результате чего драйвер может немедленно выполнить полученные команды на GPU.

В отличие от Direct3D 11, где существует один ряд команд, в Direct3D 12 можно составить их список, который будет содержать все данные для выполнения на GPU, при этом драйвер может заранее просчитать необходимые для выполнения команды.

В связи с высоким интересом со стороны пользователей к двумерной графике в состав DirectX 12 включен новый модуль Win2D. Он произрастает из низкоуровневого API Direct2D, впервые появившегося в DirectX 11, из чего следует полная поддержка аппаратного ускорения. Direct2D довольно низкоуровневый компонент и используется исключительно в C++. С другой стороны, Win2D может применяться в управляемой среде на языке C#, для чего он и создан.

Приложения, использующие Win2D, предназначены для выполнения в среде исполнения Windows: UWP и приложения для магазина Windows, то есть в Windows 10 и 8.1. Кроме того, Win2D — это полностью открытый проект, размещенный, как и другие проекты от Microsoft с открытым исходным кодом, на GitHub, где любой разработчик может внести вклад в развитие проекта.

Заготовка приложения DirectX 12
Заготовка приложения DirectX 12
 

Windows App Studio

Появившееся год назад веб-приложение для разработки макетов программ под Windows 8.1 и Windows Phone 8 обзавелось возможностью создания эскизов для приложений под Windows 10. Кроме того, апгрейд добавил возможность обновления «живых плиток» пользовательского интерфейса, доступ к Xbox Music, использование Bing Maps, а также возможность сбора аналитических данных (в том числе количество запусков приложения и его сбоев/падений). Смоделировав эскиз (готовое приложение) в облаке, его можно скачать и доработать в Visual Studio 2015.

 

Visual Studio Code

Многие хотели бы использовать Visual Studio под Linux или OS X. Разумеется, портировать ее напрямую невозможно, поскольку VS корнями глубоко уходит в технологии Windows. Но ведь можно сделать под альтернативные платформы такой же удобный редактор кода! Ребята из Microsoft так и поступили, выпустив полнофункциональный VS Code сразу на трех платформах: Windows, Linux, OS X. К тому же он абсолютно свободный.

Это, конечно, не полнофункциональная Студия, в этом редакторе отсутствует половина возможностей и средств (по рассмотренным выше причинам), однако он обладает мощными средствами по управлению кодом проектов. В VS Code можно разрабатывать веб-приложения на ASP.NET и JavaScript. Кроме того, он позволяет использовать другие языки, входящие в полную версию VS. В VS Code включены IntelliSense и поддержка других средств современного программирования, в том числе интеграция с Git.

 

Windows IoT

Как ты знаешь, Windows 10 устанавливается даже на такие миниатюрные одноплатные девайсы, как Raspberry Pi 2 или Intel Minnowboard MAX. Конечно, в случае миниатюрных девайсов мы не видим перед собой полный аналог настольной операционки, однако она имеет ту же основу, то же ядро. Поэтому приложения для одноплатных устройств можно спокойно разрабатывать и тестировать под десктопной Windows 10, компилить под микропроцессорные архитектуры ARM и x86, а результат сдеплоить на устройство. Другими словами, с выпуском Windows 10 Microsoft удалось объединить различные устройства под одной операционной системой.

Благодаря Azure все интеллектуальные устройства на самом деле объединены, могут анализировать информацию и выполнять разные полезные действия. На данный момент известно, что планируется три редакции Windows для «Интернета вещей»: IoT Industrial — Intel-only, для банкоматов, торговых автоматов и подобного; Mobile Enterprise — ARM-система с поддержкой универсальных приложений (платформы UWP), оптимизированная под мобильные девайсы; IoT Core — имеет поддержку универсальных приложений, но при этом предназначена для устройств с ограниченными ресурсами.

На данный момент доступна только последняя — IoT Core. Так как она поддерживает платформу UWP, разрабатывать для нее приложения можно уже сейчас, используя те же инструменты, что для других редакций Windows 10: HTML/JS, XAML/C#. Вдобавок она поддерживает консольные приложения C/C++. Тем не менее она на дух не переносит десктопные приложения.

 

Universal Windows Platform

Строго говоря, в настоящее время Microsoft делит все многообразие приложений для своей операционной системы на три типа: классические приложения, UWP-приложения и Windows Phone приложения. Для их распространения существуют два магазина цифровой дистрибуции: Windows Store и Windows Phone Store.

C первым и третьим типами все более или менее понятно: классические — это унаследованные оконные приложения, для Windows Phone — это стандартные Silverlight-приложения для смартфонов и планшетов.

Чтобы начать разрабатывать приложения для платформы UWP, первым делом надо включить так называемый «режим разработчика Windows 10», с помощью которого можно тестировать универсальные приложения до отправки в магазин. Для этого открываем «Параметры (Панель управления в «десятке») -> Обновление и безопасность -> Для разработчиков» и выбираем «Режим разработчика», соглашаемся на вопрос о возможном повреждении данных. Режим включен.

Помню, в былые времена (Visual Studio 2015 Technical Preview) включить режим разработчика было геморройно, нужно было изменять ключи реестра, но теперь это в прошлом, и мы имеем легко настраиваемую систему.

 

Эмуляторы для Android

На Windows 8.1 у меня прекрасно запускался стандартный (из SDK) Android-эмулятор. Делалось это через модуль ядра от Intel — HAXM (Hardware Accelerated Execution Manager — аппаратная виртуализация для Android, использующая технологию Intel Virtual Technology), однако после того, как я обновился до Windows 10, при запуске эмулятора система стала сообщать, что этот модуль не установлен. Тогда я попробовал переустановить его.

Удаление прошло успешно. Но когда я запустил инсталлятор intelhaxm-android.exe, находящийся в папке (по умолчанию) C:\Program Files (x86)\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\, появилось сообщение, что мой комп не поддерживает виртуализацию: VT not supported. Хотя я предварительно, конечно, включил виртуализацию в BIOS, современные камни поддерживают этот режим... Проблема оказалась в том, что HAX не дружит с Hyper-V, поэтому последний надо отключить. Это можно сделать из командной строки: запускаем ее от имени администратора (для выполнения приложения dism нужны привилегированные права) и вводим команду dism.exe /Online /Disable-Feature:Microsoft-Hyper-V:

Выполнение команды dism
Выполнение команды dism

После ее выполнения будет предложено перезагрузить комп, что необходимо сделать. Когда операционка загрузится, снова запусти инсталлятор, и на этот раз установка пройдет без проблем. После чего эмулятор будет работать. С другой стороны, для работы эмулятора из Visual Studio 2015 нужен работающий Hyper-V, придется включить его обратно командой dism.exe /Online /Enable-Feature:Microsoft-Hyper-V. Но в таком случае не будет работать эмулятор из SDK.

Лично я, как любой порядочный программист, склонен во всем этом винить Майкрософт, крича при этом: «Проклятая винда опять глючит», но не исключаю, что такая ерунда творится только на моем ноуте, а на другом компе все будет нормально.

Обрати внимание: после отключения Hyper-V может отвалиться доступ в интернет. Чтобы его восстановить, зайди в свойства подключения и поставь внезапно потерявшуюся галочку поддержки протокола IP-4.

 

Заключение

В итоговом релизе новой экосистемы от Microsoft нововведений так много, что даже их краткий обзор составил целую статью. Новая версия Windows собрала вокруг себя колоссальное множество технологий для всех областей человеческого существования. Это в первую очередь касается устройств, на которых она работает, а это любые девайсы: от PC и консолей до миниатюрных гаджетов и систем, от которых зависят человеческие жизни.

Кроме того, Windows 10 предоставляет единую среду для выполнения приложений, другими словами, программа, разработанная для одного типа устройств, без проблем запустится на другом. Конечно, такой перенос не имеет большого смысла, ведь портирование делают для получения новых возможностей от другой платформы, поэтому при переносе используются дополнительные пакеты разработчиков для расширения функциональности приложений и добавления к ним новых возможностей взаимодействия с новой программно-аппаратной платформой.

О разработке приложений для Windows 10 в одной статье исчерпывающе не расскажешь, поэтому следи в ближайших выпусках электронной версии журнала за новыми статьями на эту тему. А пока — удачи во всех делах и до встречи!

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии