There are plenty of happy JVM vendors to choose that haven't had any problem to comply with the license:
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
Microsoft with its J++ fork and Google with Android Java have no else but themselves to blame.
But apparently Google gets a free pass while Microsoft not, because "hey it's Google and they are sooo cool".
Google with Android Java have no else but themselves to blame.
That argument is equivalent to "well, you should just have not left your door unlocked". Just because Google could have used OpenJDK and thus avoid the lawsuit doesn't mean they should have to do so.
And Microsoft's case is completely different, as they did get a license from Sun, and preceded to deliberately violate it, with the intention (as we know from the internal emails and documents) of killing Java.
This will become even worse after Java 9 and 10 get released, specially with the infrastructure API and language changes they bring in.
So if Google keeps their stubbornness, any Java library writer will be faced with support Android Java or official Java dilemma.
And hacks like RetroLamba aren't going to help anyway.
I really don't see any difference in behavior vs what Microsoft did.
Interesting indeed how the two cases are perceived differently. I wonder to what extent they really were similar, legally speaking. At least one important difference is that Microsoft did license Java from Sun. Microsoft was using the Java trademark and advertising J++ as "Java-compatible" although their implementation was not passing the compliance tests.
To go back to the perception of Microsoft and Google's actions by the community, I think it's not hard to explain:
On one hand, you have Microsoft developing a proprietary Java product with the goal of undermining cross-platform Java and locking users and developers to the Windows platform. Remember the famous internal Microsoft email:
"We should just quietly grow j++ share and assume that people will take more advantage of our classes without ever realizing they are building win32-only java apps."
On the other hand, there is Google using Java for the purpose of delivering an open-source operating system. They didn't license Java, but I think the perception is that one should not require a license to use a programming language and/or implement its standard libraries. And compared to Microsoft, the perception is that any Java incompatibily introduced by Google in Android is not malicious but due to technical decisions (be they good or bad).
Even their recent actions with OpenJDK are related to version 7, not 8.
At their Autumn conference they only addressed Java 8, reluctantly during Q&A, and still asked devs to cherry pick features from it.
Given that Google is creating a Python 3 / Python 2 situation, due to their Java fork, I fail to see how their actions are less damaging to the Java eco-system than what Microsoft did.
Right, so they are damaging the Java ecosystem. Though it's not clear this outweighs the benefit of drawing developers to the language in the first place.
My point is, intent matters in shaping the public's perception. Say someone releases (or maintains) an awesome Python 2 library. I certainly won't see that as evil, if they aren't doing it with the purpose of undermining Python 3.
The situations are completely different. Microsoft was a Java licensee and as such, had to abide by the license (they didn't).
Google is not a Java licensee, so Oracle's attack on them is following a totally different angle.