Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud.
We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
What do you do after you've cofounded a company that developed award-winning products for distributed computing, won a Young Entrepreneur of the Year award, and finished a book on Web services? If you're Graham Glass you start another company and continue pushing the envelope of distributed computing.
The company is The Mind
Electric (TME) and the
envelope is one of simplicity.
TME has tried to build a
Web services platform with a simple
conceptual model and an
easy-to-understand API. It is
working on a next-generation
product they're calling a "Web
services fabric" code named GAIA
but this review focuses on their current
platform, Glue 4.1.
Today APIs are proliferating like rabbits
and frameworks are getting larger and more
complex. When I wear my developer hat, I
prefer to work at the API level. It helps to
promote an understanding of the mechanics
of the system, but it gets harder and
harder to keep up. Graphical tools, like
wizards, can hide the complexity of large
frameworks, but after the initial code-generation
phase is done most of these tools
are not useful or tend to get in the way.
With the ever-increasing complexity of
application servers, Glue takes a welcome
step in the right direction, the direction of
simplicity.
If you're looking to put your toe in the
water of Web services but recoil from the
complexity of working with a full-blown
J2EE application server, then Glue may be
the product for you.
Flavors of Glue
There are two versions of Glue: Standard,
which is free but unsupported; and
Professional. Although Glue Standard
is unsupported by TME, there is an
interest group available on Yahoo! that
gives you access to the TME user community
at large.
Glue Professional comes with support
via TME's online issue tracker
and includes these high-end features:
Turbocharged performance
Real-time management console
Web service instrumentation
EJB integration
Reliable/async messaging over JMS
LDAP authentication via JAAS
WS-security, including digital signatures
and encryption
WS-routing
Remote deployment
Virtual services
IDE plug-ins
Getting Started
You can download Glue from the TME Web
site. Installation was quick and simple. I was
pleasantly surprised to find that the installer
automatically set up my environment. I could
get down to running through the examples
without additional twiddling. This may seem
trivial, but you would be surprised how many
platforms require additional setup and configuration
(e.g., proper CLASSPATH setting) after
the installer has run.
Glue comes with a full complement of API
documentation in Javadoc format and a Users
Guide. The installer also sets up links to the
online TME interest group and issue tracker.
The Simplest of Services
Getting a service up and running in Glue is
incredibly easy. Any Java object can become a
service by simply publishing an instance of
the object to the Glue registry. There is no preprocessing
or configuration required.
Listing 1 (the code is online at www.syscon.com/webservices/sourcec.com) shows a
basic object called Converter that converts
temperature in Fahrenheit to Celsius. It
requires only two lines of code to expose this
object as a Web service. Line 25 starts a Web
server that accepts messages via the /glue path.
Line 26 exports the object as a Web service.
Other than the import statements at lines 4 and
5, that's all that's required.
By default, Glue exports all public, static,
and instance methods of the object. If I want to
expose only a subset of the methods I can create
a Java interface that defines the set of methods
I choose to expose. The interface.class is
published along with the object and Glue
exports the methods of the interface. If I don't
have control of the source code of the object, I
can control method exposure by supplying a
Context object that contains a list of method
properties.
A Simple Client
Writing a Web service client using Glue is
also easy. Listing 2 shows a test client for the
Converter service. Line 11 binds to the service
and returns an object that implements the published interface. The service can now be treated as a standard Java object.
There are a few things in this example that
need further explanation. The first parameter of
the bind method is the URL of the WSDL for the
Web service. To obtain the WSDL for the Web
service I just need to append .wsdl to the service
URL. Glue will generate the WSDL automatically
from the interface and cache it for future use.
The second argument of the bind is the class of
the interface for the service. I didn't define an
interface for my Web service, but Glue can generate
one from the service definition with its
wsdl2java tool.
This example may seem overly simplistic but
TME provides a large assortment of examples
that exercise a wide range of Glue's features
including support for .NET.
Advanced Features
You may worry that a tool that provides such
a simple interface would not offer the power and
flexibility that a typical large enterprise would
need. Glue has more advanced features than
most would need.
If you want to monitor or modify the message
stream, Glue provides a feature called
Interceptors. Interceptors are leveraged throughout
Glue to provide advanced processing of
SOAP headers and attachments.
Glue supports SOAP over the Java Message
Service (JMS). Both synchronous and asynchronous
messaging styles are supported and services
can be published simultaneously over JMS
and HTTP.
For those who insist on only using Java standard
APIs, Glue provides implementations of
JAX-RPC and JAXM.
Hard-core techies can completely bypass the
use of Java interfaces and Java/XML serialization.
Glue provides the ability to directly create,
invoke, and process raw SOAP messages.
Finally, for high-volume systems Glue can
reduce the size of SOAP messages by utilizing
optimizations like tag substitution, envelope
omission, and HREF inlining.
Interoperability
Although Glue runs easily out of the box as
a stand-alone lightweight application server, it
can plug into any application server that supports
servlets. In this hosted mode, Glue can
expose any stateless session bean as a Web
service. The Users Guide provides instructions
for installing glue under BEA WebLogic,
WebSphere, and SunONE application servers.
If you're an IDE jockey you'll be happy to
find plug-ins for JBuilder, Eclipse, and IDEA.
Conclusion
I was definitely happy with the speed at
which I could install Glue and get a scratch
Web service up and running. But I was really
impressed when I began to dig in and found a
depth of features I had not expected from a
platform that strived for simplicity. I've always
liked the adage, "Good tools make simple
tasks easy and complex tasks possible." I think
that adage sticks with Glue.