Windows 8 dla programistów

Podczas konferencji BUILD pokazane zostały narzędzia deweloperskie dla Windows 8 - Visual Studio 11 i Blend 5, omówiono także zasady projektowania interfejsu Metro.

Microsoft zaprezentował w połowie września Windows 8 Developer Preview - wersję systemu przeznaczoną dla twórców aplikacji, aby mogli zacząć już budować własne rozwiązania. Po tej wersji zostanie opublikowana Beta, potem wersja RC i RTM. Dokładne daty ich udostępniania nie zostały jednak jeszcze podane.

Nowe API aplikacji

W Windows 8 działać będą bez żadnych zmian aplikacje zgodne z Windows 7. Działają aplikacje napisane w Win32, .NET Windows Forms itp. Tak samo da się uruchomić aplikacje napisane w Silverlight czy dowolne inne, które już działały. Window 8 ma jednak nowe API - Windows RT (WinRT). Jest to obiektowe API, które bezpośrednio komunikuje się z natywnymi mechanizmami systemu operacyjnego, tzw. Kernel Services.

WinRT może być używane z poziomu C#, VB.NET (czyli języków zarządzanych z .NET), C++ (z poziomu kodu natywnego) czy Java Script. Warto dodać, że ponieważ jednym z celów Metro jest zapewnienie płynności interfejsu, każda funkcja API, która może zająć więcej niż 15 ms, ma asynchroniczny odpowiednik. Zarówno C# (słowa kluczowe async / await), jak i JavaScript łatwo pozwalają budować aplikacje, które z takiego asynchronicznego API korzystają.

WinRT zakłada separację "definicji" interfejsu użytkownika od logiki. Dla C++ i języków .NET (C# itp.) takim językiem opisu strony jest - znany z Silverlight czy Windows Presentation Foundation - XAML. Dla kodu Javascript językiem opisu UI jest po prostu HTML 5. Do budowy interfejsu można użyć albo Visual Studio 11, albo Blend 5. Oba narzędzia bazują na takim samym silniku renderującym, który np. na żywo uruchamia aplikację i dostosowuje jej wygląd do tego, co zostało zmienione w ustawieniach kontrolek czy stylów. Dodatkowo Blend 5 może być użyty po prostu do budowy stron HTML5.

Łatwa migracja do Metro

Migracja aplikacji XAML (pokazano to na przykładzie Silverlight 2.0) do Metro nie jest skomplikowana. Większość zmian wynika z innego stosu sieciowego i oczywiście dostosowania wyglądu do wymagań Metro. Przy okazji na konferencji BUILD pokazano, jak można przenieść taką aplikację na Windows Phone. W tym przypadku była to zmiana dokładnie jednej linijki!

Warto dodać, że WinRT oparty jest na takim samym mechanizmie metadanych co .NET. Są zaledwie drobne różnice w systemie typów. Dzięki temu to samo API jest dostępne dla wszystkich języków. W WinRT wydzielone zostały API związane z krytycznymi operacjami, które niewłaściwie użyte mogą naruszać prywatność użytkownika. Jeżeli aplikacja chce np. zrobić zdjęcie lub uzyskać dostęp do hasła, wywołanie przechodzi przez specjalny broker, który pyta użytkownika, czy zgadza się na wykonanie danej operacji. Oczywiście aplikacja używająca takiego API musi mieć odpowiedni manifest, aby można było jej nie instalować.

Wprowadzony w Windows 8 format metadanych WinMD (Windows Metadana), niemal identyczny jak w .NET, może być także zbudowany dla innych bibliotek, np. tych, które są częścią naszej aplikacji. Wśród rzeczy, które nie działają w aplikacji Metro, jest np. GDI+. Cały interfejs jest rysowany przy użyciu DirectX i wykorzystuje akcelerację sprzętową. Nic nie stoi jednak na przeszkodzie, aby interfejs był zbudowany przy użyciu "klasycznym".

Warstwa WinRT jest kodem natywnym, tylko opakowanym tak, aby było wygodnie z niego skorzystać i aby można było sprawdzić przekazywane parametry. Samo wywołanie sprowadza się, dzięki WinMD, do skoku pod adres procedury w pamięci. Warto dodać, że pełnoprawnym językiem do tworzenia rozwiązań dla Windows 8 jest C++.

Wiele różnych platform

Windows 8 ma działać na x86/x64 (procesorach Intela, w tym nowych konstrukcjach System On Chip), SOC, a także urządzeniach opartych na procesorach typu ARM. Dzięki temu system będzie działał na dużej liczbie różnych typów maszyn - od tradycyjnych komputerów, przez tablety, aż po urządzenia, które jeszcze nawet nie mają nazwy. Dodatkowo zmiany w samym jądrze systemu powodują, że jest on już teraz mniej zasobożerny.

Nowy Interfejs Windows 8 dostosowuje się do różnych ustawień, rozdzielczości i orientacji. Dodatkowo Metro oferuje mechanizmy tzw. Side View, gdzie dwie aplikacje współdzielą jeden ekran. Z punktu widzenia projektu jest to dodatkowy szablon, który zostanie zaktywowany, gdy aplikacja zostanie w odpowiedni sposób przeciągnięta. Podczas prezentacji na BUILD podnoszona była kwestia, że należy planować aplikacje na monitory ultra HD, które pojawią się za 3 lata i będą dysponować bardzo dużymi rozdzielczościami i dużą gęstością pikseli. Stąd interfejs może wykorzystywać pliki wektorowe SVG czy mechanizmy stylów CSS/XAML. Nie warto więc "kodować" wartości pikseli.

Kafelki wyświetlające informacje z aplikacji

Warto chwilę zatrzymać się nad Tiles (kafelkami). To nie są ikony (określane jako przestarzały wyróżnik aplikacji), ale obiekty, które z jednej strony identyfikują aplikację, a z drugiej pokazują stan i trwają, dostosowując się do aktualnego stanu. Co więcej, można pozwolić na budowę kafelków drugiego poziomu, które będą skrótem do wnętrza aplikacji, np. zakładką w książce.

Tiles pełnią też ważną rolę przy powiadamianiu. W Windows 8 użytkownik może wyłączyć wszystkie powiadomienia, a wtedy tylko zmieniając stan kafelka, aplikacja może zasugerować użytkownikowi jakąś akcję. Ale jak podkreślali projektanci, kafelek nie jest miejscem, gdzie można wyświetlać reklamy. Użytkownik taki element usunie bądź schowa.

Metro i WinRT obsługuje także tzw. kontrakty, definiujące, jakie usługi udostępnia aplikacja i jakie może konsumować. Taką usługą jest np. wyszukiwanie, jeżeli go zaimplementuje aplikacja, to w danych zarządzanych przez dany program także będzie można szukać. Innym przykładem kontraktu jest otwieranie i wybieranie elementów - zdjęć, plików. Dostawcą takiego kontraktu może być np. aplikacja rozumiejąca API Facebook czy mechanizm połączony ze SkyDriver. A z punktu widzenia użytkownika wybiera on po prostu zdjęcie, poruszając się pomiędzy różnymi "pojemnikami".

Wybrane założenia interfejsu Metro:

* czysta typografia,

* treść na pierwszym miejscu,

* nie ma ramki (chrome),

* określone są zasady wyrównania i rozkładania tekstu na ekranie (siatka i odstępy),

* ciągle podłączona, rzeczywiście cyfrowa,

* aplikacja ma być szybka i płynna, ma budzić zaufanie tym, że działa zgodnie z oczekiwaniem użytkownika.

Więcej na stronie http://go.computerworld.pl/d528b


TOP 200