The Java Language Specification isn't just the final authority on the syntax and semantics of the Java language, it's also the definitive specification for language implementers to use when creating a Java language implementation.
The Library specifications are the JavaDocs, and there are actually several sets of them. There's the core desktop version (
http://docs.oracle.com/javase/7/docs/api/index.htm), there's the Enterprise classes (
http://docs.oracle.com/javaee/6/api/index.html), which extend the desktop classes.
Then there are completely different implementations such as the Java CE classes defined for smaller devices which have their own JavaDocs.
And - until the lawyers get through messing things up - there are independent class libraries and their associated docs, such as the Android Dalvik system.
Plus. of course, for your own projects you can use the supplied javadoc utility to define your own classes.
The javadoc tool provides a general means of scanning a set of Java source classes and extracting information that can be formatted very flexibly. The default options produce a set of web pages, but you can write your own and even add extensions, so generating a printable PDF or an ebook are within its reach.
JavaDocs have the potential to contain everything needed to describe proper use of java packages, but most of them haven't been fleshed out to that degree, and I could name one or 2 that are so mindlessly generated as to be virtually useless. So in addition to the formal definitions in the JavaDocs, you'll often find related tutorials.