15.11.2015.

GTK+ vs Qt








          Tekst je objavljen u LiBRE! časopisu broj 30. 
          Autor je Dejan Čugalj.



Reč „vs” predstavlja simbol večite borbe. Bukvalan prevod sa engleskog na srpski jezik reči „vs ” bio bi „protiv”. Isto značenje ima i u sportu (boks, fudbal i ragbi) i u programerskim krugovima. Ponekad može da bude sinonim za svađe, uvrede i ponižavanje među suparnicima. U boksu se suparnici pre borbe međusobno svađaju kao deo estrade. U programerskim krugovima za to su zaduženi forumi i seminari. Ponekad rasprave za i protiv postaju nezaustavljive, iako se neretko radi o veoma školovanim i inteligentnim ljudima. Naš naslov preveden sa engleskog, prema tome, znači „ GTK+ protiv Qt ”-a, sa prizvukom da se radi o večitom derbiju bez konačnog pobednika.

Samim uplitanjem ili komentarisanjem ovog večitog derbija, LiBRE! časopis se nalazi na „klizavom tlu” i suočava se sa opasnošću da postane neobjektivan. Radi se o nijansama koje zalaze u domen ukusa, a tada važi izreka: „O ukusima ne treba raspravljati”. Ovaj deo smo iskoristili da bismo se ogradili od moguće pristrasnosti prema nekom od ova dva odlična kompleta alata, GTK+ i Qt, za pravljenje višeplatformskih aplikacija sa grafičkim korisničkim interfejsom (eng. GUI), koji su pisani u C ili C++ programskom jeziku.

Zahtevi
Pre svega postavlja se pitanje: Koji nam je cilj? Šta želimo da uradimo? Odgovorom na ta pitanja ćemo sigurno doći do pravog alata koji bi trebalo da koristimo, dok će vam ovaj članak dati samo dodatne smernice u odluci. Trebalo bi da postavimo sledeća pitanja:
• Da li vam je potreban samo alat za razvoj grafičkog korisničkog interfejsa ili kompletan framework za pisanje aplikacija sa API -jem za grafiku, slike, IO, zvuk i drugo?
• Da li ste se opredelili za određenu platformu?
• Ako pišete za nekog poslodavca, koji su njegovi zahtevi?

GUI Alati
Naravno da trenutno ne postoji savršen alat za IT razvoj, mnogo je faktora koji na to utiču. Tako da, ako ste C programer, ili ste orijentisani ka Gnome , LXDE ili Xfce okruženju, najverovatnije ćete se odlučiti za GTK+ , dok, ako koristite C++ programski jezik i KDE okruženje radne površi, odlučićete se za Qt , a to su ujedno i prve razlike koje donose ova dva skupa alata.



Oba skupa alata (eng. toolkit), GTK+ i Qt, otvorenog su koda i namenjena su razvoju grafičkog korisničkog interfejsa i koriste pristup „ napiši jednom, kompajliraj bilo gde”. Oni dozvoljavaju programerima da koriste jedno izvorno stablo za sve aplikacije koje se mogu izvršavati na skoro svim vodećim ( mainstream ) operativnim sistemima: od Windows XP -a do Windows 8 , MAC OS X i Linux/Unix. Ovde Qt ima malu prednost jer podržava i Windows 95 , Simbian S60, Solaris , WebOS, Android i Ubuntu Phone , a takođe postoji verzija Qt -a za Embedded Linux sa istim API interfejsom. Jedna od većih prednosti nad GTK+ -om je ta što unutar Qt modula imamo konzistentno okruženje za razvoj potpune funkcionalne aplikacije a ne samo grafičkog dela.

