> You can't revoke a GPL license unless the licensee violated the GPL
Probably true for GPLv3, because GPLv3 actually says that it is irrevocable. OpenJDK is under GPLv2, which does not say anything about revocation. It is an open question whether or not GPLv2 can be revoked.
> Additionally, the GPL has this nifty "Automatic Licensing of Downstream Recipients" clause. In other words, if you put some code out there under the GPL, there is no way for you to un-GPL that particular code
That clause actually makes it more likely that GPLv2 could be at least partly revoked, because the full text is:
> Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor [...]
It's that "original licensor" part that makes partial revocation a possibility.
What if the original licensor simply says that they are no longer granting new licenses? Everyone who already has a license can continue to use the software, but new recipients no longer can get a license? (That's what I meant by "partly revoked" earlier--existing copies remain OK, but the spread of them, or derivative works of them, is stopped).
What happens then is a mess. Even figuring out who has standing to sue to try to make license issuing continue is a mess, getting into such questions as whether the unspecified future downstream recipients of copies are intentional beneficiaries or incidental beneficiaries of the contract. (And then there is the whole "is this a license or a contract?" issue which is very murky).
BTW, even licenses that do say they are irrevocable might suffer from this partial revocation danger if downstream recipients must get their license from the original licensor.
The fix to this is to allow sublicensing in your license. Make your license irrevocable (so that once someone gets a licensed copy it cannot be taken back), and allow sublicensing so that when someone distributes a copy the license for that copy comes from them rather than you. Then if you stop issuing new licenses there is no problem, because people get their licenses from their distributor.
If you don't want distributors to be able to give their downstream less rights than you gave them by only sublicensing a subset of those rights, you can put in the license a clause that requires distributors to sublicense all the rights.
A nice side effect of the sublicensing approach is distributors have standing to sue for license violations. Under the GPL-type approach, where all licenses are directly from the original licensor, only the original licensor can sue to enforce the license. Under the sublicensing approach, both the original licensor can sue (alleging copyright infringement) and the distributor can sue (alleging violation of the license).