From the Field

19May08

Choices, choices.
Early in the design process, we acknowledged that the major functional components of GATHER existed in other open source projects. Rather than grow our own, we would focus on bringing together the best solutions available in the field — integration over invention.

The impulse to grow your own, or reinvent the wheel, isn’t just about hubris, however. Sometimes it can just be easier and quicker to make your own rounded spinning thingy than to figure out how to propel someone else’s. Balancing adoption & adaption against original development was and remains our biggest challenge, compounding the usual difficulty of estimating software schedules.

We started with a field survey. Here’s brief summary of what we considered:

Build Tools

  • Ant - the ubiquitous java build tool. 
  • Ivy – dependency management. Works in conjunction with ant. 
  • Maven - build management with an object-oriented project definition. Handles dependencies, builds, test, deployment.
  • Cargo – a thin wrapper for manipulating application containers. Include Maven plugin.
  • Subversion – popular source code management (SCM) solution
  • Mercurial – lightweight SCM for decentralized, distributed management

Application Framework

  • Spring Framework – web application framework which promotes modular application assembly and provides commonly required functionality
  • OpenESB – open source ESB from java.net
  • Mule – an open source enterprise service bus (ESB), simplifying the process of gluing services together
  • ServiceMix – Apache’s JBI compliant ESB

Application Features

  • XML
    • XForms – next generation forms controls for html
    • Castor – XML data binding product. XML to POJO, POJO to XML, POJO to relational database.
    • Formfaces – client-side cross-browser javascript library for adding XForms support
    • Hyperjaxb2 – JAXB implementation with persistence
    • JAXB – reference implementation of JAXB (java api for XML binding)
    • JaxMe2 – apache open source implementation of JAXB, with persistence
    • Orbeon – web application which presents Xforms using standard html
  • Persistence
    • Java Persistence API (JPA) – official java library for storing objects in or mapping objects to a relational database
    • Hibernate- object/relational persistence and query service (JPA compatible)
    • iBATIS- object/relational mapping using XML descriptors
    • MySQL- “the world’s most popular open source database”
    • HSQLDB- fast, reliable, embeddable java-based DB
    • Derby- Apache’s java-based DB
    • H2- very capable java SQL DB, successor to HSQLDB
  • Reporting
    • Pentaho – suite of data reporting, analysis, transform and mining tools
    • Jasper Reports – suite of data reporting, analysis, transform and mining tools
    • Pentaho – suite of data reporting, analysis, transform and mining tools
  • Scripting
    • Groovy – an agile dynamic language for Java
    • BSF – Bean Scripting Framework, supporting several languages
  • User Management
    • Acegi – security solution for enterprise applications

Packaging & Deployment

  • Getdown – a java application install/update framework (JNLP style)
  • Web Start – Sun’s framework for install/update of applications from a web page
  • jsvc – java daemon service, for managed headless java applications on unix
  • Procrun – tool for running java applications as a service on Win32
  • Tomcat – the robust Apache Foundation servlet container
  • Jetty – a stand-alone or embeddable web server and servlet container

So, what did we actually end up using? We’ll cover that in the next couple of posts.

-Andreas

Advertisement


No Responses Yet to “From the Field”

  1. Leave a Comment

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.