Description: JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.
Keywords: diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet

Android Developers | Android.com

API Diff Specification
To Level: | 9
From Level: | 8
Generated | 2010.11.19 19:12

Top of Report

# API Change Statistics

The overall difference between API Levels 8 and 9 is approximately 2.93%.

## Total of Differences, by Number and Type

The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.

Type | Additions | Changes | Removals | Total
--- | --- | --- | --- | ---
Packages | 4 | 50 | 0 | 54
Classes and Interfaces | 79 | 165 | 9 | 253
Constructors | 29 | 2 | 1 | 32
Methods | 511 | 35 | 28 | 574
Fields | 141 | 11 | 2 | 154
Total | 764 | 263 | 40 | 1067

## Changed Packages, Sorted by Percentage Difference

Percentage Difference* | Package
--- | ---
62 | dalvik.system
30 | java.sql
22 | javax.sql
13 | java.util.concurrent.locks
10 | java.util.concurrent
10 | javax.security.auth.x500
8 | java.util.zip
7 | android.content.res
6 | java.util
6 | java.net
6 | java.text
5 | android.os
4 | android.hardware
4 | android.view
4 | javax.security.auth
4 | javax.net.ssl
4 | android.app
3 | java.util.concurrent.atomic
3 | android.location
3 | java.awt.font
2 | java.security
2 | java.io
1 | javax.xml.validation
1 | android.service.wallpaper
1 | android.telephony.gsm
1 | android.content.pm
1 | android.provider
<1 | javax.xml.parsers
<1 | android.view.inputmethod
<1 | java.nio
<1 | android.net.wifi
<1 | dalvik.bytecode
<1 | android.media
<1 | java.lang.reflect
<1 | android.app.admin
<1 | android.test.mock
<1 | java.lang
<1 | android
<1 | android.content
<1 | android.widget
<1 | android.text.format
<1 | javax.xml.datatype
<1 | javax.xml.transform
<1 | java.util.logging
<1 | android.util
<1 | android.graphics
<1 | android.telephony
<1 | org.apache.http.protocol
<1 | android.webkit
<1 | android.opengl

* See Calculation of Change Percentages, below.

## Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage Difference* | Class or Interface
--- | ---
55 | java.util.concurrent.AbstractExecutorService
50 | javax.net.ssl.KeyStoreBuilderParameters
50 | javax.sql.ConnectionPoolDataSource
50 | javax.sql.DataSource
47 | java.security.Policy
45 | java.net.NetworkInterface
42 | java.text.CollationKey
42 | java.util.TreeMap
33 | java.io.IOException
33 | java.util.concurrent.ExecutorService
33 | java.util.concurrent.locks.LockSupport
32 | javax.sql.RowSet
29 | java.util.TreeSet
29 | java.sql.BatchUpdateException
26 | javax.security.auth.Subject
25 | java.util.LinkedList
25 | java.security.UnrecoverableKeyException
25 | java.sql.SQLWarning
25 | java.util.ResourceBundle
23 | java.sql.SQLException
20 | dalvik.system.PathClassLoader
20 | javax.sql.PooledConnection
19 | java.sql.PreparedStatement
19 | android.location.Criteria
19 | android.view.MotionEvent
16 | java.sql.CallableStatement
16 | java.io.PipedReader
16 | java.util.concurrent.locks.AbstractOwnableSynchronizer
16 | javax.net.ssl.SSLSessionBindingEvent
16 | java.util.Arrays
14 | java.security.AccessController
14 | java.util.PropertyResourceBundle
13 | java.sql.ResultSet
13 | android.provider.ContactsContract.CommonDataKinds.Nickname
13 | java.nio.Buffer
13 | javax.net.ssl.SSLContext
13 | java.util.concurrent.TimeUnit
12 | java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock
11 | java.sql.Connection
11 | java.io.File
11 | android.hardware.Sensor
11 | android.net.wifi.WifiManager.WifiLock
11 | javax.net.ssl.SSLContextSpi
10 | java.io.PipedInputStream
10 | java.sql.Blob
10 | java.util.concurrent.Executors
10 | javax.security.auth.x500.X500Principal
9 | java.lang.Math
9 | java.lang.StrictMath
9 | android.location.Geocoder
9 | android.location.LocationManager
9 | android.media.CameraProfile
9 | android.os.PowerManager.WakeLock
9 | java.sql.Types
9 | java.util.Properties
9 | javax.xml.validation.SchemaFactory
8 | android.content.AbstractThreadedSyncAdapter
8 | java.lang.reflect.Member
8 | java.sql.Clob
8 | javax.net.ssl.SSLSessionContext
8 | java.lang.Class
8 | java.sql.SQLInput
8 | java.sql.SQLOutput
7 | android.content.IntentSender
7 | java.sql.DataTruncation
7 | java.util.concurrent.ScheduledThreadPoolExecutor
7 | java.text.DecimalFormatSymbols
7 | java.text.DateFormatSymbols
7 | java.text.Format
6 | android.telephony.gsm.GsmCellLocation
6 | java.io.ObjectStreamClass
6 | java.util.concurrent.atomic.AtomicBoolean
6 | java.util.concurrent.atomic.AtomicReference
6 | java.util.concurrent.atomic.AtomicReferenceFieldUpdater
6 | android.view.KeyEvent
6 | android.media.MediaPlayer
6 | android.content.pm.PackageItemInfo
6 | java.awt.font.TextAttribute
5 | android.content.SharedPreferences.Editor
5 | android.graphics.ImageFormat
5 | java.text.BreakIterator
5 | java.util.concurrent.atomic.AtomicReferenceArray
5 | android.hardware.Camera
5 | javax.net.ssl.HandshakeCompletedEvent
5 | android.content.pm.PackageManager
5 | android.hardware.Camera.Parameters
5 | java.lang.Double
5 | java.lang.Enum
5 | android.content.pm.ActivityInfo
5 | java.lang.Float
4 | android.widget.ListView
4 | android.os.Build.VERSION_CODES
4 | android.view.inputmethod.InputConnection
4 | android.view.inputmethod.InputConnectionWrapper
4 | java.lang.reflect.Array
4 | java.sql.Array
4 | android.test.mock.MockPackageManager
4 | android.content.pm.PackageInfo
4 | java.sql.DatabaseMetaData
4 | android.media.AudioTrack
4 | android.provider.MediaStore
4 | java.util.concurrent.FutureTask
4 | javax.net.ssl.SSLSocket
4 | java.text.NumberFormat
4 | android.media.ExifInterface
4 | android.view.inputmethod.BaseInputConnection
4 | java.util.concurrent.ConcurrentHashMap
3 | java.net.SocketImpl
3 | java.util.concurrent.atomic.AtomicIntegerFieldUpdater
3 | java.util.concurrent.atomic.AtomicLongFieldUpdater
3 | javax.xml.parsers.SAXParserFactory
3 | android.os.DropBoxManager.Entry
3 | android.util.DisplayMetrics
3 | java.util.concurrent.atomic.AtomicIntegerArray
3 | java.util.concurrent.atomic.AtomicLongArray
3 | javax.xml.transform.TransformerFactory
3 | android.hardware.SensorManager
3 | java.sql.Statement
3 | android.R.drawable
3 | android.media.CamcorderProfile
3 | android.view.ViewConfiguration
3 | java.lang.Package
3 | java.sql.ParameterMetaData
3 | android.provider.Settings
3 | javax.net.ssl.SSLEngine
2 | android.os.ParcelFileDescriptor
2 | android.service.wallpaper.WallpaperService.Engine
2 | java.util.concurrent.ThreadPoolExecutor
2 | java.util.concurrent.atomic.AtomicInteger
2 | java.util.concurrent.atomic.AtomicLong
2 | android.app.Notification
2 | java.util.Calendar
2 | java.lang.String
2 | android.Manifest.permission
2 | java.util.concurrent.locks.ReentrantReadWriteLock
2 | android.os.Build
2 | android.webkit.WebSettings
2 | android.app.ActivityManager.RunningAppProcessInfo
2 | javax.xml.parsers.DocumentBuilderFactory
2 | java.util.logging.Logger
2 | java.sql.ResultSetMetaData
1 | android.R.style
1 | android.os.Environment
1 | javax.xml.datatype.DatatypeFactory
1 | java.util.Collections
1 | android.app.admin.DevicePolicyManager
1 | java.lang.System
1 | android.text.format.DateUtils
1 | org.apache.http.protocol.HTTP
1 | android.media.MediaRecorder
1 | android.view.View
1 | android.widget.RemoteViews
1 | java.io.PrintStream
1 | java.io.PrintWriter
1 | android.content.pm.ApplicationInfo
1 | android.view.Window
1 | java.util.Locale
<1 | android.content.Context
<1 | dalvik.bytecode.Opcodes
<1 | android.R.attr
<1 | java.util.Scanner
<1 | android.telephony.TelephonyManager
<1 | android.content.res.Configuration
<1 | android.app.Activity
<1 | android.opengl.GLES20

* See Calculation of Change Percentages, below.

## Calculation of Change Percentages

The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

    Percentage difference = 100 * (added + removed + 2*changed)
                            -----------------------------------
                            sum of public elements in BOTH APIs

where `added` is the number of packages added, `removed` is the number of packages removed, and `changed` is the number of packages changed. This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. The definition ensures that if all packages are removed and all new packages are added, the change will be 100%.