Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

J2ME Programming/Connected Limited Device Configuration

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Introduction Many people confuse the role of CLDC in J2ME application development. It alone is not a framework for application development because you need more than a configuration to produce J2ME applications(J2ME The J2ME Platform http://en.wikibooks.org/wiki/Programming:J2ME:The_J2ME_Platform). You can think of CLDC as the spec that helps define the subset of the J2ME language items such as input/output, math, and etc that the Java Virtual Machine uses as its set of rules in actually runing MIDlets under the Mobile Information Device Profile(MIDP). Package Structure We can get a clearer picture of this by observing what each package in the CLDC defines as the J2ME java subset. Although its not clear from the javadocs, Sun Microsystems does not separate MIDP and CLDC javadocs, these are the actual packages of CLDC(cldcapi CLDC API Documentation, V1.0 http://java.sun.com/j2me/docs/pdf/cldcapi.pdf): CLDC1.0 list of Packages under java.* java.lang.* java.io.* java.util.* Thus, we have classes that deinfe the java language subset attributes used. How the java language subset definitions for input/output are used. Also, a language definition of the subset of java.util.* from the full java language. Math Classes(CLDC1.0) in java.lang.* package from J2SE1.3 java.lang.Long java.lang.Short java.lang.Integer Notice when compared to J2SE math we have no floating point(Float class) and no double(Double class). Utility Classes(CLDC1.0) from J2SE1.3 java.lang.Math java.util.Random System Classes(CLDC1.0) in java.lang.* package from J2SE1.3 java.lang.System java.lang.Object java.lang.Runtime java.lang.Thread java.lang.Throwable java.lang.String java.lang.StringBuffer Data Type Classes(CLDC1.0) in java.lang.* package from J2SE1.3 excluding math java.lang.Boolean java.lang.Byte java.lang.Character Collection Classes(CLDC1.0) in java.util.* package from J2SE1.3 java.util.Enumeration java.util.Hashtable(see note in conclusion, from jdk1.1.8 not jse1.3) java.util.Stack java.util.Vector(see note in conclusion, from jdk1.1.8 not jse1.3) Calendar and Time Classes(CLDC1.0) in java.util.* package from J2SE1.3 java.util.Calendar java.util.Date java.util.TimeZone IO Classes(CLDC1.1) excluding GCF in java.io.* package from J2SE1.3 java.io.Writer java.io.Reader java.io.ByteArrayInputStream java.io.ByteArrayOutputStream java.io.DataInputStream java.io.DataOutputStream java.io.InputStream java.io.OutputStream java.io.InputStreamWriter java.io.OuputStreamWriter java.io.PrintStream Exception Classes(CLDC1.0) in java.util.* package from J2SE1.3 java.util.EmptyStackException java.util.NoSuchElementException Exception Classes(CLDC1.0) in java.io.* package from J2SE1.3 java.io.EOFException java.io.IOException java.io.InterruptedException java.io.UnsupportedEncodingException java.io.UTFDataFormatException Error Classes(CLDC1.0) in java.lang.* package from J2SE1.3 java.lang.Error java.lang.VirtualMachineError java.lang.OutOfMemoryError The other clases are mixed in with MIDP in the javadocs, thus I will list the full list of CLDC classes under the javax.microedition.io.* package. The class is the capitalized name at the right sight of the dot ending the package. CLDC1.0 list of classes under javax.microedition.io.* javax.microedition.io.InputConnection javax.microedition.io.Connection javax.microedition.io.StreamConnection javax.microedition.io.OutputConnection javax.microedition.io.Datagram javax.microedition.io.DatagramConnection javax.microedition.io.StreamConnectionNotifier javax.microedition.io.ContentConnection javax.microedition.io.ConnectionNotFoundException javax.microedition.io.Connector The common aspect that sets these classes apart is that they are interfaces defining the capabilities of the input/output connections. The classes in java.io.* define the java language attributes that input/output classes in javax.microedition.io.* use as their rule set. CLDC1.1 additional classes java.lang.Float java.lang.Double java.lang.Math GCF, General Connection Framework In the J2ME platform the J2SE IO is replaced with a smaller General Connection Framework(GCF). javax.microedition.io GCF Classes from CLDC1.0 javax.microedition.io.InputConnection javax.microedition.io.Connection javax.microedition.io.StreamConnection javax.microedition.io.OutputConnection javax.microedition.io.DatagramConnection javax.microedition.io.StreamConnectionNotifier javax.microedition.io.ContentConnection javax.microedition.io.HttpConnection Conclusion In conclusion, under the subset of java language for CLDC we do not have floating point math, no double, no class loaders, no sockets and no serialization. A smaller IO framework known as GCF is used. While the javadocs read MID Profile in top right corner the actual Configuration or Profile they belong to is noted down before the class method summary is listed as: since CLDC1.0 or since MIDP1.0 Note, that not all classes are based on JDK1.3 Classes(CLDC1.0) Based on JDK1.1.8 instead of JDK1.3 java.util.Vector java.util.Hashtable These classes were based on JDK1.1.8 to conserve space. CLDC1.0 Limitations Unicode Translation to and from reader/writer bytes is limited Does not support java.util.Properties from J2SE but limited stuff can be acquire as System.getProperty(String key) that starts with the keyword microedition References cldcapi CLDC API Documentation, V1.0 http://java.sun.com/j2me/docs/pdf/cldcapi.pdf KVM White paper J2ME Building Blocks for Mobile Devices White Paper on KVM and the Connected Limited Device Configuration (CLDC) http://java.sun.com/products/cldc/wp/KVMwp.pdf Trademark Notices J2ME, Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.