java Archive

JDK 9 Feature Complete แล้วจ้า !!!

หลังจากที่ JDK 9 Feature Extension Complete process นั้น เลื่อนมาจากเมื่อปลายปีที่ผ่านมา ถึงตอนนี้ทีมดูแลได้ประกาศออกมาว่าขั้นตอนนี้เสร็จสิ้นแล้ว นั่นหมายความว่า ได้ feature ทั้งหมดออกมาแล้ว !!

Read More…

Kata Java :: ฝึกกรองและเรียงลำดับข้อมูลใน List

จาก post การพูดคุยเรื่องทำการกรองและเรียงลำดับข้อมูลใน List กันอย่างไร ? ใน Facebook group ของ Thailand Android Developer ซึ่งมีความน่าสนใจมาก ๆ จึงมาลองฝึกเขียนตามคำแนะนำใน comment กันหน่อย โดยจะเป็นภาษา Java และ Kotlin ซึ่งมีวิธีการแก้ไขดังนี้ เขียนด้วยภาษา Java ทั่วไป เขียนด้วย Java 8 Lambda เขียนด้วยการนำ Google Guava มาช่วย เขียนด้วยการนำ RxJava มาช่วย เขียนด้วยภาษา Kotlin มาเขียน code กัน ที่สำคัญมี test นะเออ

Read More…

จัดการ Spring boot application ด้วย Docker

จากบทความเรื่อง การวางโครงสร้างระบบด้วย Spring boot ก็มีถึงกระบวนการ deploy กันบ้าง ซึ่งเลือกที่จะจัดการผ่าน Docker โดยสิ่งที่คิดไว้จะมี 2 container คือ สำหรับ Database ซึ่งคือ MariaDB สำหรับการ run ระบบด้วย Spring boot ดังนั้นมาลงมือทำกันหน่อย เพื่อทำให้กระบวนการพัฒนาและ deploy มันสะดวกสบายมากขึ้น แน่นอนว่า สนุกสนานกันอย่างแน่นอน

Read More…

สิ่งที่ควรคำนึงสำหรับการสร้าง Docker Image กับ Java

มีโอกาสต้องนำ Docker มาใช้ในระบบงานที่พัฒนาด้วยภาษา Java จากการลงมือทำพบว่า มันไม่ใช่เรื่องง่ายเลย สำหรับการนำระบบงานที่พัฒนาด้วยภาษา Java มาใส่ในโลกของ Container ดังนั้นจึงทำการสรุปสิ่งที่ต้องคำนึงไว้นิดหน่อย น่าจะเป็นประโยชน์สำหรับคนที่กำลังจะเริ่มนะ 1. เริ่มด้วยการเลือก Image ของ JDK (Java Development Kit) ที่มีขนาดเล็ก ๆ จากการทดลองใช้ image จาก OpenJDK 8 พบว่า OpenJDK แบบ default ซึ่งใช้ os คือ Debian 8 Jessie มีขนาด 643.2 MB (สำหรับ JRE มีขนาด 107.9 MB) OpenJDK แบบใช้ os คือ alpine มีขนาด 145 MB (สำหรับ JRE [&hellip

Read More…

ตัวอย่างการวางโครงสร้างระบบด้วย Spring Boot

เนื่องจากต้องทำการแนะนำและวางโครงสร้างระบบงานที่พัฒนาด้วยภาษา Java โดยสิ่งที่ต้องการคือ ระบบ REST APIs ง่าย ๆ ซึ่งทางเลือกในภาษา Java ก็มีมากมายทั้ง Servlet 3 JAX-RS Jersey Spring MVC Spring Boot Drop Wizard คำถามแรกคือ จะเลือกอะไรดีล่ะ ? คำตอบคือ ความต้องการของระบบเป็นอย่างไร ? ความสามารถของทีมเป็นอย่างไร ? ตอบด้วยคำถาม นี่มันกวนจริง ๆ นะ !!

Read More…

สรุปการแบ่งปันเรื่อง Functional Interface ใน Java 8

ใน Java 8 นั้นมี feature ที่น่าสนใจมากมาย แน่นอนว่า ความสามารถต่าง ๆ นั้นถูกสร้างขึ้นมา เพื่อลดปัญหาที่เกิดจากตัวภาษา เช่น Lambda Functional Interface Default method ใน interface เมื่อนำมารวมกับแนวคิดต่าง ๆ จาก Design Pattern ทำให้เห็นภาพต่าง ๆ ชัดเจนมากขึ้น

Read More…

มาดูผลสำรวจเรื่อง Enterprise Development Trends 2016 จาก JVM Developer

ทาง Lightbend ทำสำรวจเรื่อง Enterprise Development Trends 2016 ซึ่งทำการสำรวจจาก JVM(Java Virtual Machine) Developer กว่า 2,500 คน เพื่อทำให้เห็นแนวโน้มของ development และ IT operation รวมทั้งการนำเทคโนโลยีและแนวคิดต่าง ๆ มาใช้งาน ทั้ง Cloud, Container และ Microservice มาดูผลสำรวจที่น่าสนใจกัน

Read More…

แก้ไขปัญหา Apache Maven ทำงานช้าด้วยการ build เฉพาะส่วนที่เปลี่ยนแปลง

เนื่องจากงานที่ดูอยู่เป็นระบบที่พัฒนาด้วยภาษา Java ส่วนโครงสร้างและ build tool ที่ใช้งานเป็นหลักคือ Apache Maven โดยในระบบประกอบไปด้วย module ต่าง ๆ มากมาย ส่งผลให้เมื่อมีการเปลี่ยนแปลงหนึ่งครั้ง จะต้องใช้เวลาในการ build ใหม่นานมาก ๆ (Clean build) ดังนั้นจึงมีแนวคิดว่า ถ้าทำการ build เฉพาะจุดหรือ module ที่มีการแก้ไข น่าจะทำให้การ build เร็วขึ้น มาเริ่มลงมือกันดีกว่า

Read More…

ขำ ๆ ไปกับ WebSphere Liberty

เนื่องจากช่วงนี้ต้องทำงานกับ IBM Websphere บ้างนิดหน่อย ดังนั้นจึงอยากจะลองติดตั้งและใช้งานนิดหน่อย แต่เมื่อไปดูขนาดของไฟล์ติดตั้ง และ ความต้องการต่าง ๆ แล้วไม่น่าจะรอด จึงไปดูว่า มีวิธีการไหนที่น่าเป็นไปได้บ้าง เมื่อไปดูแล้วพบว่ามี Websphere Liberty ให้ใช้งาน ซึ่งสามารถใช้งานกับ Docker ได้อีก ดังนั้นมาลองใช้งานกันดูหน่อยสิ

Read More…

จัดการ Dependency Injection ด้วย Dagger 2

จากบทความเรื่อง Dependency Injection Made Simple ทำการอธิบายเรื่อง Dependency Injection และ Dependency Inversion Principle (DIP) ทำให้เข้าใจว่าวิธีการนี้มีความสำคัญอย่างไรต่อการพัฒนา software สิ่งที่น่าสนใจคือ การจัดการ Dependency Injection ในระบบงานด้วย Dagger ซึ่งเป็น library ที่นักพัฒนาหลาย ๆ คนไม่น่าจะพลาด โดยเฉพาะ Android Developer น่าจะรู้จักและใช้งานกันเกือบทุกคน !! ในบทความข้างต้นใช้ Dagger 1 แต่ในบทความนี้ใช้ Dagger 2 นะครับ ดังนั้นเรามาดูในรายละเอียดว่ามีอะไรที่น่าสนใจบ้าง

Read More…