The session composition this year seems to favor CTO's, inventors, and open-source principal maintainers leading the sessions. Past conferences highlighted trends and new patterns and were a little more removed from the actual projects that implement the patterns.
Mule 2 and Spring 2
Ross Mason, the CTO at MuleSource talked about the upcoming Mule 2.0 integration framework and messaging platform and how Mule 2.0 is influenced by and supports Spring 2.0. Mule may be compared to enterprise service bus (ESB) tools from commercial vendors like TIBCO, BEA, and IBM. Mule is open-source using a version of the Mozilla Public License. Mason reports a strong Mule community with 650,00 downloads, 1000 on the users list, 250 deployments, 4 million Web pages served, and 6 fortune 50 users.
The room was full of developers interested in Mule, most of them already use Spring. Mason directed the attendees to consider that while Spring provides a good development framework, that Mule provides a very good runtime environment. In both cases Java developers are working with Plain Old Java Objects (POJOs) that become services using Spring and are deployed to a service bus using Mule. Mason told attendees Mule is ideal for situations where a POJO-created service will be under heavy load, with lots of concurrent requests, shared POJO functions between multiple applications, and using mix-and-match synchronous, asynchronous, and request/response patterns. Mule supports 30 transports, including XA and local transaction support with Spring transactions. Mule offers "no code" protocol bridging and features orchestration, routing (split/aggregate) and events.
Spring 2.0 enables Mule to do namespace handlers (no need for class names, instead Mule defines properties in a schema and offers validation that properties are set correctly,) new orchestration like Java contract based messaging, and Aspect Oriented Programming (AOP) and OSGi hot deployment of services.
OSGi was new to most TSSJS attendees and so Mason provided an overview and talked about its influence on Mule. OSGi is Service Oriented framework to dynamically publish bundles of services. The OSGi service registry allows bundles to find and bind to other services. OSGi gives Mule hot deployment of services, endpoints, and transformers. Spring-OSGi uses the Spring container to configure modules (bundles). OSGi provides abstraction over different OSGi implementations, including Equinox, Felix, and Knopflerfish.
Mule 2.0 will also increase usability by finally adding a nice visualization that shows a map of how services are calling other services.
Mule streaming allows services to consume very large events in an efficient way, including payloads being streamed and simple routing rules are based on event meta-data in the header. Mule also combines streaming and non-streaming endpoints.
Other Mule 2.0 goodies include a configuration repository. Mason told attendees that some Mule customers have 30 Mule instances running and have plans to go to 10,000. In that environment the Mule properties mechanism does not work and so Mule will come with a management repository service.
Mason discussed enhancements to the Mule IDE, an Eclipse-based, project wizard with visual drag-and-drop features coming in Mule 2.0. Mason said they are in alpha today with an internal only release and they are looking to public beta real-soon-now.
Mason fielded a few questions:
- "Are there plans for Mule mapping and SCA " From the Mule perspective SCA is a way to wire services together in a uniform way. Mason said SCA is a good fit for Mule and that there plans for Mule configuration will use the SCA configuration. Mule is talking with Tuscany project for an SCA implementation.
- "Are there plans for Mule mapping to JBI?" Mason said Mule can be embedded in a JBI container but he was unsupportive of JBI. Mason said JBI solves the subset problems for integration application development while Mule solves problems at the messaging level. Mason told attendees in his opinion that JBI attempts to standardize a solution to integration solutions where in reality most enterprise customers have different and unique needs. Consequently Mule will not standardize and provide Mule as a JBI container.
- "How is Mule different from TIBCO Business Works and other commercial tools?" Mason told attendees that commercial vendors provide an entire methodology and provide all the tools around it. The generated code is usually complex. Mule is more agile and lets you dive into the code easily.
I listened to a few developers talking about SOA and loose coupling. From their perspective loose coupling has come to mean something different from its original definition. When Web Services were new the idea of loose coupling meant "easy" coupling, where WSDL defined the interface and an easy-to-use tool made binding your application (consumer) to a service straight-forward and required little or no coding. Now that Web Services are in production and being changed from maintenance efforts, loose coupling today means the ability to make a change to the server without requiring recompilation and redeployment of the consumer. The servers are now dynamic and the consumer's static. Deployments that require changes in existing consumers are painful.
Testing with Selenium
Neal Ford of ThoughtWorks. ThoughtWorks.com gave a good presentation of the Selenium browser-based validation test suite. Selenium is one of many record-playback tests suites (Water, asahi, jrobot, TestGen4Web, TestMaker) and Ford said Selenium was the best for testing Ajax applications. Ford said jwebunit and httpunit can't support AJAX testing. Ford told attendees that Selenium provides access to everything in a Web page and includes functions to validate Web pages using element locators, patterns, actions, assessors (to store results in variables), and assertions (to validate results.)
One attendee asked how Selenium could record the time it takes to respond to a request. Ford said Selenium users set time-outs for a request but Selenium is not in any way a performance test product. Ford pointed-out that time-outs are good for testing AJAX applications where response time from the server is important.
While Selenium has its roots at ThoughtWorks, a system integration company, Selenium is open-source under an Apache license and attracted a vibrant and energetic Selenium community according to Ford. For example, Ford notes a user in the community contributed Selenium's XPath capability to validate results.
Selnium Runtime is the play-back component of Selinium. It is a powerful multiple platform environment that enables users to test Web applications across platforms. For instance, a single runtime engine commands multiple test machines where one test machine runs Microsoft Internet Explorer 6 for Windows and a second test runs Firefox for Mac OS X.
Selenium uses a declarative language so there are no loops or conditionals. One asserts declarations to validate results of a request. Selenium users have their choice of language support (Java, .NET, Perl, Python and Ruby.)
Ford described many advanced record-playback situations that Selenium is particularly strong at, including recording a back-button and refresh-command, testing namespaces, and supporting Microsoft NTLM authentication. Selenium comes with the JSUnit testing framework integrated. It supports HTTPS, however, users must support the SSL certificate dialogue by defining actions to take when the dialogue appears.
Selenium was in beta for the past 2 years and the project expects to release a 1.0 release real-soon-now. Ford told attendees that Selenium used Chris Pederick's Toolbar project in Selenium. Ford said after 1.0 the project will focus on documentation for user defined drivers and in the distant future will include an SDL-like scripting language to supplement Selenium's HTML features.
State of AJAX
Dion Almeer and Ben Galbraith of Ajaxian gave an excellent overview of the state of Ajax development. They began with an overview of the three main Ajax architectures:
- Return Data, for instance JSON and XML
- Return HTML, for instance responseText and inner HTML
Almeer and Galbraith described three popular Ajax development frameworks:
- jMaki is a wrapper around popular client side Ajax frameworks. jMaki comes with PHP, JSF tags, and is part of Sun Web Developer Pack. The Pack strangely enough includes Phobos that Almeer and Galbraith describe as "Kind of a Ruby on Rails like application server with early access JSF extensions and WADL support.
- Direct Web Remoting (DWR) adds a servlet to your project, creates a DWR configuration file, and runs in your browser.
Additional tools covered in the talk include InteliJ IDEA, NetBeans 5.5, Firebug for Firefox, and Safari Drosera
Almeer and Galbraith talked about the significant improvements in 2D graphic rendering using the Canvas tag in Firefox, Safari, and Opera. Google provides a bridge to do 2D in MS IE too. Almeer and Galbraith noted that Canvas is getting most of the attention over SVG.
Almeer and Galbraith finished the session by talking about their visions of the Ajax future, including server-less AJAX using Amazon provided storage, Amazon EC2 provided hosting, and local persistent storage. They see a list of things on the horizon, including:
- Apollo as the Web+ Platform?
- Off-line Ajax Abundant
- Abundant custom rendering
- "Wow" versus the Web, where desktop application frameworks, including Microsoft Web Presentation Framework, Apple, Sun Swing improvements, are on the move to compete with Ajax.
- HTML 5