Friday, August 22, 2008

Is Quaere truly LINQ for Java?

Is Quaere truly LINQ for Java?
The LINQ for Java question hit another milestone last week with the arrival of Quaere, although it remains to be seen whether this milestone is significant or not. We've certainly registered some false starts in this space which rightly have been seen as more marketechture than a true innovations on the Java platform.

Lets review some of the feature highlights...
  • Ability to perform queries against arrays or data structure implementing the Iterable interface.
  • An internal DSL (based on static imports and fluent interfaces) that lets you integrate the query language with
  • regular Java code. No preprocessing or code generation steps are required to use the DSL, simply add a reference to the quaere.jar file (and its dependencies).
  • A large number of querying operators including restriction, selection, projection, set, partitioning, grouping, ordering, quantification, aggregation and conversion operators.
  • Support for lambda expression
  • The ability to dynamically define and instantiate anonymous classes.
  • Many new “keywords” for Java 1.5 and later.

Compared to JLINQ discussed here, this seems like we have alot more meat similar to what is currently being offered in LINQ on the .NET Framework. Certainly the readers of dzone.com seem to feel it has merit, but no one seems to have asked the question: is LINQ on the Java platform actually a necessary innovation? Are there legions of Java programmers who are struggling with data access patterns that don't serve their needs ?

've talked about LINQ on number of posts; for the .NET community LINQ represents a quantum leap that changing the way developers search, sort and generally perform data access. Sure LINQ is not perfect, but it brings to bear many of the things Java developers have enjoyed for many years. One has only to examine the plethora of JDBC driver implementations and gauge the respect the JDBC specifications as the solid foundation for the success of Hibernate, the Spring Framework and many more. With the advent of JPA, I see the problem LINQ seeks to solve is even less acute in Java.

Don't get me wrong, while the effort underway with Quaere is admirable it could just all be an academic exercise. I am of course open to debate on that score...

No comments: