There are 3 types of Java Programming Language Application
Programming Interfaces (APIs) :
• The official core Java API, contained in the JDK or JRE, of
one of the editions of the Java Platform. The three editions of the
Java Platform are Java ME (Micro edition), Java SE (Standard
edition), and Java EE (Enterprise edition).
• Optional official APIs that can be downloaded separately. The
specification of these APIs are defined according to a Java
Specification Request (JSR), and sometimes some of these APIs are
later included in the core APIs of the platform (the most notable
example of this kind is Swing).
• Unofficial APIs, developed by third parties, but not related
to any JSRs.
Third-parties can freely implement any JSR specifications for an
official API (even for the core API of the language), providing
that they conform to the Technology Compatibility Kit (TCK) for
this JSR (the TCK is a suite of tests that checks conformance of
implementations for a JSR). The result of this freedom is that many
official APIs have more implementations than the Sun's Reference
implementation (RI).