PrednostiQt -a
Qt je svoju reputaciju napravio na svom intuitivnom i moćnom API-ju (eng. Application Programming Interface ), iza kog stoji razvojni tim Trolltech , koji je 2008. godine postao vlasništvo Nokije. Qt je izuzetno dobro dokumentovan što umnogome olakšava rad programerima. Razvojni ciklus aplikacije je mnogo brži i poprilično je lako ući u celu priču pod uslovom da imate programskog jezika. Qt je objektno orijentisan i koristi iole predznanja C++ programskog jezika. Qt je objektno orijentisan i koristi generatore koda: Meta-Object Compiler ( moc, http://goo.gl/Egdj17) i User Interface Compiler ( uic, http://goo.gl/qxRHgL).
Odličan alat za sâm razvoj je i Qt CreatorIDE (eng. integrated development environment, http://goo.gl/XyaE5Q), koji polaznike brzo uvodi u projekat.
Qt 5 moduli uključuju: QtCore, QtGui, QtMultimedia, QtNetwork, QtOpenGL, QtOpenVG, QtScript, QtScriptTools, QtSql, QtSvg, QtWebKit, QtXml QtXmlPatterns, QtDeclarative, Phonon i Qt3Support .
Moduli za rad sa Qt alatima su: QtDesigner, QtUiTools, QtHelp i QtTest.
Moduli za Windows programere su: QAxContainer i QAxServer.
Modul za Unix programere je QtDBus.

Ovakav sklop nam omogućava ne samo razvoj grafičkog dela, nego potpune aplikacije, dok još moramo da napomenemo da Qt dozvoljava izvršavanje na samom hardveru bez potrebe korišćenja X11 ili prozorskog menadžera (eng. window manager ). Adobeov program Photoshop Album je jedan od primera komercijalnih aplikacija za Windows napisanih pomoću Qt -a. Mnogi sofisticirani softverski sistemi u vertikalnom tržištu, kao što su alati za 3D animaciju, digitalnu obradu filma, finansijski servisi i alati za istraživanje nafte i gasa, napravljeni su uz pomoć Qt -a. Ukoliko ste uspeli da zarađujete za život pišući softver za Linux/Unix, jednostavnim prekompajliranjem ćete proširiti tržište za Windows i Mac OS X. Za Qt su na raspolaganju različita licencna prava. Komercijalizacija -zatvaranje kôda aplikacije, povlači i obavezu kupovine komercijalne licence. Ukoliko je vaš softver otvorenog koda, možete koristiti nekomercijalnu verziju Qt -a.

Prednosti GTK+
GTK+ je izvorno razvijen za GIMP (eng. GNU Image Manipulation Program , http://www.gimp.org) grafičku aplikaciju. Razvijen je i održavan je od strane Gnome fondacije. Jedna od značajnih prednosti GTK+ -a je postojanje velikog broja razvijenih aplikacija. Trenutna dokumentacija je dobra, ali upoređujući je sa Qt-ovom, malo je lošija jer GTK+ razvijaju samo dobra volja volontera i zajednice, dok u Qt-u radi čitav tim pod okriljem Nokije. GTK+ je licenciran pod GNU LGPL(http://goo.gl/aQfnQQ) što znači da imate prava i da komercijalizujete aplikaciju zatvorenog koda. GTK+ koncept dodatka ( eng. widget-concepts) je po mnogima superiorno rešenje u odnosu na Qt dizajn. Grafički editor GLADE (https://glade.gnome.org) je mnogo bolji i jednostavniji za rad.

Brzina
Ozbiljna debata se vodi oko brzine. GTK+ podanici ukazuju da Qt aplikacije imaju visok nivo memorijske konzumacije, dok suprotna strana tvrdi da je start-up vreme GTK+ aplikacija sporo. Doduše, ovde se radi o toliko malim nijansama da ih skoro i ne treba spominjati.

Zaključak
Sve u svemu, priča je mnogo šira i komplikovanija nego što je to prikazano ovim člankom. Prvi utisak je da Qt ima prednost nad GTK+ -om, ali kada se dublje sagledaju stvari, oba alata su izuzetna i skoro je sve moguće postići i jednim i drugim, samo su nijanse i trud u pitanju. S obzirom da je ovaj časopis namenjen zajednici otvorenog koda i da je ogromna razlika u licencama koje koriste Qt i GTK+ , onaj teži deo - odabir - ostavljamo ipak vama. Nadamo se da nismo prevagnuli ni na jednu stranu i da smo vam postavljanjem pitanja Koji nam je cilj? Šta želimo da uradimo? pomogli da izaberete stranu.

https://libre.lugons.org/index.php/broj-30/