Slashdot Mirror


Programming Wireless Devices With Java 2

Jeff Carroll writes "Developers building Java applications for wireless handheld devices have been looking forward for some time now to the release of devices supporting version 2.0 of the Connected Limited Device Configuration (CLDC), and version 1.1 of the Mobile Information Device Profile (MIDP). These new releases contain support for features demanded by developers that didn't make the original releases. In support of CLDC 2.0 and MIDP 1.1, Roger Riggs and his team of authors from Sun, Nokia, and Motorola have released Programming Wireless Devices with the Java 2 Platform, Micro Edition, Second Edition (since I don't have a copy of the first edition, I can only evaluate the new edition on its own merits)." (Read on for his review.) Update: 07/23 16:31 GMT by T : Whoops -- that's CLDC 1.1 and MIDP 2.0, not the other way around. Programming Wireless Devices with the Java 2 Platform, Micro Edition, 2ed. author Roger Riggs, Antero Taivalsaari, Jim Van Peursem, Jyri Huopaniemi, Mark Patel, Aleksi Uotila pages 464 publisher Addison-Wesley Professional rating 7 reviewer Jeff Carroll ISBN 0321197984 summary In-depth introduction to and reference on CLDC 2.0 and MIDP 1.1.

As is characteristic of the titles I've seen from Sun's Java series, this book goes into great detail about architectural decisions, standards process, and philosophy underlying the new release. The first six chapters are given over to this discussion. This material is mostly great for experienced developers seeking a deeper understanding, occasionally so abstract as to be silly (as in the case of the Java washing machine and its downloadable stain-removing code), but likely to be of only secondary interest to new J2ME developers focused on coming up to speed.

What this book does best is comprehensive exposition of the J2ME APIs. There are chapters dedicated to the APIs for forms, graphics, games, sound, persistence, and networking, with code samples offered in most cases, and a Java Almanac-style reference to all J2ME-specific classes and interfaces is provided as an appendix. Features that are new to the J2ME second edition are clearly identified.

The remainder of the book constitutes a detailed discussion of the new technologies for event-driven launch, application security, and over-the-air deployment, perhaps the most potentially confusing of which is event-driven application launch. While the book explains the new technology well, it doesn't address how it will be introduced by network operators, or how it might interact with or replace similar existing proprietary technologies such as Sprint's MUGlets.

