Weblog




RSS1 Irish
RSS2 Movable Type

Weblog

Cool Projects using JSR82 [4] : Bluecove

July 27, 2007



Another cool project using JSR82. In fact, in this case, it's a little different, as there are really two projects worth looking at here (BlueCove and MicroEmulator ). We're going to concentrate on BlueCove. Vlad Skarzhevskyy is currently the point-person for this project, which is an open-source implementation of Java APIs for Bluetooth. It's not, officially, JSR82 compliant (yet), as they'll explain themselves, and it's mainly been focused on the desktop / PC arena (as opposed to say, the embedded/mobile area).

As you can see, they've had fun and games with different Bluetooth Stacks, and certain bits of Bluetooth hardware on Windows. We share their pain :-)

As an aside, at Rococo we've looked at the MicroEmulator and think it's great, and we plan to offer an option for our Impronto Simulator users to be able to use MicroEmulator out of the box.

Anyway - over to the BlueCove Team!


1. Give us a brief description of the project. How did it come about - what was the inspiration?

Blue Cove is a Java SE library for Bluetooth. It has JSR-82 interfaces. Blue Cove library is not referred to as an implementation of JSR-82, as it doesn't pass all the JSR-82 TCK tests at this time (but we are really close). The Blue Cove Library is licensed under LGPL so it is possible to link and distribute commercial software with it.

As for the background to it, James Scott, one of the original founders, writes:

Blue Cove was created in 2004 by myself and others who were working at the time at Intel Research Cambridge, a small research lab. We wanted to use Bluetooth in Java under WinXP and WinCE, but no JSR-82 implementation existed allowing J2ME's Bluetooth calls to operate in that environment. Blue Cove was built to support a broader piece of research named Haggle, which is still alive and well (its now a European funded project, and has source code on Sourceforge as well as a webpage at http://www.haggleproject.org/ ). Eben Upton was the lead developer on Blue Cove as he was doing an internship at Intel Research during his PhD. I was supervising the project along with Christophe Diot.

Blue Cove was given its own existence since it was clearly useful to others outside the Haggle effort, and the Intel lab's policy was to publish open source code wherever possible. It proved popular, though unfortunately we had little time to support it ourselves. Ben Hui maintained a website (see benhui.net ) which had a great "howto" about using Blue Cove. Denis Labaye eventually picked up Blue Cove in May 2005 when it was dormant, and asked if he could take it over. And that's where I lose track.

I'm really happy to see continued progress in Blue Cove.

Vlad Skarzhevskyy picks up the trail:

Then the project was maintained by Paul Tötterman and he moved it to Google Code.

I joined the project in 2007 because I wanted to be able to compile and tests J2ME application using real Bluetooth connections. So the best option was to join the project and fix all the bugs. I started from creating test application to ensure interoperability with other JSR-82 implementations. Also now I'm using JSR-82 TCK tests to ensure quality of the product. In spring there was an attempt to make OS X port by Eric Wagner. In May 2007 I fixed all the bugs I was aware of and started adding ability to extend Blue Cove with support for additional Bluetooth stacks on Windows and Linux. Now Broadcom WIDCOMM stack is complete.

Also I decided to support the BlueSoleil Stack. There is ~5% (maybe more?) market coverage for this stack, and since devices for this Stack are really cheap, this attracted attentions of many students to Blue Cove project. In spite of the fact that only limited functionality is available on this stack, support for it got users attention.


2. Tell us a little bit about yourselves. What's your background? What are you working on in general?

Vlad Skarzhevskyy

I graduated Moscow Institute of Physics and Technology in 1993, M. Sc. in Applied Mathematics and Physics. Used to work DIGITAL Equipment Corporation (DEC) now I work for big corporate a provider of software and services for billing, CRM and OSS systems.

I have some Open Source development experience.
Historical: mp3bookhelper, Mp3 management tools http://mp3bookhelper.sourceforge.net/
Project completed in 2004, More than 40,000 download, 3 years since last release and still no serious defects found in application.

Now I 'm helping Bartek Teodorczyk with MicroEmulator. MicroEmulator is a pure Java implementation of J2ME in J2SE. http://www.microemu.org/. I joined project in 2006. Since then we created professionally looking website and changed the image of application.

From my point of view the MicroEmulator is an alternative to Sun's WTK. Together with another pet project (http://pyx4me.com/) collection of tools we are using to simplify J2ME build process in maven 2. This is all I need for j2me application development.

It was my desire to have JSR-82 integrated in MicroEmulator thst originally brought me to Blue Cove project.

