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
Programs come and go but API's are forever. | 178 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
cf DLL Hell.
Authored by: Anonymous on Friday, April 20 2012 @ 10:41 AM EDT
For a prime example of not good API.

[ Reply to This | Parent | # ]

JCP (Java Community Process)
Authored by: hardmath on Friday, April 20 2012 @ 11:07 AM EDT

At some point we Groklarwinians will have to delve into the history and procedures of the JCP, particularly the JSPA (Java Specification Participation Agreement) and the role of the two EC's (Executive Committees, one for Java SE and EE, the other for Java ME specifications).

For now let's note that the formalized process of requesting, developing and maintaining Java specifications has been a community effort since 1998. Java the Language was introduced in 1995, and its platform packages are the mechanism by which Java evolves as a standard language.

So the difficulty of designing APIs in this context is not just the general one in doing good OO (object-oriented) design, but the compounded problems of managing backward compatibility/deprecation of interfaces and making design decisions that almost everyone can live with.

The Core APIs have a lot of "burn-in" at this point, and most of the effort in recent years has been on more specialized interfaces. For example, Java Swing was added to the JFC (Java Foundational Classes) to provide GUI support in Java desktop applications, somethat that was originally addressed by AWT (Abstract Window Toolkit).

The earlier approach was quite "platform dependent", while Swing is written in Java and to that extent platform independent. However Swing relies on and extends lower- level AWT components.

---
Do the arithmetic or be doomed to talk nonsense. -- John McCarthy (1927-2011)

[ Reply to This | Parent | # ]

API Design is hard
Authored by: jpvlsmv on Friday, April 20 2012 @ 11:22 AM EDT
Steve Jobs is credited with saying that a good design is not when there's
nothing left to add, but when there's nothing left to take away. (hence the
single button on the iPod)

Good APIs are like that- it's not just that the API has everything anybody could
possibly want to do with the programming language, it's when the API is
"just enough" to make anything possible and relatively easy.

This impacts the SSO of an API only in the "selection" part- the
Structure and Organization is almost entirely determined by the natural
interactions between the selected elements.

--Joe

[ Reply to This | Parent | # ]

After an API is developed
Authored by: darrellb on Friday, April 20 2012 @ 11:59 AM EDT
You generally have one shot at an API -- once it's released and people are using it, you can't change the rules without breaking the code everyone has already developed.

Which is the main reason that all implementations of the Java APIs use the same structure, organization, and sequence. The API Specification dictates.

[ Reply to This | Parent | # ]

A Moment of Silliness
Authored by: Anonymous on Friday, April 20 2012 @ 12:08 PM EDT
Be up a while trying to read through a ton of stuff and
saw the Judge's orders: And read the following:

"For the 37 accused API packages,..."

I did not think a software package could be "accused"
of anything since it is inanimate object.

Any rate maybe lack of sleep but it came across as
funny.

[ Reply to This | Parent | # ]

Great length to separate API from implementation
Authored by: Anonymous on Friday, April 20 2012 @ 03:18 PM EDT
An example that comes to mind here is how Intel deals with
licensing it's IPP libraries (http://software.intel.com/en-
us/articles/intel-ipp/ ). When you buy a license, you get
the right to distribute the library with your program, but
there are restrictions on distributing the header (and on
who can compile against it). My understanding, is that
there is a layer between the the public interface and the
actual function calls to the libraries, and that is what
makes this license kosher.

The fact that they are going to these lengths to separate
the API from the implementation suggests Intel does not
believe Oracle's position.

I also recall reading something about tactics for separating
your API from you implementation in c/c++ that give people a
usable header with out revealing anything about your
internal data structures.

[ Reply to This | Parent | # ]

Why Are APIs Hard to Develop?
Authored by: Anonymous on Friday, April 20 2012 @ 05:02 PM EDT
It is easy to write an API. It is hard to write an API that
you will not regret in a few months, if anyone uses it. Very
much like a contract.

[ Reply to This | Parent | # ]

Programs come and go but API's are forever.
Authored by: Anonymous on Friday, April 20 2012 @ 08:23 PM EDT
Programs come and go but API's are forever.

Once developers use your API you often can't change it with out breaking their
program. When there are 10,000 such programs you just live with whatever you've
done. A program with a bug you fix. An API with a limitation you're stuck with.

Java API's have an additional burden compared to Microsoft or even UNIX. They
endeavor to be useful on many operating systems, not just one, and over an
extreme spread of hardware, smart cards to mainframes. Not even Linux attempts
this.

Good Java API's are general enough to be very portable but not so general that
the power of the underlying system cannot still shine through. This is a tough
balancing act.

A good API makes it easy for the application developer to build without forcing
big, slow, or tricky underlying implementation.

I could go on. Certainly developing a good API is ten times as hard as building
the implementation.

[ 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 )