Another subject that is not dealt with here that will soon be relevant to developers for any particular J2ME-supporting network is that of optional packages (OPs) - features to be supported at the option of particular device vendors and/or network service providers. It is fairly clear that, going forward, the wireless network infrastructure and its supported features will be an integral part of the J2ME platform that will have to be taken into account by developers, and books which fail to discuss popular and commonly adopted OPs will be of limited usefulness (you'd think that Sun would know that after all that rhetoric about the network being the computer). In general, a book of this sort would benefit from the participation of network operators, as it does from that of device manufacturers Nokia and Motorola.

All the code samples and background on architecture notwithstanding, this book is clearly targeted at experienced Java programmers, not handheld device programmers working in other technologies. If you don't already know Java, this book will not teach you. There is also nothing said here about selection, configuration, or use of development tools; readers who are not already adept at the use of J2ME development tools, including the Wireless Tool Kit (WTK), should not expect to acquire that knowledge from this book. (People who need help in this area may want to consider Jonathan Knudsen's Wireless Java or Kim Topley's J2ME in a Nutshell.)

Keeping the aforementioned caveats in mind, this is an excellent introduction to and reference on the new release of J2ME.

You can purchase Programming Wireless Devices with the Java 2 Platform, Micro Edition, 2ed. from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

9 of 108 comments (clear)

  1. fp by Anonymous Coward · · Score: -1, Offtopic

    I R King

  2. FP! by Anonymous Coward · · Score: -1, Offtopic

    Hi everyone!

  3. I FAIL IT by Anonymous Coward · · Score: -1, Offtopic

    I completely failed it. I feel so bad.

    I am not gay I swear it!

    JismTroll

  4. my secret by Anonymous Coward · · Score: -1, Offtopic

    begin 644 -
    M:2!W86YT('1O(&9U8VL@0VUDE1A8V\@:6X@:&ES(&%SPIT :&5 N(&5A="!(
    896UOR@=&EG:'0@=V5T('!UW-Y+@H*
    `
    end

  5. Microsoft Authorization Data Specification v. 1.0 by Anonymous Coward · · Score: -1, Offtopic

    Microsoft Authorization Data Specification v. 1.0 for Microsoft Windows 2000 Operating Systems

    April, 2000

    Abstract
    Microsoft Windows 2000 includes OS specific data in the Kerberos V5 authorization data field that is used for authorization as described in the Kerberos revisions Internet Draft [1]. This data is used for user logon and to create an access token. The access token is used by the system to enforce access checking when attempting to reference objects. This document describes the structure of the Windows 2000 specific authorization data that is carried in that field.

    Top-Level PAC Structure
    The PAC is generated by the KDC under the following conditions:

    during an AS request that has been validated with pre-authentication
    during a TGS request when the client has no PAC and the target is a service in the domain or a ticket granting service (referral ticket).

    The PAC itself is included in the IF-RELEVANT (ID 1) portion of the authorization data in a ticket. Within the IF-RELEVANT portion, it is encoded as a KERB_AUTH_DATA_PAC with ID 128.

    The PAC is defined as a C data type, with integers encoded in little-endian order. The PAC itself is made up of several layers. The outer structure, contained directly in the authorization data, is as follows. The top-level structure is the PACTYPE structure:
    typedef unsigned long ULONG;
    typedef unsigned short USHORT;
    typedef unsigned long64 ULONG64;
    typedef unsigned char UCHAR;
    typedef struct _PACTYPE {
    ULONG cBuffers;
    ULONG Version;
    PAC_INFO_BUFFER Buffers[1];
    } PACTYPE;
    The fields are defined as follows:
    cBuffers - contains the number of entries in the array Buffers
    Version - this is version zero
    Buffers - contains a conformant array of PAC_INFO_BUFFER structures

    The PAC_INFO_BUFFER structure contains information about each piece of the PAC:

    typedef struct _PAC_INFO_BUFFER {
    ULONG ulType;
    ULONG cbBufferSize;
    ULONG64 Offset;
    } PAC_INFO_BUFFER;
    Type fields are defined as follows:

    ulType - contains the type of data contained in this buffer. For Windows 2000, it may be one of the following, which are explained further below:

    #define PAC_LOGON_INFO 1
    #define PAC_CREDENTIAL_TYPE 2
    #define PAC_SERVER_CHECKSUM 6
    #define PAC_PRIVSVR_CHECKSUM 7
    #define PAC_CLIENT_INFO_TYPE 10

    Offset - contains the offset to the beginning of the data, in bytes, from the beginning of the PACTYPE structure. The data offset must by a multiple of 8. If the data pointed to by this field is complex, the data is typically NDR encoded. If the data is simple (indicating it includes no pointer types or complex structures) it is a little-endian format data structure.

    PAC Credential Information
    PAC_INFO_BUFFERs of type PAC_LOGON_INFO contain the credential information for the client of the Kerberos ticket. The data itself is contained in a KERB_VALIDATION_INFO structure, which is NDR encoded. The output of the NDR encoding is placed in the PAC_INFO_BUFFER structure of type PAC_LOGON_INFO.
    typedef struct _KERB_VALIDATION_INFO {
    FILETIME LogonTime;
    FILETIME LogoffTime;
    FILETIME KickOffTime;
    FILETIME PasswordLastSet;
    FILETIME PasswordCanChange;
    FILETIME PasswordMustChange;
    UNICODE_STRING EffectiveName;
    UNICODE_STRING FullName;
    UNICODE_STRING LogonScript;
    UNICODE_STRING ProfilePath;
    UNICODE_STRING HomeDirectory;
    UNICODE_STRING HomeDirectoryDrive;
    USHORT LogonCount;
    USHORT BadPasswordCount;
    ULONG UserId;
    ULONG PrimaryGroupId;
    ULONG GroupCount;
    [size_is(GroupCount)] PGROUP_MEMBERSHIP GroupIds;
    ULONG UserFlags;
    ULONG Reserved[4];
    UNICODE_STRING LogonServer;
    UNICODE_STRING LogonDomainName;
    PSID LogonDomainId;
    ULONG Reserved1[2];
    ULONG UserAccountControl;
    ULONG Reserved3[7];

  6. Which is better? by Anonymous Coward · · Score: -1, Offtopic

    A: Programming Wireless Devices With Java 2

    or

    B: Sex with a mare

  7. BushCo Games With Saddam's Sons: +1, Patriotic by Anonymous Coward · · Score: -1, Offtopic

    Very predictable!!!!!

    The WMD cover-up continues with the killing of Saddam's sons.

    Udai and Qusai would have been more valuable alive than dead.

    Very truly yours,
    W00t

    Fire The Liars!!

  8. Re:I don't understand... by Anonymous Coward · · Score: -1, Offtopic

    I need you!!

    Please join .NETAA (.NET ASSOCIATIOIN OF AMERICA) to preach the truth to the uneducated Linux masses.

  9. WiFi blew up by ratfynk · · Score: 0, Offtopic

    I spilled my coffee all over my WiFi, My java didn't work too well, I am about as good with coffee as I am with Java!

    --
    OH THE SHAME I fell off the wagon and use sigs again!