java Archive

เมื่อ NullPointerException ใน Java กำลังจะบอกว่าสาเหตุเกิดจากอะไร !!

ปัญหาอย่างหนึ่งในภาษา Java คือ เมื่อเกิด error ที่ว่า NullPointerException (NPE) แล้ว  หรือการ access ไปยัง object ที่เป็น Null จะไม่ได้แจ้งรายละเอียดเลยว่า มีสาเหตุมาจากอะไร ? ยกตัวอย่างเช่น A.getB().getC().getD() เมื่อเกิด NullPointerException แล้ว คำถามคือ มันเป็นตรงไหนละเนี่ย

Read More…

ทำความรู้จักกับ Helidon (Lightweight Java Microservice framework)

เห็นมีการ share บทความเกี่ยวกับ Helidon Project จากทาง Oracle  ซึ่งปล่อย version 1.0 ออกมาแล้ว บอกว่ามันคือ Lightweight Java Microservice framework ดังนั้นจึงมี library ที่จำเป็นสำหรับการพัฒนาระบบตามแนวคิด Microservices ไว้ให้เลย

Read More…

มาดู Switch Expressions (Preview) ใน JDK 12 กัน

เห็นว่า JDK 12 เพิ่งปล่อยออกมาตามสัญญาคือ ทุก ๆ 6 เดือน เลยลองดูหน่อยว่า มี feature อะไรที่น่าสนใจสำหรับนักพัฒนากันบ้าง ? พอไปดูก็ไม่รู้เรื่องสิครับ อะไรก็ไม่รู้

Read More…

เรียนรู้ภาษา Java ผ่าน Jupyter Notebook

มาติดตั้งกัน เริ่มด้วยสิ่งที่ต้องมีก่อนคือ JDK 9 ขึ้นไป Python 3 Jupyter notebook

Read More…

คำแนะนำสำหรับการเขียน code ด้วยภาษา Java

ในปี 2018 นั้นได้สอนและแนะนำเกี่ยวกับการพัฒนาระบบงานด้วยภาษา Java เยอะพอควร สิ่งที่หนึ่งที่มักจะแนะนำคือ เรื่องที่นักพัฒนาภาษา Java มักทำผิด ยกตัวอย่างเช่น ไม่รู้จัก JAVA_HOME ไม่รู้จัก CLASSPATH ไม่สามารถ compile และ run ผ่าน command-line ได้ ไม่ได้ใช้ความสามารถของ IDE ได้อย่างเต็มที่และถูกต้อง ซึ่งผมคิดว่า เป็นพื้นฐานมาก ๆ ที่ควรต้องรู้และเข้าใจ เพื่อช่วยทำให้เราแก้ไขปัญหาต่าง ๆ ได้อย่างถูกต้องมากยิ่งขึ้น แต่ก็มีเรื่องอื่น ๆ ที่อยากจะแนะนำอีกสักเล็กน้อย มาดูกันว่ามีอะไรบ้าง

Read More…

สวัสดี Java 11

ผ่านมา 6 เดือนที่ Java 10 ถูกปล่อยออกมา ก็ได้เวลาของ Java 11 กันบ้าง (ตามแผนมาก ๆ) ในเรื่องของ feature ต่าง ๆ นั้นก็จัดว่าเยอะอยู่แล้ว เหมือนกับการนำ Java 9 + 10 มานั่นเอง อีกอย่างที่น่าสนใจคือ เรื่องของ Licence และรอบของการ support/release จากทาง Oracle หรือ Long Term Support (LTS) ซึ่งจะมีรอบในการ release ทุก ๆ 6 เดือนนั่นเอง

Read More…

[JUnit 5] มาลองใช้งาน RepeatTest และ DynamicTest

ระหว่างรอรถก็นั่งอ่านเอกสารของ JUnit 5 มีความสามารถใหม่ ๆ เยอะเลย ที่สำคัญน่าจะได้เวลานำมาใช้อย่างจริงจังได้แล้ว จึงลองเล่นสัก 2 features ประกอบไปด้วย RepeatTest DynamicTest ให้ทำงานในรูปแบบ Parameterized มาเขียน code กันดีกว่า

Read More…

Java 10 เป็นมิตรกับ Docker แล้วนะ

สำหรับระบบงานที่ run ใน JVM (Java Virtual Machine) นั้น ไม่ว่าจะเป็น Java Spring, Apache Spark, Apache Kafka และอื่น ๆ มีนำมาอยู่ในโลกของ container แล้วนั้น พบว่าจะมีปัญหาเรื่องการจัดการและใช้งาน memory และ CPU เป็นอย่างมาก ทั้งกิน memory และใช้ CPU เกินขนาดที่กำหนด ทำให้ประสิทธิภาพการทำงานใน container แย่มาก ๆ

Read More…

Java Developer จัดการ version ของภาษา Java กันอย่างไร ?

หลายครั้งที่ไปแบ่งปันเรื่องต่าง ๆ เกี่ยวกับการพัฒนาระบบงานด้วยภาษา Java สิ่งหนึ่งที่ต้องประหลาดใจคือ หลาย ๆ คนไม่ได้กำหนดค่าของ JAVA_HOME สามารถทำการ run ด้วยคำสั่ง java ได้ แต่ไม่สามารถ compile ด้วยคำสั่ง javac ได้ นั่นหมายความว่า ในเครื่องมีแต่ JRE (Java Runtime Environment) แต่ไม่มี JDK (Java Development Kit) หรือบางคนก็มี JDK นะแต่ run ไม่ได้ เนื่องจากทำการกำหนดไว้ใน IDE เท่านั้น แต่ไม่ได้กำหนด JAVA_HOME หรือบางคนก็กำหนดนะ แต่กำหนดไว้ใน PATH ตรง ๆ เลย ไม่มีกำหนดใน JAVA_HOME คำถามที่น่าสนใจคือ ถ้ามี Java หรือ JDK หลาย ๆ version [&hellip

Read More…

ว่าง ๆ มาทำความรู้จักกับ Java 10 กันหน่อย

เห็นมีการพูดถึง Java หรือ JDK 10 กันบ้างพอสมควร (เงียบ ๆ นะ) เนื่องจากตามแผนแล้วจะถูกปล่อยตัวเต็มมาในมีนาคมนี้แล้ว โดยมี feature ต่าง ๆ แยกไปตาม JEPS ดังนี้ 286: Local-Variable Type Inference 296: Consolidate the JDK Forest into a Single Repository 304: Garbage-Collector Interface 307: Parallel Full GC for G1 310: Application Class-Data Sharing 312: Thread-Local Handshakes 313: Remove the Native-Header Generation Tool (javah) 314: Additional [&hellip

Read More…