Różnorodność mobilnych systemów operacyjnych – ograniczenie czy szansa?

post_img

Rynek urządzeń mobilnych jest zdecydowanie jednym z najszybciej rozwijających się na świecie, a co za tym idzie – także zapotrzebowanie na aplikacje jest ogromne. A wraz ze wzrostem możliwości i dostępności tego rynku, również jego oczekiwania będą coraz większe. Mówiąc wprost, prędzej czy później firmy IT będą musiały rozpocząć prace nad tego typu aplikacjami, aby sprostać wymaganiom rynku. Jednak każdy, kto wytwarzał aplikacje mobilne lub zastanawiał się nad tym, zapewne zdaje sobie sprawę z trudności związanych z różnorodnością obecnych telefonów oraz tempem pojawiania się nowych modeli. Popularne od lat API Javy czy Symbiana także nie jest przyjazne dla programisty. Czy jednak tak jest ciągle? Co zmieniło się w ostatnich latach? Jak ten rynek będzie wyglądał za parę lat? Na jakie problemy można natrafić podczas prowadzenia projektu? Wybrałem się na wykład pod tytułem „Różnorodność mobilnych systemów operacyjnych – ograniczenie czy szansa” w ramach tegorocznej konferencji InfoShare z nadzieją, iż Łukasz Korzeniowski z firmy FancyFon S.A pomoże mi w znalezieniu odpowiedzi na te pytania.

Opis prezentacji

Podczas prezentacji Łukasz Korzeniowski skupił się na porównaniu czasu pisania aplikacji na różne platformy telefonów komórkowych oraz podsumowaniu co zaskoczyło twórców i z czym mieli największe problemy. Przedstawił także obecne trendy i przyszłe prognozy popularności telefonów. Nie zostały poruszone szczegółowe różnice platform w oferowanych możliwościach. Wszystkie wnioski, jakie zostały przekazane przez prowadzącego, pochodzą z realnego projektu Pakk wykonanego na zlecenie węgierskiego klienta Vodafone. Ważne jest też, że do każdego typu telefonu został przydzielony programista z doświadczeniem w pracy z daną platformą.

Obecne dane

Oto, jak przedstawia się procentowy udział platformy na rynku urządzeń mobilnych za pierwszy kwartał 2011 roku:

Platforma 2011 Market Share
Android 39.5%
BlackBerry 14.9%
iOS 15.7%
Symbian 20.9%
WindowsMobile 5.5%
Others 3.5%

Według danych od Vodafhone wśród czołowych czterdziestu modeli telefonów występują:

  • Java: 42%
  • Symbian: 26%
  • Android: 32%

Podsumowanie platform

Java

Zalety
  • Stosunkowo krótki czas wytworzenia
  • Powszechny język programowania
Problemy:
  • API nie działające zgodnie ze specyfikacją
  • rozmiar aplikacji
  • zróżnicowanie wielkości ekranu
  • zróżnicowanie możliwości przeglądarki
  • różna reprezentacja obiektów (np. kontakt)
  • wysoki koszt testów
  • problem z konfiguracją APN (Nokia) oraz uprawnień aplikacji – negatywny wpływ na wrażenia użytkownika!!!

Android

Zalety:
  • wielozadaniowy system operacyjny – można więcej
  • duża swoboda aplikacji (szeroki dostęp do systemu)
  • popularny język programowania
  • szybkość tworzenia aplikacji
  • automatyczna dostępność aplikacji na tablety
Problemy:
  • różnice w zachowaniu API na różnych modelach telefonów (raczej incydentalne)
  • pewne nienaruszalne założenia (np. sposób instalacji aplikacji) – ograniczenie możliwości
  • nie najlepsza dokumentacja

Symbian

Zalety:
  • API pozwalające na dostęp do każdego elementu systemu
  • w nowych telefonach możliwość tworzenia aplikacji w Qt
Problemy:
  • dużo wyższa pracochłonność niż na innych platformach (bez użycia Qt)
  • archaiczny język i środowisko programistyczne
  • ukryte API
  • skomplikowany system podpisów
  • „sztuczki i kruczki” zarówno w systemie jak i w środowisku
  • zróżnicowanie między wersjami Symbiana
  • zróżnicowanie między urządzeniami

iPhone

Zalety:
  • niewielka liczba urządzeń i wersji systemu
  • szybki development
  • „błyszczący” interfejs użytkownika
  • automatyczna dostępność aplikacji dla iPad
Wady:
  • nietypowy język programowania
  • konieczność posiadania sprzętu Apple
  • ograniczone API do dostępu do elementów systemu (np. skrzynka SMS)

Czas napisania aplikacji

Platforma Czas
Java półtora miesiąca
Symbian ponad dwa i bez paru funkcjonalności
Android miesiąc
iOS trzy tygodnie

Wnioski

Ważne jest, aby podczas podpisywania umowy ograniczyć ilość telefonów docelowych na których zapewniamy poprawność naszej aplikacji. Mnogość modeli na rynku może znacząco wpłynąć na ryzyko przekroczenia budżetu i czasu naszego projektu. Należy testować aplikację na konkretnych telefonach, a nie tylko symulatorach, co również pozwoli skrócić czas wykrycia nieprawidłowości w działaniu aplikacji.
W związku z popularyzacją smartphonów i osłabianiem się pozycji Symbiana na rynku, powinno się w miarę możliwości zrezygnować z supportu dla tej drugiej platformy. Po za tym sprawił on najwięcej problemów w projekcie i zajął najwięcej czasu. W przypadku iPhona powinno się zastanowić, na ile nasza aplikacja może być popularna na iStore, gdyż w przypadku napisania pierwszej koszty wejścia na ten rynek, są dość wysoki. Niestety niezbędny jest zakup: iPhone, iMac i licencji developerskiej pozwalającej na publikowanie aplikacji w iStore. Kolejną rzeczą, która wymaga zastanowienia , jest fakt, że w powyższym przedsięwzięciu nie używano praktycznie żadnego współdzielenia kodu między platformami. Rozwiązaniem tego problemu może być użycie jednego z frameworków:

Z powyższej listy do prostego interfejsu bez „fajerwerków” wybrałbym zdecydowanie PhoneGap. Dzięki użyciu HTML5 i javascript (powszechnie znanych technologi) jest on bardzo prosty w użyciu dla programisty. Zarazem zapewnia API pozwalające na tworzenie dowolnych aplikacji, można odwoływać się również do native API. Gdyby pojawiły się problemy, możemy liczyć na wsparcie rozwijającej się społeczności wokół tego projektu. Natomiast jeśli miałaby to być gra lub inna aplikacja wymagająca więcej od telefonu, warto rozważyć użycie OpenGL. Projekt ten jest wiodącym pod względem renderingu 3D. Więcej informacji o frameworkach można znaleźć na stronach podanych powyżej. Dodatkowe wiadomości można również zaczerpnąć z prezentacji Łukasz Korzeniowskiego dostępnej tutaj.



Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *