Apache Camel

MyEclipseCon Tuesday

Talk about a late blog entry. I’m just enjoying this EclipseCon too much. Here’s my plan for Tuesday, that is today.

Keynote

Oracle will be (were) here to tell us about the future of Java. Multiple modularity systems (sigh) with some kind of paste on top to hide which one you are using, a nice JavaFX authoring tool that will allow you to create vibrating animated rockets and JDK 7 to be shipped as fast as possible.

Tutorial

It was a tough choice again - Server-side Web Applications, Anatomy of e4, Getting Started with EclipseRT, all sounded great, but I’m currently in the JDT Fundamentals tutorial, learning about the three pillars of JDT (java model, search engine, AST), the APIs of each and how to use them. It’s not by any means trivial, but it is definitely very cool. They have given so much thought to performance and cost of usage in the APIs. Kudos.

I made this choice because part of the work we did in Progress on a UI for Apache Camel included an Eclipse view that rendered the Camel route, based on the content of a Java editor where the developer was using the fluent builder APIs. We did this by walking the JDT AST and constructing a model that could be rendered. The result was a better user experience for people using Java as the route definition language - they could simply glance at the diagram of the route to ensure that the Java they were writing was correctly expressing their intent. I didn’t write this code, but I’d like to know how it works, and this JDT tutorial might help me with that (partial ASTs FTW, I think).

Talks


My first choice is Textual Modeling Tools: overview and penalty shoot-out. This is a comparison study of a number of text modeling tools. Top tip to presenters in the future - more of this kind of thing, please. Comparison studies are extremely valuable for developers and product managers that need to make technology choices. It’s even more important in a big wide space like the Modeling Project where there are many projects that appear to have overlapping capabilities.

Second talk - Documentation: Single-Sourcing, Crowd-Sourcing And Other Voodoo. Documentation is the Achilles heel of many Open Source projects. In a sweeping generalization, I hereby declare that developers like to focus on code and tests, and not so much the explanations in natural language. Couple this with a ‘read the code’ type of arrogance that sometime pops up and you have a project that has a serious bar to entry for new contributors. One thing that might help stave off that kind of situation is to have a very functional way to contribute documentation, thought out as a first-order plan rather than an afterthought, which permits the spreading of a wide net and makes it really really easy for contributors to add snippets and fix issues. Maybe there will be some solutions in this talk.

Talk three - one of those rarely-observed Extended Talks - OSGi Best and Worst Practices. I’ve been looking over zx’s shoulder as he has been putting this together and it looks like there is a bit of presentation zen going on with good dollop of humour as well as good, solid information, so looking forward to it.

Note to presenters: the primary purpose of a presentation is to entertain, the secondary purpose is to inform. Let’s face it - if you are not entertaining the crowd, they are going to get up and leave before you get a chance to give them data.

Talk number four is another Extended Talk, and it is definitely going to be Graphiti - The Graphical Tooling Infrastructure Speaking Plain Java. I am totally looking forward to this, because I’m a bit excited about this project and can’t wait to get my hands on it :)

Talk five - I can’t believe there will be this many talks - I’m not so sure about. Using JPA in OSGi might be the one - I have seen so many developers in trouble trying to get this running it would be good to know how to do it. The Towards Contributors Heaven: from CVS and SVN to EGit/JGit talk will be interesting, but I think I know that well enough. How to make a framework plugin that doesn’t suck could be good too - the speaker has a lot of experience in developing Eclipse tools. I don’t know if he will be wearing his Superman shirt for this gig, however.

Panels


I’ll be on the Build and Continuous Integration with Eclipse panel.

Unconference


I think I’ll do an Unconference presentation this evening, what topic, I don’t know just yet. Will decide during the Reception ;-)

Announcing: FUSE Integration Designer 1.2

Phew. It’s out the door. FUSE Integration Designer 1.2 is now available for download.

This release follows on from a couple of preview releases that we ran to gauge our approaches and get feedback. And we got plenty of it, in all flavours.

You might already know what FUSE is about - it’s four popular Apache projects (ActiveMQ, Camel, CXF, ServiceMix), bundled together into a single offering with subscription-based support from Progress Software. These four projects bring together capabilities around messaging, Web services, message mediation and the ESB concept, the idea being to give you a grab-bag of goodies that make sense when you are trying to solve integration problems.

As you might imagine, it’s an interesting task to put together a toolset that lets you blend these technologies in way that can suit every integration issue. In our preview versions, we concentrated on visualization and debugging of Camel routes and creation of Web services. I think the first thing we learned was that users tended to hit the limits of the tool far too quickly - the routes, for example, had a limited set of capabilities that was outstripped by what Camel had to offer. So we concentrated on making sure that the tool could handle any (1.5 or 1.6) route configuration you could throw at it. Let me know if you break it :)

We also filled in some glaring holes in the preview - you can now deploy your Web services to ServiceMix 3.x and ServiceMix 4.x containers, for example, and we have put in some tools that will let you rummage around inside your ActiveMQ message broker, introspect the queues and topics, inject messages for testing and snoop on messages that are going by. You can save and reload your state too, so it’s possible to set up and share a set of messages and configurations for testing or joint review.

There’s more, of course.

The previews were delivered solely as an Eclipse update site, which could be a bit of a bear to interact with. This time around, you download zip files that have everything - Eclipse core, dependencies, FUSE code, the works. They are big ok, but it means that you get everything in one swoop. There’s online help in there, and some cheatsheets to get you started.

Try it out - download is here, forum is here - and let us know what you think.

What next? The radar is moving on to things like JAX-RS tooling, Camel 2.0 support (runtimes go faster than tools, that’s why they are called runtimes, natch), getting a deep integration with m2eclipse and such like other tasty treats. If you’ve got a hankering for anything particular, let it be known in our tools forum.

By-the-by, since we are all Twittertastic these days, you can get more FUSE news by subscribing to @fusenews or indeed subject yourself to my edgy waffling at @oisin.

Camel Spit

What goes into a When?
Isn’t it great when you get an excuse to learn something? Even though you have a to-do list the length of your leg already?  Inspired by this potential enhancement to Apache Camel, intrigued by Xtext and (crucially) enabled by two full batteries and a flight to Boston, I hacked up a simple grammar for a DSL to describe Apache Camel routes and generated a syntax-checking Eclipse editor. It’s not pretty yet, but you can see the result at the Camel Extra project - introducing the charmingly named Camel Spit.