Blog

Java 7 – Fork/Join

While we lamented how feature-poor Java 7 turned out to be, one thing that made it that turns out to be a boon to high-performance concurrent development is the new Fork/Join framework. This framework is targeted at multi-processor systems (really almost all hardware today) in situations where a batch of work can broken into smaller … Read more

Java Concurrency Part 6 – CountDownLatch

Some concurrency utilities in Java naturally get more attention than others just because they serve general purpose problems instead of more specific ones. Most of us encounter things like executor services and concurrent collections fairly often. Other utilities are less common, so sometimes they may escape us, but it’s good to keep them in mind. … Read more

Testing in Grails – Common base class for Unit/Integration/Functional Tests

Groovy and even more so, Grails, demands automated testing. In fact, extensive coverage is a must to have confidence that we are not regressing or introducing runtime resolution issues with a single errant keystroke. Grails expects you to write tests and each grails project has the familiar test/unit, test/integration and test/functional source folders. Of course, … Read more

Testing Failure Cases in jUnit in Java & Groovy

Unit testing expected failure cases is just as important as testing expected positive behaviour. In fact, you could argue that ensuring all failures are happening as expected is more important since it’s one of your best defenses against bad data. If you search for examples of how to test for failures (using old style jUnit … Read more

Eclipse and Memory Analyzer (MAT)

In times past, when it came to tracking down sporadic memory problems in a complex Java application, it required using a commercial product such as JProbe or a lot of painful and inefficient attempts to recreate the issue. Even if the problem were easy to recreate, unless the problem was blatantly obvious, your application might … Read more

Problems with ORMs

Object Relational Mapping tools like Hibernate have helped developers make huge productivity gains in dealing with relational databases in the past several years. ORMs free developers to focus on application logic and avoid writing a lot of boilerplate SQL for simple tasks like inserts or queries. However, the well-documented problems with object-relational impedance mismatch inevitably … Read more

Groovy for Scheduling

While we’ve already written a post on our scripting support in Obsidian, this post will focus specifically on our Groovy support, what we use it for and what it makes possible for you. Given that Groovy is built for the JVM and almost any java code will work as is in a groovy script/class, supporting … Read more

Java 7 is Pathetic

Java 7 is finally nearing general release, but I have to say that I’m fairly unimpressed by the features being delivered considering Java 6 was released 4 1/2 years ago. It’s already been delayed for years, and what is there to show for it? The time between Java 6 and 7 is almost a third … Read more

Obsidian Scheduler 1.2 Released!

We’ve added more to Obsidian Scheduler. Version 1.2 is now available here. Features added in this release include Description annotation on job class enables inline help in admin web app Scheduled one-time runs New Job Status supporting any unscheduled events (ad hoc & chaning) Bundled Winstone support for quick start Option to wait indefinitely for … Read more