JAX is a functional machine learning framework by Google that combines NumPy-like API with automatic differentiation, JIT compilation via XLA, and composable function transformations, making it popular for research and TPU-native development. Core features: (1) grad (automatic differentiation—compute gradients of arbitrary functions), (2) jit (just-in-time compilation to XLA—10-100× speedups), (3) vmap (automatic vectorization—batch operations without explicit loops), (4) pmap (parallel map across devices—multi-GPU/TPU). Functional programming: JAX functions are pure (no side effects)—enables aggressive optimization and parallelization. Immutable arrays (no in-place updates) ensure correctness. Transformations: composable—jit(vmap(grad(f))) works seamlessly. Example: grad(f) returns gradient function, vmap(grad(f)) computes gradients for batch, jit(vmap(grad(f))) compiles for performance. XLA compilation: JAX compiles to XLA (Accelerated Linear Algebra)—Google's domain-specific compiler for linear algebra, optimized for TPUs and GPUs. Enables cross-platform performance. Ecosystem: (1) Flax (neural network library—flexible, functional), (2) Optax (optimization library—gradient transformations, optimizers), (3) Haiku (neural network library by DeepMind), (4) JAX MD (molecular dynamics). Advantages: (1) research flexibility (easy to implement custom algorithms), (2) TPU-native (first-class TPU support), (3) performance (XLA optimization), (4) composability (function transformations). Disadvantages: (1) steeper learning curve (functional paradigm), (2) smaller ecosystem than PyTorch, (3) debugging harder (compiled code). Use cases: (1) research (novel architectures, algorithms), (2) large-scale training (TPU pods), (3) scientific computing (physics simulations, optimization). JAX is increasingly popular in research labs, especially for projects requiring TPU scale or custom algorithmic development.