Android – Eine Open-Source-Plattform für Embedded Systems (?)

Werbung
Android – Eine Open-Source-Plattform
für Embedded Systems (?)
Jörg Pleumann
Noser Engineering AG
31. August 2010
1
Agenda
●
Einleitung
●
Plattform
●
Werkzeuge
●
Hardware
2
Einleitung (I)
●
Was ist Android?
●
Kompletter Software-Stack
(nicht nur) für Mobiltelefone
–
–
–
●
Kernel
Middleware
Applikationen
●
Open Source (Apache u.a.)
●
Keine Lizenzkosten
Wer steht hinter Android?
●
Open Handset Alliance (OHA)
3
Einleitung (II)
●
Ein paar Zahlen...
●
●
●
●
Über 50 verschiedene
Geräte auf dem Markt
Knapp 120.000 Apps im
offiziellen Android Market
Derzeit 14% US-Marktanteil
im Smartphone-Segment
(laut ComScore)
Prognostiziert Nr. 2 nach
Symbian im Jahr 2012 (laut
Gartner)
4
Plattform (I)
●
Erste Näherung
●
Linux-Kernel
●
Programmierung in Java
●
Virtuelle Maschine (die keine JVM ist)
●
Neues Applikations-Framework
Wie
Wiepasst
passtdas
dasalles
alleszusammen?
zusammen?
5
GPL
GPL
C++/ /Assembler
Assembler
CC/ /C++
Apache/ /BSD
BSD
Apache
Java
Java
Plattform (II)
6
Dalvik VM (I)
●
Bytecode-Interpreter für mobile Systeme
●
Langsame CPU (250-500 MHz)
●
Wenig RAM (64 MB)
●
Kein Auslagerungsbereich
●
Batteriebetrieb
●
Mehrere VM-Instanzen
●
Effizienz wichtig
●
CPU / Batterie
●
Speicher
7
Dalvik VM (II)
●
Die Dalvik VM ist keine JVM!
●
Register-Architektur (statt Stack)
●
Eigener, optimierter Befehlssatz
●
Kompakterer, effizienterer Code
●
Dalvik Executable Format (DEX)
●
Weitere Eigenschaften
●
Bytecode-Verifikation
●
Just-In-Time (JIT) Compiler
●
Java Native Interface (JNI)
8
Plattform (III)
9
Core Libraries (II)
●
Kompatibel zu Untermenge des JDK 1.5
FuF
Vluloy
llyls
java.io
sust
java.io
äpunp
java.lang
java.lang
dopir
o
java.lang.annotation
java.lang.annotation gtertde
java.lang.ref
java.lang.ref
java.lang.reflect
java.lang.reflect
java.math
java.math
java.net
java.net
java.nio
java.nio
java.nio.channels
java.nio.channels
java.nio.channels.spi
java.nio.channels.spi
java.nio.charset
java.nio.charset
java.nio.charset.spi
java.nio.charset.spi
java.security
java.security
java.security.acl
java.security.acl
java.security.cert
java.security.cert
java.security.interfaces
java.security.interfaces
java.security.spec
java.security.spec
java.sql
java.sql
d
FuF
Vluloy
llyls
java.text
sust
java.text
äpunp
java.util
java.util
dopir
ogter
java.util.concurrent
java.util.concurrent
java.util.concurrent.atomictde
FuF
Vluloy
llyls
org.xml.sax
sust
org.xml.sax
äpunp
org.xml.sax.ext
org.xml.sax.ext
dopi
org.xml.sax.helpers
org.xml.sax.helpers rogtertde
java.util.concurrent.atomicd
java.util.concurrent.locks
java.util.concurrent.locks
java.util.jar
java.util.jar
java.util.logging
java.util.logging
java.util.prefs
java.util.prefs
java.util.regex
java.util.regex
java.util.zip
java.util.zip
d
ÄOl
Otlde
lerder
javax.xml
evVr
javax.xml
eev
javax.xml.parsers
javax.xml.parsers rersriiso
ino
n
javax.crypto
javax.crypto
javax.crypto.interfaces
javax.crypto.interfaces
javax.crypto.spec
javax.crypto.spec
javax.net
javax.net
javax.net.ssl
javax.net.ssl
javax.security.cert
javax.security.cert
javax.sql
javax.sql
PUaP
rantlrv
ytoly
javax.security.auth
javax.security.authsllusptu
äpn
javax.security.auth.callbck
javax.security.auth.callbck
opdro
javax.security.auth.login
javax.security.auth.loginitgertde
javax.security.auth.x500
javax.security.auth.x500 d
org.w3c.dom
org.w3c.dom
10
Implementierung
●
●
Beigesteuert von Noser Engineering
●
1900 API-Klassen, 3200 total
●
Teilweise portiert von Apache Harmony
●
Teilweise „from scratch“ entwickelt
Optimierung
●
java.util.regex
●
java.text
●
java.security
●
java.math
ICU
ICU
JNI
JNI
OpenSSL
OpenSSL
11
C++/ /Assembler
Assembler
CC/ /C++
Java
Java
Plattform (IV)
12
Framework (I)
●
Was ist es nicht?
●
●
Was ist es dann?
●
●
Kein Swing / AWT / SWT / LCDUI
GUI-Toolkit für kleine (Touch-) Bildschirme
Eigenschaften
●
Lebenszyklus für Applikationen
●
Deklarative Bildschirmlayouts (+ Übersetzung)
●
Zentraler Begriff „Aktivität“ (etwa ein Bildschirm)
●
Navigation über Anwendungsgrenzen hinweg
13
Framework (II)
●
Einige Beispiele für GUI-Elemente...
14
C++/ /Assembler
Assembler
CC/ /C++
Java
Java
Plattform (V)
15
16
17
Werkzeuge
●
Entwicklungsprozess (vereinfacht)
IDE
IDE
●
●
JavaJavaCompiler
Compiler
Bestehende
Werkzeuge
und Wissen
nutzbar
Android SDK
Package
Package
Tool
Tool
HelloWorld.apk
HelloWorld.apk
Dx
Dx
Converter
Converter
Dalvik
Dalvik
VM
VM
HelloWorld.apk
HelloWorld.apk
Hello.class
classes.dex
World.class
strings.txt
strings.txt
image.png
image.png
18
SDK
●
Build-Werkzeuge
●
Dokumentation
●
Beispiele
●
Emulator
●
Konfigurierbar
●
Erweiterbar
●
Debugging Tools
●
Eclipse Plugin
19
Hardware (I)
●
●
●
State of the Art: Nexus One
●
Von HTC produziert
●
Von Google vertrieben
Technische Daten
●
1 GHz, 384 MB RAM, WVGA
●
UMTS, quad-band GSM
●
Touchscreen, Trackball
●
5 MP, GPS, diverse Sensoren
Zahlreiche andere Geräte
20
Hardware (II)
●
●
Über Telefone hinaus
●
Internet Tablet
●
Mobiles Terminal
●
Navigationssystem
●
Set-Top Box
Industrielle Anwendungen
●
Ticket-Automat
●
Automotive
●
Anlagensteuerung
??
21
Industrielle Hardware
Toradex Colibri SoC
Calyx-Basishardware
22
Einfaches Beispielsystem
●
●
●
●
●
Drehende Scheibe
Transparente
Symbole
Lichtschranke misst
Umdrehungen
LED für StroboskopEffekt
Nur ein Symbol soll
aufleuchten
23
Was fehlt?
●
●
●
API für Sensoren / Aktoren / Busse
●
GPIOs
●
CAN, OneWire, ...
●
Android Sensor API kann als Basis dienen
Framework für industrielle Anwendungsfälle
●
Messen, Steuern, Regeln
●
User Interface
Echtzeiterweiterungen
●
Xenomai (Ziswiler, 2009)
24
Zusammenfassung
●
●
Open-Source Plattform für mobile Systeme
●
Vollständig
●
Offen
●
Lizenzkostenfrei
www.noser.com
Technologie
●
Linux
●
Java
●
Mächtiges Set von Werkzeugen
●
Jenseits von Mobiltelefonen nutzbar
25
Herunterladen