Friday, July 8, 2011

Java 7 Launch Event - An Initial Reaction

After watching the Java 7 Launch Event Webcast ... it all seems a little, well ... meh!



 Java 6 was released at the end of 2006, so what's new in Java 7, here are some highlights:

  • Some minor language improvements (Project Coin - JSR 334)
    • try-with-resources - A mechanism to automatically "close" resources when exiting a block, kind of like C# has had from day 1. 
    • Support for strings as switch statements selectors, kind of like C#.
    • Type inference in generic instantiation via the the diamond operator.
    • Binary literals and underscores in numeric literals.
    • "Multi-catch" of exceptions.
    • Improved varargs support.
  • I/O enhancements (JSR 203).
    • Further asynchronous IO developments.
    • A better file system API.
  • Concurrency and collections updates.
  • Some JVM improvements (JSR 292).
A complete list of features may be found here.

Most of the new language features seem like little more than syntactic sugar.  The try-with-resources mechanism looks to be the only new language feature with real value as it will eliminate bugs by making resource management less error prone.

InvokeDynamic is welcome also especially given the associated  promise of better optimization of non-Java languages  running on the VM.

In the round there seems to be little get excited about in Java 7.  There's just not a whole lot there especially given how long it has been since the release of Java 6.   

We are promised an "aggressive" release cycle for Java 8, a version which will be more "revolutionary" than the "evolutionary" Java 7 version.   

Highlights touted for Java 8 (or later) include:
Support for modularity, if done well, will be very welcome and have a tangibly positive influence on application/library structure, encapsulation and maintainability.

I am rarely enthusiastic about the introduction of new language features, especially where equivalent functionality is already available via a different syntax.  Direct language support for collections is just a convenience.   I won't complain so long as it is not implemented as a generic mechanism to overload operators (ala C++).   

Take a look at Java 7 and see what you think.

Thursday, July 7, 2011

Spring LDAP ODM

Spring LDAP is a software library which simplifies access to LDAP based directories in a Spring/Java environment.

A while back I wrote an extension to Spring LDAP called Spring LDAP Object Directory Mapping (ODM).  Spring LDAP ODM plays a similar role with respect to an LDAP directory to that played by Object-Relational Mapping (ORM) tools such as Hibernate with respect to a relational database.

Spring LDAP ODM represents LDAP objects as annotated POJOs.  These POJOs may then be used with the Spring LDAP ODM library to search and to carry out CRUD operations against an LDAP directory.  Also a tool is provided that is capable of generating appropriately annotated POJOs from an existing LDAP schema.

I actually thought that Spring LDAP ODM was not going to make its way into Spring LDAP, as after I supplied the software I could not find time to create reference documentation above that generated by the Javadoc.  But it seems that one of the Spring LDAP crew has kindly stepped in to provide some documentation for me.  This documentation does not cover all of the functionality of Spring LDAP ODM - but with the Javadoc it should be easy enough to use the library.

References:


I will try to find some time to enhance the reference documentation in coming weeks.

Wednesday, July 6, 2011

ELAG Presentation on the WMS

Here is my recent presentation at the ELAG 2011 conference.

It's a top level summary of some of the work we've done at OCLC on the Web-scale Management Services (WMS).

The WMS is a next generation Integrated Library System.  But of more interest here, the WMS is a complex Services Oriented Architecture (SoA) based system, designed to operate at significant scale, deployed across multiple cloud installations with demanding requirements for both speed and reliability.  The WMS has defined the foundation technology and architecture on which OCLC's extensible platform is based ... but more of that at a later date perhaps.

I will be expanding on each of the design choices we made in coming weeks - this hopefully will help those either in the process of designing large-scale SoA based systems or those just interested in software architecture.

There is a recording of all of the ELAG presentations available here, and my presentation in particular here.



Likely I'll cover another subject close to my heart - software coupling - before I expand on the above.