สำหรับ 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 กลับไป เขียนได้ดังนี้ [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/ ได้ผลดังรูป เพียงเท่านี้ก็สามารถสร้าง Java Web Application ได้แล้วนะแต่ว่ามันง่ายไปนะ ดังนั้นเราลองมาสร้าง REST API ใช้งานกันสักหน่อยดีกว่า
พอดีเขียน web ไม่เป็น เขียนเป็นแต่ REST API นะ ความต้องการ คือ เพิ่มข้อมูลพนักงานใหม่เข้าไปในระบบ สำหรับ REST API ต้องกำหนดดังนี้- Request ต้องผ่าน HTTP POST
- Path ที่ใช้คือ /employee