Making with Eclipse · Standard
Thursday, 15:20, 20 minutes | Ballroom A
Clojure is a dynamic functional language that targets the JVM. Like other felow Java alternatives (Scala, JRuby, Groovy, Java Script and others), it gains more and more momentum among developpers. Clojure distinguishes itself thanks to a combinaison of several assets:
- A careful and opinionated language design. Clojure is built on a consistent view of programming paradigm (http://clojure.org/state) and so leverages the functional approach through first-class functions and immutable data structures, and a careful state and time management thanks to several dedicated constructs.
- The Lisp philosophy which praises both dynamicity and meta-programming. Clojure is indeed a dialect of Lisp and offers several dynamic aspects easing test, experimentation and interaction with runtime code. Moreover the powerful macro system backed in the language homoiconicity (all the code is stored in language data structures) enables to design neat DSLs/APIs.
- A tight JVM integration. The source code is directly compiled into JVM bytecode, without any interpretation nor translation stages. Performances are therefore very close to Java's ones. Besides, Java interop is tidily implemented in the language, allowing straightforward integration in Java systems.
These qualities enable Clojure to bring elegant yet practical solutions to several problems (multi-threading, incidental complexity, ...). However, even if the language itself is quite simple and concise, the involved concepts require a real mind-shift for most developers acustomed to Java and OOP. This talk will make a short introduction of Clojure and will then focus on how it can be leverage in bundles development. Indeed we have been succesfully using Clojure in several RCP products for almost two years.
- Clojure basics
- Immutable Datastructures
- State and Time Management
- Java Interop
- Integration in Eclipse
Gaetan Morice is manager of the embedded development tools team at Sierra Wireless. He and his team work on several RCP based products that implement lots of Eclipse and OSGi technologies (EMF, GMF, Xpand, CDT, p2, DLTK, Declarative services and Device Access service). Moreover these products heavily leverage new JVM languages (Clojure and Scala) and embedded ones (Lua).