Svi programeri su svjesni Äinjenice da jedan programski jezik ne moÅŸe biti dobar za sve vrste programiranja, no zato su tu multi platformska rjeÅ¡enja koja mogu pomoÄi. S njima moÅŸete koristiti svoj omiljeni jezik i napraviti aplikaciju i za one platforma za koje inaÄe ne biste mogli. ZvuÄi zanimljivo, zar ne?
Ako se bavite programiranjem, bilo profesionalno ili u slobodno vrijeme, onda znate da se trenutaÄno ponajviÅ¡e traÅŸe programeri za web aplikacije, te programeri koji znaju razviti mobilnu aplikaciju za odreÄenu platformu. Upravo nas ova druga skupina zanima â programeri za mobilne aplikacije. Ti isti programeri razvijaju najÄeÅ¡Äe aplikacije ili za iPhone ili za Android, no postoje joÅ¡ neke platforme u svijetu koje se koriste i koje ne smijemo zaboraviti. Makar one imale mali udio na tom trÅŸiÅ¡tu. NameÄe se pitanje kako razviti aplikaciju, a da ju Å¡to veÄi broj korisnika moÅŸe koristiti. Da li iÄi razvijati istu aplikaciju za iPhone koristeÄi Xcode, aplikaciju za Android koristeÄi Eclipse i tako dalje ili koristiti univerzalno rjeÅ¡enje? Upravo se tim univerzalnim (multi platformskim razvojnim) rjeÅ¡enjima bavimo danas. Na trÅŸiÅ¡tu postoji mnogo razliÄitih proizvoda, a mi smo za vas izabrali 3, odnosno 4 najpopularnija. Ipak, prije nego se pozabavimo konkretnim rjeÅ¡enjima, pogledajmo koje su prednosti ovih rjeÅ¡enja.
PiÅ¡e: Boris PlavljaniÄ
Prednosti
1) VeÄi doseg â PriliÄno je oÄito da ako pokrijete veÄi broj platformi, veÄi broj ljudi Äe koristiti vaÅ¡u aplikaciju. Google i Apple imaju, kao Å¡to smo rekli, daleko najveÄi udio na trÅŸiÅ¡tu mobilnih aplikacija, no postoje joÅ¡ uvijek milijuni ljudi koji koriste Blackberry, Windows Phone, Symbian, Palm ⊠i kojima moÅŸete prodati aplikaciju. Dovoljno je da samo par tisuÄa ljudi koji koriste manje zastupljene operativne sustave kupi vaÅ¡u aplikaciju i napravili ste odliÄan posao.
2) LakÅ¡i marketing â Da bi se aplikacija dobro prodavala potreban je marketing. Ako radite aplikaciju za svaku platformu posebno, vrlo vjerojatno Äete napraviti jednu pa raditi marketing za nju. Pa Äete napraviti drugu aplikaciju, tj. za drugu platformu i opet ispoÄetka. Kada koristite multi platformska rjeÅ¡enja, marketing moÅŸete raditi odjednom za sve platforme i uÅ¡tedjeti vrijeme i novac.
3) Jedan kÃŽd za odrÅŸavanje â OdrÅŸavanje kÃŽda zna biti vrlo naporno, pogotovo kada imate viÅ¡e varijanti koje morate mijenjati. Sa spomenutim rjeÅ¡enjima imate samo jedan kÃŽd koji prepravljate, a odnosi se na sve platforme.
4) Jednak izgled za sve â PriliÄno je teÅ¡ko napraviti da aplikacija na svim platformama izgleda jednako i da imate jednak osjeÄaj koriÅ¡tenja. Uvijek postoje odreÄene razlike i veÄina korisnika to neÄe primijetiti jer koristi jednu platformu, no ipak nije to to. Na ovaj naÄin Äete svesti te razlike na minimum, a Äesto one neÄe ni postojati Å¡to je jako dobro, pa Äe aplikacije izgledati (i biti) identiÄne.
5) Koristite poznatu tehnologiju â Ovo je moÅŸda i najvaÅŸnija toÄka. KoristeÄi multi platformska rjeÅ¡enja moÅŸete koristiti tehnologiju, toÄnije programski jezik koji poznajete i u kojem se odliÄno snalazite. To je ogromna prednost jer nije praktiÄno uÄiti 3-4 jezika za 3-4 razliÄite platforme.
6) Manji troÅ¡kovi razvoja aplikacije â To se odnosi na kompanije koje razvijaju aplikacije. Mnogo je jeftinije imati jedan programerski tim koji razvija aplikaciju za viÅ¡e platformi, nego viÅ¡e timova. Uz to, ovako se timovi ne moraju usuglaÅ¡avati oko odreÄenih rjeÅ¡enja i raditi kompromise, nego su sve odluke samo na jednom timu.
Mane
Postoje i odreÄene mane kod koriÅ¡tenja ovih razvojnih rjeÅ¡enja, no one su viÅ¡e tehniÄke prirode. Ponekad nije moguÄe napraviti da aplikacija jednako radi na iPhone i Androidu iz razloga Å¡to imaju drugaÄije mehanizme prikaza i rada ekrana. ToÄnije, drugaÄije pozivaju odreÄene evente. MoguÄe je i da Äete za Android morati napisati 100 linija kÃŽda, a za iPhone moÅŸda 20-ak. Takve stvari se dogaÄaju i sasvim su normalna pojava, no razvojno okruÅŸenje je tu da to svede na minimum i da vam pomogne Å¡to viÅ¡e moÅŸe. Treba samo pripaziti da se ne naruÅ¡i fleksibilnost razvoja aplikacije, a to Äe se dogoditi upravo u ovom sluÄaju â kada poÄnete za odreÄene platforme pisati drugaÄiji kÃŽd.
Xamarin
Htjeli priznati ili ne, postoje samo dva programska jezika za programiranje nativnih mobilnih aplikacija, a to su Objective-C i Java. Ako ste iskusni C# programer, a htjeli ste programirati aplikaciju za iPhone ili Android niste imali sreÄe. No, stvari se polako mijenjaju â doÅ¡ao je Xamarin 2.0 koji vam omoguÄuje da napiÅ¡ete aplikacije za iPhone i Android koristeÄi C# programski jezik. InaÄe, Xamarin SDK je baziran na open source projektu koji je poznat pod nazivom âMonoâ i koji omoguÄuje pokretanje.NET aplikacija na drugim platformama. U ovom sluÄaju su to iPhone i Android telefoni. A najbolje od svega je Å¡to pri razvoju aplikacija moÅŸete koristiti najbolju razvojnu okolinu na trÅŸiÅ¡tu â Visual Studio. Xamarin ima svoj Studio, no moÅŸete ga i âprislonitiâ na Visual Studio i koristiti sve svoje omiljene moguÄnosti u njemu. Izbor je samo vaÅ¡.
Xamarin ima samo jedan cilj, a to je pruÅŸiti vam najbolje rjeÅ¡enje za programiranje mobilnih aplikacija. Da li je najbolje rjeÅ¡enje ili ne, prosudite sami nakon Å¡to ga isprobate, no zasigurno je meÄu top 5 rjeÅ¡enja na trÅŸiÅ¡tu.
Samo postavljanje Xamarina nije teÅ¡ko â skinite ga i instalirajte. Naravno, morati Äete pri prvom pokretanju podesiti odreÄene parametre, no vrlo je jednostavno pa neÄemo tome pridavati mnogo paÅŸnje. Samo jedna napomena â ako nemate sve potrebne SDK-ove i sliÄno, Xamarin Äe tih okom instalacije skinuti lokalno na raÄunalo, pa bi se instalacija mogla oduÅŸiti i na sat vremena (a moÅŸda i viÅ¡e). Nakon Å¡to ste instalirali aplikaciju, podesili Å¡to trebate, vrijeme je da poÄnete razvijati aplikaciju.
Razvoj aplikacije u Xamarinu sastoji se iz dva dijela, ako to moÅŸemo tako reÄi. Jedan dio tiÄe se Äisto âback-endâ dijela, odnosno dijela aplikacije koji se ne tiÄe grafiÄkog suÄelja, a drugi dio se odnosi na specifiÄnu platformu i tiÄe se grafiÄkog suÄelja. Pojednostavljeno â onaj ânevidljivi dioâ, kako aplikacija radi, piÅ¡ete samo jedanput za sve platforme. A grafiÄko suÄelje Äete morati posebno napraviti za svaku platformu. To je jedna od mana ovog programa, no zbog tehniÄkih problema nije bilo moguÄe napraviti univerzalni editor u kojem Äete nacrtati suÄelje, iskoristiti univerzalne widgete i sloÅŸiti aplikaciju. No, poÅ¡to je suÄelje moÅŸda 10% posla, mislimo da to i nije tako veliki problem.
Vratimo se joÅ¡ malo na ovaj prvi dio programiranja koji se tiÄe svih platformi. On se sastoji od C# programskog jezika i.NET baznog libraryja koji vam omoguÄuje sve osnovne funkcionalnosti â spajanje na Internet/mreÅŸu, razne strukture podataka, pristup datotekama, bazi podataka i dretvama. To vam je dovoljno da napravite skoro sve funkcionalnosti koje vam aplikacija treba imati. SpecifiÄne funkcije takoÄer moÅŸete izvesti, a nalaze se u libraryjima koji se zovu Xamarin.iOS i Xamarin.Android. Oni su sastavni dio Xamarin SDK-a, tako da se ne morate bojati da neÄete moÄi koristiti NFC hardver (Android) ili Core Animations (iPhone). Bitno je samo da sve te API-je dobro poveÅŸete i da sve bude kompatibilno. Ta kompatibilnost se postiÅŸe sa modularnoÅ¡Äu koju Xamarin nudi â odjeljivanjem pojedinih dijelova kÃŽda aplikacije. MoÅŸda vam sada zvuÄi komplicirano, no nije. Xamarin je fantastiÄan alat koji Äe programerima omoguÄiti da veliku veÄinu kÃŽda napiÅ¡u samo jednom i da na jednom mjestu odrÅŸavaju taj kÃŽd, te ga po potrebi aÅŸuriraju. Ako ÅŸelite mijenjati grafiÄko suÄelje za Android ili iPhone platformu, moÅŸete bez da dirate originalni kÃŽd. Da li Xamarin ima mjesta za napredak? Naravno. Toga su svjesni i u kompaniji koja stoji iza Xamarina i veÄ su najavili hrpu novih moguÄnosti koje Äe doÄi sa novom verzijom koja bi po svemu sudeÄi trebala joÅ¡ viÅ¡e olakÅ¡ati programiranje i smanjiti razlike meÄu platformama. Nemamo razloga im ne vjerovati, jer su veÄ sada napravili odliÄan posao, a svaka nova verzija moÅŸe biti samo bolja.
PhoneGap
Druga aplikacija vrijedna spomena je PhoneGap. Ako se bavite programiranjem vrlo vjerojatno ste Äuli za nju. Ako niste, nema problema. Mi Äemo vam pokazati Å¡to ona moÅŸe i kako funkcionira. PhoneGap je, kao i Xamarin, open source projekt, toÄnije open source framework koji sluÅŸi za brzu izgradnju mobilnih aplikacija. Iako nemamo previÅ¡e iskustva u mobilnom developmentu, odluÄili smo probati PhoneGap i dati mu Å¡ansu. Dati mu Å¡ansu jer podupire veliki broj mobilnih platformi â iOS, Android, Blackberry, Windows phone, Symbian i Tizen. Vjerojatno poznajete sve navedene platforme, no Tizen bi mogao biti misterij. To je Linux bazirani operativni sustav napravljen za prijenosne ureÄaje kao Å¡to su tableti, pametni telefoni, pametne kamere i sliÄno, a iza njega stoji Technical Steering Grupa (TSG) koja se zapravo sastoji od Samsunga i Intela. Zato Tizen moÅŸete vidjeti na nekim Samsungovim modelima. No, vratimo se na PhoneGap.
PhoneGap je namijenjen iskljuÄivo onim programerima koji ÅŸele probati napraviti mobilne aplikacije koristeÄi HTML5, CSS3 i JavaScript. To su veÄinom web programeri koji nisu vjerojatno imali doticaja sa drugim programskim jezicima ili se u profesionalnom smislu ne bave razvojem mobilnih aplikacija. HTML5 i CSS3 su odliÄni za izradu grafiÄkog suÄelja, a logika se rjeÅ¡ava uz pomoÄ JavaScripta. Naravno, JavaScript vam sluÅŸi za pristupanje nativnim funkcionalnostima mobilnog telefona, tako da budite svjesni Äinjenice da ste u odreÄenim segmentima ipak ograniÄeni. S druge strane, naravno da moÅŸete napraviti vrhunsku aplikaciju s time i imati odliÄne performanse bez obzira da li aplikaciju vrtite na Android telefonu, iPhoneu, Blackberryju âŠ
Kada poÄnete graditi aplikaciju sa PhoneGapom, potroÅ¡iti Äete jako puno vremena da shvatite kako on zapravo funkcionira. I mi smo proveli sate i sate ÄitajuÄi dokumentaciju, gledajuÄi razne video tutorijale, skidajuÄi kÃŽd sa Githuba. Jednostavno treba vremena da uÄete u cijelu priÄu i da vidite kako se mobilna aplikacija radi. Kada to svladate, sve Äe iÄi mnogo lakÅ¡e. Prednosti PhoneGapa su:
– Kodiranje aplikacija koristeÄi HTML/CSS/JS, umjesto Objective-C-a i Jave
– Mnogo lakÅ¡e odrÅŸavanje i izgradnja aplikacije
– Manje kÃŽda za odreÄene funkcionalnosti, nego Å¡to bi vam trebalo da koristite âpraveâ programske jezike
– Jednostavnije i ÄiÅ¡Äe grafiÄko suÄelje za korisnika (Å¡to nije uvijek prednost, ali u velikoj veÄini sluÄajeva je)
– PodrÅ¡ka za veliki broj mobilnih platformi
– Open source je Å¡to znaÄi da Äe doÄi mnoge nove funkcionalnosti sa novim verzijama
Naravno, ima PhoneGap i loših strana. Neke od njih su:
– PhoneGap ne podrÅŸava sve moguÄnosti koje bi inaÄe telefoni mogli imati da je aplikacija razvijena u Objective-C-u (iPhone) ili Javi (Android)
– PhoneGap se dosta rijetko aÅŸurira pa ponekad ne moÅŸete koristiti neke specifiÄne funkcije koje su kasnije predstavljene
– Ponekad aplikacije za odreÄene platforme trebaju dodatne prilagodbe Å¡to moÅŸe uzeti dosta vremena
Sve u svemu, mi smo zadovoljni sa PhoneGapom iako ima dosta prostora da bude bolji pa oÄekujemo nove moguÄnosti uskoro. Å to se samog razvoja tiÄe, moguÄnosti su vam ogromne, a samo vaÅ¡e (ne)znanje je ograniÄenje. No, sa malo Äitanja po webu moÅŸete uÄiniti mnogo toga.
Appcelerator Titanium
TreÄe multi platformsko rjeÅ¡enje koje moramo spomenuti je Titanium. Proizvod iza kojeg stoji velika kompanija Appcelerator koja ima svega pet godina, a veÄ je mnogo toga postigla. RijeÄ je o kompaniji koja se praktiÄki formirala nakon izlaska prvog iPhonea i nekoliko drugih pametnih telefona, a specijalizirala se u izradi platformi za izradu (mobilnih) aplikacija. Vjerojatno ste kroz tekst primijetili da se ova multi platformska rjeÅ¡enja orijentiraju prema mobilnim tehnologijama jer je izrada mobilne aplikacije jednostavnija nego izrada desktop aplikacija, a i mnogo je veÄa potraÅŸnja za mobilnim aplikacijama nego za ostalim vrstama aplikacija. Tu je i problem piratstva i naplate desktop aplikacija, no to je tema za neki drugi put. Vratimo se mi Appceleratoru.
Kao Å¡to smo rekli, Appcelerator ima svega 5 godina, a u tom razdoblju su strahovito brzo iÅ¡li prema naprijed. Prvo su pruÅŸali podrÅ¡ku samo za razvoj Android i iPhone aplikacija, pa su tokom 2009.-e godine dodali i podrÅ¡ku za iPad, a godinu dana kasnije i za Blackberry. Najnovija podrÅ¡ka je za Tizen, kojeg smo veÄ spominjali u ovom tekstu. Sve u svemu vrlo impresivno. InaÄe, Titanium nije âsamo rjeÅ¡enjeâ za izradu aplikacija, nego punokrvna platforma koja pruÅŸa jako puno korisnicima. To moÅŸete vidjeti i po reÄenici koja piÅ¡e na njihovim sluÅŸbenim web stranicama koja kaÅŸe: âNije problem zapoÄeti razvoj aplikacije, problem je u skaliranju i infrastrukturiâ. I tu zapravo leÅŸi razlog zaÅ¡to biste trebali razmotriti Titanium. Na sluÅŸbenim stranicama moÅŸete skinuti sav potreban softver, pa se neÄemo s time zamarati. TakoÄer, tamo Äete naÄi i sve relevantne informacije, dokumentaciju, video tutorijale, eksterne veze na dodatne web stranice i joÅ¡ mnogo toga.
Sama Appcelerator Platforma ima tri segmenta koji omoguÄuju brzi razvoj aplikacija. To su alati za izgradnju aplikacije, API-ji i alati za analitiku koji Äe vam pomoÄi da optimizirate aplikaciju. Pa krenimo redom.
– Alati â Appcelerator ima svoj studio koji skinete (zajedno sa SDK-om) i u kojem se nalaze svi potrebni alati da biste razvili aplikaciju. Ne morate niÅ¡ta dodatno skidati, sve Äe studio sam skinuti i implementirati. Ako baÅ¡ neÅ¡to i nedostaje, to Äete skinuti sa par klikova miÅ¡em unutar aplikacije. Jezik koji se koristi je javaScript u kombinaciji sa HTML-om 5 i CSS-om 3, kao i kod PhoneGapa. No, to se tiÄe mobilnih aplikacija. Sa Titaniumom je moguÄe pisati i desktop aplikacije (ali Äete morati skinuti odreÄene dodatke za Titanium platformu) u programskim jezicima Pythonu, Rubyju i PHP-u. MoÅŸda pomalo i nespretan odabir programskih jezika, no Å¡to je tu je. Platforma Äe vam olakÅ¡ati pisanje i generiranje kÃŽda Å¡to je viÅ¡e moguÄe.
– API â ugraÄenih API-ja ima mnogo, pitanje je za Å¡to vam trebaju. Ovdje Äete naÄi API-je za spajanje na druÅ¡tvene mreÅŸe (Google+, Twitter, Facebook, LinkedIn, 4square âŠ), servise za online plaÄanje, spajanje na SAP sustave, spajanje na Oracle sustave i druge razne API-je koji vam mogu dobro doÄi kod razvijanja aplikacija.
– AnalitiÄki alati â Dobra aplikacija nije samo aplikacija koja ima lijepo suÄelje i koja dobro radi. Dobra aplikacija je optimizirana, nema memorijskih rupa, koristi najsigurnije mehanizme za pohranu i pristupanje podacima, a autor aplikacije zna Å¡to korisnici ÅŸele, za Å¡to ponajviÅ¡e koriste aplikaciju, koliko resursa im treba za odreÄenu radnju itd. Rekli smo da je Titanium i cloud-bazirana platforma, pa Äete tako moÄi prikupljati podatke o svojim korisnicima i analizirati ih. Naravno, neÄete poput Googlea moÄi vidjeti sadrÅŸaj koji se nalazi unutar aplikacije koju napravite, no zato Äete dobiti sve druge relevantne podatke. Å to je u konaÄnici odliÄna stvar iz razloga koje smo naveli, a sve podatke moÅŸete prikupljati u realnom vremenu.
KonaÄna ocjena Titaniuma â odliÄno! Svakako preporuÄamo kao prvi izbor.
QucikConnectFamily Hybrid (Framework)
I za kraj Äemo joÅ¡ kratko spomenuti QuickConnectFamily Hybrid (skraÄeno: QCFH). RijeÄ je o frameworku koji su napravili studenti MIT-a i besplatno ga postavili na Internet. RijeÄ je o jednom od najmoÄnijih frameworka na trÅŸiÅ¡tu (moguÄe ga je koristiti na svim platformama i sa mnogim programskim jezicima), ali ne sluÅŸi za razvoj mobilnih aplikacija, nego za razvoj desktop i server aplikacija. MoÅŸete ga koristiti i za razvoj nativnih mobilnih aplikacija, ali samo za Android i iPhone. Ako ÅŸelite razvijati aplikaciju za neku drugu platformu, izaberite neki drugi alat ili framework.
QCFH nas je oduÅ¡evio specifiÄnim moguÄnostima â jako je pojednostavnio razvoj enterprise aplikacija, te njihovo skaliranje. Programski jezici koje moÅŸete koristiti s ovim frameworkom su: Objective-C, C, C++, PHP, Java, Erlang. Za razvoj mobilnih aplikacija, pogaÄate, moÅŸete koristiti JavaScript, HTML5 i CSS3.
Kada smo rekli da je ovaj framework pojednostavnio razvoj enterprise aplikacije, mislili smo prvenstveno na veliki broj ugraÄenih libraryja i API-ja koji Äe veliki dio posla odraditi umjesto vas. Recimo, zaÅ¡to biste uÄili komplicirani API za JS koji sluÅŸi za spajanje na bazu podataka, kada imate ugraÄene funkcije koje Äe to uÄiniti za vas sa manje od 10 linija kÃŽda. MoÅŸda se Äini kao neÅ¡to trivijalno, no ovakve funkcije jako skraÄuju vrijeme razvoja aplikacije, kao i njegovu kompleksnost. No, ne radi se tu samo o spajanju na bazu podataka. Tu je i hrpa funkcija s kojima moÅŸete pristupiti hardveru na kojem se nalazi vaÅ¡a aplikacija, te raditi sa datotekama na raÄunalu (spremati ih, dohvaÄati, otvarati/zatvarati âŠ), koristiti mreÅŸne resurse, vanjske ureÄaje, koristiti razne web servise, koristiti multi-threading, geolokacijske moguÄnosti, koristiti kameru, ÅŸiroskop (ako se radi o mobilnim ureÄajima), geste sa viÅ¡e prstiju, sve nativne funkcije ureÄaja ⊠Zapravo, ovaj framework je neÅ¡to Å¡to morate imati ako ÅŸelite brzo i jednostavno razviti aplikaciju. Postoje razne alternative ovom frameworku, no one su najÄeÅ¡Äe ograniÄene ili specijalizirane samo za odreÄeno podruÄje (npr. Framework za pristupanje bazi podataka), a QCFH pokuÅ¡ava sve objediniti. Nadalje, iako je rijeÄ o frameworku koji je napravio MIT, postoji veliki broj korisnika koji nemaju veze sa tim sveuÄiliÅ¡tem, a pomaÅŸu razvoju frameworka Å¡to Äe reÄi da je ovo jedna vrsta open source projekta koji se i dalje razvija i nastaviti Äe se razvijati u buduÄnosti. Stoga, ako ste programer i bavite se razvojem desktop/server aplikacija, svakako ga isprobajte. NeÄete niÅ¡ta izgubiti, a vjerujemo da Äe vam pomoÄi u svakodnevnom radu.
Multi platformska rjeÅ¡enja – da ili ne?
Na kraju da odgovorimo na pitanje da li treba koristiti multi platformska rjeÅ¡enja ili ne. Odgovor nije jednostavan i ovisi o tome Å¡to ÅŸelite postiÄi. Ako ÅŸelite razviti aplikaciju i podijeliti ju sa Å¡to veÄim brojem korisnika, odnosno napraviti ju za Å¡to veÄi broj platformi, onda je ovo rjeÅ¡enje idealno. Pisati samo jedan kÃŽd koji moÅŸete uz minimalno truda prilagoditi svim platformama, Äini se kao utopija. Ako ÅŸelite napraviti pravu desktop aplikaciju, tada je svakako bolje uzeti odreÄeni programski jezik i napraviti ju na âpraviâ naÄin. Recimo, koristeÄi Javu ili C#. DapaÄe, C# je moÅŸda najbolji izbor jer moÅŸete koristiti Windows Forme, WPF i sliÄno. Å to se frameworka tiÄe â oni su uvijek dobrodoÅ¡li, makar ponekad njihova veliÄina moÅŸe biti teret. Svako rjeÅ¡enje ima svojih pozitivnih i negativnih strana, a na vama je da odvagnete Å¡to ÅŸelite i prema tome odaberete najbolje rjeÅ¡enje za programiranje aplikacije.