Over a million developers have joined DZone.

Clojure - An Introduction

· Java Zone

Discover how powerful static code analysis and ergonomic design make development not only productive but also an enjoyable experience, brought to you in partnership with JetBrains

Clojure is a dynamically typed, functional programming language available on the JVM. A significant benefit of functional programming is the ease with which the languages can be used to program concurrency. It does this through immutable state. Functions are only dependent on the arguments passed into it, and do not modify any global data. As a result, there are no side affects.

Recently, R. Mark Volkmann put together an excellent Clojure tutorial.  The tutorial is very thorough, including information on how to download and get started with Clojure. To provide some perspective for Java developers not familiar with Clojure, the first example shows the same simple program implemented using both Java and Clojure code. There is also a great section on Java interoperability, showing the syntax for how Clojure programs can leverage the Java API.

There's been a lot of innovation in the programming language space the past few years, with more to come going forward. With the JVM supporting an ever expanding number of programming languages, the barrier to adoption has been reduced significantly. Development teams can adopt a new language while still leveraging their existing platform investments. In other words, the ops guys don't know it's not Java. Find the time to check out this tutorial. It's worth it!

Learn more about Kotlin, a new programming language designed to solve problems that software developers face every day brought to you in partnership with JetBrains.


The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}