IBM's AlphaWorks continues to do interesting work around Web Services,
Java, and XML. One of their innovations is Business Process Execution
Language for Web Services (BPEL4WS), a process-description language
that's used to describe how Web Services interact with each other (and
with other entities) to form useful processes. Though details of BPEL4WS
remain sketchy and one hopes they'll come up with a catchier name for
it, the idea of a language that combines the best features of
Microsoft's XLANG and IBM's Web Services Flow Language (WSFL) is indeed
appealing.
BPEL4WS allows you to specify a composite Web Service. Such a Web
Service appears externally like any other Web Service, and may be
advertised as such with Web Service Description Language (WSDL) and a
directory scheme. BPEL4WS is used to tie disparate Web Services
together, specifying their inputs and outputs either as internal to the
composite service (i.e., the output of one feeds the input of another,
and the two ports aren't exposed externally) or external (in which the
input or output of a member Web Service serves as an input or output of
the composite service as a whole). You use, for example, an <invoke>
command to refer to another Web Service, and a <receive> tag to take
input from an entity external to the composite service. Overall, the
language looks like a handy way to modularize your Web Services and
re-use them in bigger projects.
IBM has also released a Java implementation of BPEL4WS called BPWS4J
(it's hard to believe they passed up the opportunity to call it
"BPEL4WS4J"). This Java library can interpret BPEL4WS documents and
allows Java programs to refer to them via SOAP. They've also released a
plug-in for the Eclipse development environment that makes the creation
of spec-compliant BPWS4J documents a bit easier.
While on AlphaWorks, check out Robocode! It's a Java teaching tool in
which you write classes that represent fighting robots. You write a
robot and pit it against others -- very cool! Whatever happened to
Karel?