Skip to content

บทที่ 0 — Java คืออะไร และทำไมต้องเรียน

← กลับไปที่สารบัญ Java | บทที่ 1: Setup + Hello World →

📱 อ่านบนเว็บหรือไฟล์ .md? — หนังสือเล่มนี้ออกแบบสำหรับเว็บ (VitePress): กล่อง ::: เช่น ::: details เฉลย เป็นกล่องกดเปิด/ปิดได้, แผนภาพ mermaid แสดงเป็นรูปภาพ — ถ้าอ่านไฟล์ .md ตรง ๆ ใน text editor หรือ GitHub จะเห็นเป็นข้อความธรรมดา ซึ่งไม่กระทบเนื้อหา

บทนี้ยังไม่เขียนโค้ดเลย แต่เป็นบทที่ สำคัญที่สุด เพราะถ้าเข้าใจว่า "Java คืออะไร ทำงานยังไง" ตั้งแต่ต้น บทต่อ ๆ ไปจะเข้าใจง่ายขึ้นมาก

ผมรู้ว่าคุณอยากเริ่มเขียนโค้ดแล้ว แต่ขอเวลาประมาณ 20 นาที — บทนี้จะตอบคำถามว่า:

  1. คอมพิวเตอร์ "ทำตามคำสั่ง" ได้ยังไง? (ภาพรวมสุดของการเขียนโปรแกรม)
  2. Java เป็นภาษาแบบไหน?
    • compiled vs interpreted: คอมไพล์ล่วงหน้า vs แปลทีละบรรทัด
    • static vs dynamic: ต้องประกาศชนิดข้อมูลล่วงหน้า vs ไม่ต้อง
  3. JVM, JDK, JRE คืออะไร? ทำไมต้องมีหลายอัน?
  4. Java เก่าหรือยัง? ปี 2026 ยังเรียนคุ้มไหม?
  5. Java ต่างจาก JavaScript ยังไง? (ทั้งสองไม่ใช่ภาษาเดียวกัน)

1. คอมพิวเตอร์ทำตามคำสั่งได้ยังไง

ก่อนจะรู้จัก Java เราต้องเข้าใจ "ของจริง" ที่อยู่ใต้ดินก่อน

1.1 CPU เข้าใจแค่ภาษาเดียว: machine code

CPU (Central Processing Unit — สมองของคอม) เข้าใจแค่ ตัวเลขฐาน 2 (0 กับ 1) เรียกว่า machine code

📖 ฐาน 2 = ระบบเลขที่มีแค่ 0 กับ 1 ต่างจากที่เราใช้ทุกวัน (ฐาน 10 มี 0-9)

หน้าตามันเหมือน:

text
10110000 01100001 00000000 ...

แน่นอนว่าคนเขียนแบบนี้ไม่ไหว เลยมี "ภาษากลาง" ให้คนเขียนแล้วค่อยมีโปรแกรมแปลงให้

1.2 ภาษาโปรแกรมแบ่งเป็น 2 ตระกูลใหญ่ ๆ

ตระกูล A: Compiled (คอมไพล์ทั้งหมดก่อนค่อย run)

เขียนโค้ด → compiler แปลงเป็น machine code ทั้งไฟล์ → ได้ไฟล์ binary (ไฟล์ที่มี machine code พร้อม run — เช่น .exe บน Windows) → ค่อย run

ตัวอย่าง: C, C++, Rust, Go

text
your-code.c  →  [compiler: gcc]  →  your-program.exe  →  CPU run

ข้อดี: เร็วมาก เพราะ CPU run machine code ตรง ๆ ข้อเสีย: ต้อง compile ใหม่ทุก platform (platform = ระบบที่โปรแกรมรัน — เช่น Windows, macOS, Linux) — Windows compile แล้ว run บน Mac ไม่ได้

ตระกูล B: Interpreted (อ่านโค้ดทีละบรรทัดแล้ว run)

เขียนโค้ด → interpreter อ่านทีละบรรทัด → แปลงเป็นคำสั่ง CPU ทีละนิด → run

ตัวอย่าง: Python, Ruby, PHP (JavaScript รุ่นเก่า)

💡 หมายเหตุ: JavaScript ยุคใหม่ (เช่น V8 engine ที่อยู่ใน Chrome/Node.js) ก็ใช้ JIT compilation เหมือนกัน ในทางปฏิบัติภาษาสมัยใหม่หลายตัวผสมสองแบบเข้าด้วยกัน ไม่ได้แยกขาดชัดเจนแบบในตำรา — ตอนนี้แค่รู้ว่าแต่ละตระกูลต่างกันตรงไหนก็พอ

text
your-code.py  →  [interpreter: python]  →  run ทีละบรรทัดเลย

ข้อดี: ไม่ต้อง compile, แก้โค้ดแล้ว run ได้เลย, ใช้ข้าม platform ง่าย ข้อเสีย: ช้ากว่า compiled (เพราะแปลงตอน run)

ตระกูล C: Hybrid (compile แล้ว run บนเครื่องสมมติ) — Java อยู่ตรงนี้

📖 เครื่องสมมติ (Virtual Machine) = "คอมจำลอง" ที่อยู่ในคอมจริงอีกที — โปรแกรมที่ทำตัวเหมือนเป็นคอมตัวหนึ่ง รับโค้ดแล้วรันให้

Java เลือกทางสายกลาง:

text
your-code.java  →  [compiler: javac]  →  your-code.class (bytecode)  →  [JVM]  →  CPU

ขั้นที่ 1: เขียน .javajavac compile → ได้ .class (ไฟล์ที่มี bytecode — รหัสกลางที่ JVM อ่านได้ ไม่ใช่ machine code โดยตรง) ขั้นที่ 2: ตอน run, JVM (Java Virtual Machine — เครื่องสมมติของ Java) อ่าน bytecode — ช่วงแรกแปลทีละคำสั่ง แล้ว JIT compiler (Just-In-Time — ระบบปรับแต่งโค้ดอัตโนมัติ) จะแปลง method ที่ถูกเรียกบ่อย ๆ ให้เป็น machine code ตรง ๆ เพื่อให้เร็วขึ้น

Bytecode = format กลาง — ไม่ใช่ machine code ของ CPU ใด ๆ แต่ทุก JVM เข้าใจ

นี่คือที่มาของสโลแกนเก่าของ Java: "Write Once, Run Anywhere" — เขียนทีเดียว, ใช้ได้ทุก OS (เพราะแต่ละ OS มี JVM ของตัวเอง)

ภาพรวม:

💡 หมายเหตุ: แผนภาพด้านล่างแสดงได้บนเว็บ (VitePress) — ถ้าอ่านไฟล์ .md ตรง ๆ ใน text editor หรือ GitHub อาจไม่เห็นภาพ แต่ไม่กระทบการเรียน

💡 เทียบให้เห็นภาพ: ถ้า machine code เปรียบเหมือนภาษาท้องถิ่น (ไทย/ญี่ปุ่น/เกาหลี), bytecode เปรียบเหมือน ภาษากลาง ที่ทุกฝ่ายแปลเป็นภาษาตัวเองได้ — เหมือนตอนคนไทย คนลาว คนเวียดนามประชุมกัน แล้วใช้ภาษาอังกฤษคุยกันแทน เพราะทุกคนแปลเป็นภาษาตัวเองได้


2. Java เป็นภาษาแบบไหน

2.1 Static typing — ตัวแปรต้องประกาศ "ประเภท" ก่อนใช้

ใน Java, ทุกตัวแปรต้อง บอก type ตั้งแต่ตอนประกาศ:

java
int age = 25;           // age เป็นจำนวนเต็ม — เปลี่ยนเป็น "hello" ไม่ได้
String name = "Anna";   // name เป็นข้อความ — เปลี่ยนเป็น 25 ไม่ได้

ถ้าเขียน:

java
int age = "twenty-five";  // ❌ Java จะ error ตอน compile (ก่อน run ด้วยซ้ำ)

นี่คือ static typing — compiler ตรวจ type ตั้งแต่ก่อน run

เทียบกับ JavaScript (dynamic typing):

js
let age = 25;
age = "twenty-five";  // ✅ JS ไม่ว่า — ใส่ string ก็ได้

ข้อดีของ static typing:

  • เจอ bug เร็ว — compile ไม่ผ่าน = ไม่ต้อง run ก็รู้ว่าผิด
  • IDE (IDE = โปรแกรมที่ใช้เขียนโค้ด เช่น IntelliJ — รายละเอียดเต็มบทที่ 1) ช่วย autocomplete และ refactor ได้ดีขึ้น (เพราะรู้ type)

    autocomplete = เดาโค้ดให้อัตโนมัติ · refactor = จัดโครงสร้างโค้ดใหม่

  • โค้ดใหญ่ ๆ จะอ่านง่ายกว่า เพราะรู้แน่ว่าตัวแปรไหนเป็นอะไร

ข้อเสีย: เขียนยาวกว่านิดหน่อย

2.2 Object-Oriented — ทุกอย่างเป็น "object"

Java ออกแบบมาให้คิดเป็น "วัตถุ" (object) ที่มี "คุณสมบัติ" (field/property) และ "ความสามารถ" (method)

ตัวอย่าง: ในชีวิตจริงเรามี "หมาตัวหนึ่ง"

  • คุณสมบัติ: ชื่อ, สี, อายุ
  • ความสามารถ: เห่า, นั่ง, วิ่ง

ใน Java เราเขียนแบบนี้:

java
class Dog {
    String name;
    String color;
    int age;

    void bark() {
        System.out.println(name + " says: Woof!");
    }
}

แล้วเราสร้าง "หมาจริง ๆ" จาก class:

java
Dog buddy = new Dog();   // สร้างหมา 1 ตัว
buddy.name = "Buddy";
buddy.bark();            // พิมพ์: Buddy says: Woof!

เดี๋ยวบทที่ 5 จะอธิบาย OOP ละเอียดอีกที — ตอนนี้แค่รู้ว่า "Java คิดเป็น object เป็นหลัก"

2.3 Memory ดูแลตัวเอง — มี Garbage Collector

ในภาษาเก่า (C/C++) เวลาเราใช้ memory แล้ว ต้อง "คืน" memory ด้วยตัวเอง — ถ้าลืม จะเกิด memory leak (memory รั่ว, ใช้แล้วไม่คืน, สุดท้าย memory เต็ม)

Java มี Garbage Collector (GC) — โปรแกรมข้างหลังที่คอย "เก็บขยะ" ให้เรา

java
// เราสร้าง object ใหม่
String s = new String("hello");

// พอเลิกใช้ s — เราไม่ต้องคืน memory เอง
s = null;   // null = ค่าว่าง แปลว่าตัวแปรไม่ชี้ไปที่ข้อมูลไหนแล้ว (บทที่ 2 อธิบายละเอียด)
             // GC จะมาเก็บ "hello" ที่ค้างให้

// (ในทางปฏิบัติแทบไม่ต้องเขียน s = null เลย — JVM จัดการให้)

นี่คือเหตุผลที่ Java เขียนง่ายกว่า C/C++ มาก — ไม่ต้องคิดเรื่อง memory เอง

2.4 Verbose — Java ขึ้นชื่อเรื่อง "ยาว"

Java มีชื่อเสียงเรื่องโค้ดยาว — เช่น เขียน "Hello World":

Python (1 บรรทัด):

python
print("Hello, World!")

Java (5 บรรทัด):

java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

อย่าเพิ่งกลัว — เหตุผลที่ Java ยาวเพราะ:

  • บังคับให้คิดเป็น OOP ตั้งแต่แรก (class HelloWorld)
  • บังคับเปิดเผย "ใครเรียกได้" (public)
  • บังคับบอก type ตลอด (String[], void)

พอเขียนโค้ดใหญ่ ๆ ความ verbose นี้จะช่วยให้ "อ่านง่าย" และ "ปลอดภัยกว่า"

และ Java ใหม่ ๆ (Java 21, 25) ก็เริ่มสั้นลงเรื่อย ๆ ด้วยความสามารถใหม่ที่จะเรียนในบทที่ 10 (กำลังเขียน)


3. ศัพท์ที่ต้องจำให้ขึ้นใจ: JDK, JRE, JVM

มือใหม่งงสามตัวนี้บ่อยที่สุด — ผมจะอธิบายแบบเห็นภาพ

JVM (Java Virtual Machine)

คือ "เครื่อง run" Java — โปรแกรมที่อ่าน .class (bytecode) แล้ว run ให้

ถ้าจะ run โปรแกรม Java ที่คนอื่นเขียนไว้ → ต้องมี JVM

JRE (Java Runtime Environment)

คือ JVM + Java library พื้นฐาน

.class ของเราไม่ได้อยู่โดด ๆ — ใช้ class (class = พิมพ์เขียวของ object เดี๋ยวบทที่ 5 อธิบายละเอียด) อย่าง String, System, ArrayList (บทที่ 7) ที่ Java แถมมาให้ ซึ่งอยู่ใน JRE

ถ้า run อย่างเดียว → JRE ก็พอ แต่ในทางปฏิบัติปัจจุบันมักติดตั้ง JDK ไปเลย เพราะ:

  • เมื่อก่อน Oracle แจก JRE แยกต่างหาก
  • ตั้งแต่ Java 11+ distribution ส่วนใหญ่ (Oracle, Temurin) เลิกแจก JRE แยก มีแต่ JDK
  • แต่บาง distribution เช่น Azul, Liberica ยังแจก JRE แยกอยู่

JDK (Java Development Kit)

คือ JRE + เครื่องมือพัฒนา (เช่น javac คือ compiler, javadoc คือ tool gen เอกสาร, jdb คือ debugger)

ถ้าจะ เขียน โค้ด Java → ต้องมี JDK

สรุปภาพ:

(แผนภาพนี้แสดงความสัมพันธ์แบบ "ครอบ" — JDK ครอบ JRE ครอบ JVM)

สำหรับเรา: ติดตั้ง JDK จบ — เพราะ JDK ครอบทุกอย่าง

3.1 JDK distribution — ใครแจกได้ ใช้ตัวไหน

Java มีหลาย distribution (กลุ่มบริษัทที่นำ OpenJDK ไปสร้างและแจกในเวอร์ชันของตัวเอง) — แต่มือใหม่ไม่ต้องเลือกเอง

🔰 มือใหม่อ่านสั้น ๆ: ติดตั้ง Temurin จบ — ข้ามรายละเอียดข้างล่างไปได้ ค่อยกลับมาอ่านตอนต้องเลือก distribution เอง

รายละเอียด distribution (ข้ามได้รอบแรก)

OpenJDK คืออะไร: source code กลางของ Java เป็น open source — บริษัทต่าง ๆ เอาไปใช้ build ของตัวเองได้

License GPL+CE คืออะไร: GNU GPL + Classpath Exception — เป็น license ที่อนุญาตให้เอา Java ไป link เข้า proprietary code ได้ โดยไม่ต้องเปิด source code ของเรา

ทำไมหลายบริษัทมาแจก: เพราะ source เปิด ใครก็ build เองได้ — แต่ละบริษัทจะปรับนิดหน่อย, ทำ test, แล้วแจกเวอร์ชันของตัวเอง ฟรีและใช้ commercial ได้ทั้งหมด

เปรียบเทียบ distribution หลัก:

🔤 ศัพท์ย่อในตาราง:

  • TCK = Technology Compatibility Kit (ชุดทดสอบทางการของ Oracle ว่า JDK build นี้ตรงสเปก Java จริง)
  • GPL+CE = GNU GPL + Classpath Exception (ฟรี + ใช้ใน proprietary code ได้)
  • NFTC = No-Fee Terms and Conditions (license ใหม่ของ Oracle ตั้งแต่ Java 17 — ฟรีใน dev/prod)
  • GFTC = GraalVM Free Terms and Conditions (license ของ Oracle GraalVM)
  • AOT = Ahead-Of-Time compile (compile เป็น native binary ก่อน run — ตรงข้าม JIT)
  • polyglot = รองรับหลายภาษาในตัวเดียว (เช่น GraalVM รัน Java + JS + Python ได้)
  • workload = งานที่โปรแกรมรันจริง ๆ (เช่น เว็บ API, batch ประมวลผลข้อมูล)
  • enterprise = องค์กรใหญ่ที่ต้องการ support เป็นทางการและความเสถียรสูง
Distributionผู้ดูแลLicenseเหมาะกับ
Eclipse Temurin (ชื่อเดิม: AdoptOpenJDK)Eclipse FoundationGPL+CEdefault ที่แนะนำ — TCK-certified (ผ่านการทดสอบมาตรฐาน Java), รองรับยาว, build บ่อย
Amazon CorrettoAmazonGPL+CEAWS workload, ได้ patch จาก Amazon ฟรี
Azul ZuluAzul SystemsGPL+CE (community) / commercialenterprise ที่ต้องการ support
GraalVM (Community / Oracle)OracleGPL+CE / GFTCNative Image (AOT compile), polyglot
Oracle JDKOracleNFTC + commercial✅ ฟรีใช้ใน dev/prod ตั้งแต่ Java 17 (NFTC license) — แต่ commercial support ต้องเสียเงิน
Microsoft Build of OpenJDKMicrosoftGPL+CEAzure workload
IBM SemeruIBMGPL+CEใช้ OpenJ9 JVM (gentle memory) แทน HotSpot

