universal windows platform - application development done right
TRANSCRIPT
Universal Windows PlatformApplication development done right
HelloI’m Christos
@christosmatskas cmatskas https://cmatskas.com
AgendaWhat is the Universal Windows Platform - UWPHello Devices - DemoResponsive UI Techniques Adaptive CodeBridging – Going cross platform
Easy for users to get & stay
current
Unified core and app platform
The convergence journey
Windows Phone 7.5
Windows Phone 8Windows Phone 8.1
Windows 8
Xbox One
Windows on Devices
Xbox 360
Windows 8.1
Windows 10
ConvergedOS kernel
Convergedapp model
Phone Small Tablet
2-in-1s(Tablet or Laptop)
Desktops & All-in-OnesPhablet Large Tablet
Classic Laptop
Xbox IoTSurface Hub
Holographic
Windows 10
Multiple device families
PC XBoxMobile Surface Hub
HoloLensDevices +IoT
Universal Apps
One Store +One Dev Center
Reuse Existing CodeOne SDK +
Tooling
Adaptive User Interface Natural
User Inputs
One Universal Windows Platform
Windows 10operating system
Bridging technologies
Win32desktop
Webhosted
JavaAndroid
Obj.CiOS
Universal Windows Platform
WWAC++& CX
.Netlanguages
HTMLDirectX
XAML
C++
.Netlanguages
MFCWFWPF
.Netruntime
Universal Windows PlatformA single API surfaceA guaranteed API surfaceThe same on all devices
PhoneDevice
XboxDevice
DesktopDevice
Windows Core
Universal Windows Platform
A whole lot of APIs…
Storage DirectX 12 Speech and Cortana
Networking NFC and Bluetooth
Holographic Audio and Video
Appointments/Calendar
Authentication Broker
Background Transfer
Sensors: Acceleromete
r, light, magnet …
Tiles and Notifications
App to App and App Services
InkingMaps and Location
XAML Background Tasks
Data Roaming
Data.XML Media Casting
Many, many more….
Apps don't target Windows 10, apps target the UWP
{ "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" }, "frameworks": { "uap10.0": {} }, "runtimes": { "win10-arm": {}, "win10-arm-aot": {}, "win10-x86": {}, "win10-x86-aot": {}, "win10-x64": {}, "win10-x64-aot": {} }}
The Universal Windows Platform can update at its own cadence
Windows appA single binary Running on any deviceTesting for capabilitiesAdjusting to devices
PhoneDevice
XboxDevice
DesktopDevice
Windows Core
Universal Windows Platform
Windows App
Demo: Hello devices
Universal Windows PlatformOne Operating SystemOne Windows core for all devices
One App PlatformApps run across every family
One Dev CenterSingle submission flow and dashboard
One Store Global reach, local monetization Consumers, Business & Education
One Windows
DesktopSKU
PC
2 in 1
MobileSKU
Tablet
Phablet
Phone
XboxSKU
Xbox
IoTSKU
Band
IoT headless
SKU
Raspberry Pi
Home Automati
on
Surface HubSKU
Surface Hub
Holographic
SKU
HoloLens
Each family offers its own shelland adds features to those it inherits
Adaptive UI
Adaptive designResponsive designFlexible layout responds to small changes
Many controls handle basic responsivenessAdaptive design
Smart layout adjusts to large changesFeatures like visual states aid in this design
Tailored designA device-specific app can simplify design Some devices have unique design languages
Adaptive designPhone (portrait)
Tablet (landscape) / Desktop
Tailored designPhone (portrait)
Tablet (landscape) / Desktop Build unique experiences on different devices
Continuum for Convertibles and PhonesContinuum for convertibles and Phones
Users love apps that give a great experience on all their devices
We want you to use your design, fonts, icons etc…
If you’re stuck, or need inspiration, we share our first party guidance that you can use
Demo: Adaptive UI
Platform extensionsDevice-specific APIFamily-specific capabilitiesCompatible across devicesUnique update cadence
PhoneDevice
XboxDevice
DesktopDevice
Windows Core
Universal Windows Platform
Windows App
Phoneextension
Xboxextension
Desktop
extension
Platform extensions don't invalidate binaries on other devices
UWP
Windows Core Windows Core Windows Core Windows Core
UWP UWP UWP
Desktop Mobile Xbox More…
Test capabilities at runtimeUse Adaptive Code to light-up our app with capabilities on specific device familiesTesting for capabilities and namespaces
var api = "Windows.Phone.UI.Input.HardwareButtons";if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(api)){
Windows.Phone.UI.Input.HardwareButtons.CameraPressed += CameraButtonPressed;}
Demo: Adaptive code
Bridging Technologies
pp
Web Apps
NEW: Hosted Web Apps
Bring your website experience to the Windows Store
Leverage your web investments and developer workflow
Full access to Universal APIs, including Tiles, Notifications, Camera, Contact List, Calendar
Universal Windows Platform
.appx
HTMLCSSJS
Windows Bridge for Android(a.k.a. Project Astoria)Tooling to allow apps written for Android™ to run on Windows 10 Mobile with few changes requiredMicrosoft Interoperability library redirects calls to Google services to Microsoft services
Submit .apk to the StoreExtend to call subset of UWP APIsTiles and Notifications
Sign up for limited developer preview at http://uwp.dev.windows.com/en-US/uwp-bridges/android
Windows Bridge for iOS(previously known as ‘Project Islandwood’)Build Universal Windows Apps using Objective-CImport Xcode® projects into Visual StudioBuild and debug your Objective-C code from Visual StudioTake advantage of great Windows servicesExtend your app to take advantage of Universal Windows Platform features
Get the Developer Preview: https://dev.windows.com/en-us/uwp-bridges/ios Code is open source: https://github.com/Microsoft/WinObjC/
Project CentennialPackage and publish existing .NET and Win32-based Windows applications to the Windows StoreUse Centennial to call common UWP APIs and services
More information coming soon…
Development tools
Visual Studio 2015 EditionsEnterpriseArchitecture Modeling, Diagnostics, VSO/ALM & Release Management
ProfessionalArchitecture Validation, VSO/ALM & Feedback Management
Community EditionsVisual Studio Professional Edition
Developer unlock
Where can I develop?Windows 10Requires Visual Studio 2015
Windows 8.1 & Windows Server 2012 R2The Visual Studio designer does not functionDebugging requires a Windows 10 device or Remote Debugging Tools
dev.windows.com