Sådan virker Universal Windows Platform

Hvordan får man den samme app til at køre på mobiler, tabletter, Xboxes, pc'er, ja sågar på en HoloLens? Sammen med en Microsoft-udvikler kigger vi nærmere på Universal Apps.

– Det er måske den største bedrift i udviklerhistorien.
Sådan lyder det begejstret fra den danske udvikler Lars Klint om Windows 10's Universal Windows Platform, som gør det muligt at afvikle en app, der kan køre på samtlige Windows 10-platforme, uanset om det er en lille Internet-of-Things-device, en mobil, en tablet, en pc eller den kommende HoloLens. Med Windows 10 installeret kan den samme kode køre umodificeret på alle enheder.

Et fælles kerne-API

Lars Klint er den første til at erkende, at han nok er lidt forudindtaget om Microsofts nyeste styresystem – han er en af Microsofts omkring 4.000 Most Valued Professionals (MVP), og på dagen for den officielle frigivelse af Windows 10 holdt han et webinar, ”Building Apps for Windows 10”. Webinaret var en succes med 3.000 registreringer, og Lars Klint delte ud af sin begejstring.

– Vi har nu et core API, der virker på tværs af alting. Det er ikke set før.

Prosabladets udsendte husker Javas ”write once, run anywhere”, som tidligt blev til ”write once, pray anywhere” (og gav Prosabladets udsendte de første grå hår), så helt nyt er det vel ikke, men Lars Klint uddyber:

– Førhen skulle vi skrive Windows-kode rettet mod et specifikt device-API, som eksempelvis Windows Mobile, men det er ikke længere nødvendigt.

Extension SDKs og adaptiv kode

Nu er der selvfølgelig forskel på, hvilke egenskaber forskellige Windows-devices tilbyder. Det giver ikke megen mening at anvende en mobils accelerometer-features på en stationær pc, ligesom det heller ikke er muligt at anvende HoloLens-API'et på en tablet.
Hvis du skal bruge en specifik funktionalitet, som eksempelvis kun eksisterer på en mobil, anvender du Windows Mobiles Extension SDK. Det betyder ikke, at koden ikke også kan anvendes på desktoppen. I koden refereres til mobil-specifikke features, men inden de features anvendes i runtime, testes via et adaptive code-pattern, om den pågældende Windows-device reelt understøtter de mobil-specifikke features.
Det kan eksempelvis ske ved at spørge, om der er adgang til en mobils hardwarebuttons. Hvis det ikke er tilfældet, vil mobilens hardwarebuttons og tilhørende funktionalitet ikke blive aktiveret/anvendt. Hvis Windows-udviklere følger retningslinjerne for udvikling af Universal Apps, vil den samme binære kode kunne eksekveres på desktop, tablet, mobil, Xbox, HoloLens og  Internet-of-Things devices som Raspberry Pi.
I praksis vil der dog sjældent være behov for, at en app skal kunne køre på alle platforme. Formentlig vil muligheden for at lade en app kunne køre på mobil, tablet og desktop dække de fleste app-udvikleres behov, men muligheden for at gå kosmisk Universal er altså til stede.

Tilpasning til brugergrænseflade

Ligesom Adaptive Code anvendes til at finde ud af, hvilke hardwarespecifikke features en app kan aktivere, er der også behov for at finde ud af, hvilken skærmstørrelse der er til rådighed for en app. Her tilbyder Windows 10-platformen en række såkaldte adaptive controls. Her er anvendt responsive design, der automatisk tilpasser kontrollens størrelse og udseende til en given skærm. For eksempel vil kontrollen tilpasse sig alt efter, hvilken input-metode der er tilgængelig. Hvis der anvendes mus, vil en menu eksempelvis være mere kompakt end menuen på en touch-screen, hvor en lidt større afstand mellem menupunkterne gør det nemmere for brugeren at vælge med sin pegefinger.