Универсальная платформа Windows ( UWP ) — это вычислительная платформа , созданная Microsoft и представленная в Windows 10 . Цель этой платформы — помочь в разработке универсальных приложений , которые работают на Windows 10, Windows 10 Mobile (снято с производства), Windows 11 , Xbox One , Xbox Series X/S и HoloLens без необходимости переписывать их для каждого из них . Он поддерживает разработку приложений для Windows с использованием C++ , C# , VB.NET и XAML . API реализован на C++ и поддерживается в C++, VB.NET, C#, F # и JavaScript . [1] Разработанная как расширение платформы Windows Runtime (WinRT) , представленной в Windows Server 2012 и Windows 8 , UWP позволяет разработчикам создавать приложения, которые потенциально будут работать на нескольких типах устройств. [2]
UWP не предназначена для систем сторонних производителей. Решением Microsoft для других платформ является .NET MAUI (ранее « Xamarin.Forms » [3] ), API с открытым исходным кодом, созданный Xamarin , дочерней компанией Microsoft с 2016 года. Решения сообщества также существуют для нецелевых платформ, таких как Uno . Платформа .
UWP является частью Windows 10, Windows 10 Mobile и Windows 11. Приложения UWP не работают в более ранних версиях Windows.
Приложения, способные реализовать эту платформу, изначально разрабатываются с использованием Visual Studio 2015 , Visual Studio 2017 , Visual Studio 2019 или Visual Studio 2022 . Старые приложения в стиле Metro для Windows 8.1 , Windows Phone 8.1 или для обеих версий (универсальная версия 8.1) требуют изменений для перехода на UWP. [4] [5]
Некоторые функции платформы Windows в более поздних версиях были эксклюзивными для UWP и программного обеспечения, специально упакованного для него, и не могут использоваться в других архитектурах, таких как существующие WinAPI , WPF и Windows Forms . Однако с 2019 года Microsoft предприняла шаги по увеличению паритета между этими платформами приложений и обеспечению возможности использования функций UWP внутри программного обеспечения, не относящегося к UWP. Microsoft представила XAML Islands (метод внедрения элементов управления и виджетов UWP в программное обеспечение, не относящееся к UWP) как часть обновления Windows 10 от мая 2019 года и заявила, что это также позволит вызывать функции UWP и компоненты среды выполнения Windows в неупакованном программном обеспечении. . [6]
Мосты UWP преобразуют вызовы в других интерфейсах прикладного программирования (API) в интерфейс UWP, чтобы приложения, написанные с использованием этих API, могли работать в UWP. Во время основного доклада 2015 Build было объявлено о двух мостах для приложений Android и iOS , которые будут перенесены на Windows 10 Mobile. [7] По состоянию на февраль 2020 года [обновлять]Microsoft сохраняет поддержку мостов для настольных приложений Windows, прогрессивных веб-приложений , Microsoft Silverlight и iOS Cocoa Touch API. [8]
Windows Bridge для iOS (под кодовым названием «Islandwood») — это набор инструментов промежуточного программного обеспечения с открытым исходным кодом , который позволяет портировать приложения iOS , разработанные в Objective-C , в Windows 10 с помощью Visual Studio 2015 для преобразования проекта Xcode в проект Visual Studio. [7] [9] [10] Ранняя сборка Windows Bridge для iOS была выпущена как программное обеспечение с открытым исходным кодом под лицензией MIT 6 августа 2015 года, в то время как версия Android находилась в стадии закрытого бета-тестирования . [7]
Этот проект «WinObjC» имеет открытый исходный код на GitHub . Он содержит код из различных существующих реализаций Cocoa Touch, таких как Cocotron и GNUstep , а также собственный код Microsoft, реализующий платформы iOS с использованием методов UWP. Он использует версию компилятора clang LLVM . [11]
Windows Bridge для Android (под кодовым названием «Astoria») представлял собой среду выполнения, которая позволяла приложениям Android , написанным на Java или C++ , запускаться на Windows 10 Mobile и публиковаться в Microsoft Store . Кевин Галло, технический руководитель платформы разработчиков Windows, объяснил, что этот уровень содержит некоторые ограничения: мобильные службы Google и некоторые основные API недоступны, а приложения с «глубокой интеграцией в фоновые задачи», такие как программное обеспечение для обмена сообщениями, не будут работать должным образом. в этой среде. [12] [13]
В феврале 2016 года Microsoft объявила о прекращении разработки Windows Bridge для Android, сославшись на избыточность, поскольку iOS уже является основной платформой для многоплатформенной разработки, а Windows Bridge для iOS создает собственный код и не требует уровня ОС. эмулятор. Вместо этого Microsoft поощряла использование C# для разработки мультиплатформенных приложений с использованием инструментов Xamarin , которые они приобрели до анонса. [14] [15] [16] В 2021 году Microsoft разрешила Windows 11 запускать приложения Android с помощью эмулятора на уровне ОС и разрешила установку приложений в магазине. [17]
UWP предоставляет модель приложения на основе класса CoreApplication и среды выполнения Windows (WinRT). [1] Универсальные приложения для Windows , созданные с использованием UWP, больше не указывают в сборке манифеста, что они были написаны для конкретной ОС; вместо этого они нацелены на одно или несколько семейств устройств, таких как ПК, смартфон, планшет или Xbox One , используя мосты универсальной платформы Windows. Эти расширения позволяют приложению автоматически использовать возможности, доступные конкретному устройству, на котором оно в данный момент работает. [18] Универсальное приложение может работать как на мобильном телефоне, так и на планшете и обеспечивать подходящие возможности на каждом из них. Универсальное приложение, работающее на смартфоне, может начать вести себя так же, как если бы оно было запущено на ПК, когда телефон подключен к настольному компьютеру или подходящей док-станции . [19]
На игры, разработанные для UWP, распространяются технические ограничения, включая несовместимость с конфигурациями с несколькими видеокартами , трудности с модификацией игры , наложения для клиентов чата, ориентированных на игровой процесс, или менеджеров привязок клавиш. [20] UWP поддерживает только DirectX 11.1 или новее, поэтому игры, созданные на более старых версиях DirectX, работать не будут. [21] Во время сборки 2016 глава подразделения Microsoft Xbox Фил Спенсер объявил, что компания пытается решить проблемы, которые повысят жизнеспособность UWP для компьютерных игр, заявив, что Microsoft «стремится обеспечить соответствие или превышение ожиданий производительности полной версии». -экранные игры, а также дополнительные функции, включая поддержку наложений, моддинга и многого другого». Позже в UWP была добавлена поддержка технологий AMD FreeSync и Nvidia G-Sync , а также отключение вертикальной синхронизации. [22] [23]
Основатель Epic Games Тим Суини раскритиковал UWP за то, что это огороженный сад , поскольку по умолчанию программное обеспечение UWP можно публиковать и устанавливать только через Windows Store , что требует внесения изменений в системные настройки для включения установки внешнего программного обеспечения (аналогично Android ). Кроме того, некоторые функции операционной системы являются эксклюзивными для UWP и не могут использоваться в программном обеспечении, не принадлежащем UWP, например в большинстве видеоигр. Суини охарактеризовал эти шаги как «самый агрессивный шаг, который когда-либо делала Microsoft» в попытке превратить ПК в закрытую платформу, и считал, что эти шаги были направлены на то, чтобы поставить в невыгодное положение сторонние магазины игр, такие как Steam , поскольку Microsoft «сокращает свободу пользователей устанавливать полнофункциональное программное обеспечение для ПК и подрывать права разработчиков и издателей поддерживать прямые отношения со своими клиентами». Таким образом, Суини утверждал, что конечные пользователи должны иметь возможность загружать программное обеспечение UWP и устанавливать его так же, как и программное обеспечение, не относящееся к UWP. [24]
Вице-президент по Windows Кевин Галло ответил на опасения Суини, заявив, что «в ноябрьском обновлении Windows 10 мы позволили людям легко загружать неопубликованные приложения по умолчанию без необходимости использования UX. Мы хотим сделать Windows лучшей платформой для разработки независимо от используемых технологий и предлагают инструменты, помогающие разработчикам с существующими базами кода HTML/JavaScript, .NET и Win32, C++ и Objective-C перенести свой код в Windows и интегрировать возможности UWP. С помощью Xamarin разработчики UWP могут не только охватить все устройства Windows 10, но и теперь они могут использовать большую часть своего кода C# для создания полностью нативных мобильных приложений для iOS и Android». [25]
В прямом интервью Giant Bomb во время освещения E3 2016 Спенсер защищал неоднозначный прием своих эксклюзивных релизов для UWP, заявив, что «они не все прошли гладко. Некоторые из них прошли хорошо» и что «еще определенно есть опасение, что UWP и наш магазин каким-то образом связаны гнусным образом. Это не так». Он также обсудил отношения Microsoft со сторонними разработчиками и дистрибьюторами, такими как Steam, считая эту услугу «важной частью успеха игр на Windows» и заявив, что Microsoft планирует продолжать выпускать игры через эту платформу, а также через свою собственную, но что «будут области, в которых мы сотрудничаем, и будут области, в которых мы конкурируем. Конечный результат будет лучше для геймеров». Спенсер также заявил, что он был другом Суини и часто с ним общался. [26] [27]
30 мая 2019 г. Microsoft объявила, что будет поддерживать распространение игр Win32 в Microsoft Store; Спенсер (который с тех пор был назначен главой всех игровых операций в Microsoft и подчинялся непосредственно генеральному директору Сатье Наделле ) объяснил, что разработчики предпочитают эту архитектуру и что она «позволяет [разработчикам и игрокам] настраивать и контролировать ожидать от открытой игровой экосистемы Windows». Также было объявлено, что будущие выпуски Xbox Game Studios для Windows будут доступны в сторонних магазинах, таких как Steam, а не будут эксклюзивными для Microsoft Store. [28] [29]