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:
- LWUIT – http://lwuit.java.net/
- OpenGL – http://www.khronos.org/opengles/
- PhoneGap (HTML5) – http://www.phonegap.com/home/
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.