VOLEJ KDYKOLIV

+420 792 368 067

Proč používám Avalonia UI

Avalonia UI – představení

„Pokud potřebujete multiplatformní aplikaci, která běží všude – od desktopu po malé zařízení – a přitom je rychlá, úsporná a snadno udržovatelná, Avalonia je silnou volbou.“

V dnešní „době frameworkové“ je na pomyslném trhu technologií mnoho řešení pro vývoj grafických aplikací – a mnoho z nich je i zároveň multiplatformních (cross-platform).
Taková aplikace, je pak mnohem jednodušší na vývoj i údržbu. A to zejména proto, že velké množství zdrojového kódu, business logiky i podpůrných knihoven lze použít pro všechny cílové platformy (Linux, Windows, iOS, Android) bez nutnosti výraznějších změn.

Mezi nejznámější technologie, které zároveň podporují i mobilní platformy Android / iOS, patří React Native, Flutter, Kotlin Multiplatform, .NET MAUI, NativeScript, méně známé přesto slibné Qt, Gio.

Předmětem mého článku je pak právě Avalonia UI, která je stejně jako .NET MAUI technologie založená na .NET.

Avalonia UI je dospělá technologie, jejíž počátky sahají do roku 2013. Původně byla vytvořena jako hobby projekt, který měl nabídnout moderního nástupce za Microsoftí UI framework Windows Presentation Foundation (WPF).

Avalonia je zajímavá tím, že používá vlastní rendering, stejně jako v případě Flutteru. Tento rendering (vykreslovací engine) je Skia, stejná technologie, kterou používají webové prohlížeče z rodiny Chrome.
Díky tomu vypadají aplikace psané v Avalonii totožně na všech cílových platformách. Aplikace má tedy stejný vzhled na Androidu, iOS i desktopu. Po této stránce je tedy Avalonia podobná Flutteru.

Čím se pak Avalonia výrazně liší, je způsob návrhu grafického rozhraní, kde používá stejný styl jako WPF – a to XAML. Díky tomu je velmi snadné přepsat staré WPF aplikace a modernizovat tak jejich funkce – a to nejen pro mobily a moderní verze Windows. A navíc lze aplikace exportovat i ve formátu WebAssembly pro použit ve webovém prohlížeči.

Pokud máte starší desktopovou aplikaci ve WPF a chcete ji rozšířit i na Linux nebo Android – bez kompletního přepisu – Avalonia je cesta.

Avalonia music

.NET (Core) pohledem linuxáka

Jako dlouholetý zastánce Linuxu, který vyrůstal v 90. letech, v době, kdy Microsoft jako korporátní kolos šlapal na svobodný software a všemožně mu házel klacky pod nohy. A co víc, dělal to, aniž by svými produkty nabídl nějakou srovnatelnou nebo alespoň důstojnou alternativu. V té době by mě ani nenapadlo, že za necelých 20 let ledy roztají a z Microsoftu se stane firma, která začne podporovat open source.

A tak kolem roku 2016 došlo k tomu, že Microsoft vydal první verzi .NET Core – nástupce .NET, který byl do té doby jen pro OS Windows. V tu dobu mé oči stále hleděly jinam.

Před několika lety jsem začal vybírat technologii pro vývoj mobilní aplikace. Ve hře byli React Native a Flutter a tenkrát vycházející .NET Xamarin, později MAUI. MAUI se pak ke mně dostalo ještě z několika stran. Nicméně nemělo oficiální podporu Linuxu. A při zběžném prohledávání této podpory na mě v Google vykoukla Avalonia.

A tak jsem pozvolna začal brát .NET vážně a zkoumat ho ze všech stran – z čistě filozofických otázek, velikosti aplikace, že nemá na Linuxu Microsoft co dělat, že to runtime brzdí a zbytečně bobtná. Postupně jsem se dostával k tomu, že vlastně na Linuxu běhá výborně, že runtime zas tak velký není, že je rychlý, bezpečný, má solidní podporu pro vývoj. A to i když píšu v Neovim.

Nakonec jsem mu dal šanci, objevil jsem Blazor (do dnešní doby jedna z nejinovativnějších technologií na vývoj webu). A dnes už beru .NET jako naprosto relevantní technologii pro multiplatformní vývoj – včetně Linuxu.

Pro zajímavost jen uvedu, že nejmenší funkční aplikace v dotnetu, která v sobě obsahuje vše nutné pro spuštění na jakémkoliv Linuxu včetně runtime, má 1,5 MB a po spuštění bere jen 9 MB operační paměti (RSS).
Webová služba včetně web serveru: 15 MB / 25 MB (RSS)
Minimální Avalonia aplikace: 23 MB / 135 MB (RSS)
Minimální Android Avalonia APK: 23,7 MB

Dotnet mi vyhovuje i z hlediska rychlosti kompilace (sestavení ze zdrojových kódů).

Vzhled

Avalonia v základu obsahuje moderní UI jak pro světlý, tak pro tmavý režim. Na Windows 11 a macOS pak navíc podporuje moderní průhledný „skleněný“ design oken – takže aplikace vypadá přirozeně na každé platformě.

A protože si UI vykresluje sama, můžete v aplikaci použít i vlastní upravený vzhled. Na internetu je k dispozici mnoho hotových témat – nebo si můžete vytvořit téma svoje.

Ukázky některých dostupných témat

Příklady aplikací

Core2d

a mnoho a mnoho dalších…

Shrnutí

Avalonia je svým zaměřením nejpodobnější Qt. Oproti Qt má nejen svobodnější licenci, ale umožňuje i jednodušší a rychlejší vývoj díky C# namísto C++. Přesto si zachovává solidní výkon – a oproti alternativám jako Flutter nebo JavaScript má výrazně menší nároky na paměť.

Díky tomu je Avalonia vhodná i pro embedded zařízení a běžně se na nich nasazuje.

🚨

Potřebujete modernizovat nebo vyvinout, výkonnou aplikaci?
Rád vám s tím pomohu!

Odkazy

Miroslav Valenta