Sunday, September 6, 2009

First LWUIT Book Review

Update: You can purchase the book directly from Packt here which includes both quantity discounts and an ebook option.

I recently got an email from Packt offering me a copy of the upcoming LWUIT-book from Biswajit for review, naturally I accepted and this is a review of that book which is the first published LWUIT book... Exciting. Notice that I reviewed the e-book version which is a PDF file and it features color photos etc, some aspects of the printed book might differ slightly (mostly in relation to production quality of the binding/font size/colors etc) so I won't discuss these aspects too much.
If you want to review a chapter of the book you can download the sample PDF from Packt by clicking here.

You can also purchase the book from Packt directly or via Amazon (by clicking the link to your left).

I'll start with the bottom line since this is probably what most of you want to know: I like the book, its far more refined than all other alternatives for learning LWUIT. Its very detailed goes into some things that even I forgot we had. Since this is the only published LWUIT book at the moment this should be a no-brainer for people using or considering LWUIT. Since the book goes into great details on many aspects I can pretty much guarantee that even if you used LWUIT for a while you would learn or re-learn something new by going through the entire book.
I give it 5 stars in Amazon to a large part for being a good, innovative first comer to the scene of LWUIT books.


The things I like about the book
  • Its well written and generally well organized, the very first "hello world" example seemed a bit out of place but its still a book you can just read through.
  • Its pretty accurate, while I did find some minor mistakes (e.g. Form doesn't expose BorderLayout by default) its generally pretty accurate for a book of so much details.
  • The book chooses a single good environment (the Sprint Wireless Toolkit) and uses it throughout the book, it doesn't try to "over complicate" and take a long detour on the unrelated subjects of IDE/Simulator choice.
  • Since Biswajit is unrelated to the authors of LWUIT he explained some things in ways that are different from our choices, this allows the book to be read in parallel to the developer guide/tutorial while still taking away some new information. E.g. Biswajit described margins quite differently and possibly in a simpler way than we chose to explain them.
  • It goes into some esoteric features of LWUIT such as building your own transition and motion classes which is something even I didn't explain.

Things that are decisions of interest for potential buyers

  • The book teaches LWUIT on MIDP without teaching MIDP or mobile development. This can be good, since it doesn't complicate the subject matter neither for newbies who might get overwhelmed or for more experienced developers who already know MIDP development.
  • No details of LWUIT's support for CDC, RIM, Android etc. are given in the book. The book would still be useful for developers of these platforms but some of the "magic" of building on such platforms is "problematic".
  • The book is organized more as a reference book with individual tutorials, that means you can often skim or skip through the book. This is very useful for some cases as a guide/reference, but don't expect the examples to map directly to your "real world" use cases.
  • The book focuses on the Resource Editor (mentions a bit the new LWUIT Designer version) but doesn't mention the Ant task code, this is a good choice since there is no need to confuse readers with 2 different ways of achieving the same result. However if you use the build XML approach don't expect information regarding that in this book.

The things I didn't quite like

  • No references to external sources, there aren't many links within the book e.g. to this blog, the forum etc.. No real historic review of the origins of LWUIT which help explain allot of the decisions.
  • I would have expected more in depth coverage of LWUIT's MVC, specifically in the List chapter which is quite detailed I would expect a diagram etc. It might seem obvious to some but this is still one of the hardest parts of LWUIT to grasp.
  • The book uses the getStyle().set* methods and discusses theming in chapter 9 (quite late), I think hardcoding the appearance clutters the code a bit. I would prefer "cleaner" samples without manual setting of styles. This would also simplify usage of the books sources for LWUIT 1.2+ (the book does reference the style changes in 1.2).
  • There wasn't enough discussion of the EDT, it was explained in some cases but as something which is so central to LWUIT and something that practically everyone experiences issues with I would expect far more details. I would have expected examples on how to understand that an issue relates to EDT violation, how to fix EDT issues. There are references to callSerially/AndWait only in the authoring custom components chapter and there is no reference to invokeAndBlock which is a remarkably useful yet hard to understand concept for new LWUIT users.

3 comments:

  1. Hello Shai,

    If you are interested in a collaboration on JavaBooks.org to provide us with some reviews you can contact us at : office@javabooks.org

    ReplyDelete
  2. Very good review, especially since your point of view clearly indicates that you know LWUIT, where it comes from and why it's here.

    I agree that the book is a reference to LWUIT more than a Tutorial on LWUIT.

    I think that a newby should also read your blog, do the tutorial on the LWUIT pages and use the book in conjunction to these.

    I'm currently writing a review of the book as well on http://www.the-netbeans-experience.com from the perspective of somebody who has never written a single line of LWUIT code but knows JavaME and Swing.

    Thanks,
    Iwan

    ReplyDelete
  3. No offense to the book author, but I will be more convinced to buy this book if you (Shai and Chen), were the authors.

    ReplyDelete