This question seems to get asked fairly frequently and since there is no page clearly explaining this, here is one!
At the time of writing this, the latest version of JDK6 (the proprietary Oracle version) is u25. The latest OpenJDK6 release right now is b22. So what is going on? Why is OpenJDK6 so far behind JDK6? Well, it is not.
The uXX numbering for the proprietary JDK is completely unrelated to the bYY releases of OpenJDK and any comparison of the two is meaningless. This image (taken from my RedHat Summit 2011 slides) explains how OpenJDK6 came into being:
The filled arrows going between JDK7 and OpenJDK7 indicate that the two sources are very similar (about 95% according to the last heard count). The empty arrows between OpenJDK7 and OpenJDK6 indicate backports.
OpenJDK6 was created from OpenJDK7 by removing Java 7 specific items from the code. Development of OpenJDK6 today largely consists of backporting fixes from OpenJDK7 and keeping security fixes up-to-date.
In terms of bug fixes, a comparison is not easily possible because the code bases differ and a bug that manifests in JDK6 may not manifest in OpenJDK6 and vice versa. OpenJDK6 bugs are fixed as they are encountered/reported.
In terms of features, JDK6 is in maintenance mode and therefore does not add features in its updates. The same applies to OpenJDK6. If any feature/API change were to be made to JDK6 in the future, OpenJDK6 would follow suite accordingly.
So the next time you see a higher update number of _either_ of JDK6 or OpenJDK6, promptly ignore it because it is like comparing apples and oranges 🙂