Why Hadoop?

Monday, February 22, 2010

Hadoop is garnering a lot of attention these days as companies ponder how to address problems involving large amounts of data (tera to petabytes). It also gathers attention from companies interested in distributed computing. Lastly, it is seen as an alternative to an RDBMS. So what is Hadoop actually and how would [...]

Framework for a Multi-stage Spring Property Loader Extension Allowing Dynamic Updates of Properties via JMX

Monday, February 22, 2010

Overview
It is commonplace in enterprise applications to allow application properties to be loaded from configuration files. When leveraging Spring, this is typically achieved using a PropertyPlaceholderConfigurer instance within the application. As is stated in the JavaDocs for this class,  it is “A property resource configurer that resolves placeholders in bean property values of context definitions. [...]

Enabling JMX monitoring of SEDA Queue Depths in Apache Camel

Monday, February 15, 2010

Apache Camel’s SEDA (Staged Event-Driven Architecture) endpoints (http://camel.apache.org/seda.html) provide a useful and quick mechanism to implement asynchronous, event-driven processing within your applications. See http://www.eecs.harvard.edu/~mdw/proj/seda/ for the original description of the SEDA architecture. For those not very familiar with Camel, implementing a SEDA route can be as simple as adding the following to a route builder [...]

The Groovy Spaceship Operator Explained

Monday, February 8, 2010

The spaceship operator has it’s roots in Perl and has found it’s way in to languages like Groovy and Ruby. The spaceship is a relational operator that performs like Java’s compareTo() comparing two objects and returning -1, 0, or +1 depending on the value of the left argument as compared to the right. Perhaps the greatest advantage of using the Groovy comparison operators is the graceful handling of nulls such that x <=> y will never throw a NullPointerException and when comparing numbers of different types the type coercion rules apply to convert numbers to the largest numeric type before the comparison.

Immutable Data Structures in Concurrent Java Applications

Monday, February 1, 2010

Concurrent applications have multiple threads running simultaneously. Access to data shared by multiple threads requires synchronization which is often a source of fragile and hard to maintain code, hard to find bugs, and performance issues. You can minimize synchronization and the headaches that go with it using immutable data structures. In this article I’ll demonstrate how [...]