Some news…

February 2nd, 2008

It’s been a while since my last update on this blog.

The main reason is that I’m now blogging most of the Amazon Web Services and IntelliJ plugins related content to a new blog call Elastic Grid Blog.

As said on this blog, Dennis Reedy (Rio founder) and I have been selected to a BoF session at JavaOne 08. We hope to see you there!

Book Review: XQuery

August 27th, 2007

I forgot to speak on this blog about the book review I wrote on the excellent XQuery book.

It is available online on Javalobby website at http://www.javalobby.org/articles/xquery/.

Berkeley DB (JE) plugin for IntelliJ IDEA version 1.1

August 27th, 2007

I have updated the Berkeley DB (Java Edition) plugin for IntelliJ IDEA.

This new version introduces the ability to browse stores by primary keys and secondary keys (you have to click on the index you’d like to browse).
Minor changes includes: secondary keys now displayed with cardinality and related entity information, all entity fields are now displayed.

New major version of the JiBX plugin for IntelliJ

July 28th, 2007

I have updated the JiBX plugin.

This new version introduces:

  • navigation between the XML binding file and the corresponding Java code (at least on a class and field level),
  • errors annotations (for example if your binding if broken and mapping to a missing Java field),
  • refactoring (your binding will automatically be updated when you rename your Java field).

As this version introduces many features, I’d be happy to have some feedback on potential errors I may have left.

I hope this new version be prove to be useful to anyone besides me :-)

JiBX plugin for IntelliJ IDEA version 1.1.5

July 12th, 2007

I’ve updated the JiBX plugin late yesterday.

This new version should work for version 5, 6 and 7 (EAP).

The biggest improvement is error reporting. Now you have direct access to the right place in your binding file where the error occurred.

Useful trick for Rio command-line tools (known as CLI)

June 3rd, 2007

I’ve always wondered how the Rio CLI tools could support up & down keys in order to recall previous commands.

I found a solution on the Berkeley DBXML FAQ: use rlwrap.

So, instead of running “rio”, run instead “rlwrap rio”.

Simple, but useful :-)

Google Developer Day 2007

May 31st, 2007

I’m in Paris, France, at the Google Developer Day 2007.

This day has started a few hours ago (2pm, Paris time).

So far, I’ve been watching a presentation on GData API. Although the speakers are nice, I was a bit disappointed because the talk was too much a high-level session. I expected some information not available on the official Google website for developers, like feedback from real-world experiences/projects based on Google APIs, cool stuff built on top of it, announcements or in-depth knowledge.

Hopefully, at the end of the day there will be a live video conference with the Google Developer Day in Moutain View, probably where the pulse of this day will be given :-)

Integration between Tapestry 5 and Jini

March 16th, 2007

I am a big fan of Tapestry 5. This version is a huge improvement over version 4.

Recently some integration were committed for support of Spring and Hibernate. I decided that I should spend a bit of time understanding how they were written so that I could write a tapestry-jini integration module.

Two hours later, I have a simple module easing development…
I can now inject proxies of Jini services using the regular @Inject annotation.

Here is how it looks like when you want to inject the proxy of the JavaSpace service:

@Inject("jini:net.jini.space.JavaSpace")
private JavaSpace space;

Could it be easier? :-p

Now, for the fun (and still useful — this is the first reason why I did write this module), I can have my page adapt to the presence of Jini services in the network, and display an alternative HTML chunk if a service is down.

Here is the version when the JavaSpace service is down:
tapestry-jini-failure

Here is the version when the JavaSpace service is running:
tapestry-jini-success
And finally here are the 9 lines (yes, 9 lines only!) of code you need in order to deal with this properly:
tapestry-jini-code-sample
I need to improve this module (especially provide support for searches of Jini services based on something else than an interface), but the basic idea is here and ready. And best of all, it offers ease of usage and a good implementation of Jini services lookup (especially using the lookup cache).

So congrats to the Tapestry developers!

Now it’s even easier to install Rio and code with Jini

February 28th, 2007

I have just updated the Rio installers. This new version updates code to the latest version of Rio as of today.

But what is even more interesting is that now by default Jini is bundled so you don’t need to install Jini before installing Rio.

Let me know if you experience any issue or if there are some things which you are in need of.

Update of the JiBX plugin for Maven 2

February 8th, 2007

I’ve taking a bit of time tonight in order to update the Maven 2 plugin.

This new version uses JiBX 1.1.3. The version of the plugin matches the one of the JiBX distribution, so do not forget to update the version of the plugin you are using.

Administration of Jini and Rio services over Jabber

January 1st, 2007

I have been working today on the idea I talked about yesterday: running Rio CLI commands over Jabber.

Here is below a screenshot of a Jabber session (using iChat) with the JSB managing the administration of Rio:

The text in blue is commands typed by the administrator (me in this case), while the text in orange is the output of the JSB.

As you can see, this JSB also displays with SLA events.

I will try to improve it a bit before releasing it into the Rio Utilities sub-project.

Rio service talking to humans over Jabber

December 31st, 2006

