Since there isn't a single standard for cryptographic tokens, this API has been developed to be an abstraction layer for the generic cryptographic token. The PKCS #11 API defines most commonly used cryptographic object types (RSA keys, X.509 Certificates, DES/Triple DES keys, etc.) and all the functions needed to use, create/generate, modify and delete those objects.
PKCS #11 is largely adopted to access smart cards and HSMs. Most commercial certificate authority software uses PKCS #11 to access the CA signing key or to enroll user certificates. Cross-platform software that needs to use smart cards uses PKCS #11, such as Mozilla Firefox and OpenSSL (using an extension). Software written for Microsoft Windows may use the platform specific MS-CAPI API instead.
JCE - Oracle's Java has included an implementation of PKCS #11 consisting of both native and Java code available as part of the Java Cryptography Architecture (JCA) and the Java Cryptography Extension (JCE) since version 5 (JDK 1.5). This only supports 32 bit Java on Windows. Oracle Java 7 includes 64 bit Java Mac support. It is not a full PKCS #11 implementation, but rather allows JCA/JCE to access smartcards through PKCS #11. It does not, for instance, support the change PIN function.