IBM alphaWorks developers have issued a new release of the Web Services Tool Kit for Mobile Devices. Release 2.0.1 provides a preview implementation of the J2ME Web Services Specification (JSR 172) Version 0.9 specification together with support for J2ME, WCE, and SMF environments. C-based Web services has been updated to gSOAP 2.2.3. The IBM Web Services Tool Kit for Mobile Devices provides tools and run-time environments that allow development of applications that use Web Services on small mobile devices, gateway devices, and intelligent controllers. This toolkit's Java Web service run-time environment is supported on the J2ME, WCE, and SMF environments and on the devices PoctketPC, Palm, and BlackBerry. The C Web service run-time environment is supported on the Palm and Symbian. Java-based Web services are supported by two Web service run-time environments: IBM's Technology Preview release of JSR 172 Version 0.9 and kSOAP. KSOAP is an open-source implementation of Web services. Both run-time environments have been optimized to run on small mobile devices and support a subset of the SOAP 1.1 specification. The reasons for supporting only a subset of SOAP 1.1 are the limited amount of memory on these devices and the limited capabilities of the J2ME environment."
WS Toolkit for Mobile Devices: How it Works
"The JVMs on mobile devices support development of applications based on the J2ME specification, and IBM's WebSphere Studio Device Developer (WSDD) provides an IDE for development of J2ME-based applications. Support for development of applications using Web services has been integrated into WSDD. Using WSDD, a developer will be able to develop, deploy, and debug applications that use Web services on mobile devices and gateway devices."
"The C-based Web services implementation is based on gSOAP, which contains a set of C routines for handling SOAP messages, and a stub compiler that automatically maps native and user-defined C to semantically equivalent SOAP data types. With gSOAP, SOAP interoperability is achieved with a simple API; this relieves the developer from the burden of SOAP details and enables the developer to concentrate on the application-essential logic. The C-based Web services are supported on Palm and Symbian running on Symbian 6.1 devices and Symbian 6.0 on the Symbian emulator."
"Application development using the C-based Web service run-time environment on Palm is supported with Metrowerk's CodeWarrior and the GNU PRC-Tools. CodeWarrior is the premiere C development environment for Palm devices. The GNU PRC-Tools is an open source compiler and development tool for Palm devices.
"Application development using the C-based Web service run-time environment on Symbian is supported using the Symbian OS 6.0 or the Symbian OS 6.1 SDK." [from the July 25, 2003 update description]
About J2ME Web Services Specification (JSR 172)
"The main deliverables of the JSR-172 specification are two new, independent, optional packages: (1) an optional package adding XML Parsing support to the platform. Structured data sent to mobile devices from existing applications will likely be in the form of XML. In order to avoid including code to process this data in each application, it is desirable to define an optional package that can be included with the platform. (2) an optional package to facilitate access to XML based web services from CDC [Connected Device Configuration] and CLDC [Connected Limited Device Configuration] based profiles. This optional package will define an API to allow mobile devices to access remote XML based web services. Where possible it will avoid defining new network protocols and formats and reuse existing standards."
"The XML parsing optional package has the following additional goals:  strict subset wherever possible of JSR-063 JAXP 1.2 functionality  meet platform size requirements to ensure that the API fits within the footprint requirements of the target devices  meet platform performance requirements to ensure that the API can be implemented within the runtime memory and processing requirements for the target devices."
"The web services optional package has the following additional goals:  provide a subset JAX-RPC 1.1 functionality;  provide a separate deliverable from XML Parsing optional package; the web services API optional package should not depend on the XML parsing optional package; it must be possible to deliver the web services optional package independent of XML parsing;  provide access to web services from J2ME and require no server capabilities...
"XML is becoming a standard means for clients to interact with backend servers, their databases and related services. With its platform neutrality and strong industry support, XML is being used by developers to link networked clients with remote enterprise data. An increasing number of these clients are based on the J2ME platform, with a broad selection of mobile phones, PDAs, and other portable devices. As developers utilize these mobile devices more to access remote enterprise data, XML support on the J2ME platform is becoming a requirement..." [adapted from J2ME Web Services 1.0, Proposed Final Draft 2, by Jon Ellis and Mark Young]
gSOAP: Generator Tools for Coding SOAP/XML Web Service and Client Applications in C and C++. "The gSOAP compiler tools provide a unique SOAP/XML-to-C/C++ language binding to ease the development of SOAP/XML Web services and client application in C and/or C++. Most toolkits for C++ Web services adopt a SOAP-centric view and offer APIs for C++ that require the use of class libraries for SOAP-specific data structures. This often forces a user to adapt the application logic to these libraries. In contrast, gSOAP provides a C/C++ transparent SOAP API through the use of compiler technology that hides irrelevant SOAP-specific details from the user. The gSOAP stub and skeleton compiler automatically maps native and user-defined C and C++ data types to semantically equivalent SOAP data types and vice-versa. As a result, full SOAP interoperability is achieved with a simple API relieving the user from the burden of SOAP details, thus enabling him or her to concentrate on the application-essential logic. The compiler enables the integration of (legacy) C/C++ and Fortran codes (through a Fortran to C interface), embedded systems, and real-time software in SOAP applications that share computational resources and information with other SOAP applications, possibly across different platforms, language environments, and disparate organizations located behind firewalls..."
kSOAP Project and kXML
"kSOAP is an SOAP API suitable for the Java 2 Microedition, based on kXML. Because of its small footprint, it may be suitable for builing SOAP-enabled Java Applets as well. The kXML project provides an XML pull parser and writer suitable for all Java platforms including the Java 2 Micro Edition (CLDC/MIDP/CDC). Because of its small footprint size, it is especially suited for Applets or Java appications running on mobile devices like Palm Pilots or MIDP enabled cell phones kXML was originally developed at the AI Unit of the University of Dortmund as a 'side product' of the COMRIS project. In the COMRIS project, the API was used in the Information Layer module(s) to parse XMLified FIPA messages and to generate template based XHTML pages. The template based XHTML generation is currently used in the MLnet teaching server, too. kXML is also used in the Enhydra kXML-RPC and kSOAP projects..."
- IBM Web Services Tool Kit for Mobile Devices
- "Using Mobile Devices with the WSTK." Tutorial by Bryce Curtis.
- WSTKMD Frequently Asked Questions
- "J2ME Web Services Specification." Java Specification Request (JSR) 172. "The purpose of this specification is to define an optional package that provides standard access from J2ME to web services."
- "IBM Releases New Version of Web Services Toolkit for Mobile Devices." From WebServicesReview.com. May 12, 2003.
- "Access Web Services From Wireless Devices. Handle SOAP Messages on MIDP Devices Using kSOAP." By Michael Juntao Yuan. In JavaWorld (August 23, 2002). Support Web services on small wireless devices using the kSOAP parser.