Clojure is a dynamic language for the Java Virtual Machine with several powerful features for building concurrent applications. In this talk you will learn about:
- Functional programming. Clojure's immutable, persistent data structures encourage side-effect free programming that can easily scales across multiple processor cores.
- Software Transactional Memory (STM). STM provides a mechanism for managing references and updates across threads that is easier to use and less error-prone than lock-based concurrency.
- Agents. Agents provide a thread-safe mechanism for asynchronous, uncoordinated updates.
- Atoms. Atoms provide for synchronous, uncoordinated updates.
- Dynamic Vars. Dynamic Vars support thread-local state.
- Direct access to Java. Clojure calls Java directly, and can emit the same byte code that a handcrafted Java program would. Where it makes sense to do so, you can easily access the java.util.concurrent library.