บทความ

คู่มือ Java ฉบับทันสมัย (อัปเดตล่าสุดปี 2025)

 คู่มือ Java ฉบับทันสมัย (อัปเดตล่าสุดปี 2025) บทนำ Java ยังคงเป็นภาษายอดนิยมที่ได้รับความนิยมอย่างต่อเนื่องตั้งแต่ยุค 1990 จนถึงปัจจุบัน ในปี 2025 Java ได้ก้าวหน้าอย่างมากทั้งด้านภาษาหลักและเครื่องมือสนับสนุน ล่าสุด Java 24 ได้เปิดตัวออกมาแล้ว และ Java 21 เป็นเวอร์ชัน LTS (Long-Term Support) ที่แนะนำให้ใช้งานสำหรับระบบจริงในระยะยาว บทความนี้จะช่วยให้คุณเข้าใจภาพรวมของ Java เวอร์ชันล่าสุด รวมถึงฟีเจอร์เด่น โครงสร้างภาษาที่ควรรู้ และแนวทางการพัฒนา Java ยุคใหม่ ภาพรวมเวอร์ชัน Java ล่าสุด เวอร์ชัน สถานะ วันเปิดตัว Java 24 เวอร์ชันล่าสุด มีนาคม 2025 Java 21 เวอร์ชัน LTS ล่าสุด กันยายน 2023 Java 17 LTS รุ่นก่อนหน้า กันยายน 2021 Java 11 LTS เก่า กันยายน 2018 โครงสร้างพื้นฐานของภาษา Java คลาสและอ็อบเจกต์ : โครงสร้างหลักของโปรแกรม Java Primitive Types : int, double, char, boolean เป็นต้น Control Statements : if, switch, while, for, do-while Methods : การแยกโค้ดเป็นหน่วยที่นำกลับมาใช้ซ้ำได้ Array และ Collection : จัดเก็บและจัดการข้อมูลหลายรายการ Exception Handling : try-catch-finally OOP Co...

ตัวอย่างสร้างเกมส์แนวเนื้อเรื่องด้วย wayOS

You wake up in an abandoned house.   The floor creaks under your weight, and the air smells of dust and decay.   A faint light flickers from the hallway.      What happened here?   , menu1      menu1,   You hear a strange noise coming from upstairs.   - Investigate the noise #courage+, upstairs #courage   - Look for an exit, search   - Stay put and observe, wait      upstairs gt0,   You cautiously step upstairs. A shadow moves at the end of the hallway.   - Call out, callout   - Approach quietly #stealth+, sneak      search,   You find the front door locked tight. A window is slightly open.   - Try to squeeze through #agility+, escape #agility   - Look for another way out, investigate      wait,   You wait in silence. Footsteps approach from the hallway.   - Hide under the table #stealth+, hide #stealth   - Confront whoever is coming,...

การใช้งาน RPC (Remote Procedure Call) ด้วย Java พร้อมตัวอย่างเกมออนไลน์ (ต่อ)

