These examples are provided for illustration only. CLDC itself does not define any protocol implementations. It is not expected that a particular J2ME profile would provide support for all these kinds of connections. J2ME profiles may also support protocols not shown below.
HTTP records: Connector.open("http://www.foo.com");
Sockets: Connector.open("socket://129.144.111.222:9000");
Communication ports: Connector.open("comm:0;baudrate=9600");
Datagrams: Connector.open("datagram://129.144.111.333");
Files: Connector.open("file:foo.dat");
Network file systems: Connector.open("nfs:/foo.com/foo.dat");
http://java.sun.com/products/cldc/wp/KVMwp.pdf
Aus CLDC 1.0a Spezifikation
CLDCspec10a.pdf von
http://jcp.org/aboutJava/communityprocess/final/jsr030/index.html
Sandbox Model
Supporting multiple, simultaneously running Java applications
Depending on the resources available on the device, a CLDC system can allow multiple Java applications to execute concurrently, or can restrict the system to permit only the execution of one Java application at a time. It is up to the particular CLDC implementation to decide if the execution of multiple Java applications is supported by utilizing the multitasking capabilities (if they exist) of the underlying host operating system, or by instantiating multiple logical virtual machines to run the concurrent Java applications.
Thread groups and daemon threads
A JVM supporting CLDC implements multithreading, but shall not have support for thread groups or daemon threads. (See JVMS §2.19, §8.12-14). Thread operations such as starting and stopping of threads can be applied only to individual thread objects. If application programmers want to perform thread operations for groups of threads, explicit collection objects must be used at the application level to store the thread objects.
Spec.pdf http://java.sun.com/aboutJava/communityprocess/final/jsr037/index.html
Two categories of APIs are shown on top of the CLDC:
MIDP APIs: The set of APIs defined in this document.
OEM-specific APIs: Given the broad diversity of devices in the MIDP space, it is not possible to fully address all OEM requirements. These classes may be provided by an OEM to access certain functionality specific to a given device. These applications may not be portable to other MIDs.
MIDP implementations MUST provide support for accessing HTTP 1.1 servers and services.
Each device implementing the MIDP MUST support the full specification of RFC2616 HEAD, GET and POST requests. The implementation MUST also support the absolute forms of URIs.
The MIDP specification does NOT mandate a datagram API/protocol for a MID. MIDs that implement a datagram API/protocol SHOULD use the GenericConnection framework (DatagramConnection interface) as defined by the CLDC specification.
Record Store getrennt von allen anderen Handy Daten
http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html
MIDP 2.0 also requires HTTPS
Permissions and Code Signing
MIDlets that use the Generic Connection Framework may cost users money (in the case of network connections) or involve a security risk (in the case of serial port access). In light of the sensitivty of the connection framework, the MIDP 2.0 specification recognizes the concepts of trusted and untrusted code and permissions. Untrusted code cannot make connections at will; it must receive permission from the user. Code can be designated as trusted if the developer digitally signs it and the user's device can verify the signature.
Record stores may be shared between MIDlets.
Standardized connection strings for datagram, socket, and server socket connections. The specification doesn't require support for these types of connections but it recommends their implementation and provides supporting APIs.
http://www.cellconcept.com/j2me_siemens_doc/api/overview-summary.html
Voice Call
Vibra
Music Interface
Game API
Text SMS
File Managment (Open, create, delete,...)
Siemens Erweiterung
com.siemens.mp.gsm.*
provides methods for starting a call, accessing the phone book of the mobile and sending SMS
com.siemens.mp.io.*
gives you file access to the MMC and other input/ouput connections like IRDA
Während in der Java 2 Standard Edition Klassen z.B. zur Socket- oder Datagramm-Verbindung im Paket java.net vorliegen, muss in der Java 2 Micro Edition auf das Generic Connection Framework im Paket javax.microedition.io zurückgegriffen werden.
Das Generic Connection Framework vereinheitlicht die unterschiedlichen Verbindungarten und faßt sie in einer „Factory“ zusammen. Das Framework besteht aus einer Klasse Connector, deren statische open- Methode eine Instanz des Datentyps Connection zurückliefert. Connection ist das Interface von dem alle weiteren Schnittstellen des Generic Connection Framework abgeleitet sind. Die von open erhaltene Verbindung muss deshalb unter Umständen mit einem Typecast in die konkrete Verbindungsform konvertiert werden.
Mit dem Generic Connection Framework ist es für Hersteller möglich für Geräte auf die sie die KVM portieren, weitere Verbindungsprotokolle, z.B. Bluetooth oder Irda, zu unterstützen.
try {
StreamConnection scon = (StreamConnection) Connector.open("socket://127.0.0.1:4444"),
Connector.READ_WRITE, true);
InputStream is = scon.openInputStream ();
OutputStream os = scon openOutputStream ();
is.close ();
os.close ();
scon.close ();
}
catch (IOException ioe) {
// Exception behandeln …
}
[Codebeispiel 3.2] Aufbau einer Socket-Verbindung
Wireless Messaging API WMA-RI .pdf
Zusatzpaket WMATM in jedem J2ME- fähigen Endgerät verwendet werden, vorausgesetzt der Gerätehersteller implementiert die notwendigen zusätzlichen Klassen, die dieses Zusatzpaket benötigt.
The WMA is an optional package based on the Generic Connection Framework (GCF) and targets the Connected Limited Device Configuration (CLDC) as its lowest common denominator, meaning that it can extend both CLDC- and CDC-based profiles.
The interfaces for the messaging API have been defined in the javax.wireless.messaging package.
Permissions for MIDP 1.0 Platform
When the JSR120 interfaces are deployed on a MIDP 1.0 device, there is no formal mechanism to identify how a permission to use a specific feature can be granted to a running application. On some systems, the decision to permit a particular operation is left in the hands of the end user. If the user decides to deny the required permission, then a SecurityException can be thrown from the Connector.open(), the MessageConnection.send(), or the MessageConnection.receive() method.
Von
http://kissen.cs.uni-dortmund.de:8080/devicedb/index.html