![Spark_Java_Logo]()
![Screen Shot 2558-12-03 at 9.51.41 PM]()
สำหรับ Java Developer นั้น
การจะสร้าง web application นั้นมันยากเย็นมากนัก
ทั้งวิธีการเขียน code ที่เยอะ
ทั้ง library ต่างๆ ที่ใช้งาน
ทั้ง Web server หรือ Application server
ตลอดจนการ deploy เพื่อทดสอบ
นี่คือกระบวนการพัฒนาแบบคร่าว ๆ
แน่นอนว่า feedback loop มันช้ามาก ๆ
แต่หลาย ๆ คนก็ยังคงทำกันอยู่ ทำไมนะ ?
ดังนั้น เรามาลองสร้าง Web Server และ Web Application ง่าย ๆ ด้วย Spark กันบ้างสิ
ว่ามันช่วยลดงาน และ เพิ่มความเร็วในการพัฒนาบ้างไหม ?
ปล. Spark ที่พูดถึงคือ Spark Java นะครับ
ไม่ใช่ Apache Spark !!
เขียนครั้งแรกเมื่อปีที่แล้ว
แต่ในปีนี้มันเปลี่ยนไปเยอะพอควร จึงนำมาเขียนใหม่
ทำความรู้จักกับ Spark กันหน่อย
เป็น framework เล็ก ๆ สำหรับการสร้าง Java web application
โดยทำงานบน Java 8 ขึ้นไปเท่านั้น
ได้รับแรงบันดาลใจมาจาก
Sinatra
มีเป้าหมายเพื่อ
ทำให้เราสามารถพัฒนา web application ได้ง่าย และ เร็วขึ้น
นั่นคือ Java Developer ใช้พลังงานน้อยลง
แต่ได้งานออกมารวดเร็วกว่าเดิม
มันช่วยเพิ่ม productivity เยอะเลย
ที่สำคัญเอาไปพัฒนาในรูปแบบของ microservice ง่ายด้วยนะสิ
ปล. ภาษาอื่น ๆ เขามีมานานแล้วนพ !!
ดังนั้นเราลองมาสร้าง Web application ด้วย Spark กันดีกว่า
ตามธรรมเนียมต้องเริ่มที่ Hello World นะสิ
ขั้นตอนการสร้างก็ไม่ยากเป็นดังนี้
ขั้นตอนที่ 1 ตัวอย่างสร้าง project เป็น Maven project
ดังนั้นไฟล์ pom.xml ซึ่งประกอบไปด้วยส่วนที่น่าสนใจ คือ
- Dependency ที่ใช้งานคือ spark-core
- กำหนดการ build ของ Maven ให้ทำงานตามที่เราต้องการทั้งเวอร์ชันของ Java และการ package เป็นไฟล์ JAR ชื่อว่า demo_api.jar
- กำหนด Main class คือ ServerAPI เป็น class สำหรับใช้ Start Web Server นั่นเอง
มีหน้าตาแบบนี้
[gist id="599a9379d47c2f0f648a" file="pom.xml"]
ขั้นตอนที่ 2 สร้าง class ServerAPI ขึ้นมา
เป็น class สำหรับ Start Web Server
ซึ่งเราสามารถกำหนด endpoint ต่าง ๆ ของ web ได้เลย
จากตัวอย่างจะรับ request ผ่าน HTTP GET มาที่ /
และจะส่ง response กลับไปว่า Hello World กลับไป
เขียนได้ดังนี้
[gist id="599a9379d47c2f0f648a" file="APIServer.java"]
ขั้นตอนที่ 3 จะช้าอยู่ทำไม run สิครับ
แน่นอนว่า run ด้วย maven สิ ดังนี้
$mvn clean package
ผลที่ได้คือจะมีไฟล์ demo_api.jar อยู่ใน folder target
จากนั้นทำงาน run demo_api.jar ซะ ดังนี้
$java -jar demo_api.jar
ผลที่ได้เป็นดังนี้
[Thread-0] INFO org.eclipse.jetty.util.log - Logging initialized @200ms
[Thread-0] INFO spark.webserver.JettySparkServer - == Spark has ignited ...
[Thread-0] INFO spark.webserver.JettySparkServer - >> Listening on 0.0.0.0:4567
[Thread-0] INFO org.eclipse.jetty.server.Server - jetty-9.3.z-SNAPSHOT
[Thread-0] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@5c4ca375{HTTP/1.1,[http/1.1]}{0.0.0.0:4567}
[Thread-0] INFO org.eclipse.jetty.server.Server - Started @327ms
จะสังเกตได้ว่า Web server จะทำการ start ขึ้นมาที่ port 4567
ทดสอบผ่าน browser หน่อยสิ ด้วย
URL = http://localhost:4567/
ได้ผลดังรูป
![Screen Shot 2558-12-03 at 8.39.44 PM]()
เพียงเท่านี้ก็สามารถสร้าง Java Web Application ได้แล้วนะ
แต่ว่ามันง่ายไปนะ ดังนั้นเราลองมาสร้าง REST API ใช้งานกันสักหน่อยดีกว่า
พอดีเขียน web ไม่เป็น เขียนเป็นแต่ REST API นะ
ความต้องการ คือ
เพิ่มข้อมูลพนักงานใหม่เข้าไปในระบบ
สำหรับ REST API ต้องกำหนดดังนี้
- Request ต้องผ่าน HTTP POST
- Path ที่ใช้คือ /employee
ดังนั้นเรามาเขียน code กันดีกว่า
เริ่มจากทำการเพิ่ม path ใน APIServer.java
[gist id="599a9379d47c2f0f648a" file="APIServer2.java"]
สังเกตได้ว่าในส่วนของ post มันจะแตกต่างออกไป
ซึ่งเราสามารถเขียนได้หลายแบบ
แต่ถ้าให้สวยงาม เราควรแยกออกไปเป็น class ใหม่
ซึ่ง class
AddEmployee นั้นจะ extends จาก class Route ของ Spark ดังนี้
[gist id="599a9379d47c2f0f648a" file="AddEmployee.java"]
จากนั้นลองทำการทดสอบผ่าน HTTP POST ดู
เพียงเท่านี้ก็เรียบร้อย
สำหรับการสร้าง REST API สำหรับการเพิ่มพนักงานใหม่ด้วย Spark
ง่ายไหมนะ ?
สามารถดู code ตัวอย่างเพิ่มเติมได้ที่
GitHub::Up1:Spark-Java-Demo