{"id":16,"date":"2009-10-15T14:40:54","date_gmt":"2009-10-15T14:40:54","guid":{"rendered":"http:\/\/denverjug.wordpress.com\/?p=16"},"modified":"2010-12-30T23:48:49","modified_gmt":"2010-12-31T05:48:49","slug":"modular-java-book-review","status":"publish","type":"post","link":"https:\/\/www.djug.org\/?p=16","title":{"rendered":"&#8216;Modular Java&#8217; Book Review"},"content":{"rendered":"<p>Review of <a href=\"http:\/\/pragprog.com\/titles\/cwosg\/modular-java\">Modular Java<\/a> by <a href=\"http:\/\/johnnywey.wordpress.com\/\">Johnny Wey<\/a> <a href=\"http:\/\/pragprog.com\/titles\/cwosg\/modular-java\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-17\" title=\"cwosg\" src=\"http:\/\/www.denverjug.org.evohst.org\/wp-content\/uploads\/2009\/10\/cwosg.jpg\" alt=\"cwosg\" width=\"190\" height=\"228\" \/><\/a><\/p>\n<p>\u201cModular Java: Creating Flexible Applications with OSGi and Spring\u201d provides a great introduction to those either curious about OSGi or wanting to get more out of their existing OSGi workflow using the Spring Framework.  <a href=\"http:\/\/www.jroller.com\/habuma\/\">Craig Walls<\/a>, author of \u201cSpring in Action, 2nd Edition\u201d, opens the book explaining why OSGi matters and how it can be used to enhance the modularity and maintainability of those application stacks containing multiple and complex moving parts.  He not only serves up a great introduction to the technology, but also directs the reader to several tools that make OSGi development significantly easier.<\/p>\n<p>In the second portion of the book, Craig throws Spring into the mix and demonstrates how the power of Spring Dependency Injection, autowiring, and the Spring MVC web framework can not only run seamlessly in an OSGi container, but also remove a large portion of the burden that OSGi\u2019s API can put on application development.<\/p>\n<p>Finally, Craig spends some time describing how an actual deployment might look in a production environment using both Tomcat and Jetty and provides optimization tips that make the process as painless as possible.<\/p>\n<p>The book itself is logically organized and Craig\u2019s writing style is approachable and easy to follow.  All the example source code is available online, and Craig demonstrates how to install OSGi packages using both Eclipse Equinox and Apache Felix, leaving the final OSGi container decision up to the preference and requirements of the project.  The sample application Craig uses to demonstrate the concepts in the book is surprisingly fun and useful, and the book contains some wonderful appendices that function as a great reference for current and future development projects.  The book is a relatively quick read but surprisingly complete.<\/p>\n<p>For someone looking to get the most out of OSGi or wanting to find out what all the \u201cbuzz\u201d is about, Craig Walls\u2019 book is an outstanding choice.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Review of Modular Java by Johnny Wey \u201cModular Java: Creating Flexible Applications with OSGi and Spring\u201d provides a great introduction to those either curious about OSGi or wanting to get more out of their existing OSGi workflow using the Spring &hellip; <a href=\"https:\/\/www.djug.org\/?p=16\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,16,17],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-book-review","tag-bookreview","tag-osgi","tag-spring"],"_links":{"self":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16"}],"version-history":[{"count":1,"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":351,"href":"https:\/\/www.djug.org\/index.php?rest_route=\/wp\/v2\/posts\/16\/revisions\/351"}],"wp:attachment":[{"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.djug.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}