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 นั่นเอง

มีหน้าตาแบบนี้

ขั้นตอนที่ 2 สร้าง class ServerAPI ขึ้นมา

เป็น class สำหรับ Start Web Server
ซึ่งเราสามารถกำหนด endpoint ต่าง ๆ ของ web ได้เลย
จากตัวอย่างจะรับ request ผ่าน HTTP GET มาที่ /
และจะส่ง response กลับไปว่า Hello World กลับไป
เขียนได้ดังนี้

ขั้นตอนที่ 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

สังเกตได้ว่าในส่วนของ post มันจะแตกต่างออกไป
ซึ่งเราสามารถเขียนได้หลายแบบ
แต่ถ้าให้สวยงาม เราควรแยกออกไปเป็น class ใหม่
ซึ่ง class AddEmployee นั้นจะ extends จาก class Route ของ Spark ดังนี้

จากนั้นลองทำการทดสอบผ่าน HTTP POST ดู
เพียงเท่านี้ก็เรียบร้อย
สำหรับการสร้าง REST API สำหรับการเพิ่มพนักงานใหม่ด้วย Spark
ง่ายไหมนะ ?

สามารถดู code ตัวอย่างเพิ่มเติมได้ที่ GitHub::Up1:Spark-Java-Demo