เพื่อให้สามารถอัปเดตสถานะของผู้เล่นคนอื่นในเกมออนไลน์ผ่าน RPC ได้ คุณสามารถใช้ฟีเจอร์  Server Streaming RPC  ของ gRPC เพื่อให้เซิร์ฟเวอร์ส่งข้อมูลสถานะของผู้เล่นแบบเรียลไทม์ไปยังไคลเอนต์ที่กำลังเชื่อมต่ออยู่ ตัวอย่างด้านล่างแสดงวิธีการเพิ่มฟีเจอร์นี้ในเกม: อัปเดตไฟล์  game.proto เพิ่มเมธอดสำหรับการสตรีมสถานะของผู้เล่น: syntax = "proto3" ; service GameService { rpc JoinGame (JoinRequest) returns (JoinResponse) ; rpc SendMove (MoveRequest) returns (MoveResponse) ; rpc StreamPlayerUpdates (PlayerUpdateRequest) returns (stream PlayerUpdateResponse) ; } message JoinRequest { string playerName = 1 ; } message JoinResponse { string welcomeMessage = 1 ; } message MoveRequest { string playerName = 1 ; string move = 2 ; } message MoveResponse { string result = 1 ; } message PlayerUpdateRequest { string playerName = 1 ; // ชื่อผู้เล่นที่ต้องการรับการอัปเดต } message PlayerUpdateResponse { string playerName = ...

การใช้งาน RPC (Remote Procedure Call) ด้วย Java พร้อมตัวอย่างเกมออนไลน์อย่างง่าย

RPC (Remote Procedure Call) เป็นเทคนิคในการเรียกใช้ฟังก์ชันหรือเมธอดที่อยู่ในระบบอื่น (เช่นเซิร์ฟเวอร์) เสมือนเป็นการเรียกฟังก์ชันในเครื่องของเราเอง เหมาะสำหรับการพัฒนาแอปพลิเคชันแบบกระจาย (Distributed Applications) เช่น เกมออนไลน์ที่ต้องสื่อสารระหว่างผู้เล่นกับเซิร์ฟเวอร์ ด้านล่างนี้เป็นการอธิบายวิธีการใช้งาน RPC ด้วย Java โดยใช้  gRPC  ซึ่งเป็นหนึ่งในไลบรารีที่ได้รับความนิยม การตั้งค่าพื้นฐาน เพิ่ม Dependency ใน  build.gradle  หรือ  pom.xml สำหรับ Gradle: implementation 'io.grpc:grpc-netty:1.57.2' implementation 'io.grpc:grpc-protobuf:1.57.2' implementation 'io.grpc:grpc-stub:1.57.2' implementation 'com.google.protobuf:protobuf-java:3.23.0' สำหรับ Maven: < dependencies > < dependency > < groupId > io.grpc </ groupId > < artifactId > grpc-netty </ artifactId > < version > 1.57.2 </ version > </ dependency > < dependency > < groupId ...

สอนการใช้งาน A* Algorithm ด้วยภาษา Java

A* Algorithm คืออะไร A  (A-Star) Algorithm เป็นอัลกอริธึมที่ใช้สำหรับการค้นหาเส้นทางที่มีประสิทธิภาพที่สุดระหว่างสองจุดในกราฟ โดยพิจารณาทั้งค่า  g(n)  (ค่าเส้นทางจากจุดเริ่มต้นถึงจุดปัจจุบัน) และ  h(n)  (ค่าประมาณระยะทางจากจุดปัจจุบันถึงจุดปลายทาง) ซึ่งค่าทั้งสองจะรวมกันเป็น  *f(n) = g(n) + h(n) ขั้นตอนของ A* Algorithm เริ่มต้นจากจุดเริ่มต้น (Start Node) และเพิ่มเข้าไปใน  Open List เลือก Node ที่มีค่าฟังก์ชัน  f(n)  ต่ำที่สุดใน Open List  ย้าย Node ดังกล่าวไปยัง  Closed List ตรวจสอบเพื่อนบ้าน (Neighbor Nodes) ของ Node ที่เลือก  หาก Node เพื่อนบ้านยังไม่เคยอยู่ใน Open หรือ Closed List ให้เพิ่มเข้า Open List และคำนวณค่า  g(n) ,  h(n)  และ  f(n) หาก Node เพื่อนบ้านเคยอยู่ใน Open List แต่เส้นทางใหม่ดีกว่า ให้ปรับปรุงค่า  g(n) ,  h(n) , และ  f(n) ทำซ้ำจนกว่าจะถึงเป้าหมาย (Goal Node) หรือ Open List ว่าง  การเขียนโค้ด A* Algorithm ด้วย Java ตัวอย่างนี้เป็นการหาเส้นทางในกราฟ 2 มิติ (Grid)  i...

สอนสร้าง Cron Job ด้วย Spring Boot (ต่อ)

ใน Spring Boot การดึงค่าจาก  Entity  เพื่อใช้เป็นค่าใน  Cron Expression สามารถทำได้โดยการปรับแต่งโค้ดให้มีความยืดหยุ่นขึ้น ซึ่งต้องใช้  Dynamic Scheduling  แทนการกำหนดค่าแบบคงที่ใน  @Scheduled  เนื่องจาก  @Scheduled ไม่รองรับการกำหนดค่าแบบไดนามิกโดยตรง  วิธีดึงค่าจาก Entity เพื่อใช้ใน Cron Expression 1. สร้าง Entity และ Repository สมมติว่าเรามี Entity ที่เก็บค่า cron expression ไว้:  Entity: import jakarta.persistence.Entity; import jakarta.persistence.Id; @Entity public class CronConfig { @Id private Long id; private String cronExpression; // Getter and Setter public Long getId() { return id; } public void setId( Long id) { this .id = id; } public String getCronExpression() { return cronExpression; } public void setCronExpression(String cronExpression) { this .cronExpression = cronExpression; } } Repository: import org.springframewo...

สอนสร้าง Cron Jobs ด้วย Spring Boot

Cron Jobs  คือเครื่องมือที่ช่วยให้สามารถกำหนดตารางเวลาสำหรับการทำงานของระบบได้ โดยใน Spring Boot เราสามารถใช้ความสามารถของ  @Scheduled จาก Spring Framework เพื่อจัดการงานที่ต้องการรันตามเวลาที่กำหนดได้ง่าย ๆ  ขั้นตอนการสร้าง Cron Jobs ใน Spring Boot 1. เพิ่ม Dependency ใน  pom.xml  ของโปรเจกต์ Spring Boot ให้ตรวจสอบว่ามี dependency ดังต่อไปนี้  < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter </ artifactId > </ dependency > 2. เปิดใช้งาน Scheduled Tasks เพิ่มคำสั่ง  @EnableScheduling  ในคลาสหลักของโปรเจกต์  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class CronJobApplication { public static void main(String[] args) { SpringApplicatio...