- Firefox 3 for developers – MDC – If you're a developer trying to get a handle on all the new features in Firefox 3, this is the perfect place to start. This article provides a list of the new articles covering features added to Firefox 3
- InfoQ: Is Google Gears Positioned to Add Features to the Web? – There is no doubt that Rich Internet Applications remain a major battleground for the industry along with and complementary to Ad-based revenue models and cloud-computing. Will Gears take a similar path as Flash and become as much adopted by Web sites and
- Use Flex Builder 3 to create a JavaScript AIR application – I have tried today to create an AIR application. My tool of choice was Flex Builder 3 as I knew you can create AIR applications using it.
- Official Google Blog: At long last, real-time stock quotes are here – We're very excited to tell you that real-time quotes on NASDAQ securities are now available on Google Finance. This is an important (and way overdue) development for everyone who consumes financial information.
- InfoQ: Erlang – software for a concurrent world – How do you program a multicore computer? Easy – do it in Erlang. Erlang is a concurrent functional programming language designed for programming fault-tolerant systems. With share-nothing semantics and pure message passing, Erlang programs scales on multi
- Design Stencils – Yahoo! Design Pattern Library – Yahoo! Design Stencil Kit version 1.0 is available for OmniGraffle, Visio (XML), Adobe Illustrator (PDF and SVG), and Adobe Photoshop (PNG), and covers the following topics:
- DBSight: Instant Scalable Full-text database search platform/engine – Instead of weeks or even months to develop a full-text search for your data, if you know how to use DBSight, you can easily create the full-text search literally in minutes.
- Brain Freeze » Storing JasperReports in a database using iBATIS and Oracle 10g – This article shows how I solved the file system issue by storing JasperReports report definitions in a database. I’ll assume familiarity with the iBATIS “ORM” database framework since I am not showing a full iBATIS setup here.
- JetBrains’ Dmitry Jemerov on IntelliJ 8, Flex, and Scala – Dmitry Jemerov is a lead developer on JetBrains' IntelliJ IDEA. In this wide-ranging interview with Artima, Jemerov discusses the main focus areas for the upcoming IntelliJ 8 release, as well as his views on IntelliJ's support for Flex and Scala.
- » HOW TO: Use JDBC Batching for 7-8X throughput gains – Using the batched statement capability of your JDBC driver can give you 7-8X throughput gains. Not only is batching significantly faster, it’ll save database CPU cycles and be easier on the network, too
- Why Java? Because it’s everywhere. – The value of this enterprise capabilities is still very high, and in my opinion, it is one of the most important differentiators of Java. Once you know how to deal with it, it saves you lots of time in development and production.
- Roku’s Netflix Player sells out | Tech news blog – CNET News.com – There's more proof that the Netflix Player is a hit. Start-up Roku, the company behind the device that enables Netflix subscribers to watch movies streamed from the Internet to their TVs, has run out of inventory two weeks after launching.
- InfoQ: Exadel’s Flamingo Project for Rapid Flex and Java Development – Exadel’s Flamingo project is a tool for bootstrapping RIA applications built with Java backends. The tool offers support for both Seam and Spring in the middle tier. On the presentation tier, Flamingo supports both Flex and JavaFX
Tag Archives: iBATIS
Daily del.icio.us for May 20th through May 24th
- Computing | Down on the server farm | Economist.com – One day soon, these “virtual machines” may migrate to wherever computing power is cheapest, or energy is greenest. Then computing will have become a true utility—and it will no longer be apt to talk of computing clouds, so much as of a computing atm
- InfoQ: Integrate Flex with Spring Framework – A key to project success is creating an architecture that new developers can rapidly integrate themselves into and begin to be productive on day 1. Flex with Spring, iBATIS, & Cairngorm help me to quickly produce a patterned- based, repeatable architectur
- New Adventures in Software » Visual SourceSafe: A Public Service Announcement – “Visual SourceSafe? It would be safer to print out all your code, run it through a shredder, and set it on fire.” – (Attributed to an unidentified Microsoft employee).
- SSIS Junkie : SSIS: Suggested Best Practices and naming conventions – I thought it would be worth publishing a list of guidelines that I see as SSIS development best practices. These are my own opinions and are based upon my experience of using SSIS over the past 18 months. I am not saying you should take them as gospel but
- IntelliJ IDEA Blog » Blog Archive » Neal Ford Advises on Boosting Developer’s Productivity – Neal tells you how you can become more accustomed with the shortcuts, get used to using them in the daily routine, and demonstrates the magic of different key combinations while coding with IntelliJ IDEA.
- Twitter Technology Blog: Twittering About Architecture – Twitter is, fundamentally, a messaging system. Twitter was not architected as a messaging system, however. For expediency's sake, Twitter was built with technologies and practices that are more appropriate to a content management system
- Enterprise Java Community: Extending Spring LDAP with an iBATIS-style XML Data Mapper – This article explains how to extend Spring-LDAP with an iBATIS-style XML Data Mapper to access LDAP data through intuitive JavaBean operations.
- About – XML Hammer – The XML Hammer application is a free and open-source tool that simplifies elementary XML actions like checking for well-formedness, validation, transformation and xpath searches using any JAXP implementation.
- Novell, Red Hat upgrade Linux offerings – LinuxWorld – Novell released SUSE Linux Enterprise 10 Service Pack 2 (SP2), while Red Hat shipped Version 5.2 of Red Hat Enterprise Linux. Both vendors added improvements on the desktop and the server. There were many areas of overlap, especially with virtualization.
- JasperReports: 3.0.0 released – JasperReports, the market leading open source business intelligence and reporting engine. This project is being moved to http://www.jasperforge.org/. This project is the home for all things Jasper, Reports, Analysis, Server, and Intelligence.
Daily del.icio.us for May 18th through May 20th
- Why the Roku Netflix Player is the First Shot of the Revolution – Bits – Technology – New York Times Blog – In the small, generic plastic box that is the new Netflix Player made by Roku, I think you can see the future of video.
- Inside the Scandal That Rocked the Formula One Racing World – It was June 2007 in sleepy Surrey County, and Coughlan, a statuesque blonde, sauntered through the door of the shop holding a sheaf of 780 pages. Scan them onto two CDs, she told the clerk, a forgettable middle-aged guy in a forgettable office park in the
- Should we discard Interfaces? | Learning by Experience – Is a class that only has interfaces as dependencies easier to test then classes that have implementations as dependencies? Most of us are eager to say yes, but in fact, frameworks like EasyMock enable us to mock (non final) classes.
- Graeme Rocher’s Blog: Grails.org now powered by Grails – We've just launched a re-write of the Grails.org site in Grails. Previously the site was powered by Confluence (the Atlassian wiki), now in the spirit of eating ones own dog food it is a fully Grails powered site.
- IntelliJ Tips & Tricks – Listen to Neal Ford, the software architect at ThoughtWorks and a fabulous speaker, giving you some hints on improving productivity through the intensive use of keyboard shortcuts for carrying out various tasks while coding with IntelliJ IDEA.
- WEB4J – Minimalist Java Web Application Framework -> Criticisms of Spring, PHP, and Rails – The Spring Framework is popular. It has also met with a disturbing lack of criticism. The following remarks are based on Spring 2.0.
- US billionaire Buffett backs Obama for president – Yahoo! News – Warren Buffett, the world's richest man, is backing Barak Obama for US president and thinks current US economic policy will push the dollar lower against other global currencies
- Webmonkey: the Web Developers Resource – The original web developer's resource has returned. Webmonkey has been completely redesigned, and we're ready to rock once more. Also, our entire content library is now hosted on a wiki, so every tutorial, reference page and code example is open for editi
- A conversation Clinton was having…: RE: Java haters, gtfo – Well everyone's favorite potty mouthed blogger is back, slinging poo and doing nothing much to help anything. That said, I've met Hani, and he's actually a pretty cool and down to earth guy.
- Firefox 3 RC 1 full review – Mozilla Links – A year and a half after the last major Firefox release, Firefox 3 Release Candidate 1 is here with a very long list of new features and improvements.
Daily del.icio.us for Sep 03, 2007 through Sep 09, 2007
- InfoQ: Spring 2 and Beyond – Spring 2.0 takes POJO-based development to a new level of sophistication. The themes of Spring 2.0 are simplicity and power: it makes existing tasks even easier, while extending the power of Spring to new areas. In this session,
- craiger’s .plan : A case for iBatis – iBatis on the other hand is the working man?s ORM. In fact, I think I like it because I (and probably you) have created something similar back in the day before all these formalized ORMs. It simply and elegantly maps your sql results to an object of you
- Universal Map Implementation – I worked late this long week-end to improve the implementation of Javolution high-performance FastMap . But finally, I believe that I got it! The “Swiss Knife/Universal /Holy Grail” map for developers! But judge for yourself
- And The Fastest Growing Web Framework Is… – As Matt Raible points out, you can significantly change the results of this graph by changing the search terms . For example “Spring” and “Struts” show that Spring is apparently leading all versions of Struts.
- Virtual Iron goes 4.0 – Virtual Iron has been chipping away at the lower end of the virtualization market for two years now, steadily adding features in a bid to appeal to those businesses for whom VMware’s enterprise offerings are too pricey and feature-laden
- BeauScott.com » Blog Archive » Ted Patrick?s FXWidget – Beau Scott posted his version of FXWidget that uses the AJAX Prototype framework and an AJAX call to cache the SWF file
- Ted On Flex: FXWidget part 2 – the goal of FXWidget is to keep everything self contained and reduce adding an element of Flex on any webpage by adding a simple DIV.
- Emerging Architect Roles – Stephan Schwab – What is exactly software architecture? Do we really need it? Why have we only recently been discussing it? Is there suddenly a contagious fever about software architecture infecting those who claim to be architects? Who are they actually:
- WebLogic Event Server Administration with wlshell – This tutorial shows how to perform BEA WebLogic Event Server (WLEvS) administration with wlshell. WLEvS exposes management operations through a standard JMX interface, including dynamic configuration of Event Processing Language (EPL)
- prefuse | interactive information visualization toolkit – Prefuse supports a rich set of features for data modeling, visualization, and interaction. It provides optimized data structures for tables, graphs, and trees, a host of layout and visual encoding techniques, and support for animation,
Daily del.icio.us for Aug 25, 2007
- James Duncan Davidson ? Remembering Java Naming Blunders Past – The value of a brand is created by the public that uses it, not by the company that owns it. Brands are funny things. They make us choose products out of a sense of comfort instead of an honest evaluation.
- Raible Designs | Display Tag 1.1.1 Released – Display Tag version 1.1.1 has been released. This is a bug fix release
- Java.net – Unified Expression Language for JSP and JSF – This article looks at the unified expression language (EL), which has been added to the JavaServer Pages Standard Tag Library (JSTL) specification in order to overcome problems when integrating the JavaServer Pages (JSP) EL with the JavaServer Faces EL.
- Web Tier to Go With Java EE 5: Summary of New Features in JSP 2.1 Technology – The expert groups have worked together on the upcoming releases of JSP 2.1 and JavaServer Faces 1.2 technologies in Java EE 5 to fix these integration issues and make sure that the two technologies work together seamlessly.
- jmockit: Project Home Page – JMockit consists of a single class with a small set of static methods, which allow arbitrary methods and constructors of any other class to be replaced by mock implementations at runtime.
- Mock Objects: Shortcomings and Use Cases – This article looks at Mock Objects, a testing technique from the XP community that offers a way to test our code in isolation by simulating those external dependencies. As with any other tool, we need to be careful and avoid overusing them.
- Jeffrey Zeldman Presents : Eric Meyer’s CSS Sculptor – Eric Meyer’s CSS Sculptor, created in collaboration with WebAssist, makes it drop-dead easy to create standards-compliant, two- and three-column CSS layouts and includes 30 of the most common web page layouts, coded the way Eric Meyer would code them.
- IT Efforts: Struts2 + Spring + JUnit – Hopefully this entry serves as some search engine friendly documentation on how one might unit test Struts 2 actions configured using Spring
- InfoQ: The Secret Sauce of Highly Productive Software Development – This article stands as a reminder that the Agile approach already offers many learning practices and mechanisms ? are they all being used to best advantage, to serve your team and your business?
- XFire Creator Joins MuleSource – Diephouse is the creator of XFire, the high performance open source SOAP framework. He joined MuleSource as the software architect focused on expanding Mule’s web services capabilities.
- Introduction To iBatis – This tutorial will focus on using iBatis in a Java application and Abator, a code generation tool
- Spring Web Services 1.0 Released | Springframework.org – After two years of development, we are pleased to announce that Spring Web Services 1.0 is now available. Spring Web Services is a product of the Spring community focused on the creation of document-driven, contract-first web services.
Daily del.icio.us for Aug 21, 2007 through Aug 25, 2007
- James Duncan Davidson ? Remembering Java Naming Blunders Past – The value of a brand is created by the public that uses it, not by the company that owns it. Brands are funny things. They make us choose products out of a sense of comfort instead of an honest evaluation.
- Raible Designs | Display Tag 1.1.1 Released – Display Tag version 1.1.1 has been released. This is a bug fix release
- Java.net – Unified Expression Language for JSP and JSF – This article looks at the unified expression language (EL), which has been added to the JavaServer Pages Standard Tag Library (JSTL) specification in order to overcome problems when integrating the JavaServer Pages (JSP) EL with the JavaServer Faces EL.
- Web Tier to Go With Java EE 5: Summary of New Features in JSP 2.1 Technology – The expert groups have worked together on the upcoming releases of JSP 2.1 and JavaServer Faces 1.2 technologies in Java EE 5 to fix these integration issues and make sure that the two technologies work together seamlessly.
- jmockit: Project Home Page – JMockit consists of a single class with a small set of static methods, which allow arbitrary methods and constructors of any other class to be replaced by mock implementations at runtime.
- Mock Objects: Shortcomings and Use Cases – This article looks at Mock Objects, a testing technique from the XP community that offers a way to test our code in isolation by simulating those external dependencies. As with any other tool, we need to be careful and avoid overusing them.
- Jeffrey Zeldman Presents : Eric Meyer’s CSS Sculptor – Eric Meyer’s CSS Sculptor, created in collaboration with WebAssist, makes it drop-dead easy to create standards-compliant, two- and three-column CSS layouts and includes 30 of the most common web page layouts, coded the way Eric Meyer would code them.
- IT Efforts: Struts2 + Spring + JUnit – Hopefully this entry serves as some search engine friendly documentation on how one might unit test Struts 2 actions configured using Spring
- InfoQ: The Secret Sauce of Highly Productive Software Development – This article stands as a reminder that the Agile approach already offers many learning practices and mechanisms ? are they all being used to best advantage, to serve your team and your business?
- XFire Creator Joins MuleSource – Diephouse is the creator of XFire, the high performance open source SOAP framework. He joined MuleSource as the software architect focused on expanding Mule’s web services capabilities.
- Introduction To iBatis – This tutorial will focus on using iBatis in a Java application and Abator, a code generation tool
- Spring Web Services 1.0 Released | Springframework.org – After two years of development, we are pleased to announce that Spring Web Services 1.0 is now available. Spring Web Services is a product of the Spring community focused on the creation of document-driven, contract-first web services.
- Struts2 Tutorials – Several tutorials are available to help you get started with the framework, from all-purpose “soup to nuts” tutorials to specialty tutorials on portlets and database access.
- GnilronEye 1.1, system monitoring solution, released – GnilronEye 1.1, a java-based system monitoring solution, is now available for download. GnilronEye 1.1 introduces an advanced http-monitoring feature and a new report feature that include sgraphs of the monitored items.
- A CSS styled table version 2 | Veerle’s blog – In 2005 I wrote an article about styling a table with CSS. After receiving so many requests I finally decided to give in and write another tutorial.
Daily del.icio.us for Jun 13, 2007 through Jun 20, 2007
- iBATIS Plugin User Guide – The iBATIS plugin is a plugin to accelerate iBATIS development in the IntelliJ IDEA environment
- KimchyBlog – Shay Banon Blog » Blog Archive » Spring One – Keynote – Java IDE world has two solutions, Eclipse as the major one, and intelliJ IDEA where they keep innovating and keeping Eclipse honest
- Max Poon’s Blog: Extending the NetBeans Tutorial JSF-JPA-Hibernate Application, Part 1 – Adding Query View Based on Criteria from Inter-View Parameter Passing – The follow-up tutorial “NetBeans Wiki – UsingHibernateWithJPA” further shows usage of JPA as well as Hibernate-specific facilities, including : * addition of data validation using JPA Annotations and Hibernate Validator framework * retrieval of Hibernate
- Tech Per: Flash for Java Programmers: Lesson 4 – ActionScript and organizing large flex code bases – Steps on learning to develop Flash, with a Java developer focus… This is lesson 4 in my series of posts on what I learn about developing filthy rich flash apps using flex2
- blog.pmarca.com: Analyzing the Facebook Platform, three weeks in – In this post, I provide an overview and analysis of the Facebook Plaform and what we have learned about it in the three weeks since it launched. To start, my personal opinion is that the new Facebook Platform is a dramatic leap forward for the Internet
iBATIS – Where have you been all my life!
iBATIS SQL Maps is an open-source JDBC framework that provides a very simple and flexible means of moving data between your Java objects and a relational database. The SQL Maps framework helps reduce the amount of Java/JDBC code that is needed to access a relational database. The framework allows you to map JavaBeans to SQL statements using a very simple XML descriptor that allows you to create complex queries, and inner/outer joins. The beauty of it all is that this is achieved without any special database tables, bytecode manipulation, or code generation.
iBATIS is not meant to replace Object-Relational Mapping (ORM) tools such as Hibernate, OJB, Entity beans or TopLink to name a few. Rather it is a low-level framework that allows you to directly hand-code your SQL statements and map them to Java object. Once you map your persistence layer to your object model, you are all set. You don’t need to lookup DataSource, get connections, create prepared statements, parse ResultSet or even cache the results – iBATIS does it all for you. Under the covers, iBATIS creates a PreparedStatement, sets the parameters (if any), executes the statements and builds a Map or JavaBean object from the ResultSet. If the SQL statement was an insert or an update, the numbers of rows affected by the SQL are returned. Here’s a little sample to illustrate the features of iBATIS: We’ll start with a simple database that ships with the JpetStore application from iBATIS.
First you configure SQL Maps by creating a XML configuration file, which provides configuration details for DataSources, SQL Maps and other options like thread management. Here is a simple example of the SQL Map configuration file:
https://gist.github.com/310697.js
In my case, I am deploying this code in WebLogic and I have already created a connection pool and a datasource on the WebLogic side. I am just referring to the name of the datasource by using jdbc/jpetstoreDS
. You can also create your own datasource via. the SQL Map configuration file:
https://gist.github.com/310698.js
The SQL Map configuration file includes a reference to another SQL Map file that contains your SQL statements for insert, update, delete as well as results and parameter mapping. Here is a simple example of the file Account.xml:
https://gist.github.com/310699.js
The Account.xml
SQL Map file is pretty self-explanatory — In the file, we are describing a select statement that takes an Integer as it’s argument and returns an instance of com.j2eegeek.ibatis.domain.Account. Insert, updates, deletes work the same way along with stored procedures and dynamic queries. The programming API for SQL Maps is really straightforward and provides the developer with the ability to: configure an SQL Map, execute an SQL update (including insert and delete), execute a query for a single object, and execute a query for a list of objects.
https://gist.github.com/310700.js
A pretty simple example but it should illustrate the simplicity of iBATIS SQL Maps and show you the potential of this framework. SQL Maps takes away all of the work required to create Statements, validate and parse inputs, create and parse ResultSets and all of the nitty-gritty details of working with SQL by hand. Instead, you are working at the object level and not really worrying about how your data is stored or retrieved. I’ve found that this also enables a good separation of work where your ‘data-guy’ can create up the appropriate SQL statements for you and you just plug them in, assuming you have a ‘data-guy’. I’ve found that SQL Maps really helps me in my development process (In most cases, I am working with existing databases) as I spend time looking at the data-model as part of my overall design process and will typically mock-up the SQL statements I am going to use to manipulate the data at hand. Now I can just take my SQL statements and plug them into the SQL Map XML files and half my app is already built.
iBATIS SQL Maps is really powerful and you can take this one step further by using Spring’s DAO framework in conjunction with iBATIS. Using Spring’s DAO framework and the iBATIS template classes provided by Spring, you will write even less code that you would have normally written using iBATIS by itself.
Struttin’ with Struts & iBATIS
A step-by-step approach to building a Struts application using iBATIS for resistance is available at http://www.learntechnology.net/content/main.jsp
Book Review: Expert One-on-One J2EE Development without EJB
Expert One-on-One J2EE Development without EJB by Rod Johnson, Juergen Hoeller
Paperback: 576 pages
Publisher: Wrox (June 21, 2004)
ISBN: 0764558315
I’ve read this book several times since the day it shipped and I have to say that this is an excellent book for anyone working as a developer or architect working in the Enterprise Java arena. I absolutely love this book given my bias – I guess I should start by stating my bias. EJB bashing is a favorite past time of a lot of people. I happen to love EJB’s, with the exception of entity beans and think EJB’s are a great way to create software solutions are remotable, loosely coupled and powerful. I will agree that EJB’s are way too complicated with all the stupid artifacts that you need to create to create and deploy an EJB. Having worked with EJB’s since 1999, I guess I am so used to all of nuances of EJB’s, I can write up deployment descriptors in my sleep. Having said that, I approached this book with a little apprehension as I hate these EJB-sucks book that don’t really offer any intelligent discussion about the shortcomings of EJB nor do they offer a viable alternative. Another assumption I brought to the book was that this was just a Spring book with a little EJB bashing thrown in for good measure.
To my pleasant surprise, Rod Johnson and Juergen Hoeller have written an awesome book. This book does not take cheap shots – Instead there is a intelligent, thought provoking discussion about the pros and cons of EJB. In fact, the first 120 pages (Chapter 1-5) are just a great breakdown of application architecture with a through treatment of EJB. I loved this section and re-read it several times and I found myself agreeing with pretty much everything in this section. I would equate this to a great meaningful discussion you would have with someone who really understood application architecture and development and you could debate the pros and cons of the many alternative approaches that exist today.
Chapter 6 starts the discussion of Lightweight Containers and the idea of Inversion of Control (IoC). This is not a chapter on Spring; rather it is an overview of Inversion of Control and strategies like Dependency Injection in the context of Spring and PicoContainer.
The next chapter offers a quick introduction to the Spring Framework. As everyone already knows, the Spring Framework is a very popular open source application framework created by Rod Johnson. The co-author Juergen Hoeller is another lead developer of Spring. The chapter is Spring is fairly light and people hoping for a in-depth Spring tutorial will be disappointed. Instead this chapter offers a rather high-level overview that will get you some basic understanding of the Spring Framework. I guess it’s hard to cover Spring in 43 pages.
After the cursory introduction to Spring, the book moves into Aspect-Orientated programming (AOP) concepts. This section starts with a very introduction to AOP before jumping into AOP implementation strategies. After a brief discussion of AspectJ, AspectWerkz, and JBoss AOP, the authors move into SpringAOP. After AOP, the books moves into Transaction Management where current J2EE approaches are discussed and then contrasted with the Spring approach.
Persistence is the next item tackled in the book and this section includes a really nice discussion of why you need a persistence strategy, when to choose O/R mapping vs. straight JDBC. After a walkthrough of the Java persistence technologies, the book moves into practical items and discusses Persistence in detail. Starting with JDBC, the authors contrast that approach with iBATIS SQL Maps, JDO, and Hibernate. The section on Data Access Object (DAO) pattern discusses the J2EE pattern and discusses some of the common design issues faced by developers. After the discussion, the book moves into discussing how data access works with the Spring framework and discusses Spring’s DAO framework and how it works transparently with persistence technologies including iBATIS, Hibernate, JDO and straight JDBC. As an aside, if you haven’t looked at Spring or just it’s DAO framework, you should explore it as it simplifies the development process and minimizes the amount of code you write. I just rewrote some of my POC applications using Spring’s DAO framework that used iBATIS and Hibernate under the covers. By using the template classes provided by Spring, I wrote about 30-40% of the code I would have normally written using iBATIS or Hibernate by themselves. The Spring Framework includes a reworked version of the original JPetStore application that uses Spring’s DAO framework along with iBATIS SQL Maps.
After persistence, the book moves to Remoting and the idea of exposing business logic or services to remote client. One of the major benefits of EJB is the ability to remote anything exposed at the bean layer. This chapter starts off by discussing how to access an EJB from a Spring application using the JndiObjectFactoryBean. The setup is so simple and IoC makes lookup, creation of home, etc so easy with the declarative configuration. After EJB, the chapter moves to Web Services and JAX-RPC. Again the authors walk through the steps needed to consume JAX-RPC via. JNDI and demonstrate the elegance and simplicity with which Spring integrates into and consumes existing J2EE services. This chapter also includes discussion of Hessian and Burlap and the concept of lightweight remoting.
The next chapter in the book discusses the other EJB services that the container provides and talks about how to replace them. This section breaks down the do’s and don’ts in terms of threading and pooling that is typically provided by an EJB container. There is a brief mention of security in this chapter.
The next section of the book discusses web tier design and dives into the current state of Web Model2 MVC frameworks. The section starts off with a look at Struts before jumping into WebWork. After the intros, the authors describe the Web MVC framework built into Spring. One of the things that I absolutely love about this book is the use of the dark gray boxes to summarize a topic, offer tips and advice or offer a best practice.
The next chapter is one of my favorite chapters in this book and it deals with the idea of unit testing and testability. Anyone that has written a J2EE application will attest to the fact that J2EE apps are really hard to test. There are a lot of testing frameworks in the market now but they require either too much setup or are really cumbersome to use and end up diluting the value they were supposed to offer. This section discusses some of the anti-patterns that are the de-facto standards in J2EE. I love the techniques offered in this section to improve testability. After an overview of testing, the book moves into a discussion of Mock Objects and the how, why and when of using Mock Objects in your development/testing lifecycle. The book then moves into Test-driven development (TDD) and offers a case study of how TDD has helped with the development of the Spring framework itself.
The last section before the sample application is on performance and scalability. This is another great chapter that should be mandatory reading for every developer. In this chapter, the authors discuss the challenges faced in building distributed multi-tier applications. There is a section that breaks down the architectural tiers and some of the common issues faced by every application developer. Very nicely written chapter and I glad the authors included a section on Profiling.
After performance, the book jumps into the sample JPetStore application that ships with the Spring Framework. The authors start off by discussing some of the shortcomings on the JPetStore application and then employ Spring to solve some of those issues. The JPetStore application is a great tutorial application for anyone learning Spring.
The book closes out with the conclusion section where the authors wrap-up and summarize some of their points outlined throughout the book.
Having read this book several times, I have to say that this has to be one of my favorite books of 2004. I love the clear, concise writing style of the authors. This is a great book and a must for every developer’s library. While this is not a Spring tutorial book, you will learn enough about Spring to want more, a lot more. I highly recommend this book and encourage you to run to your local bookstore or computer and get this book.
If you are looking for a Spring book from the source, you’ll have to wait for Rod’s new book entitled Professional Java Development with the Spring Framework co-authored with Juergen Hoeller, Alef Arendsen, Thomas Risberg, Dmitriy Kopylenko or wait for Keith Donald’s Spring book.