provided by: 
Originally published at Internet.comJava programs can simply request a particular cryptographic object or implement a particular cryptographic service. They can also ask for a specific provider by name or by the name and service. As mentioned before, providers have a preference order, and new providers can be added statically and dynamically. The idea behind the cryptography extension is to remove the programmer from the math and complexity involved in algorithms, and instead utilize provider classes that take care of the implementation. This way, different providers can implement algorithms that are software based, or hardware based. They can also implement platform-specific or platform-dependent algorithms.
A cryptographic service is always associated with a particular algorithm or type. The service either provides cryptographic operations, generates or supplies the cryptographic materials, or generates data objects that encapsulate cryptographic keys in a secure fashion.
A cryptographic provider is simply a collection of classes that implement cryptographic algorithms. Java's Provider subclass represents the provider as a whole. It keeps track of how the algorithms and classes are related using a list of the algorithm names and their implementations. A provider can include several different kinds of algorithms, from key pair generators to ciphers...
Read article at Internet.com site