Technologie pro vývoj desktopových aplikací

Tento článek byl publikován před 3 lety, některé informace již nemusí být aktuální

Jakožto webového vývojáře mě ve slabé chvilce přepadl nápad na desktopovou aplikaci. O vývoji pro desktop toho moc nevím, takže jsem si za trest udělal malý průzkum možností, jak takovou aplikaci vytvořit co možná nejrychleji. Vznikl mi z toho subjektivně zabarvený výcuc, který dávám k dispozici. Pokud případní kolemjdoucí desktop-mazáci výcuc doplní o nějaké kvalitní, progresivní technologie, bude to super.

Co jsem po aplikaci, obecně řečeno, chtěl? Aby uměla volat příkazovou řádku systému, abych do ní mohl zabundlovat (nebojaksetoříká) software třetích stran, aby uměla pracovat s filesystémem. Aby, pokud možno bez větší námahy, běžela na win, mac, linux.

Co jsem nechtěl? Strávit s vývojem rok a použít Javu, protože desktop aplikace napsané v Javě jsou, jak všichni víme, pomalé a nenažrané a vůbec.

Tak co tu máme

Tcl (Tool Command Language)

Tcl se mi na první pohled líbil. Ve spolupráci s Tk mi připadal mi jako malý šikovný tool na rychlé prototypování aplikací. Přišel jsem na něj tak, že jsem se na Githubu podíval, v čem je napsané GUI pro Git. Rozhodl jsem se ho nepoužít kvůli subjektivně mírně obskurnímu jazyku (všechno je tam string, nebo tak něco) a občas hnusně vypadajícímu GUI, které z něj leze. Dá se volat i z celkem normálních jazyků.

Brackets

Existuje taková (momentálně mírně partizánská) možnost, jak z desktopového editoru, vyrobeného v javascriptu, html5 a css, vyrabovat tzv. brackets-shell a postavit na tom svoji vlastní desktopovou aplikaci. Taková lumpárna mi byla sympatická, pak mi to ale přišlo takové jako neseriozní. Navíc, pokud chcete skrýt zdrojáky aplikace, tak to pokud vím nejde (platí to obecně pro tyhlety html-desktop technologie? Atom?).

Do podobné skupiny by nejspíš mohl patřit i node-webkit.

Chrome apps

Trochu serioznější jsou Chrome apps. Tzn. aplikace postavené taky na webových technologiích, ale chovající se jako desktopové. Jejich podmnožina packaged apps běží na všech OS, klidně v offline módu, filesystém umí, spouští se (pro uživatele) nezávisle na prohlížeči Chrome a má potenciál být u začátku boomu (?) Chromium OS.

To se mi celkem líbilo. Plus máte vyřešenou distribuci – šupne se to do Chrome store a můžete vydělávat.

Nelíbilo se mi, že nemůžu přibundlovat další software (ale kucí v googlu si s tím už hrajou), a nelíbilo se mi, že si Google bere 5% z plateb, a to je z hodně milionů, hodně peněz ;-)

Takže pro mě, aspoň zatím, taky no-no.

Céčka

Jak jsem od začátku tušil, nejlepší by bylo jít tak trochu na kost a udělat to normálně. Tzn. v nějakém tom céčku. To máte: GTK, Qt, MonoDevelop, wxWidgets a tak dále a tak dále. I nějaké to pěkné IDE se dá najít.

Multiplaformní to asi moc nebude (čisté céčko nechci) a navíc neumím ani jedno céčko a nemám moc čas se ho učit. Takže zatím pro mě asi nejlepší možnost, ale ještě se podívám dál.

Java platformy

Javu znám, ale její použití jsem jaksi předem vyloučil, takže jen pro přehled: Eclipse platform a Netbeans Platform. Z IntelliJ jsem měl dojem, že mě nechtějí a rovnou jsem je vyřadil.

Takže v Javě mi zbývají Netbeans a Eclipse. Když si vzpomenu co jsem chtěl, tedy něco jako framework ve zhruba takovém smyslu, jak jsem zvyklý z webu a když vezmu v potaz srozumitelnost dokumentace tak mi vychází subjektivně lépe Netbeans.

Vyhlášení vítěze

Na začátku průzkumu jsem se mírně obával, že technologie pro vývoj na desktopu budou tak trochu „zamrzlé v roce 2002“, co se výběru, bohatosti dokumentace a progresivnosti týká a myslím, že se mi obava víceméně potvrdila. Desktop prostě vypadá trochu demodé, jak se říká u nás doma. Ale, neházím fintu do žita, třeba mi bude ukázáno, že se pletu.

