> only JRE that have passed the TCK (Java Compatibility Kit) get the patent waiver,
No. That's not true. As long as your code is derived from OpenJDK (and unavoidably licensed under GPL), you are protected from patent lawsuits from Oracle (for technology contributed to OpenJDK). What it doesn't protect you from is trademark issues if you claim whatever thing you have is Java. You can say "pretty much compatible with that famous VM invented by Sun(TM)" and you are clear.
> And to get it certified you have to agree to a restrictive licence from Oracle
Again, the GPL states you can use OpenJDK for whatever you want. If you decide to run a nuclear reactor with it, you are free to do so (as only the Oracle JDK is licensed under such restrictive terms)
> Sun promised Apache to make the TCK available under an open licence but this never happened.
I understand this is the core of the problem. What is not clear is how this adversely affects users.
> since IBM have switched to OpenJDK, it removes that pressure and makes Java much more closed.
We still have OpenJDK licensed under GPL. How's that closed?