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...