If the usual patchwork of web development tools and languages just isn’t cutting it for you, you need Web Development With Clojure. Clojure gives you the rich infrastructure of the JVM with the expressive power of a modern functional language. It combines excellent performance with rapid development—and you can exploit these virtues for web app development. With step-by-step examples, you’ll learn how to harness that power and richness to build modern web applications.

Buy Now

Select a DRM-free Format:

In Stock
In Stock
In Stock
Buy the eBook and get these DRM-free formats delivered immediately:
  • epub (for iPhone/iPad, Android, eReaders)
  • mobi (for Kindle)
  • PDF
We can automatically send them to your Kindle or Dropbox, and for a social reading experience we can link the book to your Readmill account. (You'll need to log in to enable these options.)
 

About this Book

  • 232 pages
  • Published:
  • Release: P1.0 (2014-01-14)
  • ISBN: 978-1-93778-564-2

Modern web development needs modern tools. Web Development With Clojure shows you how to apply Clojure programming fundamentals to build real-world solutions. You’ll develop all the pieces of a full web application in this powerful language. If you already have some familiarity with Clojure, you’ll learn how to put it to serious practical use. If you’re new to the language, the book provides just enough Clojure to get down to business.

You’ll learn the full process of web development using Clojure while getting hands-on experience with current tools, libraries, and best practices in the language. You’ll develop Clojure apps with both the Light Table and Eclipse development environments. Rather than frameworks, Clojure development builds on rich libraries. You’ll acquire expertise in the popular Ring/Compojure stack, and you’ll learn to use the Liberator library to quickly develop RESTful services. Plus, you’ll find out how to use ClojureScript to work in one language on the client and server sides.

Throughout the book, you’ll develop key components of web applications, including multiple approaches to database access. You’ll create a simple guestbook app and an app to serve resources to users. By the end, you will have developed a rich Picture Gallery web application from conception to packaging and deployment.

This book is for anyone interested in taking the next step in web development.


Q&A with Dmitri Sotnikov

Why did you write Web Development with Clojure?

When I started using Clojure, I found that it took a lot of work to find all the pieces needed to put together a working application. There was very little documentation available on how to organize the code, what libraries to use, or how to package the applicaton for deployment. Having gone through the process of figuring out what works, I thought that it would be nice to make it easier for others to get started.

What are the advantages of using a functional language?

Over the course of my career, I have developed a great appreciation for functional programming. I find that it addresses a number of shortcomings present in the imperative paradigm. For example, in a functional language any changes to the data are created via revisions to the existing data. So they only exist in the local scope. This fact allows us to safely reason about individual parts of the program in isolation, which is critical for writing and supporting large applications.

Why use Clojure specifically?

Clojure is a simple and pragmatic language that is designed for real-world usage. It combines the productivity of a high-level language with the excellent performance seen in languages like C# or Java. It’s also very easy to learn because it allows you to use a small number of concepts to solve a large variety of problems.

If I already have a preferred web development platform, what might I get out of this book?

If you’re using an imperative language, you’ll get to see a very different approach to writing code. Even if you’re not going to use Clojure as your primary language, the concepts you’ll learn will provide you with new ways to approach problems.

Is the material in the book accessible to somebody who is not familiar with Clojure?

Absolutely. The book targets developers who are already familiar with the basics of web development and are interested in learning Clojure in this context. The book introduces just enough of the language to get you productive and allows you to learn by example.

What You Need

The latest JVM, Clojure 1.4+, and the Leiningen build tool, as well as an editor such as Emacs, Eclipse, or Light Table.

Contents and Extracts

Preface
  • Required Background
  • Why Functional?
  • Why Clojure?
  • Getting Your Feet Wet
  • Clojure Web Stack
    • Routing Requests With Ring
    • Defining the Routes With Compojure
    • Application Architecture
    • Beyond Compojure and Ring
    • What We Just Learned
  • Liberator Services
    • Creating The Project
    • Defining Resources
    • Putting It All Together
  • Database Access
    • Working With Relational Databases
    • Report Generation
    • Summary
  • Picture Gallery
    • The Development Process
    • What’s In a Gallery
    • Creating The Application
    • Application Data Model
    • Task A: Account Registration
    • Task B: Login and Logout
    • Task C: Uploading Pictures
    • Task D: Displaying Pictures
    • Task E: Deleting Pictures
    • Task F: Account Deletion
  • Finishing Touches
    • Adding Some Style
    • Unit Tests
    • Logging
    • Applications Profiles
    • Packaging Applications
    • Wrapping up
  • Mixing It Up
    • Using Selmer
    • Upgrading To ClojureScript
    • SQL Korma
    • Creating Application Templates
    • Wrapping Up
  • Appendix A: Alternative IDE Options
    • Installing Eclipse
    • Installing Emacs
    • Further Alternatives
  • Appendix B: Syntax
    • Data Types
    • Using Functions
    • Anonymous Functions
    • Named Functions
    • Higher-Order Functions
    • Closures
    • Threading Expressions
    • Being Lazy
    • Structuring the Code
    • Destructuring Data
    • Namespaces
    • Dynamic variables
    • Calling out to Java
    • Calling methods
    • What About Global State?
    • Writing Code That Writes Code For You
    • The Read Evaluate Print Loop
    • Summary
  • Appendix C: Document-Oriented Database Access
    • Picking the Right Database
    • Using CouchDB
    • Using MongoDB

About the Author

Dmitri Sotnikov has been developing Web applications professionally for close to a decade. He has developed and continues to maintain several Clojure libraries as well as the Luminus framework. He has worked in both startup and enterprise environments.

Comments and Reviews

  • This is a great resource and one I will insist all my trainee Clojure web developers read.

    —Collin Yates principal engineer and technical team leader QFI Consulting, LLP
  • Clojure is an awesome language, and using it for developing web applications is pure joy. This book is a valuable and timely resource for getting started with the various libraries of the Clojure web-development toolbox.

    —Fred Daoud web-development specialist and coauthor of "Seven Web Frameworks in Seven Weeks"
  • In Web Development with Clojure, Dmitri Sotnikov manages to take the sting out of getting started building real applications with Clojure. If you know the basics but are still trying to “get” Clojure, this is the book for you.

    —Russ Olsen vice president, consulting services Cognitect
  • Sotnikov illustrates Clojure’s flexible approach to web development by teaching the use of state-of-the-art libraries in making realistic websites.

    —Chris Houser "Joy of Clojure" coauthor
  • With this book, you’ll jump right into web development using powerful functional programming techniques. As you follow along, you’ll make your app more scalable and maintainable—and you’ll bring the expressiveness of Clojure to your clientside JavaScript.

    —Ian Dees author of "Cucumber Recipes"
  • Dmitri’s book successfully walks a narrow line of introducing language features while also solving real, modern software-development problems. This represents a significant return on investment for the time you devote to a technical book.

    —Brian Sletten Bosatsu Consulting, author of "Resource-Oriented Architecture Patterns for Webs of Data"
  • This is a fast-paced, no-cruft intro to applying your Clojure chops to making web apps. From Chapter 1 you’re running a real web app and then adding databases, security, JavaScript, and more. No dogma, no preaching, no fluff! To the point, productive, and clear. This book gives you all you need to get started and have a real app that you can continue to grow.

    —Sam Griffith, Jr. polyglot programmer Interactive Web Systems, LLC