|
Authored by: Anonymous on Wednesday, April 25 2012 @ 09:24 AM EDT |
Anyone remember library cards? They tell you what shelf of the library a book
is in? They could be considered an API (in the fuzzy sense that Oracle is using
the term) to the library shelves, with each book a method, function or class.[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Wednesday, April 25 2012 @ 09:33 AM EDT |
Think about a microwave oven. It has buttons with labels all
over it. One might first think the buttons are the API. This
would be wrong because a button actually does something.
Aha! Then you might thing the API are the labels on the
buttons. Nope wrong again. Although they don't do anything,
the labels along with the layout are the specification. So
where is the API? Well when you look at the control panel,
you get a mental image of what the buttons do and which ones
to press in order to perform a task. Here is where you find
the API; inside your own head. And this is the problem with
our analogies so far, they've all tried to make the API a
physical thing when it's always been a concept.[ Reply to This | Parent | # ]
|
|
Authored by: darrellb on Wednesday, April 25 2012 @ 10:32 AM EDT |
But also, keep in mind that there are THREE aspects to these APIs.
1. API specifications -- written description of the API
2. API itself -- the interface at the programming level
3. API implementation -- code that provides the functionality behind the API.
Pretty much the analogies here succeed at separating the API from the API
implementation. But most miss the specifications aspect.
Oracle has accused Google of copyright infringement of the Java API
Specifications.
Using the car UI analogy, Oracle is accusing Google of copyright infringement by
reading Oracle's written automobile cockpit layout specifications and creating
their own cockpit engineering diagrams from the specs.
Imho, it is a big stretch to look at an engineering diagram and see it legally
as a a derivitive of the specificactions.
[ Reply to This | Parent | # ]
|
|
Authored by: cpeterson on Wednesday, April 25 2012 @ 10:43 AM EDT |
All Google would need to do is use a 7240-15(c)1 objection.
If Judge Alsup doesn't think that's a valid objection, just let him know that
Google has not been able to find anyplace where they were specifically, and in
writing, been given the authority to use the Court's API commonly known as the
FRCP. Therefore, they've created a new one, which should surely work just as
well, no?
I mean, Oracle seems to think that making the current system unuseable to its
users would be any big deal. Maybe Judge Alsup would disagree?
(In case you're wondering, a 7240-15(c)1 has two method signatures: one takes
arguments (objectedEvidence as EvidenceItem, jurisdiction as Court, matter as
Case); the other only uses the first argument and can take the other two items
from the current scope.
The return value is an object of class Ruling.
This API is a thin wrapper over the FRCP 402 method call.)[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Wednesday, April 25 2012 @ 10:47 AM EDT |
Suppose you are a secret agent in a foreign country. Your controller sends you
coded messages telling you what to do, and you then do those things and send
back coded messages telling them the results. Before you go out into the field,
you need to agree with your controller on a scheme for encoding the messages.
"Red" will mean "Go to this place", "Blue" will
mean "pick up a package", and so on. An API is like this agreement.
It allows one party to tell the other party to do a specific thing, but with one
important difference: with humans, you can tell them "go buy me a
pizza" and they will figure out how to do that. But computers are too
dumb, they can only do exactly what they have been programmed to do. So the
inventor of the API has to anticipate the kinds of things it will be used for,
and explicitly describe how to ask for each desired thing.
If they write a library that can load PNG files, then it probably provides
functionality like "Load a .PNG file named ABC into memory and return me a
pointer to it" as well as things like "take this pointer to a PNG, and
tell me how many pixels wide it is" or even "take this pointer to a
PNG, and copy this sub-rectangle of pixels into this other buffer that I
provide, converting them into this specific pixel format as you do that".
And they either need to invent their own API that describes how to access this
functionality, or design their library so that it implements an already-existing
API (like com.sun.media.jai.codec.JAI ?)
And the person designing the API, must anticipate all of these things and
describe (in the API) the exact protocol for a program to ask for the
information it wants, or ask for tasks to be performed. Then the library must
be implemented in a way that honors the requirements of the API, and the
programmer using the library must talk to that library using the protocol that
the API specifies.[ Reply to This | Parent | # ]
|
|
Authored by: Anonymous on Wednesday, April 25 2012 @ 12:39 PM EDT |
Consider a room that contains a sink.
The API for the room tells a person where to go to get water.
The blueprint shows where the pipes go that deliver the water - the person who
fills their glass with water does not need to know or care whether the pipes
come directly from the building water input, or instead go first to other
facilities all over the building before arriving to this location.
The implementation has further details that are not in the blueprint - which
brand of pipes were used (possibly even whether the pipes are made of copper or
[more recent] PVC plastic or [older] iron), where the pipes are clamped to the
structure and with which brand of clamps, etc. The same blueprint might have
been used to build different buildings over the years that had different
implementations details but still provided the same general user interface.
John Macdonald[ Reply to This | Parent | # ]
|
|
Authored by: tknarr on Wednesday, April 25 2012 @ 02:28 PM EDT |
Power cords and wall sockets. We have a standard interface between them: all
plugs on power cords have the metal prongs made in the same shape and size and
position, and all wall sockets have holes to take prongs of that standard shape,
size and position. It doesn't matter what brand of outlet you had installed, it
doesn't matter who made the lamp or clock or VCR you need to plug in, they all
fit together. The devics and the house wiring may vary, but the interface
between them where the power cord plugs into the outlet is
standardized.
Now imagine a world where every different brand of wall
socket had the holes in a different pattern. A world where a clock from Wal-Mart
and an LG television and a Samsung DVD player all had different power plugs on
their cords. And none of them were the same. If you wanted to plug in
your TV you'd need to buy wall outlets of a brand LG had licensed, and you
couldn't plug your DVD player into the same outlet because LG wouldn't license
their power plug to Samsung. Do we want to live in that world? That's the world
Oracle's asking the judge to create. [ Reply to This | Parent | # ]
|
|
|
|
|