3. How long have you been working on the project

Since January I have been working on the project three evenings in a week. This comes to approximately 500 hours, may be more. My experience with JSR-82 is dated back to 2005.

4. What stage is it at now?

The latest release 2.0.0 is really stable and all major functionality is working. The next version 2.0.1 will be very stable and mature. And all implemented functionality will conform to JSR-82 and pass the JSR-82 TCK tests. Anything that does not conform to the standard will be documented.

5. What inspired it. Were there particular limitations of JSR82 or other technology that you were trying to address?

Actually I already answered this while talking about MicroEmulator and James described the root cause. I can also put a different angle here.

I used Blue Cove for prototyping new J2ME application and found the quality of the product is not acceptable. So I bought avetanaBluetooth and was happy with it for some time until I run out of licenses and found some problems in the product that I can't fix. Also as an example, I created very simple obex-maven-plugin to install J2ME MIDlet application on OBEX Bluetooth-enabled phone via OBEX Object Push. This improved my compile/deploy cycle from 3 minutes to 30 seconds. I wanted to share this plugin....

The major reason for Blue Cove is to offer an open-sourced version. The benefit of having Open Source implementation in repository is outstanding.

6. What was the biggest problem or roadblock you had to deal with in the project?

Stability of Microsoft Bluetooth Stack. It took me weeks of running long-running continuous tests until I found that the problem can be solved simply by using different Bluetooth USB dongle D-Link DBT-120 instead of Microsoft Wireless Transceiver for Bluetooth 2.0.

Also I spend two weekends figuring out how to properly integrate with the Broadcom stack. Application was crashing, JVM crashing, I was ready to give-up. By the end solution was very simple: compile switch for C++. I had nobody to ask and nobody to help. If I would have minimum support from Broadcom I would have spent much less time.

7. How do you see the results of the project being used?

I expect to create stable java library that can be used on 99% of Bluetooth enabled desktops. Even if it can't be certified by Motorola and can't be legally called "JSR-82 implementation" it will help to create Java desktop applications that need Bluetooth connections. For example, Medical applications, Monitoring and Connectivity applications.

Also I expect that students are starting to learn JSR-82 using Blue Cove. I'm answering all the question I'm receiving by e-mail no matter how simple they are.

Another hope I have is that if I achieve quality and acceptance of the product this all will improve JSR-82 implementations on Mobile devices.

8. What's next? What do you hope to work on over the next 12 months?

Next would be OBEX, Linux BlueZ and Windows TOSHIBA stack. This way we can cover all JSR-82 PC market :) Also I have an idea of adding JSR-82 emulator so J2ME application communications can be automatically tested and demonstrated on the website together with MicroEmulator.

For now I'm the only one active on the project so it may take some time. But you see how many hand this project had changed.... Hope one day I will receive a letter form a professional like me saying "I'd like to join and I have 5 hours a week to spend on Open Source development".

Recently I contacted big corporation and there was a time when they agreed to help me with Blue Cove, but by the end I still with no support. They just need to give a little more hope into open source and Corporate and Open worlds can mutually beneficially coexist.

Personally I hope not to give up on the project even when Motorola realises JSR-82 RI under the Apache License. I'm committed to quality. I may be busy doing other interesting work but I will keep Blue Cove quality in my hands.

9. Anything else I should have asked you? Anything else you'd like to say?

I would like to thank Motorola for making an efforts to move to open source. Hope that some time in a future my employer also will be joining Open Source movement. I think that future is in the professional Open source.

Ask me what is my dream? One day I come to work and my Manager say: "From now on you should spend 5 hours of you working week on any open source project of your choice".











Posted by Sean at July 27, 2007 10:56 AM

Comments

Cool interview! Congrats for BlueCove! It is a really cool project. I do recommend if you are going to create Java Bluetooth applications in Windows.
Thanks!

Posted by: Bruno Ghisi at July 29, 2007 06:25 PM

Thanks Vlad for your efforts on Bluecove!
I looked at it just a year ago and dismissed it because it couldn't interface the widcomm stack. Now I see it does. Nice work!!!
It's really appreciated.

Posted by: Mike at September 29, 2007 11:14 AM

I realized an interesting project using BlueCove

http://doc.javastaff.com/?p=159

Slideshow of what ever you want from a cell phone and i really like BlueCove implementation. I hope there will be available also for Linux/MacOSX.
Great work :)

Posted by: Federico at November 9, 2007 05:07 PM

Post a comment


Name:








Remember personal info?