
Multiplatformní aplikace Cross-Platform Applications Bakalářská práce Ondřej Tuháček, DiS. Vedoucí bakalářské práce: Ing. Václav Novák, CSc. Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky 2010 Prohlášení Prohlašuji, že svoji bakalářskou práci jsem vypracoval samostatně pouze s použitím pramenů a literatury uvedených v seznamu citované literatury. Prohlašuji, že v souladu s § 47b zákona č. 111/1998 Sb. v platném znění souhlasím se zveřejněním své bakalářské práce, a to v nezkrácené podobě elek- tronickou cestou ve veřejně přístupné části databáze STAG provozované Jiho- českou univerzitou v Českých Budějovicích na jejích internetových stránkách. V Českých Budějovicích dne 4. 1. 2010 Anotace Tato práce se zabývá multiplatformním programováním. Po obecném teo- retickém úvodu do problematiky multiplatformního programování se blíže věnuje projektu Mono. Uvádí přehled vývojových prostředí a dalších nástrojů, se kterými lze při vývoji pracovat a pojednává o některých jejich omezeních. Práce dále porovnává dostupné nástroje pro tvorbu grafického uživatelského rozhraní a nakonec uvádí sadu doporučení pro programátory multiplatformních aplikací. Abstract The aim of this thesis is cross-platform programming. After a general theoretical introduction to the cross-platform programming it gives attention to Mono Project. It gives the overview of available integrated development environments and other tools that can be used during development and it also mentions its limitations. The thesis then compares several available toolkits for creating the graphical user interface of applications. After that it presents a set of recommendations for cross-platform programmers in Mono. Obsah 1 Úvod................................................................................................................6 2 Cíle práce.........................................................................................................8 3 Teoretický úvod do problematiky....................................................................9 3.1 Typy jazyků..............................................................................................9 3.1.1 Překládané jazyky............................................................................9 3.1.2 Interpretované jazyky.......................................................................9 3.1.3 Hybridní jazyky..............................................................................10 3.2 Multiplatformní aplikace.......................................................................10 3.2.1 Přístupy k tvorbě multiplatformních aplikací................................11 3.2.1.1 Oddělený vývoj pro jednotlivé platformy..............................11 3.2.1.2 Interpretovaný jazyk...............................................................11 3.2.1.3 Překládaný jazyk a multiplatformní nástroje..........................12 3.2.1.4 Další způsoby ........................................................................12 3.3 Microsoft .NET versus Mono................................................................13 3.3.1 Microsoft .NET..............................................................................13 3.3.2 Projekt Mono..................................................................................15 3.4 Grafické uživatelské rozhraní................................................................16 4 Metodika........................................................................................................18 4.1 Prověření vhodnosti Mono pro multiplatformní programování............18 4.2 Porovnání GUI toolkitů podle zvolených kritérií..................................18 4.3 Přehled dostupných nástrojů pro vývoj.................................................21 4.4 Sada doporučení pro Mono programátory.............................................21 5 Prověření vhodnosti Mono pro multiplatformní programování....................22 5.1 Downloader............................................................................................22 5.2 Grafické „Hello World“.........................................................................24 5.3 Watcher..................................................................................................25 5.4 FeedReader............................................................................................26 5.5 Portování stávající aplikace z .NET do Mona.......................................29 6 Porovnání GUI toolkitů.................................................................................33 6.1 WinForms..............................................................................................33 6.2 GTK+.....................................................................................................35 6.3 Qt...........................................................................................................37 6.4 wxWidgets.............................................................................................41 6.5 Cocoa.....................................................................................................42 7 Nástroje pro vývoj.........................................................................................44 7.1 Vývojová prostředí................................................................................44 7.1.1 MonoDevelop.................................................................................44 7.1.2 SharpDevelop.................................................................................45 7.1.3 Microsoft Visual Studio.................................................................45 7.2 Návrháře grafických rozhraní................................................................45 7.2.1 Glade..............................................................................................45 7.2.2 Qt Designer....................................................................................47 7.3 Ostatní software.....................................................................................47 7.3.1 Mono Migration Analyzer (MoMA)..............................................47 7.3.2 Virtualizační nástroje (VirtualBox, VMWare Player)....................48 8 Sada doporučení pro Mono programátory.....................................................49 8.1 Nutná perfektní aktivní znalost angličtiny.............................................49 8.2 Sledovat stav implementace tříd a jejich metod....................................49 8.3 Grafický toolkit volit s ohledem na majoritní cílovou platformu..........50 8.4 Testovat a ladit průběžně na všech platformách....................................51 8.5 Vyhnout se používání platformně závislých přístupů............................52 8.6 Nespoléhat na System.Drawing.SystemColors.....................................52 8.7 Nebát se zdrojových kódu Mona...........................................................53 9 Závěr..............................................................................................................54 10 Seznam použité literatury............................................................................57 11 Seznam příloh..............................................................................................59 12 Přílohy.........................................................................................................60 1 Úvod 1 Úvod Každý, kdo již delší dobu pracuje s počítačem, má vytvořený alespoň pomy- slný seznam svých oblíbených aplikací, které používá. V onom programu píše textové dokumenty, v jiném kreslí obrázky, přes některý program přistupuje k internetu, ke své poště a přes nějaký si povídá se svými přáteli. Mnohé z těchto aplikací jsou pevně svázány s operačním systémem, na kterém jsou provozovány. Některé aplikace však mají i své verze schopné běhu na ope- račních systémech jiných. Tyto nazýváme multiplatformními aplikacemi. Nejrozšířenějším operačním systémem pro desktopové využití je bezpochyby Microsoft Windows. Uživatelsky je přívětivý, snadný na ovládání, mnohdy však bezohledně vnucený při koupi nového počítače. Pokud chceme pak z ně- jakého důvodu, ať už kvůli ceně, lepší koncepci či chybějící požadované funkcionalitě, přejít např. z Windows na Linux, narážíme na problém. Tím problémem jsou právě naše používané, nemultiplatformní aplikace. Někdo by mohl namítnout, že některé aplikace sice mají své „ekvivalenty“, ale většinou je potřeba naučit se zcela odlišnému ovládání, než na jaké jsme zvyklí, a to činí mnohým uživatelům nemalé problémy především z důvodu časové ná- ročnosti. Mnohdy tyto „ekvivalenty“ ani nedosahují kvalit aplikací původních. Příkladem takového programu může být třeba grafický editor Adobe Photo- shop. Ten je nativně určen pro operační systém Windows a i když existuje kvalitní multiplatformní náhrada v podobě editoru GIMP1, je opravdu hodně nepříjemné učit se takřka „od nuly“ s novým editorem, nehledě na to, že někte- ré funkce zde oproti Photoshopu chybí. Právě neexistence kvalitních náhrad aplikací či právě absence přenositelnosti aplikací na různé platformy je jistě jednou z hlavních překážek v přechodu na 1 GIMP je zkratka The GNU Image Manipulation Program 6 1 Úvod jiný operační systém2 a také důvodem, proč jsem toto téma zvolil pro svou ba- kalářskou práci. Sám jsem při přechodu na Linux postrádal zpočátku spoustu aplikací, proto mne zajímalo, proč vývojáři neprogramují aplikace tak, aby multiplatformní byly již od základu, respektive aby běžely alespoň na nejčastě- ji používaných operačních systémech, což
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages68 Page
-
File Size-