Clojure is a wonderful language, boasting features that provide massive benefits to developers. It’s impossible to explain the numerous reasons Clojure is a much better choice than mainstream alternatives such as JavaScript. In order to appreciate the benefits, you have to try it for yourself.

Unfortunately, it can take a lot of time and effort to put together a development environment for a Clojure project that really shows off what a Lisp can do. That’s why we’ve created Edge.

1. Who is Edge for?

Edge is intended for both serious and educational use, including by students learning Clojure as a programming language, school teachers, college lecturers, as well as professional Clojure programmers in small and large organisations.

It is also designed as a spring-board for your own projects, whether serious or for fun.

2. Open Source

The complete system, including the Clojure language, the Java Virtual Machine on which it runs, the Clojure code within Edge and the numerous Clojure and Java libraries that are employed, are licensed with open-source licenses.

3. Performant

Edge’s design goals have included performance and scalability, so is ideal for websites that need to cope with a reasonably high volume of web requests.

Edge uses yada, which is built on aleph, which is built on Netty. Netty is used a large companies such as Google, Apple and Facebook for their most demanding workloads. Therefore, with the correct tuning, the system will scale. However, there are many factors that affect performance and you should measure the performance of your overall system to ensure it meets your demands.

4. Modular

Edge is modular. New functionality can be added to Edge as discrete modules. Existing functionality (including examples and documentation) can be cleanly removed.

5. Examples

Directories below lists the sub-directories contained in the Edge repository and their purpose.

Table 1. Directories
Directory Purpose

bin

Shell scripts

phonebook-api

An example API implemented in Clojure with yada. This API is covered in detail in [phonebook-api].

phonebook-app

A single page application for the phonebook-api, written in ClojureScript using Figwheel.

phonebook-graphql

A GraphQL version of the phonebook-api example, with support for subscriptions.

graphql-ws

An example of an internal library, incubating in Edge.

doc

Documentation (such as what you’re reading).