I’ve been experiencing a bit with integration between Rio services and instant messaging services. What I’ve been able to do so far is illustrated on the following screenshot:
Rio JSB talking with a human over Jabber

The JSB opens a Jabber connection (with the help of Smack) with an iChat server (which is also a Jabber server), creates (or joins) a chatroom, invite some users and logs some few messages.

What is even nicer is that it would be really easy to add support for CLI (new Rio command-line utility) over Jabber. That would mean administration of the Rio platform using Jabber from anywhere in the world. Security can also be activated with a password protected chatroom.

I’ll try to write a dedicated Rio JSB dealing with CLI commands, instead of plugging some Smack code in my own JSBs.

Jini/Rio training — Day 3

December 7th, 2006

The last day of the training was oriented towards grid computing. I began by demonstrating a space-based grid computing platform (running two different kind of jobs). The nice thing about this demonstration is that is it a perfect example in order to illustrate some key functionalities of Jini and Rio such as: the workers do not need to know the jobs they will execute, you do not need to alter your cybernodes when droping new kind of jobs, you can move workers around the cluster and increase/decrease the number of workers you have, etc.

I explained how I wrote the server, the basic contract of each task, the implementations of two different tasks, and finally the “clients” publishing task requests in the space and picking the tasks results.

On top of this, I added many Rio watches in order to monitor AND react to the number of requests processed by workers, the rate of requests per second the worker was able to achieve, and the time needed to process a task.

Here are various screenshots taken while demonstrating the compute server platform (click on the pictures for higher resolution):

Jini/Rio training — Day 2

December 6th, 2006

The second day of the training was much better than the first day. Trainees were able to adapt the first example I explained them yesterday (simple Echo Jini service).

I asked them to write a Add service, adding two integers. They had to write the whole thing: a smart proxy (simply dumping log statements and calling the remote backend), the implementation of the service, a server registering the proxy in the lookup service and servicing client calls, and of course a client looking up the service and using it. Based on what I did for the Echo service, they were able to replicate most of the stuff and adapt it for their service.

During the second day of the training, I had enough time to show them how to write the same service using Rio facilities instead of Jini core infrastructure. The nice thing about this is that they were able to understand how Rio simplified code and what it gave them for free (provisioning and such). I took this opportunity to explain them the OpStrings (Rio deployment descriptors) and show them the various tools packaged in Rio.

The second day finished with an exercice based on my second example: they had to rewrite their Add service with Rio instead of “bare” Jini.

Note: whenever you’ll have to do some kind of training, do not forget that you’ll probably have to make the students work in isolation from each other when developing, while when demonstrating you’ll want them to be in the “same cluster”. Switching between the two proved to be a bit painful.

Here are some pictures from Day 2 (click on the pictures for higher resolution):

Jini/Rio training — Day 1

December 5th, 2006

I have been teaching Jini and Rio (in French) this week for some consultants working for StepInfo. The training was spread over 3 days, starting from 7.30pm to 9.30pm (although the first two days finished at 10.30pm). Day 1 was mostly a theory session while the two other days were practice.

Overall the training as been a success, and I’ve been able to demonstrate most of the good stuff Jini and Rio provides.

Here are some screenshots I made during day one:

I do plan to commit the examples I wrote into Rio and will later on write a tutorial (in english) based on those examples so that beginners can play a bit with Rio.

I will post some more screenshots in a few days and possibly some videos too.

Updated JiBX plugin for IntelliJ IDEA

December 5th, 2006

The plugin has been updated to JiBX version 1.1.

Make sure your project also uses JiBX 1.1 though.

Update of the Rio installer…

November 28th, 2006

The updated installer now includes Rio examples that were added in Subversion a few minutes ago.

Enjoy it!

New installer for Rio/Jini

November 21st, 2006

I have created a rio-installers project (subproject of the Rio one) which provides for now on a Java installer (made with the help of IzPack).

You can download the installer for Rio (Subversion version) and just need to install Jini before in order to get everything ready in order to start development with Rio.

Dennis Reedy is working on examples and I’ll try to update the installer in order to make it more obvious to use the examples.

Update: the installer has been updated since this post and now there is no need anymore to install Jini before installing Rio (Jini libraries are bundled in Rio distribution).

10th Jini Community Meeting: Jini and firewalls

September 13th, 2006

Obviously, this thing is not going to be any simpler soon. Mark Brouwer is doig a great job explaining the challenges, what’s available today and how his project simplifies things.

Using his project in order to cross firewalls should only be a matter of configuration, remember how powerful Jini’s configuration system is.

His project might prove to be useful for my project later on because I’ll have to create federation of Jini “clusters” and I’m not sure Lincoln (tunnelling tool part of Rio) will be enough.

10th Jini Community Meeting: GigaSpaces, Spring, etc.

September 13th, 2006

Dennis Reedy, the one behind Rio and now employed at GigaSpaces, is doing a really nice presentation on what GigaSpaces (and various opensource modules) provides for Spring: essentially automatic export of Spring beans as Jini services, Spring remoting support through JavaSpace (kind of RPC communication with async messages).