Appendix 1CLDC Core Libraries System Classes java.lang.Class Instances of Class represent classes and interfaces in a running application.java.lang.Object The Object class is the root of
Trang 1422 THE MARKET, THE OPPORTUNITIES AND SYMBIAN’S PLANS
• network bandwidth will improve, though not so dramatically
• network connections will always be available, reducing latency
• costs for persistent storage will continue to tumble and access speedswill increase dramatically as new memory technologies, such asFerroelectric RAM, Magnetic RAM and Ovonic memory, replaceNOR and NAND flash
• the resolution of screen displays will continue to improve, through adecrease in dot pitch as screen sizes will be limited by overall mobilephone ergonomics
There will also be market changes:
• ”smart houses” will become a reality: climate control, entertainmentand security systems will be controlled by a variety of devices,including mobile phones
• digital consumer goods will converge
Today, video cameras can take still images and digital cameras can recordvideo, and quite often both include MP3 players These capabilities aremoving into mobile phones: the current phones only support VGA,however the next generation of mobile phones will have megapixelresolution cameras (indeed a number of Japanese cameras already do).Many of today’s mobile phones come with FM radios and in the future
we are likely to see the inclusion of Digital Audio Broadcast radios InKorea, people can now use their mobile phones for credit card purchases.The consequence will be an explosion in the amount of data users store
on their mobile phone: audio, video, images, email and messaging Thiswill amount to gigabytes of storage
So, we leave you with a simple challenge: to use your developmentskills, and the knowledge and insight that we hope you have gainedfrom this book, to create the next killer Java service or application onSymbian OS
Trang 2Appendix 1
CLDC Core Libraries
System Classes
java.lang.Class Instances of Class represent classes
and interfaces in a running application.java.lang.Object The Object class is the root of classes.java.lang.Runtime Every Java application has a single
instance of the Runtime class, whichallows the application to interface withthe environment in which it is running.Note that the Exit() method alwaysthrows a java.lang
SecurityException
useful fields and methods and it cannot
be instantiated Note that the Exit()method always throws a java.lang.SecurityException
java.lang.Thread A Thread is a unit of execution in a
program Multiple threads may beexecuted concurrently
java.lang.Runnable(interface) This interface should be implemented
by any class which is intended to beexecuted as threads A run() methodmust be defined by such a class.java.lang.Throwable The Throwable class is the superclass
of all errors and exceptions
Programming Java 2 Micro Edition on Symbian OS: A developer’s guide to MIDP 2.0 Martin de Jode
2004 Symbian Ltd ISBN: 0-470-09223-8
Trang 3424 CLDC CORE LIBRARIES
Data Type Classes
java.lang.Boolean The Boolean class wraps a value of
the boolean primitive type in an object
byte primitive type in an object.java.lang.Character The Character wraps a value of the
char primitive type in an object.java.lang.Integer The Integer class wraps a value of
the int primitive type in an object
long primitive type in an object.java.lang.Short The Short class wraps a value of the
short primitive type in an object.java.lang.String The String class represents character
strings
java.lang.Stringbuffer A StringBuffer implements a
mutable sequence of characters
Collection Classes
java.util.Vector The Vector class implements an array
of objects that can grow
java.util.Stack The Stack class represents a last in
first out stack of objects
java.util.Hashtable This class implements a hashtable,
which maps keys to values
java.util.Enumeration(interface) An object that implements the
Enumerationinterface generates aseries of elements, one at a time
Input/Output Classes
java.io.InputStream This abstract class is the superclass of
all classes representing an input stream
of bytes
java.io.OutputStream This abstract class is the superclass of
all classes representing an outputstream of bytes
java.io.ByteArrayInputStream A ByteArrayInputStream has an
internal buffer that contains bytes thatmay be read from the stream
Trang 4CALENDAR AND TIME CLASSES 425
java.io.ByteArrayOutputStream This class implements an output
stream in which the data is written into
a byte array
java.io.DataInput(interface) The DataInput interface provides for
reading bytes from a binary stream andreconstructing from them data in any
of the primitive types
java.io.DataOutput(interface) The DataOutput interface provides
for converting data from any of theprimitive types to a series of bytes andwriting to a binary stream
java.io.DataInputStream A DataInputStream lets an
application read primitive data typesfrom an underlying input stream in amachine-independent way
java.io.DataOutputStream A DataOutputStream lets an
application write primitive data types
to an output stream in a portable way.java.io.Reader An abstract class for reading character
streams
java.io.Writer An abstract class for writing character
streams
java.io.InputStreamReader An InputStreamReader is a bridge
from byte streams to character streams
It reads bytes and translates them intocharacters according to a specifiedcharacter encoding
java.io.OutputStreamReader An OutputStreamReader is a
bridge from character streams to bytestreams Characters written to it aretranslated into bytes according to aspecified character encoding
java.io.PrintStream A PrintStream adds functionality to
another output stream, namely theability to print representations ofvarious data values conveniently
Calendar and Time Classes
java.util.Calendar The Calendar is an abstract class for
getting and setting dates using a set ofinteger fields such as YEAR, MONTH,DAY, etc
Trang 5426 CLDC CORE LIBRARIES
instant in time with a millisecondprecision
java.util.TimeZone The TimeZone class represents a time
zone offset and also works out daylightsavings
Additional Utility Classes
java.util.Random An instance of this class is used to
generate series of pseudo-randomnumbers
performing basic numeric operations
Exception Classes
java.lang.Exception The Exception class and its
subclasses are a form of Throwablethat indicates conditions that areasonable application might want tocatch
java.lang.ClassNotFoundException Thrown when an application tries to
load in a class through its string nameusing the forName() method inClassclass
java.lang.IllegalAccessException Thrown when an application tries to
load in a class but the executingmethod does not have access to theclass definition, because the class is inanother package and is not public.java.lang.InstantiationException Thrown when an application tries to
create an instance of a class using thenewInstance()method in Classclass, but cannot instantiate it because
it is an interface or an abstract class or
it doesn’t have a default constructor.java.lang.InterruptedException Thrown when a thread is waiting,
sleeping or otherwise paused andanother thread interrupts it
java.lang.RuntimeException This is the superclass of exceptions that
can be thrown during the normaloperation of the Java Virtual Machine
Trang 6EXCEPTION CLASSES 427
java.lang.ArithmeticException Thrown when an exceptional
arithmetic condition occurs
java.lang.ArrayStoreException Thrown to indicate that an attempt has
been made to store the wrong type ofobject in an array of objects
java.lang
ArrayIndexOutOfBoundsException
Thrown to indicate that an array hasbeen accessed with an illegal index.java.lang.ClassCastException Thrown to indicate that the code has
attempted to cast an object to asubclass of which it is not aninstance
java.lang
IllegalArgumentException
Thrown to indicate that a method hasbeen passed an illegal or inappropriateargument
java.lang
IllegalThreadStateException
Thrown when starting a Thread forthe second time
java.lang.NumberFormatException Thrown when trying to read an
Integerfrom a malformed String.java.lang
IllegalMonitorStateException
Thrown to indicate that a thread hasattempted to wait on an object’smonitor or to notify other threadswaiting on an object’s monitor withoutowning the specified monitor
java.lang
IndexOutofBoundsException
Thrown to indicate that an index ofsome sort (such as an index to anarray, to a string, or to a vector) is out
to the size of the string
java.lang
NegativeArraySizeException
Thrown if an application tries to create
an array with negative size
java.lang.NullPointerException Thrown when an application attempts
to use null in a case where an object isrequired
java.lang.SecurityException Thrown by the security manager to
indicate a security violation
java.util.EmptyStackException Thrown by methods in the Stack class
to indicate that the stack is empty.java.util.NoSuchElementException Thrown by the methods of an
Enumerationto indicate that thereare no more elements in the
enumeration
Trang 7428 CLDC CORE LIBRARIES
java.io.EOFException Signals that an end of file or end of
stream has been reached unexpectedlyduring input
java.io.IOException Signals that an I/O exception of some
sort has occurred
java.io.InterruptedIOException Signals that an I/O operation has been
java.io.UTFDataFormatException Signals that a malformed UTF8 string
has been read in a data input stream or
by any class that implements the datainput interface
Error Classes
In contrast to the exception classes, the error-handling capabilities ofCLDC are limited to just three:
that indicates serious problems that areasonable application may not try tocatch
java.lang.VirtualMachineError Thrown to indicate that the Java Virtual
Machine is broken or has run out ofthe resources necessary for it tocontinue operating
java.lang.OutOfMemoryError Thrown when the Java Virtual
Machine cannot allocate an objectbecause it is out of memory and nomore memory can be made available
by the garbage collector
Catching an OutOfMemoryError is very good practice when oping for a resource-constrained device It allows the developer to try
devel-to free all the memory he can and maybe give the application anotherchance to perform the requested action In the worst case scenario, theapplication should be able to display a previously allocated dialog box
to inform the user that the application cannot continue
Trang 8Appendix 2
MIDP Libraries
Networking Package
javax.microedition.io.Connection This interface is the most
basic type of genericconnection
javax.microedition.io.Connector This class is a placeholder for
the static methods used tocreate all the connectionobjects
javax.microedition.io.CommConnection This interface defines a
logical serial port connection.javax.microedition.io.ContentConnection This interface defines the
stream connection overwhich content is passed.javax.microedition.io.Datagram This is the generic datagram
interface
javax.microedition.io.DatagramConnectionThis interface defines the
capabilities that a datagramconnection must have.javax.microedition.io.HttpConnection This interface defines the
necessary methods andconstants for an HTTPconnection
javax.microedition.io.HttpsConnection This interface defines the
necessary methods andconstants to establish a securenetwork connection
javax.microedition.io.InputConnection This interface defines the
capabilities that an inputstream connection must have
Programming Java 2 Micro Edition on Symbian OS: A developer’s guide to MIDP 2.0 Martin de Jode
2004 Symbian Ltd ISBN: 0-470-09223-8
Trang 9430 MIDP LIBRARIES
javax.microedition.io.OutputConnection This interface defines the
capabilities that an outputstream connection must have.javax.microedition.io.PushRegistry This class maintains a list of
inbound connections
javax.microedition.io.SecureConnection This interface defines the
secure socket streamconnection
javax.microedition.io.SecurityInfo This interface defines the
methods for accessinginformation about a secureconnection
javax.microedition.io
ServerSocketConnection
This interface defines theserver socket streamconnection
javax.microedition.io.SocketConnection This interface defines the
socket stream connection.javax.microedition.io.StreamConnection This interface defines the
capabilities that a streamconnection must have.javax.microedition.io
StreamConnectionNotifier
This interface defines thecapabilities that a connectionnotifier must have
javax.microedition.io
UDPDatagramConnection
This interface defines adatagram connection whichknows the local end pointaddress
User Interface Classes
javax.microedition.lcdui.Alert A screen that shows data to
the user and waits for acertain period of timebefore proceeding to thenext screen
javax.microedition.lcdui.AlertType Provides an indication of
the nature of alerts
Trang 10USER INTERFACE CLASSES 431
javax.microedition.lcdui.Canvas The base class for writing
applications that need tohandle low-level eventsand to issue graphicscalls for drawing to thedisplay
javax.microedition.lcdui.Choice This interface defines an API
for user interface componentsthat enable the user to selectfrom a predefined number ofchoices
javax.microedition.lcdui.ChoiceGroup A group of selectable
elements intended to beplaced within a Form.javax.microedition.lcdui.Command A construct that encapsulates
the semantic information of
an action
javax.microedition.lcdui.CommandListenerThis interface is used by
applications which need toreceive high-level events fromthe implementation
javax.microedition.lcdui.CustomItem A customizable element
which can be subclassed tointroduce new visual andinteractive elements to aForm
javax.microedition.lcdui.DateField An editable component for
presenting date and time(calendar) information thatmay be placed in a Form.javax.microedition.lcdui.Display Represents the manager of the
display and GUI capabilities
javax.microedition.lcdui.Form A Screen that contains an
arbitrary mixture of items:read-only text fields, editabletext fields, editable datefields, gauges, choice groupsand custom items
Trang 11432 MIDP LIBRARIES
javax.microedition.lcdui.Gauge Implements a graphical
display, such as a bar graph,
javax.microedition.lcdui.Item A superclass for components
that can be added to aForm
javax.microedition.lcdui
ItemCommandListener
This interface is a listener typefor receiving notification ofcommands that have beeninvoked on Item objects.javax.microedition.lcdui
ItemStateListener
This interface is used byapplications which need toreceive events that indicatechanges in the internal state ofthe interactive items within aFormscreen
javax.microedition.lcdui.List A screen containing a list of
choices
javax.microedition.lcdui.Screen The common superclass of all
high-level user interfaceclasses
javax.microedition.lcdui.Spacer A blank, non-interactive Item
that has a settable minimumsize
javax.microedition.lcdui.StringItem A non-interactive Item that
can contain a string
javax.microedition.lcdui.TextBox A screen that allows the user
to enter and edit text
javax.microedition.lcdui.TextField An editable text component
that may be placed in a Form.javax.microedition.lcdui.Ticker Implements a ”ticker tape”, a
piece of text that runscontinuously across thedisplay
Game API
java.microedition.lcdui.game.GameCanvas This class provides the basis
for a game user interface
Trang 12MIDLET CLASSES 433
java.microedition.lcdui.game.Layer An abstract class
representing a visualelement of a game
java.microedition.lcdui.game
LayerManager
The LayerManagermanages a series of Layers.java.microedition.lcdui.game.Sprite A basic visual element that
can be rendered with one
of several frames stored in
an image; different framescan be shown to animatethe Sprite
java.microedition.lcdui.game.TiledLayer A visual element composed
of a grid of cells that can befilled with a set of tileimages
Media API
java.microedition.media.Control A superclass for objects
used to control some mediaprocessing functions.java.microedition.media.Controllable An interface for obtaining
the Controls from anobject
java.microedition.media.Manager The access point for
obtainingsystem-dependentresources such as Playersfor multimedia processing.java.microedition.media.MediaException Indicates an unexpected
error condition in amethod
java.microedition.media.Player Controls the rendering of
time-based media data.java.microedition.media.PlayerListener An interface for receiving
asynchronous eventsgenerated by Players.java.microedition.media.control
ToneControl
An interface that enablesthe playback of
user-defined monotonictone sequences
java.microedition.media.control
VolumeControl
An interface formanipulating the audiovolume of a Player
Trang 13compare two records Animplementation checkswhether they match or whattheir relative sort order is.javax.microedition.rms.RecordEnumeration An interface representing a
bi-directional record storerecord enumerator
javax.microedition.rms.RecordFilter An interface used to filter
records matching acriterion
javax.microedition.rms.RecordListener A listener interface for
receiving record changed,added or deleted eventsfrom a RecordStore.javax.microedition.rms.RecordStore A class representing a
record store
javax.microedition.rms
RecordStoreException
Thrown to indicate ageneral exception wasencountered in aRecordStoreoperation.javax.microedition.rms
RecordStoreFullException
Thrown to indicate that theoperation could not becompleted because theRecordStoreis full.javax.microedition.rms
Trang 14and output through datastreams and serialization.
fundamental to the design
of the Java language Forexample, Object, which isthe root of the class
hierarchy
object classes, whichsupport a limited degree ofinteraction with thegarbage collector
interfaces for obtainingreflective informationabout classes andobjects
performingarbitrary-precision integer(BigInteger) and decimalarithmetic (BigDecimal)
implementing networkingapplications
interfaces for the securityframework
interfaces for parsing andmanaging certificates
Trang 15436 MIDP LIBRARIES
interfaces for handling text,dates, numbers andmessages in a mannerindependent of naturallanguages
contain the collectionsframework, legacycollection classes, eventmodel, date and timefacilities,
internationalization andmiscellaneous utility classessuch as string tokenizer andrandom number generator
and writing the JAR fileformat, which is basedupon standard ZIP fileformat with an optionalmanifest file
and writing the standardZIP and GZIP file formats
generic connectionframework
Trang 16Appendix 3
Using the Wireless Toolkit Tools
at the Command Line
This appendix provides developers with an insight into how the compile,pre-verify and packaging process works when using the Wireless Toolkit
at the command line
In the first instance we should make sure we have all the relevantbinaries within the view of our command line Some paths, therefore, need
to be set Assuming the J2ME Wireless Toolkit 2.1 has been installed toC:\WTK21 we should set the development platform’s PATH environmentvariable to that directory On a Windows desktop computer, the path tothe binaries should be set as follows:
C:> SET PATH=%PATH%;<install dir> \WTK21\bin
We will also need a Java compiler We should already have the latestJ2SE SDK installed on the machine, so we can use that compiler SetPATH as follows:
C:> SET PATH=%PATH%;<install dir> \JavaSoft\j2sdk1.4.2\bin
Now we should be able to use both the compiler and pre-verifier quiteeasily However, before we proceed we should also add a couple ofenvironment variables to make MIDlet creation a little easier We need todirect the commands towards the MIDP API and the other J2ME classes.Therefore we should set the following variables:
C:> SET J2MEHOME=<install dir> \WTK21
C:> SET MIDPAPI=%J2MEHOME% \lib\midpapi20.jar
C:> SET J2MECLASSPATH=%J2MEHOME% \wtklib\kenv.zip;
%J2MEHOME% \wtklib\kvem.jar;%J2MEHOME%\wtklib\lime.jar;
%J2MEHOME% \lib\cldcapi10.jar
Programming Java 2 Micro Edition on Symbian OS: A developer’s guide to MIDP 2.0 Martin de Jode
2004 Symbian Ltd ISBN: 0-470-09223-8
Trang 17438 USING THE WIRELESS TOOLKIT TOOLS AT THE COMMAND LINE
Now that some handy variables have been set, we can try to create
a MIDlet suite Once the classes have been written, they need to becompiled The following command should be used to compile all theclasses in the current directory and then put them in a previously createddirectory, tmpclasses Note that we have specified the classpath of theMIDP API to make sure the compiler knows to compile against the CLDCand MIDP classes, otherwise the classes may be compiled against theJ2SE SDK
C: \WTK20\apps\Example\src>javac -d tmpclasses -bootclasspath %MIDPAPI%
-classpath %J2MECLASSPATH% *.java
Once this has been completed, all the compiled class files can beseen in the tmpclasses directory We should now pre-verify them Bytyping the word preverify at the command line the following helpinformation appears showing the options available
Usage: preverify [options] classnames|dirnames
where options include:
-classpath <directories separated by ';'> Directories in which to look for classes
-d <directory> Directory in which output is written (default is
./output/)
-cldc Checks for existence of language features prohibited by CLDC (native methods, floating point and finalizers)
-nofinalize No finalizers allowed
-nonative No native methods allowed
-nofp No floating point operations allowed
@<filename> Read command line arguments from a text file Command line arguments must all be on a single line; directory names must be enclosed in double quotes(")
There are two options of interest to us here The -classpath option,which will specify which target API should be verified against, and the -doption, which specifies the output directory for these verified files Thefollowing command should be issued in the current directory:
C: \WTK20\apps\Example\src > preverify -classpath %MIDPAPI%;tmpclasses
-d classes tmpclasses
The pre-verified files will now be in the classes directory Thesefiles are ready for packaging into a MIDlet suite For this we use the jarcommand:
C: \WTK20\apps\Example\src> jar -cvf MyMidlet.jar classes/*
In this case we have asked the jar command to create a JAR filecalled MyMidlet.jar from all the files stored in the directory structureunder classes/
Trang 18Appendix 4
Developer Resources and Bibliography
Download code for this book from
Sony Ericsson www.sonyericsson.com
Online Developer Resources
Trang 19440 DEVELOPER RESOURCES AND BIBLIOGRAPHY
Trang 20RESOURCES MENTIONED IN THIS BOOK AND ADDITIONAL MATERIAL 441
Trang 21442 DEVELOPER RESOURCES AND BIBLIOGRAPHY
Sun (2003)The CLDC HotSpot Implementation Virtual Machine,White Paper
Forum Nokia (2003)Setting Up and Using the Bluetooth Testing
Environment for Series 60 Platform
http://forum.nokia.com
Hopkins, B and Anthony, R (2003)Bluetooth for Java, Apress
Java Community Process, JSR 82: Java APIs for Bluetooth WirelessTechnology
Trang 22RESOURCES MENTIONED IN THIS BOOK AND ADDITIONAL MATERIAL 443
Sun, J2ME Wireless Toolkit 2.1 Download
Allin, J (2001)Wireless Java for Symbian Devices, Wiley
Buschmann, F., Meunier, R., Rohnert, H., Sommerland, P and Stal, M.(1996) Pattern-Oriented Software Architecture: A system of patterns,Wiley
Embedded Microprocessor Benchmark Consortium, GrinderBench
Lurie, J (2001) Develop a Generic Caching Service to Improve mance, Java World
Perfor- cache p.html
Shirazi, J (2003)Java Performance Tuning, O’Reilly
Sosnoski, D M (1999)Smart Object-management Saves the Day
performance.html
www.javaworld.com/javaworld/jw-11-1999/jw-11-Chapter 8
ARC Group
www.arcgroup.com
Trang 23444 DEVELOPER RESOURCES AND BIBLIOGRAPHY
eWeek, Enterprise news and reviews
Trang 24Appendix 5
Specifications of Symbian OS Phones
Additional technical information on a range of phones can be found at
www.symbian.com/phones
Please note that this is a quick guide to Symbian OS phones For fullspecifications, C++ developers retrieve extended information using HALAPIs or check the manufacturer’s website
Programming Java 2 Micro Edition on Symbian OS: A developer’s guide to MIDP 2.0 Martin de Jode
2004 Symbian Ltd ISBN: 0-470-09223-8
Trang 25446 SPECIFICATIONS OF SYMBIAN OS PHONES
Nokia 9210i
MIDP 1.0 PersonalJava 1.1.1 JavaPhone
Memory available to user 40 MB