Aplikacja internetowa w Spark - frameworku języka Java

W czasach start-up'ów coraz częściej firmy decydują się odejść od tradycyjnych sposobów rozwijania projektów i języków programowania, na rzecz rozwiązań dających dużo więcej efektów w krótszym czasie. Pomagają w tym frameworki, które definiują strukturę projektu i dostarczają szereg funkcjonalności przyspieszających pracę.
Myślę, że nie minę się z prawdą jeśli powiem, że platform tego typu są już tysiące. Moją uwagę ostatnio przyciągnął framework zwany Spark, pozwalający bardzo szybko stworzyć aplikację internetowa w języku Java. Postanowiłem go pokrótce dla was opisać.

Przygotowanie środowiska w systemie Windows

Pobieramy i instalujemy następujące narzędzia:

Dodajemy do zmienne środowiskowe tak by wskazywały ścieżki do naszych (rozpakowanych/zainstalowanych) narzędzi, w moim przypadku:
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_101

MAVEN_HOME = C:\tools\apache-maven-3.3.9

Następnie dodajemy do zmiennej PATH: %JAVA_HOME%\bin oraz %MAVEN_HOME%\bin.

Poprawność instalacji sprawdzimy wpisując w konsoli polecenia java -version oraz mvn -v. Jeśli dostaniemy informację o wersji, a nie błąd, to znaczy że wszystko powinno działać.

Przyda się także IDE - w moim przypadku będzie to IntelliJ.

Inicjalizacja projektu

Tworzymy projekt Maven. W pliku pom.xml dodajemy zależności:

<dependencies>
  <dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
     <version>2.5</version>
  </dependency>
</dependencies>
Piszemy aplikację

Tworzymy nową klasę:

import static spark.Spark.*;

public class main {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}

Budujemy projekt i uruchamiamy. Nasz napis "Hello World" powinien być widoczny pod adresem http://localhost:4567/hello.

  • Jeśli interesuje nas postawienie serwera na innym porcie wystarczy użyć funkcji port, w taki sposób: port(9090)
  • warto zauważyć, że w powyższym kodzie została wykorzystana funkcja lambda - aby z niej skorzystać wymagana jest wybrana Java w wersji co najmniej 1.8
Serwowanie plików statycznych

Bardzo ważną funkcją serwera HTTP jest świadczenie dostępu do plików statycznych. Dzięki Spark uruchomienie takiej funkcjonalności jest bajecznie łatwe, wystarczy dopisać: staticFiles.location("/public");. Od tej pory pliki z folderu public (który jest w resources tej klasy) będą dostępne z poziomu przeglądarki.

Szablony HTML

Spark obsługuję całą masę silników szablonów. Velocity, Freemarker, Mustache, Handlebars, Jade, Thymeleaf, Jetbrick, Pebble, Water.
Zademonstrujmy to na przykładzie handlebars.js. Dodajemy zależności do pliku pom.xml:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-template-handlebars</artifactId>
    <version>2.3</version>
</dependency>

Do naszej klasy importujemy:

import java.util.HashMap;
import java.util.Map;
import spark.ModelAndView;
import spark.template.handlebars.HandlebarsTemplateEngine;

a do funkcji dodajmy main:

Map map = new HashMap();
map.put("name", "Sam");
get("/hello", (rq, rs) -> new ModelAndView(map, "hello.hbs"), new HandlebarsTemplateEngine());

Musimy jeszcze w folderze resources utworzyć folder templates a w nim plik hello.hbs:

Hello, {{name}}!

Teraz gdy przebudujemy i uruchomimy serwer powinniśmy zobaczyć komunikat: Hello, Sam!. Utworzyliśmy mapę przy pomocy, której przekazaliśmy dane do szablonu, który został skompilowany przez silnik, po czym otrzymaliśmy wynikowy kod HTML.

Oczywiście to dopiero namiastka tego co można zrobić przy pomocy Spark. Jeśli jesteś zainteresowany polecam zapoznanie się z przystępną dokumentacją, a następnie z działem tutoriali.

A jakie są wasze ulubione frameworki języka Java?