Explore the core principles of Clojure's design, emphasizing simplicity, immutability, and functional programming paradigms, and contrast them with Java's object-oriented approach.
Explore the fundamental syntax and semantics of Clojure, including its unique prefix notation, evaluation model, and core data structures, tailored for Java developers transitioning to functional programming.