Az Objective-C nevű karámba kényszerített fejlesztői közösség

Ne mindig júzer meg üzleti oldalról nézzük a mobilplatformok küzdelmét. Legalább ilyen fontos, hogy mik a tapasztalatai egy olyan fejlesztőnek, aki mindkét platformra levarrta már a maga appját: 

Android’s platform and developer tools are excellent. Leveraging Java and the Eclipse IDE are major winning factors for Android. Apple’s developer tools are shockingly bad by comparison. The Objective-C language and platform APIs are cumbersome and poorly organized. Overall when developing for the iPhone I felt like I was back in 1993. These factors combined in my estimation make application development about three times more expensive when developing for iPhone. The only area where Apple’s developer tools excelled was in profiling and heap analysis. 

Apple’s app store from a user’s standpoint and from a worldwide coverage standpoint are excellent. In this area Google market for Android is weak.  Development for iPhone may improve as tools such as iphonical (MDD for iPhone) and objectiveclipse (Eclipse plug-in for Objective-C) emerge.  We may see a shake-up in the mobile market, with at least 18 new Android handsets being released this year. Until that happens, iPhone will remain a market leader and developers will have to put up with XCode and Objective-C. 

For me, my love is with Android. Sure, the iPhone is great — but can you install a new Linux kernel?

Akit érdekel a részletes összehasonlítás, olvassa el Jonathan Schwartz David Green tavalyi részletező postját. A fenti tapasztalatok korántsem egyediek. Több iPhone/Android fejlesztővel beszélgetve nagyjából hasonló tapasztalatokról, benyomásokról hallani.

Ami itt a lényeg szerintem, hogy az Androidnak nem csak arra van szüksége, hogy minél több készüléken megjelenjen, hanem arra is, hogy kitalálja magának az egész Market-dolgot. Ha még idevesszük, hogy a Google az online zeneértékesítés területén is meg akarja szorongatni idén az Apple-t, akkor azt hiszem nyugodtan állíthatjuk, hogy a két cég közötti versengés még csak most kezdődik igazán.

Ha az Android megtartja jelenlegi előnyeit, akkor a fejlesztői közösség hálás lesz érte. Erre is tekintettel kell lenniük akkor, amikor a hatalmas fehér táblára felkaristolják az üzletfejlesztési stratégiát. Ha a kritikus tömeg el kezd billegni az Android felé, az Apple számára elérkezik a végső idő arra, hogy saját fejlesztői közösségére is odafigyeljen. Mert ez legalább olyan fontos, mint a felhasználókkal és az üzlettel való törődés.

Címkék: dev mobil java iphone android objective c
2010.06.23. 15:29. írta: hírbehozó

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

Jó kis cikk, ez most kellet bátorítás képpen, mert most csinálgattam első appom androidra, és sajnos openGl-el olyan durva eltérések vannak készülékenként amit képtelenség kitesztelni, ha csak nem veszi meg a fejlesztő a N féle androidos mobilt, ami nyilván lehetetlen :/
Az 1993-as évszám nem véletlen, tényleg akkor használhatta NeXT-en ugyanezt a nyelvet és fejlesztői környezetet.

Ez a Jonathan Schwartz gondolom csak a névrokona a volt Sun vezérigazgatónak.

Az Android Market üzleti szempontból teljesen tragikus. Semmi fejlődés és semmi kommunikáció, nehezen érthető az ok. Egyrészt mindenféle országból zúgolódnak a fejlesztők, másrészt sokan viszik vissza a telefonjukat, mert azt hitték, hogy elérhető a fizetős Market.
@Nakhchivan: en meg nem hallottam olyanrol, aki azert vitte volna vissza a telefont, mert nem eri el a paid appokat. a laptopokat sem viszik vissza azert, mert nem tudnak online streamelve fizetos filmet nezni. amugy meg van itt egy klassz kis warez kultura. a krekkelt appok mindenki szamara elerhetoek, mikent a filmek is...
ez *az* a Jonathan Schwarz?
Az iPhone fejlesztoeszkozok minosege tenyleg nem top, de azert boven hasznalhato, az 1993-as szint durva tulzas.