💡 ปี 2026 default ใน Spring Boot ecosystem: Temurin (มาตรฐานชุมชน) — ปลอดภัยและรองรับยาว ส่วน GraalVM ใช้เมื่อต้อง build native image (deploy เร็ว, RAM น้อย → ดี FaaS/serverless)

⚠️ Oracle JDK ก่อน Java 17: license OTN-PE จำกัด commercial use → หลายที่ swap เป็น Temurin ตั้งแต่ Java 17 (2021): Oracle เปลี่ยนเป็น NFTC license = ฟรีสำหรับ dev/prod แต่ commercial support เสียเงิน


4. Java เก่าหรือยัง? ปี 2026 เรียนคุ้มไหม

Java เกิดปี 1995 — เก่ากว่า Google เสียอีก แต่...

Java ยังเป็นภาษาอันดับต้น ๆ ของโลกในปี 2026

  • ติดกลุ่มภาษาอันดับต้น ๆ ใน TIOBE Index อย่างต่อเนื่อง (สลับอันดับกับ Python, C, C++ — อันดับขยับขึ้นลงได้ทุกปี ตรวจอันดับล่าสุดได้ที่เว็บ TIOBE) — TIOBE Index = ชาร์ตอันดับความนิยมภาษาโปรแกรมประจำเดือน — ไม่ต้องจำชื่อ สำคัญแค่ว่า Java ยังเป็นภาษาใช้กันเยอะมาก
  • Backend ของ Netflix, Amazon, Google, ธนาคารส่วนใหญ่ ใช้ Java
  • Android เขียนด้วย Java/Kotlin (Kotlin run บน JVM เช่นกัน)
  • Apache Kafka, Elasticsearch, Hadoop, Spark — เครื่องมือ data ใหญ่ ๆ เขียนด้วย Java

Java ไม่ได้อยู่นิ่ง — มี feature ใหม่ทุก 6 เดือน

Java release ใหม่ทุก 6 เดือน, มี LTS (Long-Term Support — รุ่นที่ได้รับการดูแล/อัปเดตความปลอดภัยยาวหลายปี เหมาะใช้งานจริง) ทุก 2 ปี:

Versionปีสำคัญที่ออก
Java 82014Lambda, Stream — เขียนโค้ดแบบ functional ได้, เปลี่ยน Java ไปเลย
Java 102018var (JEP 286) — ประกาศตัวแปรโดยไม่ต้องระบุ type เต็ม (compiler อนุมานให้)
Java 11 LTS2018HTTP Client (standard), String.isBlank(), Files.readString()
Java 17 LTS2021Sealed classes (จำกัดการสืบทอด), pattern matching เริ่ม (ตรวจ type ง่ายขึ้น)
Java 21 LTS2023Virtual threads — รองรับงานพร้อมกันเป็นล้าน ๆ ชิ้น, เปลี่ยนเกม concurrency; pattern matching features ส่วนใหญ่ finalize ใน Java 21-24
Java 25 LTS2025Structured concurrency (JEP 505) — finalize เป็น standard ใน Java 25 LTS (เป็น preview ใน Java 21-24); Compact Object Headers (JEP 519)

📖 JEP = JDK Enhancement Proposal — เลขข้อเสนอ feature ใหม่ของ Java (เช่น JEP 505 = ข้อเสนอ feature เลข 505)

ในปี 2026 เราจะใช้ Java 25 LTS เป็นหลัก (และจะเจอ Java 17/21 ใน project เก่าด้วย)

ทำไม Java ยังไม่ตาย

  1. ทำงานเร็วJVM optimization 30 ปี ทำให้บาง workload เร็วใกล้เคียง C++ ได้ (ขึ้นอยู่กับลักษณะงานที่รัน)
    • JIT (Just-In-Time compilation) = JVM ปรับแต่งโค้ดให้เร็วขึ้นเรื่อย ๆ ขณะรัน — เรียนละเอียดในภาคขั้นสูง
  2. ทีมใหญ่ดูแลได้ — static typing + tooling ดี = หลายคนช่วยกันเขียนได้
  3. ecosystem ใหญ่มาก (ecosystem = ระบบนิเวศ คือบรรดา library/เครื่องมือ/ชุมชนรอบ ๆ ภาษา) — เกือบทุกปัญหามี library พร้อมใช้
  4. Spring Boot — framework เขียน backend ที่ครองตลาด enterprise

5. Java ≠ JavaScript

ขอเคลียร์ก่อนเดินต่อ:

JavaJavaScript
ปีเกิด1995 (Sun Microsystems)1995 (Netscape)
ออกแบบมาทำอะไรdesktop, server, mobileทำให้ webpage โต้ตอบได้
TypeStatic (ประกาศ type)Dynamic (ไม่ต้อง)
Run ที่ไหนJVMBrowser, Node.js
ที่มาของชื่อจริง ๆ ตั้งใจชื่อ "Oak" แล้วเปลี่ยนตั้งชื่อเกาะกระแส Java ตอน Java กำลังฮิต — ไม่ได้เกี่ยวข้องทางเทคนิคเลย

💡 เรื่องเล่า: ปี 1995 Netscape ทำภาษาใหม่ชื่อ "Mocha" แล้วเปลี่ยนเป็น "LiveScript" — ตอนนั้น Java เพิ่งฮิตมาก เลยเปลี่ยนเป็น "JavaScript" เพื่อ เกาะกระแสการตลาด เท่านั้น ทำให้คนเข้าใจผิดมา 30 ปีจนถึงปัจจุบัน

ในหนังสือเล่มนี้:

  • Java = ภาษาในส่วน "backend" (บทที่เราเรียนอยู่นี่ + Spring Boot)
  • JavaScript / TypeScript = ภาษาในส่วน "frontend" (React)

ทั้งสองภาษาไม่เกี่ยวกัน แค่ชื่อคล้ายกัน


6. ภาพรวม: เราจะใช้ Java ทำอะไรในหนังสือเล่มนี้

  1. ตอนแรก (บทที่ 1-4): เขียนโปรแกรม Java แบบง่าย — รับ input, ประมวลผล, output ออกจอ
  2. ตอนกลาง (บทที่ 5-8): เริ่มเขียนแบบ OOP, ใช้ Collections, จัดการ Exception
  3. ตอนปลาย (บทที่ 9-10): ใช้ Lambda/Stream เขียนแบบ functional, ใช้ feature ใหม่ ๆ
  4. หลังจบ Java: ขึ้น Spring Boot — ใช้ Java เขียน backend (REST API, database, security)

เป้าหมาย: อ่านโค้ด Java ของคนอื่นออก + เขียนโค้ดที่อ่านได้ + แก้ bug ตัวเองได้ + ขึ้น Spring ได้


7. ก่อนไปบทต่อไป

🛠️ Checkpoint 0.1 — ทดสอบความเข้าใจ

ลองตอบในใจ (หรือจดลง notebook) ก่อนเลื่อนดูเฉลย:

  1. ไฟล์ .java กับ .class ต่างกันยังไง?
  2. JDK ต่างจาก JRE ยังไง?
  3. Bytecode คืออะไร และทำไมต้องมี?
  4. Java เป็น static typing — แปลว่าอะไร?
  5. Java กับ JavaScript เกี่ยวข้องกันไหม?
📖 เฉลย (กดเพื่อดู)
  1. .java = source code (โค้ดที่เราเขียน, อ่านออก) — .class = bytecode (compile แล้ว, JVM อ่าน)
  2. JDK = JRE + เครื่องมือพัฒนา (compiler ฯลฯ) — JRE = แค่ที่ใช้ run โปรแกรม
  3. Bytecode = format กลาง ไม่ขึ้นกับ OS — ทำให้ .class เดียวกัน run ได้ทุก OS ที่มี JVM
  4. Static typing = ต้องประกาศ type ตัวแปรตั้งแต่ตอนเขียน — compiler ตรวจให้ก่อน run
  5. ไม่เกี่ยวกัน — แค่ชื่อคล้ายเพราะ JavaScript เกาะกระแส Java ตอนปี 1995

สรุปสิ่งที่ได้จากบทนี้

✅ เข้าใจว่า CPU เข้าใจแค่ machine code, ภาษาโปรแกรมเลยเป็น "ภาษากลาง" ✅ Java ใช้ระบบ compile → bytecode → JVM run (ทำให้ portable ข้าม OS) ✅ Java = static-typed, object-oriented, มี garbage collector ✅ JDK = JRE + dev tools, JRE = JVM + library ✅ Java ปี 2026 ยังเป็นภาษาอันดับต้น ๆ — Spring Boot ครองตลาด backend ✅ Java ≠ JavaScript (คนละภาษากันสิ้นเชิง)

บทต่อไป: ติดตั้ง JDK + IntelliJ + เขียน Hello World แล้วอธิบายทุกบรรทัด

→ ไปบทที่ 1: Setup + Hello World


🔤 Glossary · 📋 Style guide · 📅 last_verified: 2026-06-23