decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
API is sort of distributed in JAVA | 396 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Didn't use bytecode?
Authored by: Anonymous on Wednesday, April 25 2012 @ 08:31 AM EDT
(this is somebody else)

The source, documentation and libraries binaries (bytecode)
gets shipped in the JDK or Android SDK for developers.

Only the bytecode gets shipped to end-users (in the JRE or
for Dalvik on an Android phone).

The package/class/method names still exist within the
compiled bytecode, so yes, in a sense the names are shipped
as well as the implementation behind them.

In my code, I can write:

SomeClass.someMethod()

Where SomeClass and someMethod are names in an external API.
I can compile this code against the API library binaries.
Those names still exist in my bytecode (in a literal non-
encoded sense, you can see them in a file viewer as normal
text, at least in Java bytecode) as well as the library
bytecode.

The binding between the names is resolved at runtime to the
associated name in the library I am calling, and hence
triggers the implementation in that library.

I hope that answers your question!

[ Reply to This | Parent | # ]

Words....
Authored by: Anonymous on Wednesday, April 25 2012 @ 08:44 AM EDT
I'm not the OP, but your question hit me hard.

API is the wrong word, and goes to the heart of Oracle's scam.

There are >Libraries<.

Everything starts with the Libraries.

To use a library you have to know:
the name of the tools in the library, and
what data those tools want as inputs, and
what data those tools give back as output.

That list is what is called an API.

The >list< is human readable documentation.

(Some programming languages also use the list for internal processing
purposes.)

Oracle's scam consists of the classic Red Queen definition trick: A word means
precisely what I intend it to mean (which will be different each time I use
it.).

The biggest part of Oracle's trick is converting the true name 'Application
Programming Interface' to an acronym 'API' and then using that as if it were
something of independent existence.

If you keep saying 'Interface' 'interface' 'INTERFACE' the illusion falls
apart.

All an 'API' is, is a list of the tools in the tool box.

I'll shut up now.
/End Rant
Not a lawyer, or a programmer
JG

[ Reply to This | Parent | # ]

Shipped on an Andordoid phone? or?
Authored by: Anonymous on Wednesday, April 25 2012 @ 09:27 AM EDT
"I read they are divided into two pieces,
one the simple command name and whatever that
side holds, and the other sounded like the
documentation. Do they both ship in a
finished product?"

Definition ADR= Android Developer Reference
available at developer.android.com, click on the reference tab.

The SDK . you can download the android SDK,
It includes a complete set of developer reference documentation (ADR), which
includes the accused SSO (the java.* and javax.*, the 37APIs, documentation)

I haven't actually put my finger on it yet, but the SDK (because it is able to
'emulate' an Android device must also contain a binary representation of the
source code that implements the java classes and methods describe in the
documentation. It must be so, otherwise applications would not run on the
emulator.

On a Device: In a phone, the only thing that would be shipped is the binary
expression of the source code.

This is no different to you installing linux, you get the binary expression of
the kernel when you install a distro (which means, because it is there, it's
APIs are available for your use) .
If you choose to install the documentation, you can get a textual description
of those APIs.
You can also if you wish install the Source code, that your kernel is a binary
expression of, and modify it and compile it to make your own expression of the
kernel.

Unless you're talking about Gentoo, in which case it all works the other way up
:O)

Note, you do not have to be a programmer or even have development tools
installed, the APIs are there, and are being used by the applications that you
run as well as the kernel itself.


[ Reply to This | Parent | # ]

API is sort of distributed in JAVA
Authored by: SpaceLifeForm on Wednesday, April 25 2012 @ 10:20 AM EDT
Real simple example:
(forgot you know about GPL while reading this)

Here is an API:

int my_magic_function ( int a, int b );

The above line would also normally exist in a file
that the compiler would use, but the file (called
a header file, or .h), would not normally be distributed.



Here could be the source code that implements:

int my_magic_function ( int a, int b )
{
[ REDACTED ]
return 1;
}

The above would be in a source file (a .c in this case),
also not normally distributed.


Note that the programmer, reading the API doc line
knows how to write code to call my_magic_function.
But also note that there is no documentation as to
what my_magic_function does nor any reason that any
programmer would to call it. That would normally also
be included in the API documentation.

Now, in this C example (not complete), the compiler
would create a binary (object file) that contains
the machine instructions that implement my_magic_function.

That would be what is distributed. At that point,
usually, even in this simple example, a lot of the
information about the API is lost, it is not really
in the binary. Yes, you can reverse engineer and
figure it out, but it is not trivial. Any additional
information such as what my_magic_function does and
why you would use it are not in the distributed binary,
and are definitely lost at that point.

But, JAVA has a quirk. If my_magic_function was
actually a JAVA function, and it was distributed as
binary (it would be byte code, not machine code),
the distributed file *would* contain enough information
to be able to write code to call it.

Tools exist that could extract from the distributed binary:

int my_magic_function ( int a, int b );

But again, no information about why you would
write code to call my_magic_function is contained
within the distributed byte code. You still have
to read the documentation.


---

You are being MICROattacked, from various angles, in a SOFT manner.

[ Reply to This | Parent | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )