■ Spark Framework
* 分散処理エンジン Apache Sparkとは異なる
特徴
* 軽量フレームワーク * Java EEを使わない => JSP/Servletを使わない。Tomcat上に動かさずにすみ、サーバ(Jetty)も内包されている
周辺ツール
* ビルド管理 : Maven, Gradle * Viewテンプレート : FreeMarker, Verocity, Mustache複数をサポート
公式サイト
http://sparkjava.com/https://sparktutorials.github.io/2015/04/03/setting-up-spark-with-gradle.html
■ 環境構築
* 以下のサイトを参考にしたhttps://sparktutorials.github.io/2015/04/03/setting-up-spark-with-gradle.html
http://hibiso.net/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AA%E3%81%97%E3%81%8C%E3%81%97-spark%E7%B7%A8/
2017/11/03追記
* 本記事では、プラグインとして、「STS Gradle」を使っているが、 「Buildship」の方がいい。理由については、以下の関連記事を参照のことhttps://blogs.yahoo.co.jp/dk521123/37204914.html
今回作成する環境下
2017/11/01:バージョンがあがったのでリニューアルした* OS : Windows10 * Java : Java1.8 * Eclipse : Oxygen.1a Release (4.7.1a) (以前は「Neon Release (4.6.0)」) * ビルド ツール : Gradle * Spark Framework : Spark v2.6 (以前は「Spark v2.5」)
準備
[a] Gradle IDE for Eclipse のインストールする(一度だけでいい)a-1) Eclipseの[Help]-[Eclipse Marketplace…]-[Search]を選択し、 Find欄に「Gradle」を入力し、Enterキー押下 a-2) 「Gradle IDE Pack X.X.X」(今回は「Gradle IDE Pack 3.8.X+1.0.X+2.2.X」)を探し、 「Installed」ボタン押下 # 以前は「Gradle IDE Pack 3.8.X+1.0.X」 a-3) 後はインストールして、Eclipseを再起動する
■ Hello World を作成する
[1] プロジェクト(Gradle Project)を作成する
1-1) Eclipseの[File]-[New]-[Other]-[Gradle (STS)]-[Gradle (STS) Project]を選択し、 「Next」ボタン押下 1-2) 以下を入力し、「Finish」ボタン押下 + Project Name : 任意(今回は「SampleSpark」) + Sample project : Java Quickstart 【出力結果】 [sts] ----------------------------------------------------- [sts] Starting Gradle build for the following tasks: [sts] :cleanEclipse [sts] :eclipse [sts] ----------------------------------------------------- :cleanEclipseClasspath UP-TO-DATE :cleanEclipseJdt UP-TO-DATE :cleanEclipseProject UP-TO-DATE :cleanEclipse UP-TO-DATE :eclipseClasspath :eclipseJdt :eclipseProject :eclipse BUILD SUCCESSFUL Total time: 0.352 secs [sts] ----------------------------------------------------- [sts] Build finished succesfully! [sts] Time taken: 0 min, 0 sec [sts] -----------------------------------------------------
[2] ビルドスクリプト「build.gradle」の修正
2-1) Eclipseの対象プロジェクト直下にある「build.gradle」を開く 【修正前】 dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.+' } 【修正後】 dependencies { compile 'com.sparkjava:spark-core:2.6.0' compile 'org.slf4j:slf4j-simple:1.7.25' testCompile group: 'junit', name: 'junit', version: '4.+' } 2-2) Eclipseの対象プロジェクトを右クリックし、[Gradle (STS)]-[Refresh Dependencies]を選択 2-3) Eclipseの対象プロジェクト内の「src/main/java」配下にある「org.gradle」パッケージを削除する
[3] 「Hello World」を作成する
3-1) Eclipseの対象プロジェクト内の「src/main/java」を右クリックし、 [New]-[Other]-[Class]を選択し、Javaソースを作成する(今回は「HelloWorld.java」) 3-2) 以下を参考に、「Hello World」を作成する* HelloWorld.java
import static spark.Spark.get; public class HelloWorld { public static void main(String[] args) { get("/", (request, respose) -> "Hello World!!"); } }
[4] サーバを起動する
4-1) 3-2)で作成したプログラムをJavaアプリケーションとして実行する 【出力結果】 [Thread-0] INFO org.eclipse.jetty.util.log - Logging initialized @438ms to org.eclipse.jetty.util.log.Slf4jLog [Thread-0] INFO spark.embeddedserver.jetty.EmbeddedJettyServer - == Spark has ignited ... [Thread-0] INFO spark.embeddedserver.jetty.EmbeddedJettyServer - >> Listening on 0.0.0.0:4567 [Thread-0] INFO org.eclipse.jetty.server.Server - jetty-9.4.4.v20170414 [Thread-0] INFO org.eclipse.jetty.server.session - DefaultSessionIdManager workerName=node0 [Thread-0] INFO org.eclipse.jetty.server.session - No SessionScavenger set, using defaults [Thread-0] INFO org.eclipse.jetty.server.session - Scavenging every 660000ms [Thread-0] INFO org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@737e611{HTTP/1.1,[http/1.1]}{0.0.0.0:4567} [Thread-0] INFO org.eclipse.jetty.server.Server - Started @656ms # Spark v2.5の時のログ(パフォーマンスがあがってる?) # [Thread-0] INFO org.eclipse.jetty.util.log - Logging initialized @543ms # [Thread-0] INFO spark.embeddedserver.jetty.EmbeddedJettyServer - == Spark has ignited ... # [Thread-0] INFO spark.embeddedserver.jetty.EmbeddedJettyServer - >> Listening on 0.0.0.0:4567 # [Thread-0] INFO org.eclipse.jetty.server.Server - jetty-9.3.6.v20151106 # [Thread-0] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@6055f6a0{HTTP/1.1,[http/1.1]}{0.0.0.0:4567} # [Thread-0] INFO org.eclipse.jetty.server.Server - Started @1124ms
[5] 動作確認
5-1) ブラウザを立ち上げて、以下のURLにアクセスする[[http://localhost:4567]]
# 「Hello World!!」が表示される
参考文献
http://qiita.com/opengl-8080/items/801b32a8d44089fa1c04http://qiita.com/morozumi_h/items/5e2d355c77136eabe55b
http://kikutaro777.hatenablog.com/entry/2014/06/22/201250
http://www30304u.sakura.ne.jp/blog/?p=2948
http://dev.classmethod.jp/server-side/java/spark-java/
http://keis-software.com/2016/03/07/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-spark/
http://techblog.gmo-ap.jp/2016/06/27/1671/
http://mmts1007.hatenablog.jp/entry/2015/10/04/141826