Saturday, November 12, 2011

Book Review for "JBoss AS 7 Configuration Deployment and Administration"

Book Review for "JBoss AS 7 Configuration and Administration"

Have you heard the buzz about JBoss AS 7? Happy days for the developer community-- the productivity gains of JEE 6 are combined with lightning fast speed and minimal footprint for AS 7. The downside to all this is there is much to learn (again). Packt can help.

The book's author is Francesco Marchioni. If that name sounds familiar, it should. This is the guy behind "MasterTheBoss", a very popular JBoss oriented developer website. Francesco has also authored well-written books on JBoss AS 5 development and JBoss AS 5 performance tuning, so he knows a thing or two about JBoss as well as how to churn the words out.

This is a "RAW" book, which means it's not yet finished. Some of this is reflected in the book's existing text, but mostly what's here is good. There are a few chapters yet to be written.

So what's in this book? Here's a quick chapter-by-chapter breakdown.

Chapter 1 - A nice overview of the new, improved JBoss. AS 7 is a major re-hang, with the old MicroContainer going by the wayside and being replaced by JBoss Modules and a Modular Service Container. (The most dramatic external changes are very fast startup speed and completely different configuration mechanisms.) JBoss Modules is a big change, and really is explained throughout the book, but your first exposure is here. You're also given a very newbie-friendly explanation of how to download, setup, start and stop JBoss.

Chapter 2 - We start the daunting task of learning to configure the new and improved JBoss. JBoss has always given administrators a lot of options to consider when it comes to configuration, and AS 7 is no exception. Suffice it to say the model is all new, but this book goes about explaining it in a clear way. (Pictures are used where appropriate.) Here we are given an explanation of how configuration now works-- there is a 'standalone' mode and a 'domain' mode, these are covered. A few bread-and-butter items like port configuration, datasources, and installation of JDBC drivers is here. The author's performance orientation shines through in a section that describes the various types of thread pools and how they can be used. The chapter ends with section on the latest messaging system (HornetQ) and Transactions.

Chapter 3 - Chapter 3 covers 'Enterprise' topics, which include the various flavors of EJBs. The book explains their lifecycles and how they are configured (down to details like cache pool sizing). If you're getting the impression this book covers some low-level topics, you would be right. The JBoss Web Container (very similar to Tomcat) is explained. Configuration of the default JBoss logger is covered, as is installation of Log4j should the reader decide to use it instead. Even though this is an administrative book rather than a development book, the author chose to throw in a simple example web application so the reader can have something to deploy. I tend to lag on web technologies (because I work with back-end technologies), so I really appreciated that part. Woohoo, I've used Facelets!

Chapter 4 - This chapter covers the all-new 'domain' mode. Domains are all about centralized configuration of groups of servers, a feature that will be very welcome in large shops and cloud environments. You may think this sounds a lot like the traditional JBoss simple clustering, and you would be wrong. This is something completely orthogonal to clustering! But it's given a good coverage, and by the time you're done with this chapter you'll be itching to go try to define your own domain and work it over.

Chapter 5 - Chapter 5 is about application deployment. The mechanisms you use will differ depending on whether you are 'standalone' mode or 'domain' mode. You also have several ways to deploy JEE artifacts-- these are all explained nicely. This makes for light reading, but the chapter is balanced out by a good section on Classloading in AS 7. If you've done much JEE development (on any platform) you are aware that classloading can be a tricky area. With AS 7, JBoss sought to straighten this out and this chapter explains how it all works.

Chapter 6 - is about the administrative interfaces AS 7 brings you. First, there's a web UI. In my opinion, the web interface is clean and adequate as far as usability, but it lacks depth. The alternative is a command line interface (CLI) that you can use to reach all kinds of nooks and crannies in AS 7's configuration. The CLI demands that you understand a somewhat arcane dialect, but it rewards you with useful functionality. If you know the current JBoss 'twiddle' utility, you should find the CLI very similar.

Chapter 7 - is the clustering chapter. Cluster configuration is explained, including the Infinispan and JGroups components you'll need to understand. Clustering has always been one of JBoss's strong suits, it should only get better with AS 7.

Still yet to be provided (this is a RAW book, remember):
Chapter 8 - on load balancing web applications.
Chapter 9 - Integration with other frameworks (I'd watch for Spring content here)
Chapter 10 - Tuning and slimming. (With the modular emphasis, we should have some very effective slimming available)

So who's this book good for? I'd say anybody using AS 7. (AS 7 will be the basis for the next 'supported' JBoss, EAP 6, by the way.) AS 7 is a major re-hang, so you're going to want a decent guide to learning your way around. I liked this book, and imagine I'll be using it as a reference on a regular basis.

Oh, that last paragraph begs the question: Who should be using AS 7? I think everybody should give it a try. JEE 6 has an associated learning curve, but it's the most productive version of Enterprise Java yet. With the speed and reduced memory footprint, I found that AS 7 is great to run in an IDE like Eclipse or JBDS, allowing me to deploy and start in a flash. I'd encourage every Java developer to give AS 7 a look, and while you're at it use this book as a reference.

The book can be found here.

Happy (productive) reading and coding!