Универсальная платформа 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 системы. Решение Microsoft для других платформ — .NET MAUI (ранее « Xamarin.Forms » [3] ), API с открытым исходным кодом, созданный Xamarin , дочерней компанией Microsoft с 2016 года. Существуют также решения сообщества для нецелевых платформ, таких как Uno Platform .
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 Bridges преобразует вызовы в других интерфейсах прикладного программирования (API) в интерфейс UWP, так что приложения, написанные в этих API, будут работать на UWP. В ходе основного доклада Build 2015 анонсированы два моста для приложений Android и iOS , которые будут портированы на Windows 10 Mobile. [7] До января 2022 года Microsoft поддерживала мосты для настольных приложений Windows, прогрессивных веб-приложений , Microsoft Silverlight и API Cocoa Touch для iOS . [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. Он использует версию компилятора LLVM clang. [11]
Windows Bridge для Android (кодовое название «Astoria») — это среда выполнения, которая позволяла приложениям Android , написанным на Java или C++, работать на Windows 10 Mobile и публиковаться в Microsoft Store . Кевин Галло, технический руководитель Windows Developer Platform, объяснил, что этот уровень имел некоторые ограничения: Google Mobile Services и некоторые основные 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] Во время Build 2016 руководитель подразделения Microsoft Xbox Фил Спенсер объявил, что компания пытается решить проблемы, которые повысят жизнеспособность UWP для игр на ПК, заявив, что Microsoft «стремится гарантировать, что мы соответствуем или превосходим ожидания производительности полноэкранных игр, а также дополнительных функций, включая поддержку наложений, моддинга и многого другого». Поддержка технологий AMD FreeSync и Nvidia G-Sync , а также отключение вертикальной синхронизации были позже добавлены в UWP. [22] [23]
Основатель Epic Games Тим Суини раскритиковал UWP за то, что он является огороженным садом , поскольку по умолчанию программное обеспечение UWP может быть опубликовано и установлено только через Магазин Windows , требуя изменения настроек системы для включения установки внешнего программного обеспечения (аналогично 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]