Spark Web -1- Nedir ve merhaba

Selamlar arkadaşlar,

Son zamanlarda özellikle Java 8 ile yıldızı parlayan güzel, basit ve etkin bir web programlama kütüphanesi olan Spark hakkında bilgi vermek için bir yazı dizisine başlıyorum. Neden Spark hakkında yazmak mantıklı geliyor diye düşündüğüm zaman aşağıdaki maddeleri buluyorum.

  1. Kullanımı bariz olarak çoğu kütüphaneden daha basit
  2. Başka programlama dillerinden geliyorsanız (php, asp, asp.net) çok zorlanmayacaksınız
  3. Uygulamayı paketlediğimiz zaman, yani WAR dosyası çıktığımız zaman birkaç KB lık bir uygulama çıkması
  4. Basit URL yönetimi / Rest desteği
  5. Hem ayrı bir sunucu (Tomcat/jboss/..) hem de kendiliğinden sunucusu  (jetty) üzerinden çalıştırılabilme seçenekleri

Kurulum

Öncelikle bir maven projesi açarak aşağıdaki dependency (bağımlılık) eklenilmelidir. Burada dikkat etmemiz gereken ilk nokta; uygulamamız kendi içinde gelen jetty ile mi yoksa zaten kenarda bulunan Tomcat sunucumuz üzerinde mi çalıştırılacak? Benim içinde bulunduğum durumda kenardaki tomcat üzerinden çalıştıracağım. O yüzden ben maven web projesi oluşturacağım. Konsoldan veya kullandığınız IDE üzerinden projenizi oluşturduktan sonra aşağıdaki paketi pom dosyamıza ekliyoruz.

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.5.4</version>
</dependency>

Bağımlılığımızı ekledikten sonra uygulamamızın giriş noktasını belirliyoruz. Burada daha önceden de belirttiğim gibi iki farklı seçeneği takip edebilirsiniz. Birincisi; sıradan bir sınıf oluşturup main metodu içine aşağıda belirttiklerimi yazabilirsiniz. İkincisi ise; yine sıradan bir sınıf oluşturup bu sınıfı SparkApplication arayüzünün gerçekleştirimi olarak kodlayabilirsiniz. Bu durumda init metodunun içine yazıyoruz kodlarımızı.

İkinci metodda işlemlerimizi bir sunucu üzerinden yaptığımız için giriş noktası olan sınıfımızı arıca web.xml dosyası içinde tanımlamamız da gerekiyor. Bunu da aşağıda görelim.

<filter>
    <filter-name>SparkFilter</filter-name>
    <filter-class>spark.servlet.SparkFilter</filter-class>
    <init-param>
        <param-name>applicationClass</param-name>
        <param-value>sparkWeb.SparkWebApp</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>SparkFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Ve en nihayetinde “merhaba millet” uygulamamız.

    package sparkweb;

    import spark.Request;
    import spark.Response;
    import spark.Route;
    import spark.Spark;
    import spark.servlet.SparkApplication;
    /**
     *
     * @author kenan
     */
    public class MainWebApp implements SparkApplication {
        @Override
        public void init() {
            Spark.get("/selam", new Route() {
                @Override
                public Object handle(Request rqst, Response rspns) throws Exception {
                    return "merhaba millet";
                }
            });
        }
    }

Burada Java 7 ile yapılmış olan versiyonunu görüyorsunuz. Java 8 versiyonu için aşağıdaki örneğe bakıyoruz.

    import static spark.Spark.*; 

    public class HelloWorld {
        public static void main(String[] args) {
            get("/selam", (req, res) -> "Merhaba millet");
        }
    }

İlk yazı için bu kadar. Hangi java versiyonu sizin için daha uygunsa tabi ki tercih sizin.

İyi çalışmalar.