|
Authored by: xtifr on Wednesday, May 30 2012 @ 03:53 PM EDT |
Just to follow up: yes, Connectix may have also created an API, but it was
almost certainly their own, original API, since they didn't have any way to know
what the original API looked like. So Connectix copied the ABI and created an
original API, while Google did the opposite. But it's still two sides of the
same coin. The only significant difference is where you look for compatibility.
And Oracle's looking in the wrong place.
---
Do not meddle in the affairs of Wizards, for it makes them soggy and hard to
light.[ Reply to This | Parent | # ]
|
- no, this is WRONG - Authored by: Anonymous on Wednesday, May 30 2012 @ 04:52 PM EDT
- no, this is WRONG - Authored by: xtifr on Wednesday, May 30 2012 @ 06:03 PM EDT
- aha - Authored by: Anonymous on Wednesday, May 30 2012 @ 06:22 PM EDT
- aha - Authored by: xtifr on Wednesday, May 30 2012 @ 08:17 PM EDT
- aha - Authored by: Anonymous on Wednesday, May 30 2012 @ 08:45 PM EDT
- You are forgetting about SSO - Authored by: bugstomper on Thursday, May 31 2012 @ 05:32 PM EDT
|
Authored by: Anonymous on Wednesday, May 30 2012 @ 05:03 PM EDT |
An API is not a collection of ABIs.
True. In fact "the
ABI" usually means "the whole set of rules used for this whole platform"... the
usage of the term to refer to a specific function's mechanical details (the way
we all seem to be using it here) is somewhat uncommon.
An API is a
source-level interface that typically gets coverted to an ABI by the compiler.
It's an extension to the programming language.
Sort of true..
Source-level interfaces are definitely APIs, but other types of interfaces
(including binary interfaces) are sometimes called APIs too. Its a broad and
mushy terminology. Anything that a programmer could use to interface to
existing code (whether in high-level source code, or in assembly code or machine
code or whatever) tends to get called an API.
The API is used in
the construction of the program. Once the program is built--is a binary
executable--it uses the ABI instead. (We'll gloss over interpreted languages,
with just a brief comment that they forward information from the API to the ABI
dynamically.)
I would argue that it doesn't stop being an API
after the program is compiled. It might be a little harder to point to, but its
still there -- both the mechanical ABI details, and the conceptual "what does it
do?" details are embodied in some way, in the compiled code.
If
ABIs, which consist of concrete, compiled code, aren't copyrightable, then APIs
are even less so, being merely language elements. APIs are used for expression,
but are not expressions themselves, and are no more copyrightable than a random
set of words you can use in writing a story.
I completely agree
with you here.
Now APIs and ABIs are very similar, and closely
related, and I find it hard to imagine that there's any serious legal difference
between the two. They're like opposite sides of the same coin. But Oracle keeps
complaining about a lack of binary compatibility, which completely misses the
point of an API, which is to provide source compatibility. APIs are frequently
used for platform independence, which is exactly what Google used them for.
Oracle is getting confused between Java-the-language, which includes the APIs,
and Java-the-virtual-machine, which has ABIs, not APIs. The JVM ABIs aren't
anything like Dalvik's, so Oracle's ABI-related arguments (binary
incompatibility) are utterly irrelevant. Google didn't copy the
ABI!
I would say that Java-the-virtual-machine has both APIs and
ABIs, but in general I agree with everything you say here. We're really
stretching the meaning of "ABI" here. But with this stretched meaning, I
suggest that Dalvik's ABI is actually the same as Java's before the program
passes through the dex tool; then it gets transformed into a different, but
similar, ABI.
Google included the APIs for compatibility, and,
insofar as they're the same as Java's APIs, they offer 100% compatibility, even
though there's zero binary compatibility.
I completely agree with
this.[ Reply to This | Parent | # ]
|
|
|
|
|