Annyi cucc jelenik meg iPhone-ra, hogy inkabb az a problema, hogy tul sok. Azert ebbol ugy latszik sokmindenki elboldogul azzal a devkittel.
@hírbehozó Itthoni esetről én sem, de a hivatalos fórumon sok ilyen (pl. skandináv) panasz van. Ha nincs kis csillag és apróbetűs magyarázat akkor ez valós fogyasztóvédelmi eset. Közel-keleti panaszok szerint az ingyenes Market sem elérhető, Szíria esetén talán még érthető, de sokkal általánosabb a probléma. De számunkra a legidegesítőbb a "we're working hard to add more countries" hivatalos magyarázat ami már több mint 1 éve változatlan.
@lipilee: eh. kinyomoztam. david green az eredeti szerzo. tavaly irta az osszehasonlitast. es most republikaltak. ez a hatter.
aha. es abbol, hogy akarki fejleszthet, ket dolog kovetkezik:
1. komolytalan emberek hobbibol irnak ra valamit amitol elcrashel az egesz telo.
2. ez:mobile.computerworld.com/device/article.php?CALL_URL=blogs.computerworld.com/16392/security_android_beats_iphone_for_crime

inkabb varok egy hetet, hogy hozzaertok vegignezzek egy alkalmazas kodjat, minthogy harmadik fel csak ugy sms-eket kuldjon a telefonomrol.
az iPhone piac meg akkora, hogy megtehetik hogy objective-c-re korlatozzak a fejlesztoi kornyezetet. es eleg jol elvannak azzal a 13000+ alkalmazassal.
@ediam: Az alkalmazásnak engedélyt kell kérnie az SMS-küldéshez (WRITE_SMS), telepítéskor ezt látod és engedélyezed. Ha indokolatlannak találod akkor nem telepíted. Ennyi. Persze trehány módon szokás mindenre OK-t nyomni. Ugyanez a veszéy iPhone esetén is megvan, benne van a jószándékú SMS-küldés, közben meg egy időzített bomba.
Az Objective C-vel nincs semmi baj, a fejlesztői eszközökkel van :)
lemaradt egy 0, 130000+
@Nakhchivan: ott a pont, de az emberek hulyek, akarmit le ok-oznak, erre nem lehet alapozni. a felhasznalokat neha leginkabb sajat maguktol kell megvedeni, ezt ismerte fel az apple.
@Álmos: Amennyire szépek az Apple formatervei annyira köhömm.... nem szép szintaktikailag az objective-c... :D
@ediam: Az Apple módszere az idegesítő dolgok kiszűrésére jó, ez jól látszik az Android esetén, harmatgyenge, marketing okokból sokszorosan publiblikált, lopott, stb. programok. De bonyolult ellenőrzésre nem gondolok, bangalore-i alulfizetett alkalmazottak az automata tesz után nyomkodják és hozzák az elvárt elutasítási százalékot. Garanciát ez nem ad. A másik véglet az Nokia eddigi kemény és drága követelménye, az ismert eredménnyel.
@butcher__: A Nokia talált egy félmegoldást Remote Device Access néven. Lefoglalsz egy időkeretet egy valódi telefonon neten (java-s kliens )keresztül és azon kipróbálhatod az alkalmazásod. Just in time megkapod a kijelző képét illetve a futási információkat.
Van abban igazság amit Nakhchivan mond. Én most álltam neki hogy oké mobil alkalmazás fejlesztés iphone vagy android. Mivel pc-s vagyok android felé indultam el. Kiadtam 200k-t 2 telefonra és kiderült 2 telefon édes kevés mert ahány telefon annyiféle misztikus hiba, ÉS ami a lényeg hogy magyaroszágról nem lehet fizetős appot felrakni.

Hát erősen ott tartok hogy rosszul döntöttem és és eladom a két telót és átállok inkább iphonera. Pedig gyűlölöm apple korlátol módszereit de jelenleg androidra fejleszteni jótékonykodás/pénz idő kidobás
Az Objective C szintaktikája valóban borzasztó. Az első 3 hónapban én is utáltam, mint a bűnt.

DE.

Ez a nyelv, annak ellenére, hogy még ősibb, mint a C++, valami hihetetlen jól eltalálta az átmenetet az alacsony szintű gépi kód és a magas szintű OO programozás között. Nincs az az állandó szenvedés a memóriakezeléssel, mint C++-ban - ha az ember egy-két konvenciót betart, alig kell odafigyelni ezekre a dolgokra. Név alapján történik a metódushívás, ezért nincs veszély pointer castoláskor, plusz lehet interface-eket csinálni. Nincs garbage collection, de cserébe nincs is kidebuggolhatatlan akadozás, ha pl. az ember görget egyet a képernyőn... A standard library is igen jól el van találva - pl. a run loop rendszer, meg a szálak közti kommunikáció.

Egyszóval én nagyon megszerettem az API-t, de ehhez idő kellett. Ugyanígy voltam magával a Mac-el is - szerintem kb. fél év után lehet elfogulatlan véleményt mondani, mert annyira más világ ez.

