summaryrefslogtreecommitdiffstats
path: root/docs/libraries.html
blob: e1c3035f1ed6eab71571b4ee0791e35e17f52d02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>

<title>Dalvik Libraries</title>
    
<link rel=stylesheet href="dex-format.css">
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>

<style>
ul.code li {
  font-family: monospace;
}
</style>

</head>

<body onload="prettyPrint()">

<h1 class="title">Dalvik Libraries</h1>

<p>The Dalvik Libraries, also known as the <i>Android core libraries</i>,
implement general purpose APIs used by code written in the Java programming
language. While the libraries themselves don't depend on Android, they do form
the foundation of the Android framework. Android applications use the Dalvik
libraries both directly and indirectly for data structures, networking,
concurrency, I/O, and more.</p>

<p>The Dalvik libraries break down into two categories:</p>

<ul>
    <li><a href="#vm-specific">Dalvik VM-specific libraries</a></li>
    <li><a href="#interop">Java programming language interoperability
        libraries</a></li>
</ul>

<p>Any system claiming to be Android-compatible must implement these libraries.
Unless otherwise noted, both the signatures and the behavior of such a system
need to conform to the Android 1.0 reference implementation. Both types of
conformance will be checked by the upcoming Android Compatibility Test Suite
(CTS).</p>

<a name="vm-specific"/><h2>Dalvik VM-specific libraries</h2>

<p>The VM-specific libraries enable requesting or modifying VM-specific
information. Code that uses these classes is only portable across Dalvik-based
systems. The VM-specific Dalvik packages include:</p>

<ul class="code">
  <li>dalvik.annotation</li>
  <li>dalvik.bytecode</li>
  <li>dalvik.system</li>
</ul>

<a name="interop"/><h2>Java programming language interoperability libraries</h2>

<p>This category of library provides a familiar environment for programmers
writing code in the Java programming language. Much of the implementation of
this code comes from <a href="http://harmony.apache.org/">Apache Harmony</a>.
Sometimes, we have to change the Harmony code to make it more suitable for the
memory and CPU-constrained environments targeted by Dalvik. We delineate
Dalvik-specific changes like so:

<pre class="prettyprint">
    private static final long serialVersionUID = 8683452581122892189L;

// BEGIN android-added
    /** zero-element array */
    private static final Object[] emptyArray = new Object[0];
// END android-added

    private transient int firstIndex;
</pre>

<p>If you change existing Harmony code instead of just inserting new code, use
<code>android-changed</code> instead of <code>android-added</code>. These
markers help us keep track of our own changes when we pull down updates from
Harmony.</p>

<p>Packages in this category include:</p>

<ul class="code">
  <li>java.io</li>
  <li>java.lang</li>
  <li>java.lang.annotation</li>
  <li>java.lang.ref</li>
  <li>java.lang.reflect</li>
  <li>java.math</li>
  <li>java.net</li>
  <li>java.nio</li>
  <li>java.nio.channels</li>
  <li>java.nio.channels.spi</li>
  <li>java.nio.charset</li>
  <li>java.nio.charset.spi</li>
  <li>java.security</li>
  <li>java.security.acl</li>
  <li>java.security.cert</li>
  <li>java.security.interfaces</li>
  <li>java.security.spec</li>
  <li>java.sql</li>
  <li>java.text</li>
  <li>java.util</li>
  <li>java.util.concurrent</li>
  <li>java.util.concurrent.atomic</li>
  <li>java.util.concurrent.locks</li>
  <li>java.util.jar</li>
  <li>java.util.logging</li>
  <li>java.util.prefs</li>
  <li>java.util.regex</li>
  <li>java.util.zip</li>
  <li>javax.crypto</li>
  <li>javax.crypto.interfaces</li>
  <li>javax.crypto.spec</li>
  <li>javax.net</li>
  <li>javax.net.ssl</li>
  <li>javax.security.auth</li>
  <li>javax.security.auth.callback</li>
  <li>javax.security.auth.login</li>
  <li>javax.security.auth.x500</li>
  <li>javax.security.cert</li>
  <li>javax.sql</li>
  <li>javax.xml</li>
  <li>javax.xml.parsers</li>
  <li>org.w3c.dom</li>
  <li>org.xml.sax</li>
  <li>org.xml.sax.ext</li>
  <li>org.xml.sax.helpers</li>
</ul>

<p>We only provide the core functionality of <code>XMLParser</code> and
<code>DocumentBuilder</code> in the XML packages. Some methods dealing with XML
schema were left out because we don't provide the corresponding packages.</p>

<p>In addition to the aforementioned packages, we plan to support the following
packages some time in the future. We currently have an unfinished
implementation of 2D drawing and image processing.</p>

<ul class="code">
  <li>java.awt</li>
  <li>java.awt.color</li>
  <li>java.awt.event</li>
  <li>java.awt.font</li>
  <li>java.awt.geom</li>
  <li>java.awt.im</li>
  <li>java.awt.im.spi</li>
  <li>java.awt.image</li>
  <li>java.awt.image.renderable</li>
  <li>javax.imageio</li>
  <li>javax.imageio.event</li>
  <li>javax.imageio.metadata</li>
  <li>javax.imageio.plugins.bmp</li>
  <li>javax.imageio.plugins.jpeg</li>
  <li>javax.imageio.spi</li>
  <li>javax.imageio.stream</li>
</ul>

<p style="margin-top: 50px">Copyright &copy; 2008 The Android Open Source
Project</p>

</body>
</html>