<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>spiros.blog() &#187; book</title>
	<atom:link href="http://www.tzavellas.com/techblog/tag/book/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tzavellas.com/techblog</link>
	<description>Spiros Tzavellas’s blog, mostly on software development and Java.</description>
	<lastBuildDate>Fri, 24 Sep 2010 07:42:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Book Review: Pragmatic Unit Testing</title>
		<link>http://www.tzavellas.com/techblog/2005/10/23/book-review-pragmatic-unit-testing/</link>
		<comments>http://www.tzavellas.com/techblog/2005/10/23/book-review-pragmatic-unit-testing/#comments</comments>
		<pubDate>Sun, 23 Oct 2005 21:46:00 +0000</pubDate>
		<dc:creator>spiros</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[junit]]></category>

		<guid isPermaLink="false">http://www.tzavellas.com/techblog/?p=28</guid>
		<description><![CDATA[Pragmatic Unit Testing is an easy to read introduction to unit testing. This book covers the basic information you need to know in order to effectively write unit tests. This book covers in less than 200 pages: What is unit testing and why developers must unit test every piece of code they write. An introduction [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.tzavellas.com/techblog/techblog-files/sk_utj_small.jpg" alt="" /></p>
<p><a href="http://www.pragmaticprogrammer.com/starter_kit/ut/index.html">Pragmatic Unit Testing</a> is an easy to read introduction to unit testing. This book covers the basic information you need to know in order to effectively write unit tests.</p>
<p>This book covers in less than 200 pages:</p>
<ul>
<li>What is unit testing and why developers must unit test every piece of code they write.</li>
<li>An introduction to unit testing with <a href="http://www.junit.org">JUnit</a>.</li>
<li>How to effectively write unit tests.</li>
<li>Testing on a project.</li>
<li>How unit testing affects the design of the code.</li>
</ul>
<p>The only thing that I didn&#8217;t like about this book is the insufficient coverage of the important paradigm of test driver development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzavellas.com/techblog/2005/10/23/book-review-pragmatic-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Core J2EE Design Patterns 2nd edition</title>
		<link>http://www.tzavellas.com/techblog/2005/10/13/book-review-core-j2ee-design-patterns-2nd-edition/</link>
		<comments>http://www.tzavellas.com/techblog/2005/10/13/book-review-core-j2ee-design-patterns-2nd-edition/#comments</comments>
		<pubDate>Thu, 13 Oct 2005 17:28:39 +0000</pubDate>
		<dc:creator>spiros</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[javaee]]></category>

		<guid isPermaLink="false">http://www.tzavellas.com/techblog/?p=26</guid>
		<description><![CDATA[I read the Core J2EE Design Patterns 2nd edition in July 2005. Below I have written a review for this important book. Core J2EE Design Patterns is one of the most important books on the traditional J2EE application architecture. If you are programming J2EE systems that are heavily based on EJB 2.x then this book [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.tzavellas.com/techblog/techblog-files/CJP2ndEdCoverSmall.jpg" alt="Core J2EE Design Patterns"/></p>
<p>I read the <a href="http://www.corej2eepatterns.com/">Core J2EE Design Patterns 2nd edition</a> in July 2005. Below I have written a review for this important book.</p>
<p><a href="http://www.corej2eepatterns.com/">Core J2EE Design Patterns</a> is one of the most important books on the traditional <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> application architecture. If you are programming <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> systems that are heavily based on <a href="http://java.sun.com/products/ejb/">EJB 2.x</a> then this book is a must read for you. On the other hand if you are programming <a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0764558315.html">J2EE (without EJB <img src='http://www.tzavellas.com/techblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</a> with more lightweight tools, like <a href="http://www.springframework.org/">Spring</a>, don&#8217;t rush to go without considering to read this book. This book, no matter which technology you use to implement enterprise applications provides good information on object oriented design and layering.</p>
<p>Of course, as many people have said before, a lot of the core J2EE design patterns are not really patterns but they just provide ways to overcome several limitations in some of the <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> technologies. Examples of “pseudo-patterns” include <a href="http://corej2eepatterns.com/Patterns2ndEd/CompositeEntity.htm">Composite Entity</a> and <a href="http://corej2eepatterns.com/Patterns2ndEd/TransferObject.htm">Data Transfer Object</a> which try to address some limitations of the EJB Entity Beans. I believe that the reader can also learn a lot from these “pseudo-patterns”. For example the <a href="http://corej2eepatterns.com/Patterns2ndEd/TransferObject.htm">Data Transfer Object</a> can be seen as a way to decouple two layers or as a more general pattern for distributed computing where you aggregate all the information that you want to pass between the nodes in transfer objects and not just as a way with acceptable performance to get multiple fields from an Entity Bean. For example if for some reason you have a physically separated business tier and you use a technology like <a href="http://hibernate.org/">Hibernate</a> for persistence you will probably need to have a remote facade that will return transfer objects with all the information that you need in the presentation tier in order to avoid any <a href="http://www.hibernate.org/hib_docs/api/net/sf/hibernate/LazyInitializationException.html">LazyInitializationException</a> exceptions. I find almost everything in the book useful and educative.</p>
<p>For me a book on design patterns is useful if it has lots of code to illustrate how the patterns can be implemented. The <a href="http://www.corej2eepatterns.com/">Core J2EE Design Patterns</a> not only provides implementations for all the patterns but also provides and analyzes various implementation strategies. You can see multiple ways to implements most of the patterns, learn the trade-offs of each implementation strategy and also get a deeper understanding of the various <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> technologies.</p>
<p>The UML diagrams in the book are very good and very helpful since they help you visualize the interactions in the design pattern and you better understand the responsibilities of the participant objects.</p>
<p>I&#8217;d like to note two things that are specific to the second edition. First the existence of <a href="http://corej2eepatterns.com/Patterns2ndEd/WebServiceBroker.htm">Web Service Broker</a>, a pattern on how to implement web services in <a href="http://java.sun.com/j2ee/1.4/index.jsp">J2EE 1.4</a>, tells us the important role of web services in the <a href="http://java.sun.com/j2ee/1.4/index.jsp">J2EE 1.4</a> update. Second the existence of <a href="http://corej2eepatterns.com/Patterns2ndEd/BusinessObject.htm">Business Object</a> tells us that the procedural style of EJB applications made J2EE programmers forget the basics of object oriented programming. You cannot create a rich in behavior domain model with Entity Beans cause they don&#8217;t support inheritance and they are not reentrant (if Entity Bean “A” calls Entity Bean “B” then in the same call stack B cannot call back to A). So J2EE programmers implemented all the business logic inside a service layer (with Session Beans), with <a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html">anemic domain models</a> using Entity Beans. A service layer can be good for things like transaction management, security and other infrastructure services but when you have complex business logic and an anemic domain model you can easily end up with lots of duplicate code. The <a href="http://corej2eepatterns.com/Patterns2ndEd/BusinessObject.htm">Business Object</a> is a back to the basics design pattern that acknowledges the importance of rich in behavior domain models.</p>
<p>I would also like to comment on the <a href="http://corej2eepatterns.com/Patterns2ndEd/CompositeEntity.htm">Composite Entity</a> design pattern. I have very limited knowledge of Entity Beans. I have used Entity Beans in only one project. Most of the projects that I worked on were using <a href="http://hibernate.org/">Hibernate</a> or <a href="http://java.sun.com/products/jdbc/">JDBC</a>. While reading this pattern I felt very strange since it is very awkward for me to program with Entity Beans. I believe that if you have an exposure to tools like <a href="http://hibernate.org/">Hibernate</a> and you go back to implement persistence using Entity Beans you are continuously asking yourself “Why things have to be so hard to do and so restrictive?”. I am so glad to see the new EJB 3.0 Entity Beans specification, things are so much better now.</p>
<p>On the other hand, the <a href="http://corej2eepatterns.com/Patterns2ndEd/DomainStore.htm">Domain Store</a> is a welcomed addition to the <a href="http://corej2eepatterns.com/Patterns2ndEd/index.htm">J2EE patterns</a>. This pattern provides a good explanation for the generic <a href="http://martinfowler.com/bliki/POJO.html">POJO</a> persistence frameworks like <a href="http://hibernate.org/">Hibernate</a>, <a href="http://java.sun.com/products/jdo/">JDO</a> and <a href="http://www.jcp.org/en/jsr/detail?id=220">EJB 3.0 (JSR 220)</a>.</p>
<p>For me, the <a href="http://www.corej2eepatterns.com/">Core J2EE Design Patterns 2nd edition</a> was a very pleasant reading since I expanded my knowledge of <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> and also cleared some things in my mind. I was aware of most of the patterns in this book but reading them from this book made them more clear in my mind. From my experience a lot of J2EE programmers do not really understand most of the <a href="http://corej2eepatterns.com/Patterns2ndEd/index.htm">core J2EE design patterns</a> and misuse them.</p>
<p>My conclusion for <a href="http://www.corej2eepatterns.com/">Core J2EE Design Patterns 2nd edition</a> is that it is a very well written book that is a must read for every <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> developer since not only does it provide valuable information about programming <a href="http://java.sun.com/j2ee/index.jsp">J2EE</a> applications with the traditional architecture but it also defines a widely used vocabulary for common <a href="http://corej2eepatterns.com/Patterns2ndEd/index.htm">J2EE patterns and idioms</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzavellas.com/techblog/2005/10/13/book-review-core-j2ee-design-patterns-2nd-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Java 1.5 Tiger a Developer&#8217;s Notebook</title>
		<link>http://www.tzavellas.com/techblog/2005/09/27/book-review-java-15-tiger-a-developers-notebook/</link>
		<comments>http://www.tzavellas.com/techblog/2005/09/27/book-review-java-15-tiger-a-developers-notebook/#comments</comments>
		<pubDate>Tue, 27 Sep 2005 21:18:12 +0000</pubDate>
		<dc:creator>spiros</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://www.tzavellas.com/techblog/?p=23</guid>
		<description><![CDATA[I recently read Java 1.5 Tiger a Developer&#8217;s Notebook by David Flanagan and Brett McLaughlin. This book is for experienced Java developers who want to start using Java 5. The book covers most of the new major changes of the Java programming language with lots of examples. Highly recommend if you are thinking to move [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.tzavellas.com/techblog/techblog-files/javaadn.s.gif" alt="" /><br />
I recently read <a href="http://www.oreilly.com/catalog/javaadn/">Java 1.5 Tiger a Developer&#8217;s Notebook</a> by <a href="http://www.oreillynet.com/cs/catalog/view/au/156">David Flanagan</a> and <a href="http://www.oreillynet.com/cs/catalog/view/au/152">Brett McLaughlin</a>. This book is for experienced Java developers who want to start using <a href="http://java.sun.com/j2se/1.5.0/index.jsp">Java 5</a>. The book covers most of the new major changes of the Java programming language with lots of examples.</p>
<p>Highly recommend if you are thinking to move your development to <a href="http://java.sun.com/j2se/1.5.0/index.jsp">Java 5</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzavellas.com/techblog/2005/09/27/book-review-java-15-tiger-a-developers-notebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

