Indítsunk azzal, hogy pontosan meghatározzuk, mi is az a mobil fejlesztés.
Bár a legtöbbek által ismert része természetesen a telefonos alkalmazások fejlesztése, mégsem ez az egyetlen terület amire ez a fejlesztés fókuszál.
Magában foglalja azon telefonok, táblagépek, intelligens órák, illetve más hordozható eszközök fejlesztését, amelyeken valamilyen mobil operációs rendszer fut.
Ez az egyik legdinamikusabban növekvő szoftverfejlesztési részterület, hiszen a felhasználók nagyrésze mobil eszközön keresztül éri el a legtöbb digitális szolgáltatást. Ezt a felfutást jól mutatja, hogy más fejlesztési területek is úgy formálódtak, hogy a mobilfejlesztéssel kompatibilitást tudjanak ápolni. Manapság még a webfejlesztőknek is gondolniuk kell arra, hogy a felhasználók hogyan tudják majd kezelni, illetve elérni az alkalmazásokat mobil eszközön keresztül.
Az is jól látható, hogy régebben könnyen elkülöníthető fejlesztési területek (mint például az előző példában a webfejlesztés és a mobilfejlesztés) közelítenek egymáshoz és mára elszakadtunk a csak lokálisan futó mobilalkalmazásoktól, olyannyira, hogy ma már egy weboldal is lehet teljesértékű mobilalkalmazás. Ez a jövő trendje is lehet, mivel a mobil eszközök egyre nagyobb teret hódítanak, és így a böngészők is dominánsabb szerepet játszanak a jövő operációs rendszereiben.
Mi a különleges a mobil fejlesztésben?
A szoftverfejlesztés egyik legérdekesebb területe mindig is a mobil fejlesztés volt.
Miért?
A mobilfejlesztés egyedülálló lehetőséget kínálhat egy olyan programozó számára, aki önállóan, viszonylag rövid idő alatt tartalmas és könnyen kezelhető alkalmazást szeretne lefejleszteni.
Ez a lehetőség a legtöbb szoftverfejlesztő számára elérhető.
Nem azt állítom, hogy egy ambiciózus mobilfejlesztő önmagában nem tudna létrehozni egy webalkalmazást vagy asztali alkalmazást, de ez a fajta fejlesztési terület sokkal elérhetőbb, mivel a mobil alkalmazások általában kisebbek és egyediek.
A mobil fejlesztés, mint iparág olyan, mint egy előröl induló asztali fejlesztési világ, ahol a legkisebb, egyszerű alkalmazással, mint például egy egyszerű 2D-s grafikával készült játékkal is hatalmas sikereket lehet elérni. A 8-bites és a 16-bites korszak retró stílusú játékai valahogy még mindig közkedveltek akár mobiltelefonon vagy táblagépen is.
Egy önálló fejlesztő számára az alkalmazásfejlesztés nem csupán egy lehetőséget jelent arra, hogy saját projektet építsen fel - ez vitathatatlanul a fejlődés jövője is, mivel a mobil eszközök egyre nagyobb és nagyobb részeit hódítják meg a mindennapi életünknek.
Ebben a cikkben letisztázzuk, hogy mi is az a mobil fejlesztés, megismerkedünk néhány fő mobil platformmal, illetve beletekintünk egy kicsit a fejlesztéshez használt technológiákba, hogy megtalálhassuk a hozzánk legközelebb álló platformot.
Főbb mobil platformok
Valójában az informatika történelmében már nagyon sok különböző mobil alkalmazás-fejlesztési platform született meg, ám a közelmúltig nagyon kiegyenlített volt a verseny, így nem létezett domináns platform. Ezt az állóvizet zavarta fel az iPhone 2007-ben. Az Apple, mint egy kézigránát robbantotta be új csúcsmobilját, ami platformbukásokat és váratlan felemelkedéseket idézett elő. Nem csak az Apple-nek. A Windows CE rendkívül ígéretesnek ígérkezett, de nem tudták kellőképpen fejleszteni. A BlackBerry úgy tűnt, hogy uralni fogja a világot, és talán egy ideig így is volt.
Napjainkban két fő irányzat létezik:
iOS
Az iOS vitathatatlanul a „nagy kutya” a mobil fejlesztésben, részben azért, mert ez volt az a platform, amely korszerűvé tette a mobil eszközt a mobil szoftver ötletének teljes átalakításával. Az iOS-t természetesen az Apple fejlesztette ki, és kizárólag az Apple termékein fut. A cikk írásakor az iOS az iPhone készülékeken, iPod készülékeken, iPad készülékeken, Apple órákban az Apple TV-n és autókban is fut. Az iOS háttere Unix-szerű; alapja Darwin (BSD) és az OS X. Néhány fontosabb keretrendszer használja az OS X-et, melynek felhasználói felülete az Apple Cocoa UI-n alapul. Ezt az OS X alkalmazásokban használták, de az érintő eszközökre módosították, majd újra tervezték és most Cocoa Touch néven hívják őket. Az Apple számos natív eszközt és könyvtárat kínál az iOS-fejlesztőknek az iOS-alkalmazások fejlesztéséhez, és bár nem kell az Apple fejlesztőeszközeit használnia az alkalmazások készítéséhez, az appok összeállításához Macintosh operációs rendszerrel kell rendelkeznie. Az iOS alkalmazásokat általában az Objective-C vagy a platform népszerűbb fejlesztési nyelvének, a Swiftnek a felhasználásával készítik.
Android
Ha nem iOS, akkor valószínűleg Android vagy mindkettő.
Az Android a másik domináns szereplője a területnek. Az Android egy kicsit később érkezett meg a piacra, először 2008. szeptemberében jelent meg, majdnem egy évvel később, mint az iOS, habár már 2005-től a Google köreiben fejlesztették az operációs rendszert, de a későbbi betörés ellenére is sikerült megszereznie a mobilpiac igen nagy részét. Technikai szempontból az Android a mobil operációs rendszer, amely a legnagyobb, domináns részesedéssel rendelkezik a piacon 80 %-ossal, szemben az iOS 18 %-os részesedésével. Ezek a számok egy kicsit megtévesztőek lehetnek, mivel az Android egy szétaprózott piac, amely különböző gyártók által gyártott különböző eszközeiből áll, amelyek az Android operációs rendszer különböző verzióit futtatják.
Ez az elsődleges különbség az iOS és az Android között.
● A Google által támogatott és open source az Android.
● Az Apple által támogatott iOS zárt rendszerű, így az operációs rendszer fejlesztése kizárólag az Apple kezében van.
Bárki építhet Android eszközt, amit arra terveztek, hogy különféle hardverplatformokon és eszközökön futhasson, nagyon eltérő tényezőkkel és képességekkel. Habár felröppent a hír az év közepén, hogy a Google ezt a rendszert is fizetőssé tenné legalább is Európában és egyre inkább úgy néz ki, hogy ez valóban életbe fog lépni, de maga a rendszer továbbra is ingyenes marad. Az iOS-t úgy tervezték, hogy csak egy meghatározott Apple eszközökkel működjön. Az Android a Linux kernelén alapul, és az Android forráskódját nyílt forráskódként engedi használni a Google. Az Apple-höz hasonlóan a Google is kínál jónéhány natív eszközt az Android fejlesztéséhez. Az Android OS alkalmazás natív fejlesztési platformja a Java vagy a Kotlin.
Minden más platform
Mindenki, aki a mobil operációs rendszer piacán maradt, a teljes piac részarányos, kevesebb, mint 2 százalékos részesedésével rendelkezik. A fennmaradó részek közül valószínűleg a legnagyobb a Microsoft (Windows Phone) és a BlackBerry, ám ezek többnyire jelentéktelenek. Valószínűleg idő kérdése, mielőtt mindkét mobil platform teljesen eltűnik. Kis piaci részesedésük miatt a többiekről sem fogok beszélni, mivel ezek olyan platformok, melyek rendkívül nagy eséllyel eltűnnek a süllyesztőben. De ahogy mondtam, vannak a platformok közötti (krossz-platform) mobil alkalmazások fejlesztésének lehetőségei - amelyekről kicsit később fogunk beszélni -, amelyek lehetővé teszik ezen szélsőséges versenytársak számára történő fejlesztést gyakorlatilag külön költség nélkül.
Javaslom, ha mobilalkalmazást fog fejleszteni és mobilalkalmazás-fejlesztővé válik, válasszuk az iOS vagy az Android lehetőséget.
Hogyan történik a mobil fejlesztés
Az iOS és az Android első megjelenésekor, ha meg akarta valaki tanulni, hogyan kell mindkét platformon fejleszteni a mobil alkalmazásokat, megtanulta az egyes gyártók által biztosított natív eszközök használatát. Az iOS esetében ez volt az XCode és az Objective-C. Az Android esetében ez egy Android SDK plugin volt, az Eclipse számára. Ez volt a múlt. Azonban minél nagyobb figyelmet kap egy platform annál változatosabb, színesebb lesz idővel és a mobil fejlesztés ma virágkorát éli.
Számtalan keretrendszer, eszköz, teljes platform és ökoszisztéma létezik a mobil alkalmazások fejlesztéséhez. Szinte minden programozási nyelvben megjelentek mobilfejlesztési lehetőségek, és a mobilalkalmazások akár úgy is felépíthetők, hogy kizárólag a mobil böngészőben működjenek. Annak ellenére, hogy számos lehetőség áll rendelkezésre, néhány nagyobb kategóriába sorolhatjuk őket.
Natív fejlesztés
Nyilvánvaló, hogy natív módon is fejleszthetünk mobil alkalmazásokat olyan eszközökkel, amelyeket a mobil operációs rendszer gyártója kínál számukra. Mint már említettem, az iOS esetében ez eredetileg az XCode és az Objective-C volt, ám az Apple létrehozott egy új nyelvet, ez a Swift nyelv, amely mára már az elsődlegesen választott program nyelv az iOS alkalmazások fejlesztésére. Az Android világa nem sokat változott, azzal a különbséggel, hogy a Google kiadta saját Android Development Studio IDE-jét. A Java és Kotlin továbbra is előnyben részesített nyelvek (bár az igazán bátrak, a C / C++ nyelven is próbálkozhatnak, amely hivatalosan támogatott). A natív mobil fejlesztésnél a legnagyobb probléma az, hogy ahány platformot szeretnénk lefedni alkalmazásunkkal annyi programkód különálló lefejlesztése és nem mellesleg rendszer ismerete is szükséges egyben. Ez nem túl jó üzlet, hiszen az alkalmazásokat általában támogatni kell, így egy alkalmazás különböző verzióinak támogatása kettő vagy több teljesen különböző platformon rémálommá válhat.
Az Android és az iOS fejlesztése nagyon különbözik egymástól.
Az eszközök különböznek, a nyelvek, a keretrendszerek, a szolgáltatások és a fejlesztési paradigmák is eltérőek. Ha egy alkalmazás iOS és Android verzióját kívánjuk létrehozni, akkor fel kell készülni arra, hogy két nagyon különböző, fejlődő platformot ismerünk meg. Ugyanakkor a natív fejlesztésnek van néhány előnye is. A legfőbb erénye a nyers sebessége - bár néhány olyan platformon átívelő keretrendszer, mint például a Xamarin, felvehetik ezzel a versenyt, mivel natív kódra fordít, általában elmondható, hogy a natív fejlesztési irányzatnál jobban optimalizáltat létrehozni szinte lehetetlen.
A natív kódra fordító keretrendszer használatán kívül, a natív kód sokkal gyorsabb lesz, mint bármely más megoldás. Mindemellett fontos kiemelni, hogy a platform specifikus fejlesztés mindig célspecifikus hátteret kap a gyártótól (Apple, Google stb.) így például a tesztelés natív környezetben lényegesen könnyebb és hatékonyabb is lehet. Valószínűbb, hogy képesek leszünk kihasználni a platform néhány natív tulajdonságát is, és így közelebb kerülhetünk a hardver szintjéhez. (Habár, valószínűleg ez nem feltétlenül igaz, néhány keretrendszer kivételt képez ez alól.) Összességében hasznos tudni, hogyan kell kezdeni a natív mobil fejlesztést, de egy többplatformos megoldás igencsak lecsökkentheti a fejlesztési időt, ha fontos, hogy az alkalmazás a lehető legtöbb OS-n fusson.
Krossz platform keretrendszerek és eszközök
A következő lehetőség az, hogy egy olyan keretrendszert vagy eszközt használunk, amelyet arra terveztek, hogy lehetővé tegye több platformon futó mobil alkalmazások létrehozását. Eme megoldások esetében sok közül választhatunk, attól függően, mit keresünk. Ezeknek a megoldásoknak egy része valóban natív kódot állít elő, és beilleszti a valódi natív könyvtárakat, tehát ezek csupán az anyanyelv és az eszközök absztrakciói, ettől függetlenül ezek továbbra is megkövetelik a natív könyvtárak és keretrendszerek ismeretét és használatát. Más megoldások olyan hibrid alkalmazásokat hoznak létre, amelyek tartalmaznak néhány natív komponenst, valamint néhány webes komponenst is és beépített mobil böngészőn alapszik az alkalmazás felhasználói felületének és funkcionalitásának legnagyobb része. Egyre csak bővül a lehetőségek listája, így nem könnyű a választás.
A fő szempontok, amelyekre át kell gondolkodni, mielőtt a krossz platform keretrendszerek közül választunk:
● Milyen programozási nyelvet kell használnod?
● Natív vagy hibrid megközelítést szeretnél alkalmazni?
● Hány platformon szeretnéd futtatni a kódját?
● Akarod-e újra felhasználni a kódot?
Programozási nyelvek
Milyen programozási nyelvet szeretnél használni az alkalmazás kódolásához?
A legtöbb krossz platform megoldás egyetlen programozási nyelvhez köti magát. Természetesen az egyes megoldások más-más nyelvekhez kötik magukat. Ha nem akarunk egy keretrendszerrel egyidejűleg és egy új programozási nyelvel is megismerkedni a mobil fejlesztés elsajátításához, akkor érdemes lenne fontolóra vennie egy olyan platformok közötti megoldást, amely támogatja a már ismeretes nyelvet.
Natív vagy Hibrid
Számos olyan platform közti megoldás létezik, amelyek a végső kódot a mobil operációs rendszer natív formátumában állítják össze, majd közvetlenül a natív könyvtárakba és API-kba kapcsolják. Személyes kedvencem a Xamarin, amely lehetővé teszi, hogy az alkalmazás Visual C# nyelven íródjon, de mégis megkapja a teljes, natív módon épített alkalmazás összes előnyeit és szolgáltatásait. Természetesen sok más lehetőség közül is választhatunk. Más platform közti megoldások, mint például a Cordova vagy a Kivy, hibrid megközelítést alkalmaznak, ahol az alkalmazás nem natív alkalmazás, csak úgy néz ki. A natív alkalmazás rendszerint gyorsabb lesz, és inkább úgy néz ki és működik, mint a többi, adott mobil platformra épített alkalmazás. A platformok közti hibrid megoldások némelyike olyan közel kerül a natívhoz, hogy megkülönböztetésük komoly kihívást jelenthet még egy tapasztaltabb fejlesztő számára is.
Platfom támogatása
Egy másik fontos szempont a platform támogatása.
Szinte az összes platformokon átívelő megoldás támogatja az iOS-t és az Androidot. Néhány krossz platform megoldás olyan asztali operációs rendszerekkel is együttműködik, mint a macOS vagy a Windows, mások pedig a kisebb telefonos operációs rendszereket, vagy akár a Raspberry Pi-vel is együtt tudnak működni... Ha támogatnia kell a BlackBerry-t, mert az ügyfelek ezt használják, akkor olyan krossz platform megoldásokra lesz szükség, amelyek ezt lehetővé teszik. Ha azonban nincs különösebb igény az iOS-en és az Androidon kívüli platformokra, nem kell aggódnunk a krossz platform támogatás miatt. A játék ebből a szempontból „már nem játék”. A játékok fejlesztése a különböző rendszerekre a magas hardveres optimalizációs igény miatt teljesen másképpen alakul. Ha játékot fejlesztünk, érdemes egy olyan eszközt választani, amely a lehető legszélesebb platformskálát támogatja. Az olyan eszközök, mint a Unity 3D lehetővé teszik olyan játékok létrehozását, amelyek szinte minden olyan platformon futtathatók, amelyeken szeretnénk - akár az interneten is.
Kód újra felhasználhatóság
Végül mérlegelnünk kell a kód újra felhasználását.
Csak azért, mert egy keretrendszer több platformot is magába foglal, nem azt jelenti, hogy egyszere meg tudja írni az alkalmazás összes specifikus részét általánosan, és futtathatja az összes támogatott platformon. A natív támogatást nyújtó, több platformot támogató megoldások általában kevésbé használják újra a kódot, mivel szorosabban kapcsolódnak a natív keretrendszerekhez, könyvtárakhoz, valamint a felhasználói felület elemeihez és paradigmáihoz. Így csak az alap logikát lehet egyik rendszerből átmenteni a másikba. Ezért lehet, hogy választanunk kell, hogy inkább natívabb kódokat fejlesztünk habár ez azzal is jár, hogy egyre specifikusabban kell az egyes platformokra kiadott szoftvereket kialakítani, vagy kisebb funkcionalitással egységesebb kódot hoz létre.
Azonban egyes platformok, mint például a már említett Xamarin mindkettőre biztosít lehetőséget. A Xamarin, a Xamarin.Forms nevű közös felhasználói felület könyvtárat használja minden platformra, amelynek segítségével a kódok sokkal nagyobb százalékban újra felhasználhatók a platformok között azáltal, hogy létrehoz egy újabb absztrakciós réteget a natív felhasználói felület tetejére és az alapjául szolgáló operációs rendszerek keretrendszereire. Végül a kód újbóli felhasználása attól függ, hogy milyen alkalmazást építünk, és mennyit szeretne az alkalmazáshoz beleolvasztani a teljesen natív módon épített alkalmazásokba a megcélzott platformon.
Mobil web alkalmazások
Végül dönthetünk úgy, hogy egy teljesen webalapú mobilalkalmazást készítünk. Az évek során ez a lehetőség egyre megvalósíthatóbbá vált, mivel a mobil böngészők teljesítménye és képességei megnövekedtek, és az adaptív webes technológiák javultak. Ezzel a lehetőséggel webes alkalmazást készítünk, akárcsak más, az internetre szánt webalkalmazás esetében, de kifejezetten a mobil eszközökön való működésre fejleszti le. Számos mobil operációs rendszerű böngészőnél van olyan lehetőség is, amely támogatja a natív funkciók meghívását a webböngészőből, így például helymeghatározási adatokat is lekérhetünk, és hozzáférhet például az eszköz kamerájához. Igen sok idetartozó fejlesztésiplatform képes a „weboldalt” olyan módon létrehozni, hogy az úgy működjön és fusson, mint egy natív alkalmazás, tehát nem látszik rajta, hogy weboldal.
Mobil fejlesztési szempontok
Személy szerint úgy gondolom, hogy a mobil fejlesztés kiváló választás a szoftverfejlesztés megkezdéséhez, mivel csekély akadálya van az elindulásnak, és egy olyan szoftverfejlesztési terület, amely az évek során tovább fog növekedni, fejlődni.
Szinte bárki mobil fejlesztővé válhat és saját alkalmazásait megosztva a közösséggel akár igen gyorsan komoly befolyással lehet a piacra. A befolyás pedig szinte mindig jövedelmező. Ráadásul a mobil alkalmazások természetüknél fogva korlátozottak, tehát csak egy fejlesztőből álló csapat is sikerre vihet egy projektet viszonylag rövid idő alatt, ami nagyszerű munka portfólióként szolgálhat a jövőbeli munkahelyek megszerzéséhez vagy szerződések megkötéséhez.
Mi itt a RUANDER-ben mindenben a segítségedre leszünk, hogy magabiztosabban indulhass el ezen az úton. Bízom benne, hogy hamarosan találkozunk a tantermekben, keress minket bizalommal!