And why should developers and other companies "benefit from Java API's good design with $0 license payment"? That's exactly why Oracle are introducing their Licensed Java Developer program. For only $10,000 per annum, you can be certified to write code that uses the Java API. If you're writing for a company, that company will need to be part of the Licensed Java Application program too, at $25,000 per annum. Extra programs can be brought under the same company umbrella for just $5,000 each. Please note that this program only covers internal applications used by staff, and interested organisations should ensure they comply with the Licensed Java User and Licensed Java Non-Staff User agreements. Applications and code delivered over the Internet will require the organisation owning the code to comply with the terms of the Licensed Java Internet Application agreement, and pay the annual $100,000 fee to Oracle.
You might need a few <sarcasm> tags there, but I do wonder how far Oracle will try to push this.
The next problem though is this. If the Java API is copyrighted, then _any_ API must also be copyrighted. Thus the following are also all copyrighted works which you can't use without the owner's permission:
- * int main (int argc, char**argv)
- * int swap (int a, int b)
- * Any C/C++ header file
- * Any object hierarchy, containing at least one class, method or property
You.can't specify a level of complexity (it will be gamed) so you cannot avoid even the simplest "API"s from being copyrighted. It's not quite "the end of the world" but it's a pretty good attempt.