Reference: http://sparkjava.com/

Spark is an extremely easy to use Java Web Framework. It embeds Jetty within and you can run as a standalone web server. You can create a Java web application or an API server in less than 15 minutes with Spark. Below shows an example of creating a JSON API.

Step 1: Create a new Java project with JDK8 and let's use maven to manage the dependency.

Step 2: Add spark java and GSON as a dependency.

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.7</version>
</dependency>

Step 3: Create a main Class to hold your main method.

import static spark.Spark.*;

public class Main {

  public static void main(String[] args) {

  }
}

Step 4: Setup Spark by specifying the listening port and threads.

  public static void main(String[] args) {
    port(4000);
    threadPool(20, 2, 60000);
  }

Step 5: Let's write an Endpoint to return system time in JSON

  public static void main(String[] args) {
    port(4000);
    threadPool(20, 2, 60000);

    get("/time", (req, res) -> {
        res.type("application/json");
        res.status(200);
        return new TimeResult(String.valueOf(Instant.now().toEpochMilli()));

    }, new JsonTransformer());

  }

Step 6: Here we also define a JsonTransformer to handle the response. It basically transforms POJO into Json by using Gson.

public class JsonTransformer implements ResponseTransformer {

    private Gson gson = new Gson();

    @Override
    public String render(Object model) {
        return gson.toJson(model);
    }

}

public class TimeResult {

    private String result = "";

    public TimeResult(String result) {
        setResult(result);
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }
}

Step 7: Run the app and access it from your browser.