Screen Shot 2558-04-19 at 11.09.25 AM
วันนี้เจอ opensource สำหรับการสร้าง Java web project
ซึ่ง project นั้นจะแบ่งออกเป็น 2 ส่วนคือ

  1. Front-end คือ AngularJS
  2. Backend คือ Spring Boot

ถ้าใครต้องการสร้าง project ในรูปแบบนี้
สามารถใช้งาน jHipster ได้เลย
ดังนั้น ลองมาทำความรู้จัก และ เริ่มใช้งานกันหน่อย

jHipster มันคืออะไร ?

มันคือ Yeoman generator
สำหรับการสร้าง java project แบบอัตโนมัติ
ซึ่งประกอบไปด้วย AngularJS และ Spring Boot นั่นเอง

เทคโนโลยีที่ใช้งาน มีอะไรบ้าง ?

ส่วนแรกคือ Client side หรือ Front-end ประกอบไปด้วย

  • HTML5
  • Twitter bootstrap
  • AngularJS
  • ใช้ได้กับ IE9 ขึ้นไป และ modern browser อื่นๆได้
  • สนับสนุน I18n ด้วย Angular Translate
  • แน่นอนว่าใช้ Yeoman สำหรับ development workflow
  • ซึ่งมันมีเครื่องมือหลายๆ ตัวให้ใช้งาน คือ
  • Bower, Grunt, Karma และ PhantomJS

ส่วนที่สองคือ Server side หรือ Backend ประกอบไปด้วย
สนับสนุน Spring application แบบเต็มๆ นะครับ
มีดังนี้

  • Sprint Boot
  • Maven และ Gradle
  • Spring Security
  • Spring MVC REST
  • Spring Data JPA
  • สนับสนุน MongoDB, Cassandra ผ่าน Spring Data

ยังไม่พอนะ ยังมีระบบอื่นๆ อีก เช่น

  • ระบบ Monitoring ด้วย Metrics
  • Local caching ด้วย ehcache
  • Distributed caching ด้วย hazelcast
  • การ optimize พวก static resource ต่างๆ ทั้งหมด
  • Log management ด้วย Logback
  • จัดการ Connection pool ด้วย HikariCP
  • สามารถสร้าง EAR, WAR และ Executable JAR สำหรับการ deploy

มาเริ่มใช้งานกันดีกว่า !!

Software requirement ที่ใช้งาน

  • JDK 7+
  • NodeJS + NPM
  • Apache Maven หรือ Gradle

ขั้นตอนแรก ทำการติดตั้ง
$ npm install -g yo
$ npm install -g bower
$ npm install -g grunt-cli
$ npm install -g gulp
$ npm install -g generator-jhipster

เมื่อติดตั้งเรียบร้อยแล้ว
ทำการสร้าง project ของระบบ ด้วยคำสั่ง
$yo jhipster

จากนั้น jhipster จะถามข้อมูลในการสร้าง project เยอะมากๆ
จำนวน 13 ข้อ มันเยอะมากๆ มาดูคร่าวๆ ว่ามีอะไรบ้าง

  • ชื่อ project
  • ชื่อ package
  • JDK ที่ต้องการใช้
  • วิธีการ Authenticate
  • Database ที่จะใช้งานทั้ง production และ development
  • Caching
  • HTTP clutering
  • จะใช้ Maven หรือ Gradle ในฝั่ง Backend
  • จะใช้ Grunt หรือ Gulp.js ในฝั่ง Front-end

เมื่อตอบคำถามทุกอย่างเรียบร้อยแล้ว
jhipster จะทำการสร้าง file และ folder มาให้เพียบ
แต่ดูใน level แรกจะเป็นดังรูป

Screen Shot 2558-04-19 at 11.46.01 AM

จากนั้นมี Start server กันดีกว่า
ซึ่งผมเลือก Apache Maven ดังนั้น start ด้วยคำสั่ง
$ mvn spring-boot:run

มันจะทำการ download dependency library มาเพียบ
ก็รอสักหน่อยนะ !!
โดยจะทำการ start ใน mode development นะครับ

แล้วเข้าไปที่ http://localhost:8080 แสดงดังรูป

Screen Shot 2558-04-19 at 12.02.00 PM

ลองทำการ login ด้วย Role Administrator ด้วย
username = admin
password = admin

แล้วดูระบบ Monitoring ผ่าน Metrics ดังรูป

Screen Shot 2558-04-19 at 12.04.33 PM

จากนั้นลองไปดู Health check ของระบบที่ใช้งาน
เช่น Database, Email และ Disk ว่าเป็นอย่างไร ดังรูป

Screen Shot 2558-04-19 at 12.06.43 PM

ยังไม่พอนะ มีส่วนของ APIs ต่างๆ ของ Hipster API ให้ใช้งานอีกสิ

Screen Shot 2558-04-19 at 12.07.27 PM

มีส่วนของ Log และ Audit และ อีกมากมาย มันจะเยอะไปไหนนะ !!!

ยังไม่พอนะครับ (ยังมีอะไรอีกล่ะ ??)
สามารถ deploy project ที่สร้างด้วย jHipster นั้น
ไปยัง Cloud service ได้เลย
เช่น Cloud Foundry, Heroku และ OpenShift เป็นต้น

สุดท้ายแล้วววววววววว

ตัวอย่างของ code ที่ jHipster มันสร้างให้อยู่ที่ Github::Up1
มันเยอะมากๆ ทั้งเทคโนโลยี เครื่องมือ library และอื่นๆ อีกมากมาย
แต่ข้อดีของมันคือ ช่วยให้เริ่มต้นสร้าง project ได้ง่าย
ยิ่งสำหรับ Java project ที่ใช้งาน Spring Boot น่าจะชอบมากขึ้น

แล้วคุณล่ะ คิดว่าแนวทางนี้เป็นอย่างไรกันบ้าง ?