Během léta jsem se konečně dostal k tomu, abych si trochu pohrál s Xamarin.Forms pro Visual Studio. O co přesně jde vysvětlím dále, ale v tomto konkrétním případě jsem si vyzkoušel vytvořit jednoduchou aplikaci pro systém Android.
Aplikace je dosti triviální, v podstatě jedno obrazovková, a je to již několikátá její verze. Dalo by se říci, že si na ní testuji nové programátorské technologie, než se pustím do něčeho většího. V '97 to bylo Delphi, před pár lety (2014) Windows Phone a nyní (2016) Xamarin.Forms. Není vyloučeno, že v budoucnu si na ni zkusím i další technologii.
Jde o aplikaci Věštby (Oracles), k jejíž předchozí verzi jsem zde již nějaké postupy popisoval. Poslední verzi jsem opět poněkud proměnil, přidal tam ikony a věštění o budoucím životě, ale i možnost sdílení obrázků, které aplikace generuje. Vyzkoušel jsem si lokalizaci, takže podle nastavení systému jde aplikace buď v češtině nebo angličtině. Věštby najdete na Google Play, kde jsem je publikoval pod hlavičkou Amporis, s.r.o.. Sfouknul jsem k tomu i jednoduchý responzivní mini-web s instrukcemi v angličtině na www.oracles.cz.
Ukázka sdílení
Xamarin Froms
Xamarin umožňuje psát nativní aplikace pro různé operační systémy, konkrétně pro Android, iOS a Windows, v nejvyspělejším z programovacích jazyků současnosti .NET C# a zároveň v nejkomfortnějším vývojovém prostředí Visual Studio. V základu Xamarin poskytuje pro každou z platforem řadu knihoven, které zapouzdřují do C# tříd příkazy pro konkrétní operační systém.
Xamarin.Froms pak jde v této abstrakci ještě dál a poskytuje univerzální komponenty a třídy, jenž se po té při kompilaci pro každou z platforem přeloží do pro ni nativní podoby (viz např. TabbedPage). Design stránek (popř. obrazovek či aktivit) se dá definovat v jakési obdobě jazyka XAML, což platí i pro uživatelské komponenty (UserControls). Případné odlišnosti jednotlivých systémů, které Xamarin.Forms zatím neřeší přímo, a které se musí pro každou z platforem řešit zvlášť, lze celkem efektivně zapouzdřit pod společné rozhraní (v kódu) či view (v XAMLu) a při kompilaci se postará o dosazení třídy či komponenty s kódem pro správnou platformu. Vše ostatní pak může být ve společné části (projektu) PCL (portable class library), jež používají všechny ostatní projekty vytvořené pro jednotlivé platformy s jejich specifiky, popř. ve sdíleném projektu (shared project), který se při kompilaci sloučí s právě kompilovaným projektem, jako by byl jeho součástí.
A právě tento nadějný, ale dosti drahý Xamarin nedávno koupil Microsoft a poskytl ho k Visual Studiu zdarma. Přestává tak rozhodování, jestli použít nejprve Javu (Android), pak Object C (iOS) a pak třeba i C# (Windows) a v každém z těchto jazyků psát aplikaci v podstatě od začátku. S Xamarinem můžete rovnou začít v tom nejvyspělejším jazykem C# a u něho už i zůstat, přičemž pokryjete všechny platformy současně. Pokud byste raději vytvářeli nějakou hru než aplikaci, pak je tu Monogame (opět zdarma, opět C# a opět vzniká výstup pro všechny platformy). No a jde-li o nějaké náročnější hry, pak je tu Unity (to už není zdarma, ale zase C#, vše najednou a výčet podporovaných koncových zařízení je dokonce ještě širší).
Zkrátka jakýkoli jiný jazyk než C# nedává v dnešní době moc smysl. Jednak nic jiného nepokryje tolik možností (mimo mobilní aplikace umí i ty desktopové, webové, databázové, IoT, robotické a spoustu dalších) a pak kromě základních příkazů a knihoven skrývá pro pokročilejší programátory obrovské, stále rostoucí množství usnadňujících příkazů a možností (např. LINQ, Lambda výrazy, více vláknové použití bez rozdělování kódu, ...), díky čemuž může zdrojový kód stále získávat na své eleganci.
UWP verze pro Windows 10
Letos v létě (18.6.2017) jsem si našel chvilku a vygeneroval také verzi aplikace pro Windows 10. Je to UWP, takže funguje jak na PC, tabletech i mobilech s Windows 10, ale měla by jít spustit i třeba na Xbox One nebo HoloLens. UWP Věštby jsou tedy již dostupné i ve Windows Store.
Věštby na PC
Věštby na Windows 10 Mobile