• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

The Problem

Enterprise software needs a standard set of APIs and behaviors so that applications work across different vendor implementations. Without a specification, each vendor creates proprietary, incompatible systems, locking customers into a single vendor.

Core Idea

J2EE is a specification (a set of rules/PDFs), not a product. It defines the APIs and behaviors that vendors must implement to be “J2EE-compliant.” This ensures portability across different application servers (WebLogic, GlassFish, JBoss).

How It Works

  1. JCP (Java Community Process) creates the specification documents (PDFs)
  2. Each specification version locks down specific API versions (EJB 2.1, Servlet 2.4, etc.)
  3. Vendors implement the specification in their products
  4. Sun provides a Test Compatibility Kit (TCK) to verify compliance
  5. Compliant products can be certified and branded as “J2EE-compliant”

J2EE 1.4 bundles EJB 2.1, JMS 1.1, JTA 1.0, etc. as the de facto versions.

Visual Explanation

G JCP (Java Community Process) JCP (Java Community Process) J2EE Specification J2EE Specification JCP (Java Community Process)->J2EE Specification creates TCK (Test Compatibility Kit) TCK (Test Compatibility Kit) JCP (Java Community Process)->TCK (Test Compatibility Kit) provides Vendor A (WebLogic) Vendor A (WebLogic) J2EE Specification->Vendor A (WebLogic) implements Vendor B (GlassFish) Vendor B (GlassFish) J2EE Specification->Vendor B (GlassFish) implements Vendor C (JBoss) Vendor C (JBoss) J2EE Specification->Vendor C (JBoss) implements TCK (Test Compatibility Kit)->Vendor A (WebLogic) tests TCK (Test Compatibility Kit)->Vendor B (GlassFish) tests TCK (Test Compatibility Kit)->Vendor C (JBoss) tests Compliant Product Compliant Product Vendor A (WebLogic)->Compliant Product

Key Properties

  • Not a product: Specification is a document, not software you run
  • Vendor-neutral: Not tied to one vendor, encourages competition
  • Portable: Code runs on any compliant server
  • Versioned: Each J2EE version bundles specific API versions
  • Community-driven: Created by JCP with industry experts

Connections

Edge Cases & Gotchas

  • Ambiguities: Specifications may have ambiguous points leading to vendor differences
  • Version mismatches: Mixing APIs from different J2EE versions causes issues
  • Vendor extensions: Vendors may add proprietary features beyond the spec
  • Compliance != Compatibility: Technically compliant products may still differ