Systemy operacyjne dla telefonów komórkowych i urzadzen typu
Transkrypt
Systemy operacyjne dla telefonów komórkowych i urzadzen typu
Systemy operacyjne dla telefonów komórkowych i urządzeń typu smartphone Architektura, rozwiązania, koncepcje, rozwijanie aplikacji Marcin Erdmann 2 kwietnia 2008 Plan prezentacji 1 Wstęp 2 Definicje 3 Podział 4 Symbian OS 5 Windows Mobile 6 iPhone OS 7 Android 8 Prezentacja programów dla Androida Definicje - Smartphone Smartphone to telefon komórkowy oferujący zaawansowane możliwości nie spotykane w zwykłych telefonach, często posiadajacy funkcjonalność telefonu, organizera i uproszczonych programów znanych z komputerów osobistych. Przyjmuje się, że smartphone posiada kompletny system operacyjny i udostępnia ustandaryzowany interfejs programistyczny umożliwiając tym samym rozwijanie aplikacji. Definicje - Podział systemów operacyjnych I System operacyjny Umożliwia uruchamianie kodu natywnego dla danego sprzętu Platforma programistyczna Nie umożliwia uruchamiania kodu natywnego dla danego sprzętu a jedynie kod interpretowany Definicje - Przykłady I Systemy operacyjne Access Linux Platform Openmoko Linux iPhone OS Palm OS Symbian OS Qtopia Windows Mobile Platformy programistyczne Android LiMo Platform Blackberry OS Definicje - Podział systemów operacyjnych II Zamknięty system operacyjny Nie umożliwia uruchamiania własnych aplikacji Otwarty system operacyjny Umożliwia uruchamianie własnych aplikacji Definicje - Przykłady II Zamknięte systemy operacyjne ISA („Nokia OS”) Symbian do wersji 5.0 włącznie iPhone OS do wersji 1.1.4 włącznie Otwarte systemy operacyjne Pozostałe Definicje - Podział systemów operacyjnych III Mobilny system operacyjny ogólnego przeznaczenia Może być również uruchamiany na urządzeniach nie posiadających funkcjonalności telefonu komórkowego System operacyjny dla urządzeń smartphone Zaprojektowany specjalnie dla urządzeń posiadających funkcjonalność telefonu komórkowego Inne Systemy dla urządzeń multimedialnych z dodaną funkcjonalnością telefonu komórkowego Definicje - Przykłady III Mobilne systemy operacyjne ogólnego przeznaczenia Access Linux Platform LiMo Platform Openmoko Linux Palm OS Qtopia Windows Mobile Definicje - Przykłady III Systemy operacyjne dla urządzeń smartphone Android BlackBerry OS Symbian OS Inne iPhone OS Definicje - Podział systemów operacyjnych IV Proprietary Windows Mobile Palm OS BlackBerry OS iPhone OS Symbian OS Definicje - Podział systemów operacyjnych IV Open source Openmoko Linux Acess Linux Platform LiMo Platform Inne Android Qtopia Symbian OS - Opis Źródła nie są otwarte W lutym 2007 roku 67% rynku urządzeń smarthpone posiadało system Symbian OS Złożona architektura Nieintuicyjne rozwijanie aplikacji Silnie ukierunkowany na wydajne korzystanie z zasobów Symbian OS - Historia I Wywodzi się z organizerów Psion z lat 80. i 90. Czerwiec 1998 - Założenie Symbian Ltd. Ericsson Nokia Motorola Psion Listopad 2000 - Pierwszy zamknięty telefon Ericsson R380 trafia na rynek z systemem ER5u Czerwiec 2001 - Pierwszy otwarty telefon Nokia 9210 Communicator z systemem Symbian 6.0 Początek 2003 - Symbian 7.0, dodano EDGE, IPv6, Java ME Symbian OS - Historia II 2004 - Psion sprzedaje udziały w Symbian Ltd. 2004 - Symbian 8.0, dodano CDMA, 3G, OpenGL ES Początek 2005 - Symbian 9.1, dodano obowiązkowe podpisywanie kod Lipiec 2006 - Symbian 9.3, dodano WiFi, HSDPA Marzec 2007 - Symbian 9.5, dodano telewizję cyfrową, usługi lokalizacji, SQLite Symbian OS - Architektura Warstwa interfejsu użytkownika Warstwa usług aplikacyjnych Java ME Warstwa systemu operacyjnego Warstwa usług podstawowych Usługi jądra i warstwa interfejsu sprzętowego Symbian OS - Jądro Szeregowanie zadań Zarządzanie pamięcią Sterowniki Określane mianem mikrojądra Symbian OS - Warstwa usług podstawowych Najniższa warstwa dostępna z poziomu kodu użytkownika File Server User Library Plug-in Framework Central Repository DBMS Usługi kryptograficzne Symbian OS - Rozwijanie aplikacji Java ME A to temat na inny wykład, gdyż Java ME nie jest charakterystyczna tylko dla Symbiana... C++ Dobre wsparcie dla IDE(CodeWarrior, Carbide.c++, Carbide.vs, Borland IDE for Symbian OS, ...) Długi czas wejścia w technologię Używanie charakterystycznych terminów i technik Descriptors Leaves Cleanup Stack Active Objects C Classes, T Classes, R Classes Programowanie zdarzeniowe Symbian OS - Moje doświadczenia Pobrałem SDK i Carbide.c++ Uruchomiłem IDE i wygenerowałem domyślny projekt z wzorca Co było dalej? Windows Mobile - Opis W założeniu ma przypominać Windowsy zarówno z funkcjonalności jak i wyglądu Zawiera mobilne wersje oprogramowania z komputerów osobiostych (WMP, Office, ...) Przeznaczony dla palmtopów, smartphonów, odtwarzaczy multimedialnych i komputerów pokładowych w samochodach Windows Mobile - Historia Kwiecień 2000 - Pokcet PC 2000 oparty na Windows CE 3.0 Październik 2001 - Pocket PC 2002 oparty na Windows CE 3.0 Czerwiec 2003 - Windows Mobile 2003 oparty na Windows CE 4.20 Maj 2005 - Windows Mobile 5.0 oparty na Windows CE 5.0 Luty 2007 - Windows Mobile 6.0 oparty na Windows CE 5.0 Każda kolejna wersja dodawała dużo nowej funkcjonalności i miała przypominać kolejne wersje systemu Windows dla komputerów osobistych (2000, XP, Vista) Windows Mobile - Rozwijanie aplikacji Wspierane IDE to oczywiście Microsoft Visual Studio Możliwość tworzenia aplikacji kompilowanych do kodu natywnego pisząc w Visual C++ Możliwość tworzenia aplikacji zarządzanych pisząc w językach .NET Framework Dostępność SDK wraz z emulatorem Przed Windows Mobile 2003 aplikacje rozwijało się przy użyciu Microsoft eMbedded Visual Tools iPhone OS - Opis Pierwotnie przeznaczony dla produktu firmy Apple pod nazwą iPhone Obecnie jest także używany w iPodach touch Oficjalnie wydany 6 Marca 2008 roku wraz z SDK Wcześniej iPhone nie umożliwiał legalnego wgrywania własnego oprogramowania Pierwsze wersje zawierały dużo błedów Kolejne wersje dodawały dużo funkcjonalności, zdawałoby się związanej czysto ze sprzetem, jak np. możliwość ustawienia większej głośności iPhoneOS - Rozwijanie aplikacji SDK dostępne od niedawna Dostęp do SDK kosztuje $100 i jest dostępny dla ograniczonej liczby programistów z USA Aplikacje rozwijane w Objective-C Wsparcie jedynie dla Xcode Rozwijanie możliwe jedynie pod Mac OS X W przyszłości możliwość sprzedawania swoich aplikacji przez AppStore - Apple bierze 30%, my 70% Android - Opis Platforma programowa a nie system operacyjny Oparta o Linuxa 2.6 Bardzo nowa technologia, w fazie intensywnych testów Brak dostępnej na rynku implementacji sprzętowej Kod źródłowy ma zostać w pełni otwarty w 2008r. na licencji Apache v2 Android - Historia Lipiec 2005 - Google kupuje firmę Android Inc. Google rozpoczyna prace nad platformą dla telefonów komórkowych, która ma być w przyszłości open source i jest oparta na Linuxie... Październik 2007 - Google zaprasza m.in. Intela, Motorolę, T-Mobile i NVidię do Open Handset Alliance, która ma się zajmować rozwiajaniem Androida Grudzień 2007 - Pierwsze wydanie Android SDK Luty 2008 - Publiczna prezentacja pierwszych prototypów działających pod Androidem na Mobile World Congress Android - Odbiór w środowisku Krytyka, za to że Android tak naprawdę nie jest open source Początkowy brak systemu do zgłaszania bugów Niektórzy krytykują brak zgodności Androida z J2ME, ale czy oni rozumieją koncepcję...? A później wszyscy i tak zaczęli kodować... ... może chcą wygrać ten milion dolarów w Android Developer Challenge? Android - Architektura Aplikacje Application Framework Android Runtime Core Library Dalvik Vitual Machine Biblioteki natywne napisane w C i C++ Warstwa abstrakcji od sprzętu - Linux Kernel 2.6 Android - Dlaczego Linux? Sprawdzony model sterowników, wiele dostępnych sterowników Popularność Dostarcza m.in. zarządzanie procesami, zarządzanie pamięcią, model bezpieczeństwa, funkcje sieciowe Koncepcje rozwiązań Linuxa są sprawdzone i wielokrotnie przetestowane „Wystarczy” zatem dostarczyć urządzenie z działającym na nim Linuxem 2.6 i bedzie można uruchomić na nim Androida. Android - Biblioteki natywne Rysowanie (Surface Manager, OpenGL ES, SGL) Multimedia SQLite SSL Silnik przeglądarki WWW (WebKit) Android - Dalvik Virtual Machine Zaprojektowana specjalnie dla urządzeń z ograniczoną pamięcią, mocą obliczniową, baterią Uruchamia specjalny bytecode, powstający z bytecodu Javy przy compilowaniu aplikacji Posiada wysoce zoptymalizowany interpreter bytecodu pod względem wydajności użycia procesora Każdy program uruchamiany jest w osobnej instancji maszyny wirtualnej Android - architektura aplikacji Activity - jeden ekran interfejsu użytkownika IntentReciever - uruchamia części aplikacji na zdarzenia Service - zadanie działające w tle przez cały czas życia aplikacji ContentProvider - pozwala dzielić dane między procesami i aplikacjami np. baza kontaktów Android - Ciekawe rozwiązania Android dostarcza wiele rzeczy niejako „out of the box”, o których wcześniej programiści urządzeń mobilnych newet nie śmiali śnić: Location Manager XMPP Service Dziecinnie proste dzwonienie i wysyłanie wiadomośći SMS z poziomu kodu Notification Manager Views (Gallery, Map, Browser) Android - Rozwijanie aplikacji Nie ma jeszcze telefonów pod tą platformę na rynku - zostaje zabawa na emulatorach SDK mozna za darmo pobrać ze strony projektu Aplikacje rozwijane w języku Java Wsparcie dla rozwijania aplikacji w Eclipse - Android Development Tools Bardzo krótki czas wejścia w technologię Android - Przykłady aplikacji No to zobaczmy z czym to sie je...