I started working on my second practical course, the distributed clipboard.
I started by creating a small firefox plugin which uses java classes but I couldn’t get it to work. I thought about the firefox plugin idea again and realized that it would be much more comfortable to have it as a standalone java application. There are a few reasons for that which are browser independence, portability, maintenance, etc… So I created a java project and doing some experiments!
The project uses maven2 for lifecycle management. The maven-jar-plugin and the maven-assembly-plugin do a good job building the project and wrapping it up in a zip/tgz file. The jar is executable and should be executable by a double-click (assuming you have a JRE installed). The result is a portable software so users will be able to use it from a thumbdrive and give it to others easily.
Using java.awt.SystemTray and java.awt.TrayIcon I managed to put an icon in the system tray which allows quick and comfortable access to the software.
At the moment I am using a self implemented UDP-Multicast service discovery to demonstrate node discovery on the LAN but I will most likely switch to JmDNS in the next days. Here is a good comparison of java mDNS implementations. There is not much going on and JmDNS seems to be worth a try. If it works (not deadlocking like the blog-entry stated) I will remove my homebrew version and switch to this mDNS implementation.
I added DistributedClipboard on new Hudson CI and whenever there is something to build he’ll do so. You can find the hudson job here and download the 20 latest builds. I will let everybody know whenever there is something to try out.
Here is the statsvn output of the source repository. If you want to track the progress feel free to take a look around.