És ugyanezt gondolom az XCode-ról. Nehéz volt hozzászokni, de a refactor tool-on kívül szerintem minden benne van, ami kell. Csak egész elrejtett és kacifántos billentyűkombinációk vannak hozzá, mint Mac-en általában (pl. Ctrl-space helyett Escape - ki hallott már ilyet? :)). Egy dologban viszont nagyon nagyot üt: szerintem nincs még egy olyan mobilplatform, ahol ennyire tisztességesen megcsinálták volna a simulatort és az on device debuggert. Androidon is fejlesztettem (egy picit régebben), és össze sem hasonlítható az élmény.
google helyében megvenném és kipofoznám az appbraint. killer lenne.
Az Android SDK-t bevallom, nem ismerem, de sokéves C/Java/C#/C++ tapasztalatok után az Objective C és a Cocoa kifejezetten kellemes meglepetések voltak.

Az Objective C elegánsan ötvözi a dinamikus nyelvek rugalmasságát és az OOP-t a C hagyományaival. Az ObjC funkciók nagyon szépen, ortogonálisan építkeznek a C-re: pár nap alatt el lehet sajátítani az újdonságokat, és az ember szinte azonnal produktív tud lenni benne. A C alapoknak értelemszerűen előnyei és hátrányai is vannak, de a legsúlyosabb C problémákat (memóriakezelés nehézségei, sztringek, tömbök) az Objective C kiegészítések, konvenciók és típusok remekül megoldották. (Pl. iOS-re fejlesztve még _sohasem_ kellett C sztringekkel dolgoznom, és az átgondolt referenciaszámlálásnak és a valóban egyedülállóan fejlett futás közbeni elemzőknek köszönhetően különösebb memóriakezelési problémám sem volt még.)

A Cocoa a legjobban kitalált klasszikus UI toolkit, amivel eddig találkoztam. Sem a dokumentációban, sem a funkcionalitásban nem találtam kivetnivalót, nem is értem, mibe lehetne igazán belekötni. Az eredmények is magukért beszélnek -- elég összehasonlítani egy átlagos iPhone/iPad alkalmazást egy Androidossal. Amennyire a számtalan lelkes fejlesztői blogból meg lehet ítélni, a Cocoa programozók általában szeretik amit csinálnak, és nemigen olvastam olyanról, aki technikai hiányosságok miatt tért volna más platformra.

Az Xcode lesajnálásával sem tudok mit kezdeni -- nagyon is versenyképes fejlesztőkörnyezet, és remekül illeszkedik a platformhoz. Az Objective C egy C alapú nyelv, úgyhogy az Xcode-ot célszerűbb C/C++ mint Java/C# IDE-khez hasonlítani, de igazából ez utóbbiakhoz képest sincs min szégyenkeznie: az LLVM fejlődésével az Xcode refaktorizációs és kényelmi képességei lassan a C#/Java IDE-kkel vetekednek. (Én a munkahelyemen ReSharpert használok, és a Visual Studioban élni sem tudnék nélküle. Az Xcode (és a platform maga) van annyira jó, hogy ne legyek kevésbé produktív benne, amikor esténként leülök iOS-re fejleszteni.)

Nyilvánvaló, hogy sok éves Java/Eclipse tapasztalatokkal az Android elsőre kézreállónak fog látszani, de ez inkább az ember saját megszokásainak köszönhető. Ha valaki éveket ölt a Javába, akkor nem biztos, hogy szívesen tanul új dolgokat, még ha a végén jobban is járna vele. Visszafelé is hasonló a helyzet - itt van például Jeff LaMarche cikke tavaly márciusból:

iphonedevelopment.blogspot.com/2010/03/android-sdk-from-iphone-developer.html

Egy kicsit furcsállom egyébként, hogy miért kell ilyen régi cikkeket most előcibálni. A mobil platformokon egy év örökkévalóságnak számít. Nyilván az Android SDK és az Apple eszközei is nagyságrendeket fejlődtek azóta, és a megfogalmazott panaszok közül sok érvényét vesztette már.
"Android’s platform and developer tools are excellent. Leveraging Java and the Eclipse IDE are major winning factors for Android. "

Én iOS-re és Androidra is rendszeresen fejlesztek, ennek a szöges ellenkezőjéről tudok beszámolni...
Tudom, régi a post, de ha valakit hozzám hasonlóan ide sodor a szél, azért legalább árnyaltabb képet kapjon.

Aki szerint az Eclipse excellent, az meg meg is érdemli.