by Sing Li and Jonathan Knudsen
Publisher: Apress, Inc.
Publication Date: April, 2005
Reviewed by Robert Eckstein
It's nice to see a good, solid book on learning the Java 2 Platform, Micro Edition (J2ME) out there. It's even nicer when I get to have a free copy at home. After all, not only am I anti-social since my daughter was born, but I suspect that my sleep-deprived, frazzled hair would scare away most of the customers at my local Barnes and Noble. So I want to thank Apress for sending me a copy of the third edition of Beginning J2ME: From Novice to Professional. I already have a previous edition of this book, published under a different title, and use religiously for my J2ME work.
J2ME is one of those really cool areas. Many visionaries feel that mobile applications are the wave of the future, and I would have to agree with them. You can do some really slick stuff when you get things small. And I'm not just talking about games—the more connected your phone or PDA (or combination of the two) is, the easier it is to get things done when you're out and about. The best part about J2ME is that programming a killer application doesn't require a development team of 20 and a monthly budget larger than the GNP of many small countries. You can generally just download an IDE and code away. And that's exactly how I love to code.
Every J2ME book covers the standard topics: high- and low-level interface topics, persistent storage, and basic networking, so I'll skip over those chapters. However, Li and Knudsen cover a good number of arcane topics, something that separates this book from others.
Need to use Ant with your J2ME project? Page 26 gives you a sample script that includes tasks not only for compiling and preverifying but also for obfuscating, which is more necessary than most people think. Obfuscating not only helps control your size, but it's also necessary in the event that any libraries you use contain
java.* classes, such as the Bouncy Castle cryptography APIs.
I also particularly enjoyed Chapters 11 and 12, which cover the wireless messaging (WMA) and the Bluetooth and Object Exchange (OBEX) APIs, some of the more fascinating libraries in the J2ME arsenal. Hey, let's face it, text messaging has really taken off. Why? I'm not too sure -- I prefer to just phone the person that I'm communicating with, but I guess I'm behind the times. But when I see teenage hands flying all over those keypads sending text messages, I know something must be up.
On the other hand, if you are at all familiar with MIDP 2.0, then you know that a great deal of functionality has been added to support the development of mobile games. In particular, getting to know the
GameCanvas class can be an interesting challenge. Stuck with that latest player animation? No problem: Chapter 14 walks you through animation, layers, tiles, sprites, collision detection and handling, and other difficulties that may impede your design of that latest side-scrolling adventure. And if you're really looking for a challenge (and I chickened out), Chapter 15 goes through the 3D APIs, and Chapter 16 documents the Mobile Media APIs (MMAPIs) for sound and video. Just a little of Chapter 16 can help you duplicate some of that iPod functionality in your J2ME device.
Performance tuning, which is primarily devoted to slow and bloated code, falls into Chapter 17, and cryptography closes out the book in Chapter 18. Of course, with Jonathan Knudsen as the coauthor, you can rest assured that the Bouncy Castle APIs, which are free for commercial and noncommercial use, make their way into the text. And with good reason. Familiarizing yourself with this J2ME cryptography package is well worth your time. If you ever need secure connections with your MIDP applications, the Bouncy Castle APIs are a great way to go.
Just one item on my wish list for the next edition: I hope that the authors put in information on web services (JSR 172), which are a natural extension of the networking and security chapters. I've successfully hacked around with the web services API for J2ME, and I'd love to see more coverage in some of the books out there.
Other than that, this book is a solid introduction to J2ME that won't leave the reader drowning in useless vernacular. It whets the appetite for more, which is a great thing.
Curious about this book? Take a look at the table of contents at the publisher's web site.
You can order Beginning J2ME: From Novice to Professional from the following sites:
If you are a Java technology publisher and would like me to review your J2SE, J2ME, or J2EE book on Oracle's Java site, don't hesitate: Send me an email right now. No, I mean it. Stop what you're doing and write me. Have you contacted me yet? Okay, good. And now for my standard disclaimer: I won't review every book I receive, but some gems out there really deserve some limelight. Let me know what they are.