Phiên bản đầu tiên của Java Security API trong JDK 1.1 được giới thiệu là “Java Cryptography Architecture - JCA”, một framework cho việc truy nhập và phát triển những chức năng mã hóa cho những ứng dụng trên nền Java. Trong JDK 1.1, JCA bao gồm cả những hàm API cho chữ ký điện tử và message digest.
Trong phiên bản tiếp theo, Java 2 SDK mở rộng đáng kể JCA. Đồng thời cũng cải tiến cơ sở quản lý chứng chỉ để hỗ trợ những chứng chỉ phiên bản 3 của chuẩn X.509, và đã giới thiệu một JCA mới tinh vi hơn, có khả năng cấu hình cao, mềm dẻo và những điều khiển truy nhập mở rộng hơn.
JCA được thiết kế dựa theo 2 nguyên tắc:
Độc lập về hoạt động và có khả năng tương tác
Độc lập về giải thuật và có khả năng mở rộng
Do đó, JCA có một kiến trúc mở rộng cho việc định nghĩa những khái niệm mã hóa và các giải thuật, đồng thời phân biệt những khái niệm mã hóa khỏi việc thực
thi. Những khái niệm được bao bọc bởi các lớp trong các gói java.security và
javax.crypto. Còn sự thực thi được cung cấp bởi các nhà cung cấp mã hóa (cryptographic provider). Từ phiên bản JDK 1.2 mặc định nhà cung cấp là SUN.
Độc lập về hoạt động đạt được bởi việc sử dụng một kiến trúc dựa trên khái niệm nhà cung cấp (provider). Nhà cung cấp dịch vụ mã hóa là chỉ một gói hoặc một bộ các gói, thi hành một hoặc nhiều dịch vụ như giải thuật chữ ký điện tử, message digest…
Độc lập về giải thuật đạt được bởi việc định nghĩa các loại máy mã hóa (engine) - thực ra là những dịch vụ mã hóa và bằng việc định nghĩa những lớp cung cấp chức năng cho những máy mã hóa đó. Những lớp này được gọi là engine class , ví dụ như những lớp Message Digest, Signature, KeyFactory và KeyGenerator.
Độc lập về hoạt động và độc lập về giải thuật bổ xung cho nhau, chúng ta có thể sử dụng những dịch vụ mã hóa, như chữ ký số và message digest mà không cần quan tâm về những chi tiết hoạt động hoặc thậm chí là những giải thuật tọa nên nền tảng cho những khái niệm đó.