Version | Code name | Release date | API level | Distribution (February 5, 2013) |
---|---|---|---|---|
1.6 | Donut | September 15, 2009 | 4 | 0.2% |
2.0–2.1 | Eclair | October 26, 2009 | 7 | 2.2% |
2.2 | Froyo | May 20, 2010 | 8 | 8.1% |
2.3–2.3.2 | Gingerbread | December 6, 2010 | 9 | 0.2% |
2.3.3–2.3.7 | Gingerbread | February 9, 2011 | 10 | 45.4% |
3.1 | Honeycomb | May 10, 2011 | 12 | 0.3% |
3.2 | Honeycomb | July 15, 2011 | 13 | 1.0% |
Version | Code name | Release date | API level | Distribution (February 5, 2013) |
---|---|---|---|---|
4.0.x | Ice Cream Sandwich | December 16, 2011 | 15 | 29.0% |
4.1.x | Jelly Bean | July 9, 2012 | 16 | 12.2% |
4.2.x | Jelly Bean | November 13, 2012 | 17 | 1.4% |
class Sprite {
private Image img;
public Sprite(Image img) {
...
}
public void draw(Screen scr) {
...
}
}
class Soldier extends Sprite
implements ClickListener,
ActionListener {
private String type;
private String name;
public Soldier(String type, String name) {
super(AssetManager.get("soldier_"+type));
...
}
...
}
interface ClickListener {
boolean OnClick(int x, int y, int buttons);
}
interface ActionListener {
boolean OnDie();
boolean OnPowerup();
}
class Soldier extends Sprite
implements ClickListener,
ActionListener {
...
public boolean OnClick(int x, int y, int buttons) {
...
}
public boolean OnDie() {
...
}
public boolean OnPowerup() {
...
}
}
class GameEngine {
...
public void processMouseClick(int x, int y,
int buttons) {
ClickListener gameObj = findByPosition(x,y);
if (gameObj != null) {
boolean result = gameObj.OnClick(x, y, buttons);
...
}
}
...
}
(da codice sorgente a codice macchina)
(esecuzione del codice macchina)
(esecuzione del sorgente)
(da codice sorgente Java a bytecode JVM)
(esecuzione bytecode su JVM)
Anche se il linguaggio utilizzato nativamente da Android è Java è necessario tenere a mente che non si tratta dello stesso Java di Sun/Oracle ma di una sua riscrittura.
In particolare si tratta di una reimplementazione di Java versione 6.
Inoltre sul dispositivo android l'applicazione non verrà eseguita da una JVM ma da una Virtual Machine specificatamente sviluppata per sistemi mobile:
... e non è in grado di eseguire direttamente il bytecode della JVM (quello che è di solito contenuto nei file .class)
I tool di sviluppo android prendono l'insieme dei file .class e generano un nuovo file nel formato DEX (il bytecode specifico di DalvikVM).