Thursday, December 27, 2007

2007-12-27 Thursday

I've been heads down for the last few weeks working on the ESB and SOA design for a client engagement.

I've recently installed the following:

  • IONA's Fuse-5.0.0.6 Message Broker

  • Glassfish V2 UR1

  • JBoss Drools 4.0.3


  • This afternoon I helped some colleagues locate a utility to document directory structures. It is a Python script that generates an HTML listing. The Active State Programmer Network has some interesting code samples for Perl, Python, PHP, ???

    I recently completed a preliminary review of the ebXML reference implementation (Omar-3.1). A few preliminary thoughts:

  • Bloated code base

  • Clutterd, ugly, non-intutivie User Interface design

  • Probably too "heavy" for most real usage

  • Reminds me of IBM's original UDDI service (that was also a bloated and ugly UI)


  • Some Links of Interest


    Rules versus Procedural Code

    Changes in Ruby 1.9

    Thursday, December 20, 2007

    2007-12-20 Friday

    NEWS: I'm in preliminary discussions with an Acquisitions Editor for a well known publishing company to possibly write a book for them next year.

    Refactoring is a Necessary Waste (by Amr Elssamadisy)

    "By seeing Refactoring as a necessary waste, then a developer will minimize refactoring; that is only refactor code that no longer meets the requirements of the user. This means, when you are coding away and you see a method in the class you are modifying that "smell's bad" but has no direct connection to the requirement you are working on, you leave it alone."


    Software Development Conference & Expo West 2008, March 3-7, 2008, Santa Clara Convention Center

    I want Sandy — Your personal email assistant - which is a product developed by values of n - a very interesting team.

    New Features in ActiveMQ 5.0 - For Example:

    Enterprise Integration Patterns

    Message Transformation

    Mirrored Queues

    Producer Flow Control


    Apache Camel: A powerful Spring based Integration Framework

    various recipes for working with Camel


    Spring Integration: a central service and message bus

    Joel Spolsky - his talk at Yale:
  • Talk at Yale: Part 1 of 3

  • Talk at Yale: Part 2 of 3

  • Talk at Yale: Part 3 of 3
  • Sunday, December 09, 2007

    2007-12-09 Sunday

    Groovy 1.5 released - What's New?

  • is an agile and dynamic language for the Java Virtual Machine


  • builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk


  • makes modern programming features available to Java developers with almost-zero learning curve


  • supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain


  • makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL


  • increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications


  • simplifies testing by supporting unit testing and mocking out-of-the-box


  • seamlessly integrates with all existing Java objects and libraries


  • compiles straight to Java bytecode so you can use it anywhere you can use Java




  • This is a very interesting presentation by Werner Vogels, CTO at Amazon.com: The Amazon.com Technology Platform: Building Blocks for Innovation. Amazon's Dynamo technology is also very interesting. I suspect someone could build a very lucractive consulting practice by specializing in just Amazon Web Services. Add to that: SalesForce.com's Platform capabilities; and Sun's Grid Computing Utility.

    Monday, December 03, 2007

    2007-12-03 Monday

    Book Review: Java EE 5 Development using Glassfish Application Server

    Author: David R. Heffelinger (ensode.net)
    Publisher: PACKT Publishing
    Publish Date: September 2007

    Full Disclosure: PACKT Publishing provided me a free copy of the book to review.

    Overall Reviewer Rating: B+

    From the back cover:

    "Who this book is written for
    This book is aimed at Java developers wishing to become proficient with Java EE 5, who are expected to have some experience with Java and to have developed and deployed applications in the past, but need no previous knowledge of Java EE or J2EE. It teaches the reader how to use Glassfish to develop and deploy applications."
    Given that description of the book's goal and scope, I would say that it is a "mission accomplished".

    I came across Glassfish V2 this year while doing research for a client SOA project. After downloading it (https://glassfish.dev.java.net) and spending a few days exploring its robust features, I decided to continue evaluating it for selection as a possible core component for the team's ESB and SOA efforts. While juggling a number of other priorities, I happened to come across an announcement offering a free copy of a book on Java EE 5 Development using Glassfish. I contacted the publisher - and they agreed to my offer to review their book. Within about 10 days, the book arrived - and I began diving into it.

    Part of my interest in this book comes from the knowledge that the development team I'm currently leading is primarily experienced in .NET technologies - and adding Java to their toolbox will involve some training and self-education challenges. Although I have formal training planned for the team, a book that could provide a broad introduction to Java EE development with the added bonus of specifically covering Glassfish was something I didn't expect to find - but definitely thought my team needed.


    Chapter Outline

    1: Getting Started with Glassfish

    Reviewer Comments: Clear and concise. What I would add in the next edition: Coverage of more in-depth discussion of configuration parameters - and performance / tuning parameters.



    2: Servlet Development and Deployment

    Reviewer Comments: Good basic introduction to the topic of Servlet Development - without burdening the reader with the additional complexity of learning application frameworks.


    3: JavaServer Pages



    4: Database Connectivity
    Reviewer Comments: Covers JDBC and JPA. A decent survey of Entity Relationships (One-to-One, One-To-Many, and Many-to-Many). Covers Composite Primary Keys. The author, to his credit, notes that Database access code should be encapsulated in Data Access Objects (DAOs) - and provides suggested links for further reading.


    5: JSP Standard Tag Library

    Reviewer Comments: Discusses the Core JSTL tag library as well as Formatting JSTL, SQL JSTL, XML JSTL, and JSTL functions.


    6: JavaServer Faces
    Reviewer Comments: Basic coverage of JSF and JPA.


    7: Java Messaging Service

    Reviewer Comments: covers setting up Glassfish for JSM, working with message queues and topics.


    8: Security
    Reviewer Comments: Discusses various types of realms (Admin, File, Certificate, JDBC, Custom) - and how to utilize Glassfish's built-in security features.


    9: Enterprise JavaBeans
    Reviewer Comments: Sub-topics covered include Session Beans, Message-driven beans, Transactions in Enterprise Java Beans, Enterprise JavaBean Life Cycles, EJB timer service, and EJB security.


    10: Web Services
    Reviewer Comments: Sub-topics covered include developing web services with JAX-WS API, Developing web service clients with JAX-WS, adding attachments to web service calls, exposing EJBs as web services, and securing web services.


    11: Beyond Java EE

    Reviewer Comments: Sub-topics covered include Facelets, Ajax4jsf, Seam.


    Appendix A: Sending Email from Java EE Applications

    Appendix B: IDE Integration


    As a bibliophile, I have a few pedestrian observations of the mechanics of the book's production:

    1) The book appears to use a bit larger font than I usually see in technical books by other publishers - a positive - as I don't have to squint to read the text. The quality of the paper appears to be good. The binding appears to be fair-to-good.

    2) The book makes extensive use of ample screen shots to capture the specifics of step-by-step instructions when covering the installation and configuration topics in chapter-1. Screen shots of the Glassfish administration screens are also provided in latter parts of the books where appropriate.

    3) Coding examples are also liberally provided throughout the chapters (Example Code for the book is available at http://www.packtpub.com/support).

    4) "Notes" and "Tips and Tricks" are appropriately identified throughout the book using two icon designations.


    If you are looking for an introductory survey of Java EE development topics, then this book is a good choice. It is not intended as a definitive reference for Java EE - so don't judge it against that kind of yardstick. The author does not assume that the reader is an advanced Java developer - but does expect that you have some familiarity with the language.