Service Oriented Architecture with Java by Packt Publishing.
Ben Wilcock, June 2010.
For many, Java is the language of choice for implementing Service Oriented Architecture, and with such a rich and diverse development community, there are a number of implementation frameworks that offer to share the burden. But as an Architect, which should you choose for your project? Packt Publishing’s ‘Service Oriented Architecture with Java’ aims to give a fast introduction to the most successful Java frameworks, along with a crash course in some SOA principals and benefits. At 169 printed pages it’s certainly a quick read and it delivers on many of its promises. However, spread between 3 authors, the cohesiveness of the writing has suffered somewhat, so you should take this into account if you are considering buying this book.
What’s the book about?
Aimed at architects and developers who are familiar with Java, the book is organised into 6 chapters. It promises to explain the concepts of the business logic layer that lives at the core of a Service Oriented Architecture, how to design services for SOA, and how to implement Web Services using various Java frameworks.
In the first chapter the author chooses to start way back at the beginning with a ‘What is Architecture’ and and explanation of the ‘1-Tier, 2-Tier, 3-Tier and N-Tier’ architectural patterns. Unfortunately this is a discussion that has been served up a hundred times before in other books and blogs, and on 99 occasions it was probably covered better than it is here.
However, once this introductory section is out of the way, the author does go on to explain some useful basic SOA principals like contract-first, loose coupling, platform neutrality, standards, re-use and scalability whilst also ensuring that the reader understands that creating a SOA doesn’t simply mean building Web Services.
By Chapter 2 things have improved considerably. The author dishes up a rapid ‘whistle-stop’ tour of Web Service implementation in Java starting with XML documents over HTTP using POJO’s and REST. He then introduces the popular open-source Java Web Service frameworks such as JAX-WS, Axis, Spring and XFire in quick succession, showing briefly how each can contribute to reducing the implementation effort.
Chapter 3 extends this discussion further, adding more detail and encouraging the reader to get involved by downloading the sample code and having a go.
These two chapters are undoubtedly the best in the book. As an architect who has dealt with most of these frameworks in the past, I found the text to be a useful and enjoyable reminder of my experience with each of them.
Chapter 4 concerns itself with data persistence and enterprise integration. The chapter starts with JDO or Java Data Objects, an odd choice as its a rather moribund ORM framework which is largely commercially irrelevant and long since superseded by JPA and Hibernate. Service Data Objects (SDO) and Service Component Architecture (SCA) are covered next, but seem out of place in relation to the lighweight open-source frameworks of the previous chapters. Finally, Message Oriented Middleware (MOM) and Enterprise Service Bus (ESB) also get a mention. These latter discussions are very brief, not really gifting the reader with enough information on ESB’s unique functions and benefits for example.
Chapter 5 attempts to bring it all together by discussing one problem and two potential solutions. First, an old school ‘point to point’ integration is described followed by a equivalent built using SOA tools and techniques. The advantages and disadvantages of both are then examined. Unfortunately I found this discussion hard to get value from. Having experienced most of these problems at first hand, the fictitious organisation’s problem domain was over-simplistic and the subsequent ‘solutions’ felt contrived. What was missing was a sense of realism or integrity to the conclusions being made. The author did paint a positive and worthwhile picture of how SOA can add value, but it was an opportunity that was under utilised in my opinion.
The final chapter (Chapter 6) summarises what we have learnt and attempts to re-iterate that SOA isn’t actually about Java – it’s about Architecture. The benefits of SOA and Web Services are presented once more with particular attention being drawn to loose-coupling, re-use and ease of integration.
The book delivers on many of its promises, but the main issue I had with it was with its overall quality.
The quality issues start straight away in Chapter 1. The basic standard of writing on display is quite poor, even for a techy book, with typo’s and unfathomable sentences throughout. For example, if you know what ‘joining the SOA wagon wheel’ means (as mentioned on page 24) then please get in touch. The consistency of the message is also weak in parts. E.g. the principle of ‘contract-first’ doc-literal service design is recommended in one chapter, but not re-enforced consistently in others.
What I did like about this book was its brevity. Covering a topic like this quickly from a high level makes the benefits very accessible to busy Architects. I’ve often lamented ponderous techy books filled with waffle, so this shorter 169 page format was a very welcome change. Even the code presented is cropped and chopped so that you can get the gist without pages and pages of dull listings.
However, the danger of shorter formats like this one are that they draw all the more attention to quality issues and consistency problems, as that was certainly the case here. Overall though, I would recommend this book – just be sure that you can live with these criticisms before you shell out your cash.
Ben Wilcock is a freelance SOA Architect with an enviable reputation for delivering good quality Service Oriented Architectures. He has spent the last 3 years working with a FTSE 100 listed Retailer to create a brand new Service Oriented Architecture which is delivering substantial business value and new opportunities. You can read his blog at https://benwilcock.wordpress.com or contact him via his website.