<< May 2008 | Home | July 2008 >>

Red Hat Settles Hibernate Patent Dispute With Firestar/DataTern

I didn't pay attention to the following news item until today. After all, it is not unusual for Red Hat or other Linux companies to face intellectual property challenges. What I did not grasp is that this time, the dispute is not about Linux. It's about JBoss, and specifically, about Hibernate. You wouldn't have guessed it by reading the Red Hat press release:

Red Hat: Red Hat was sued for patent infringement by Firestar in 2006 and later by DataTern. Red Hat denied the infringement claims and in time drove a settlement that not only ended the particular claims against it, but also provided for extensive protections for its customers and the larger open source community that Red Hat relies upon.

However, a little googling showed more information about the suit:

Dennis Crouch, Patently-O: Software company FireStar has filed suit against open source seller Red Hat, alleging patent infringement.  The suit, filed in the Eastern District of Texas, asserts infringement of U.S. Patent No. 6,101,502 that is directed to a method of interfacing an object oriented software application with a relational database. Red Hat recently purched JBoss maker of the specific accused product Hibernate 3.0.

and the settlement:

Dawn Kawamoto, C|Net: Under the settlement, whose financial terms were not disclosed, all software distributed under Red Hat's brands and predecessor versions are covered, as well as Red Hat customers that use the software. The software protects derivative works, or combination products, that use covered products from the patent claim.

The patent involved, U.S. Patent No. 6,101,502, reads like common sense that shouldn't be allowed to be patented. However I'm not a lawyer, so I wouldn't know for sure.

However, the way I read the articles, if you are using Hibernate and you are not a Red Hat customer, or part of the larger open source community that Red Hat relies upon, you are still at risk of being sued by Firestar/DataTern, or whoever they sell this patent to in the future, for patent infringement.

Ouch!

Saturday Recipe: Rice Congee

Wikipedia calls it rice congee. I call it xifan (稀饭). You don't usually find them in Chinese restaurants in the United States. It's super easy to make:

  • ¾ cup long grain white rice
  • 7½ cups of cold water

(My rice measuring cup is ¾ cup big. So for me it's 1 cup rice and 10 cups water.)

Put on high heat in a stockpot for 10 minutes or till the water boils. Reduce the heat to medium-high (8 on my dial) and let it simmer for 20 minutes. Stir every so often (especially during the minutes before the water boils) to prevent the rice from sticking to the bottom of the pot and get burned.

This is what I would make when I don't want to have a big dinner:

"What do you want for dinner?"
"We had a big lunch. I'm not hungry. Let's have xifan."

It goes well with any kind of seasoning. When I'm lazy, I'll just have xifan with pickled cucumber from the jar.

But I do remember having xifan with crushed roasted sesame seeds, salt, and sugar as a little boy.

Tags :

OpenDDS 1.1 Released

Jonathan has announced a new release of OpenDDS, an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS) by OCI.

OpenDDS.org:

Version 1.1 Released

We are pleased to announce the release of OpenDDS version 1.1!

  • More QoS features have been implemented
  • dispose() notifications have been added
  • Added IPv6 support
  • Improved memory management
  • Multicast transport improvements
  • Implemented Changeable QoS policies
  • Use multiple DCPSInfoRepos
  • Documentation updates
  • New tests and examples

See the Release Notes for details.

Friday Java Quiz: Know Your Interfaces

We go back to basics this week.

Q: Given the following interface definition:

interface Foo {
  int ZERO = 0;
  public int ONE = 1;
  public static int TWO = 2;
  public static final int THREE = 3;

  void first();
  abstract void second();
  public abstract void third();
}

Which of the following are true (choose all that apply):

  1. ZERO is not public
  2. ONE is not static
  3. TWO is not final
  4. first() is not abstract
  5. second() is not public
  6. None of the above
  7. One of the above
  8. Two of the above
  9. Three of the above
  10. All of the above

And we revert back to strict rules: no books, no googling, no internet, no compiling. Just stare at the code and think.

Tags :

A Free JDK Finally Arrives

It turns out that my prediction of a Free Software JDK was 1249 days too premature.

It's been more than three years since that post, but a Free JDK is finally here:

Rich Sharple: This week the IcedTea Project reached an important milestone - The latest OpenJDK binary included in Fedora 9 (x86 and x86_64) passes the rigorous Java Test Compatibility Kit (TCK). This means that it provides all the required Java APIs and behaves like any other Java SE 6 implementation - in keeping with the portability goal of the Java platform.

Hopefully, a free JDK will find its way into other Linux distributions, like Debian.

Jiaozi: A Chinese Favorite

