December 27th, 2011

Google oraz Apple walczą o rynek smartphone’ów i tabletów, dla nas developerów oznacza to niejednokrotnie konieczność wyboru ekosystemu od którego chcemy zacząć naszą przygodę z tworzeniem aplikacji mobilnych. Która platforma jest lepsza na start? A która bardziej obiecująca w dłużej perspektywie czasu? Na te i inne pytania znajdziecie odpowiedzi w tym wpisie.Szybki startJak zacząć development na Androida i iOSa? Jeśli chodzi o tego pierwszego, to wystarczy ściągnąć SDK, wtyczkę do Eclipse’a i już możemy napisać nasze pierwsze Hello world. Co najważniejsze Eclipse podobnie jak SDK jest wieloplatformowe, więc jest bez znaczenia jest czy mamy Windowsa, Linuksa czy MacOSa Z iOS sprawa ma się trochę inaczej. Po pierwsze potrzebujemy MacOS i Xcode. Oczywiście nie musimy kupować komputera ze stajni Apple'a, w końcu od czego mamy vmware ;-), ale niestety takie rozwiązanie nie grzeszy wydajnością.Co gorsze aby móc przetestować chociażby technologię Push Notification Service Apple'a musimy już wykupić za 100$ konto developera... a to jednak na początek trochę boliOcena - Android 2:0 iOSIDE oraz emulatoryPojedynek XCode vs. Eclipse. Apple stworzyło naprawdę bardzo dobre IDE do programowania dla iOS (choć XCode może być używany także do innych celów). Oczywiście jest eye-candy, ale nie zapomniano o użyteczności i wygodzie pracy developera.Eclipse wychodzi jednak obronną ręką dzięki mnogości wtyczek oraz wspomnianej wyżej wieloplatformowości.Co do emulatorów to Apple bije o głowę Google'a. Co tu dużo pisać - emulator Androida zamula.Ocena - Android 1 - 2 iOS; Android dostaje na zachętę 1pkt, za multiplatformowośćKodW tej części mamy dość ciekawe starcie Javy z Objective-C. Oba języki są obiektowe, zarówno w Androidzie jak i iOS mamy do dyspozycje frameworki stworzone specjalnie z myślą o danej platformie. Niektórzy programiści słysząc, że do programowania na iPhone'a potrzebna jest znajomość języka podobnego do C od razu boją się „klepania” niskopoziomowego. Jednak prawda jest całkiem inna - tworzenie aplikacji na iOS jest dość przyjemne, a jeśli znamy już C/C++ lub Javę nie powinnyśmy mieć większych problemów z przestawieniem się na Objective-C. Prawdopodobnie największym wyzwaniem będzie przyzwyczajenie się do dość oryginalnej składni.//przykład interfejsu@interface Person : NSObject { @public NSString *name; @private int age;} @property(copy) NSString *name;@property(readonly) int age; -(id)initWithAge:(int)age;@endW systemie ze stajni Google'a mamy do dyspozycji Javę - język popularny, do którego powstało wiele bibliotek, które w większości przypadków zadziałają od razu na Androidzie. Tak! Możemy korzystać z *.jar-ów! Jest to ogromna zaleta, gdyż dzięki temu możemy zaoszczędzić sporo czasu.Nie wszystko złoto co się świeci... Java jest bardzo wdzięcznym językiem, który sporo wybacza programiście. Kosztem tego jest niższa wydajność w porównaniu do programów napisanych chociażby w C czy C++. Jednak Google wyszło na przeciw developerom i w razie potrzeby możemy zaimplementować część (np. operacje wymagające wysokiej wydajności) naszej androidowej aplikacji w C/C++.Ocena - Android 2 : 1 iOSGUIW Androidzie jak i iOS GUI możemy tworzyć bezpośrednio w kodzie oraz tworząc pliki *.xml, w których definiujemy wygląd danego ekranu aplikacji, kontrolki. O program ze stajni Apple jest naprawdę świetny i pozwala na zbudowanie ładnego GUI w kilka(naście) minut. Android zostaje w w tej konkurencji z tyłu, mówiąc szczerze wolę ręczne klepanie w XML-u. Jednak prawdziwym wyzwaniem będzie różnorodność ekranów telefonów z Androidem. W przeciwieństwie do iOS w tym systemie musimy tak tworzyć gui, aby było użyteczne na ekranie Sony-Ericssona X10 mini oraz HTC Desire HD... jest to niemałe wyzwanie. Ba - nie dość tego jesteśmy zobowiązani do stworzenia 3 wersji każdej grafiki ldpi, mdpi i hdpi! Oczywiście nie musimy tego robić, ale jeśli chcemy stworzyć ładną aplikację... lepiej poświęcić trochę czasu nad Photoshopem.Z Apple'em nie mamy aż takiego problemu, mamy do dyspozycji tylko dwa ekrany (iPhone 3Gs lub iPhone 4, pomijam teraz tablety), które nie różnią się proporcjami ekranu. Dzięki temu jedyne co musimy zapewnić to grafiki w 2 rozdzielczościach, ale i to jest opcjonalne gdyż iPhone przeskaluje odpowiednio mniejsze grafiki, choć takie rozwiązanie nie jest zbyt eleganckie.Ocena - Android 1:2 iOSMarket(y) vs. App StoreCo do tej kwestii mam dość podzielone zdanie. Android Market bardzo mi podpadł ponieważ polscy developerzy nie mogą w nim sprzedawać płatnych aplikacji – po prostu Google Checkout na to nie pozwala. Bardzo się mi to nie podoba – spora część krajów UE ma taką możliwość, ale my oczywiście nie :(. W tej kwestii jedyne co ratuje Androida to niski koszt założenia konta developerskiego do publikowania aplikacji – jedynie 25$ jednorazowej opłaty. Apple jak to… Apple woli zdzierać z developerów, którzy pomagają koncernowi zarobić krocie na aplikacjach, 100$ rocznie. Android ma dwa dość spore atuty. Primo istnieje wiele alternatyw dla Marketu Google’a – chociażby Amazon App Store. I co najważniejsze możemy rozpowszechniać swoją aplikację sami – udostępniając plik *.apk na własnym serwerze. Apple podchodzi do tej sprawy inaczej…. aplikacje możemy publikować na jedynym, najlepszym, słusznym App Storze, a jeśli zdecydujemy się na rozpropagowanie aplikacji na własną rękę to natrafimy na wiele obostrzeń jak chociażby limit instalacji dokonanych w ten sposób oraz konieczność ręcznego(!) powiązania każdej kopii aplikacji z docelowym telefonem. Ocena: Android 2:1 iOSPodsumowanieOba ekosystemy mają swoje zalety jak i wady, jednak przypuszczam, że w niedalekiej przyszłości telefony z systemem Android zdystansują iPhone’y. Powód jest bardzo prosty – cena. Jeśli HTC Wildfire’a możemy bez problemu kupić już za ~600zł na Allegro, czy na umowę za 50zł to siłą rzeczy wkrótce system Google’a stanie się jeszcze popularniejszy. Kolejną wielką i być może kluczową cechą Androida jest jego otwartość. Po pierwsze otwarty jest kod źródłowy, a po drugie użytkownik telefonu wyposażonego w to oprogramowanie ma duże możliwości dopasowanie jego do własnych, indywidualnych potrzeb – np. za pomocą widgetów, które możemy dodać jako dodatek do naszej aplikacji. Pod tym względem Apple zostaje daleko w tyle.Końcowa ocena: Android 8:6 iOS
posted in |