Hlavní navigace

Vlákno názorů k článku Softwarová sklizeň (6. 5. 2015) od anonym - Multiplatformní aplikace a bezbolestně? Záleží na výkladu slova...

  • Článek je starý, nové názory již nelze přidávat.
  • 12. 5. 2015 20:30

    bez přezdívky

    Multiplatformní aplikace a bezbolestně? Záleží na výkladu slova "bezbolestně" ... pro některé uživatele by bylo bolestné i to, že dialogy mají přehozená Ano/Ne tlačítka (na Windows jsou "Ano" vlevo, na Linuxu/MACu vpravo).

    Nejlepší zkušenosti mám právě s mnohými kritizovanou Javou. Když se "přibalí" JRE k aplikaci, funguje bez problému a díky NetBeans Platform (platforma pro vytváření desktop aplikací postavená nad Swingem, využívá ji m.j. i NetBeans IDE) lze v relativně krátkém čase vytvořit desktop aplikaci s takovými vymoženostmi, jako dokovatelná okna, pluginy, menu a toolbary reagující na kontext atd. Ta platforma umí vyrobit i binární soubor pro spuštění aplikace. Bohužel tohle se nehodí na vytváření "spousty malých utilit" - samotná platforma má velikost v řádu desítek MB a přibalené JRE asi 160 (verze 1.8). Podobně funguje Eclipse Rich Client Platform. Nic takto bohatého jako tyto dvě možnosti jsem nikde jinde neviděl, ale jejich zvládnutí zabere čas. Hodně času. (I ten Emacs jsem se naučil rychleji než tohle.) Bolest zažiješ na začátku, když se to musíš učit, pak je to v pohodě. Ale jestli nejsi profi programátor v Javě (nebo .Net), tak se Ti to líbit určitě nebude.

    Python je též fajn hlavně na konzolové aplikace. UIčko už je trochu přes ruku (v podstatě cokoliv víc než pár jednoduchých dialogů je PITA). Dá se udělat sada skriptů, přibalit k ní Python a externí knihovny a to pak zabalit do exe souboru (nebo na linuxu udělat k tomu spouštěcí skript). U linuxu se dá očekávat, že Python bude již předinstalovaný, otázkou je verze jazyka a knihoven - dost často bude stačit poslat jenom program.

    U C/C++ se nejlepších výsledků dá dosáhnout tak, že se na všech platformách použije GCC (nebo MinGW). Funguje fajn a framework Qt překonává Gtk i wxWidgets snad ve všem (kromě velikosti binárek; takže na jednodušší věci v C++ je wxWidgets vhodnější a kdo se chce držet čistého C, tak nemá jinou volbu než Gtk). Další problém (pokud se zvolí C++) je kompatibilita knihoven. Dll knihovnu v C++, která nemá C rozhraní (přes __extern "C"), a je zkompilovaná pomocí VC++, nelze použít z GCC (a naopak). U C tenhle problém není. Zajímavý je projekt Ultimate++. Relativně minimalistický GUI framework pro C++, který je ale velmi dobře organizovaný. Opět ale platí to, že pokud někdo není C/C++ programátor se zkušenostmi, tohle není správná cesta - hobík z toho nadšený nejspíš nebude (a jestli na začátku ano, povíme si za rok, až přijde požadavek na změnu/rozšíření aplikace nebo hlášení bugu).

    Lazarus je dobré RAD IDE pro FreePascal. V podstatě vypadá jako Delphi 7 a je s ní do jisté míry kompatibilní. Takhle má RAD vypadat - a lezou z toho nativní binárky (jen ten garbage collector chybí ... C++ už má aspoň autopointery ve standardní knihovně, tohle ani to ne). Je potřeba dávat pozor a dobře testovat aplikace na všech platformách, bo stejně jako třeba u SWT se na každé platformě používá binding na jinou grafickou knihovnu. Často se rozhodí zarovnání prvků. Nevýhoda je nízký počet uživatelů a relativně pomalý vývoj - takže např. chybí knihovna pro regulární výrazy, která funguje s Unicode. Nebo na Windows se pro zabezpečenou komunikaci používá OpenSSL a sehnat fungující binárku této knihovny je PITA. (Ale v případě "malých utilit" asi není třeba stahovat citlivá data z REST služby nebo odesílat e-maily.) Dokumentace, na to, že se jedná čistě o komunitní projekt malé komunity, je excelentní. Ale pro nás, "zde na Rootu neoblíbené" profesionální .Neťáky zvyklé na MSDN, je to tragédie.

    Jo a o C#/Mono bych na multiplatformní aplikace nepoužíval. V Monu chybí spousta věcí, vývojáři se soustředí na jiné platformy než desktop a není ani moc oblíbené mezi linuxáky.