(Via Ruan YiFeng's Blog.)

Ahead of the 2008 Beijing Summer Olympics, the Beijing Tourist Bureau announced a draft of new guidelines for the English translation of 2753 names of Chinese foods.

Although Chinese restaurants are numerous in the United States, the names of Chinese food items are sometimes awkward. Unlike the Italians, who call a pizza a pizza, or the Japanese, who call sushi sushi, or the Indians, who call a naan a naan, or the Koreans, who call kimchi kimchi, the Chinese seem too eager to abandon the original Chinese name of their food items and go with something that's easier to understand.

(The same phenomenon happens the other way around too. Guess what "foreign persimmon" is in China?)

A chief example is Chinese dumplings, which encompass a whole category of foods, each item with a distinct original Chinese name. The new draft addresses this problem by adopting the different Chinese names in their pinyin form. Thus we have jiaozi (Chinese dumplings) and guotie (fried Chinese dumpling).

Although the guidelines is meant only for restaurants in Beijing, I hope the proper Chinese name will spread worldwide.

Tags :

Firefox 3 Download Day

I wouldn't have known this had I not bumped into a rant by Stephen Colebourne about the timing of the planned download day.

According to the Mozilla Blog, the Firefox 3 release and download day is today (June 17, 2008) and will begin around 10:00 a.m. PDT, which will be 12:00 p.m. CDT (our time). You still have time to pledge that you will download Firefox 3 on the first day of release.

The word on the street is that the final release will be exactly the same as the RC3, which I have been using lately and encountered very little problems.

The most interesting feature of Firefox 3, for me at least, is its support for the New Java Plugin, which I hope will bring about a renaissance of Java on the desktop.

[Update] Great. Now that they've focused the attention of 1.7 million users to go to their website around the same moment, guess what that website looks like? It's slashdotted!

Friday Java Quiz: PECS

Oops. I almost forgot it's Friday. Better put the quiz out.

This one should be easy because it's an open-book/open-web quiz. You are allowed to use everything at your disposal, Google, the free chapter of a book you downloaded from InfoQ last week, etc., to answer the question.

Q: What does PECS stand for?

The only requirement is that the answer has to be Java related.

Tags :

JNI FAQ: UnsatisfiedLinkError

I was asked questions similar to the following one quite a few times recently:

[weiqi@gao] $ java Main
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Foo in java.librar
y.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1030)
        at Foo.(Foo.java:3)
        at Main.main(Main.java:3)

This question is most prone to be asked by C++ programmers working in a hybrid C++/JNI/Java environment, usually prefixed with "I'm trying to run our test suite, but am getting the following error. Any ideas?"

Here's my response in a email yesterday, posted here through the "Pull email response up to blog entry" refactoring pattern (the answer is Linux specific, but can be translated to other OSes with minimal effort):

This is the part that trips up people all the time. Look at it this way:

  1. Your Main class uses the Foo class
  2. The Foo class uses the libFoo.so JNI glue library. Foo probably looks like this:
    public class Foo {
        static {
          System.loadLibrary("Foo");
        }
        // ...
      }
  3. The libFoo.so JNI glue library uses underlying C++ *.so libraries

The manner through which java searches for the needed files are different in each scenario:

  1. Java searches for *.class files through the "-cp"/"-classpath" command line switch. If neither are specified on the command line, $CLASSPATH is searched
  2. Java searches for JNI glue *.so files through the "-Djava.library.path" command line switch. If "-Djava.library.path" is not specified, $LD_LIBRARY_PATH is searched, but the /etc/ld.so.conf mechanism is not used
  3. The way a JNI glue library searches for the underlying C++ *.so libraries is not controlled by the Java process at all. This is just a case where one *.so library is linked to other *.so libraries. The normal operating system rules apply ($LD_LIBRARY_PATH, /etc/ld.so.conf, etc.)

So you need "-Djava.library.path=...:/path/to/dir-of-libFoo:..." on your java command line. Or add /path/to/dir-of-libFoo to your $LD_LIBRARY_PATH.

As you can see, it's quite a long winded explanation (like a lot of things Java). And even this is not the most thorough. The key insight is the jump from the highlighted part of the stack trace to the corresponding conclusion #2.

Tags :

Java News Brief (JNB): ANTLR 3.0

This month's OCI Java News Brief (JNB) article is out. In this article, Mark Volkmann continues his effort in getting you to be proficient with ANTLR 3.0. (Actually, you need ANTLR 3.1b1 to compile the grammars in the article.)

Mark Volkmann:

ANTLR 3.0

by
R. Mark Volkmann, Partner/Software Engineer
Object Computing, Inc. (OCI)

Table of Contents

As always with JNB articles, this one is intended for you to follow along. So download ANTLR 3.1b1, fire up your bash and vim, and learn some language recognition tricks.

On a related note, Martin Fowler recently blogged about a phenomenon he calls Parser Fear:

Martin Fowler: I talk quite a bit with people about DomainSpecificLanguages these days and a common reaction I get to external DSLs is that it's hard to write a parser.

He went on to say that creating an external DSL with ANTLR is just as fast as using XML files, where supposedly you get the parser for free.

Tags :

My Daughter Thinks This Is Funny

Proof yet again that Google knows, even if you misspelled my name!

Do you mean Weiqi Gao?
Tags :