Kdo dočetl až sem, zaslouží odměnu v podobě vyhlášení vítěze a škodolibého zadostiučinění. Možná to už některým došlo – Céčka jsou pro mě na dlouhé lokte, progresivní desktop-cosi-HTML je zatím tak na piškvorky a Javu jsem vyřadil už na začátku. Co z toho vyplývá?

Ano, správně, na celé čáře vítězí Java a Netbeans Platform. Dobře mi tak, že?

před 3 lety napsal Peter Láng | Komentáře: 11

Komentáře

Petr před 3 lety Reagovat

Co třeba node-webkit?

https://github.com/…/node-webkit

Peter Láng před 3 lety Reagovat

Je zmíněný. Ale nehodí se mi, protože imho neschováš zdrojáky, plus pár dalších důvodů.

Jakub Mottl před 3 lety Reagovat

Kdysi jsem řešil podobný problém, nepotřeboval jsem vytvořit nic složitého, ale potřeboval jsem to hodně rychle.

Zavzpomínal jsem na školní léta a sáhl jsem po Free Pascalu a Lazarus IDE: http://www.lazarus.freepascal.org/

Jediné co nevím je, jak to bude s bundlováním software třetích stran.

Peter Láng před 3 lety Reagovat

Díky, zrovna na tohle jsem při hledání vůbec nenarazil, prozkoumám.

Radek Voltr před 3 lety Reagovat

Dobra volba, ve FreePascalu jde kompilovat prakticky pro cokoliv (vcetne iOS, Android, Raspberry PI a obskurnich platforem viz – http://wiki.freepascal.org/Platform_list )

Pokud by nekdo mohl obetovat Linux a obskurni platformy ale chtel placene reseni s podporou tak mohu doporucit Embarcadero Delphi (nebo RAD Studio kde je v baliku i C++ a PhoneGAP) ktere podporuji windows, Mac, ios a android

A pouze poznamka – vsechno to generuje nativni, plne kompilovany kod takze neni problem zadna integrace.

Pokud by se nekomu nechtel ucit pascal tak bych doporucil se podivat na MonoDevelop. Je to primarne C# coz je z jazykoveho hlediska hybrid mezi C, Pascalem a Javou :-D

Tom před 3 lety Reagovat

Loni se nam na desktopovku (taky po hodne dlouhe dobe) osvedcil Griffon (Groovy nad JVM)

Peter Láng před 3 lety Reagovat

Díky, na Griffon jsem při hledání narazil a chvíli si myslel, že to je přesně to co jsem hledal. Pak jsem ale četl pár článků ve smyslu, že Groovy v podstatě prohrálo se Scalou a jak se to na projektu negativně podepsalo.

Pak jsem ještě vlezl do dokumentace a klikl na Griffon Guide a to mě trochu vyděsilo ;-)

Ale myslím, že kdybych se desktopu chtěl dlouhodobě věnovat, Griffon bych zkusil.

Karel Žoha před 3 lety Reagovat

Když java proč ne Java FX? Verze 2 mi přijde už docela zajímavá.

Peter Láng před 3 lety Reagovat

Pochopil jsem to tak, že Java FX je něco jako Swing, v tom smyslu, že je to podobně „nízkoúrovňové“, takže nad tím chci nějaký „framework“ a takže to můžu případně použít i v „prostředí“ Netbeans platform. Pochopil jsem to špatně?

Karel Žoha před 3 lety Reagovat

Ano, je to vlastně tak, že Java FX je vlastně „Swing reworked“ a FX komponenty určitě půjdou použít i v rámci Netbeans Platform. Jen mě zarazilo, že plánuješ použít za každou cenu nějaký „heavy weight“ framework jako je Netbeans nebo Eclipse Platform. Nevím jak rozsáhlou aplikaci plánuješ ani kolik vývojářů na ní bude najednou pracovat, jen mi příjde, že potřeba za každou cenu použít nějaký mega cool framework vede často k tomu, že: „…aplikace napsané v Javě jsou, jak všichni víme, pomalé a nenažrané a vůbec“ ;-).

Peter Láng před 3 lety Reagovat

Ono to není za každou cenu, je to kompromis a řekl bych klasické dilema ;-) Jestli mi něco jako Netbeans platform umožní něco vyrobit v rozumném čase, tak tu daň, v podobě pomalejšího startu aplikace například, holt zaplatím. A když se stane, že aplikace bude existovat a bude mít nějaký úspěch, tak pomalý start bych řešil až potom.

Zkrátka, lepší je mít pomalou aplikaci, než žádnou ;-) Každopádně díky za tip, padlo i pár dalších tak ještě uvidím jak se to vyvrbí.

Přidat komentář

  • Můžete použít Texy syntaxi, HTML není povoleno
  • Například: *kurzíva*, **tučně**, "text odkazu":adresa