Question from a layman: Does "interoperability" as a concept have any legal relevance here? Like focusing on programmer skills seems kind of beside the point, which is really for two pieces of software to be able to interoperate.
Interoperability does have legal relevance, but because of programmer skills. Part of the fair use analysis turns on the legitimate goal of allowing programmers to use their skills in Java on the new platform.
Yes, interoperability is relevant, because it affects the necessity of copying that particular code rather than making one's own substitute, which in turn affects fair use.
But Google's lawyers (inexplicably, in my opinion) failed to talk much about the fact that many Java libraries are interoperable between Android and Oracle Java, leaving the courts to think only in terms of full applications which are not interoperable. Thus the courts have treated this case as if the only benefit to Android's reuse of Java was programmer familiarity.
Thankfully, Google won anyway, so any defendant in a future case who can make a better interoperability argument will be in an even stronger position.
Edit: For example, in the Federal Circuit ruling that the Supreme Court just overruled, they complain: "Indeed, given the record evidence that Google designed Android so that it would not be compatible with the Java platform, or the JVM specifically, we find Google's interoperability argument confusing. [..Google] points to no Java apps that either pre-dated or post-dated Android that could run on the Android platform." [1]
Google didn't argue on interoperability since that would have torpedoed their core arguments that Android is a transformative work creating a new market outside of, and different from, Sun Java Standard Edition.
To argue interoperability Google would have needed to copy the entire JAVA SE API.
The key difference is that Java SE (designed for desktops) API was considered by Google mostly not required on smartphone/mobile devices envisaged for Android. Sun would only licence Java SE complete (Sun was the one wanting complete interoperability).
To the extent the concept of interoperability enters into it, it was on the human side; the arguments were about leveraging existing programmer knowledge to the extent that Android's requirements were shared with and common to Java SE.
> To argue interoperability Google would have needed to copy the entire JAVA SE API.
Only if Google wanted to argue interoperability as defined by Sun/Oracle. I've never seen a coherent argument why Sun's TCK should be considered the sole authority on what degree of interoperability should have legal significance in this copyright case, particularly given that Sun's TCK was part of their trademark licensing program.
And there are obvious reasons why a court would shy away from letting something like Sun's TCK be used as part of a significant legal test; for example, it's really awkward for legal purposes to define something as copyright infringement while it's a work in progress, but it suddenly becomes okay as soon as it attains the status of being 100% compatible and bug-free. It's also not clear how the law could reasonably handle a definition of interoperability that Sun/Oracle can unilaterally make into a moving target and add arbitrary requirements to.
There's already Ninth Circuit precedent in favor of it. For example, Sony tried to sue two commercial PlayStation emulator developers and the Ninth rejected the lawsuit on all counts (and one of those cases is even cited in this opinion).
The court has to talk about programmer skills because Android (at least, the versions before they switched to OpenJDK) was not entirely source- or binary-compatible with Java SE programs. In fact, the reason why they couldn't license Java SE was that Sun insisted on Android being locked into compatibility in the first place. So this entirely represents an expansion of existing fair use precedent: now, not only does fair use apply to full reimplementations for the sake of interoperability, but also partial reimplementations made for the sake of programmer convenience.
The decision talks about "interoperability" as a general concept, but neither the DMCA nor reverse engineering is at all relevant to its legal reasoning.
Also speaking as a layman, but yes. Fair use has, as one of its four factors, the purpose and character of the use, to which interoperability is of definite relevance. It explains -why- the API was reused, even if the internals are entirely different. Not because it saved Google work, or there was some sort of competitive edge against Java SE to be gained by doing so.