Provider-based architecture separates stable application-facing APIs from replaceable implementations. In Java cryptography, applications call standard JCA and JCE APIs, which route requests to installed provider implementations. section 4.3
Hashing through a provider
Application code can request SHA3-256 through MessageDigest without directly depending on a particular provider: MessageDigest.getInstance("SHA3-256").digest(data). The same standard API can route the operation through an installed provider such as SunJCE or Bouncy Castle. section 4.3
