JVM คืออะไร
จากบทความที่แล้วเรื่อง Java programming ทำให้เราทราบแล้วว่า java คือภาษาที่ได้รับความนิยมสูงมากในขณะนี้ และได้กล่าวถึง jvm คืออะไร กันไปบ้างแล้ว บทความนี้เราจะมาเจาะลึกถึงเนื้อว่านอกจาก jvm คืออะไร แล้ว มันยังทำอะไรได้อีกบ้าง
JVM หรือ Java Virtual Machine คือ การสรา้งสภาวะแวดล้อมจำลองขึ้นมาบนระบบ เพื่อให้ application ที่เขียนด้วย java programming สามารถทำงานได้สมบูรณ์โดยไม่ต้องคำนึงถึงเรื่อง hardware หรือ สถาปัตยกรรม ที่ใช้งานอยู่ เราจะเรียก JVM แต่ละตัวที่ทำงานอยู่บนเครื่องว่า instance โดย process ที่ทำงานอยู่นี้ต้องถูก compiled เป็น Java bytecode มาเรียบร้อยแล้ว ซึ่งการสร้าง JVM ทำได้โดย softwere ของ java ที่ชื่อ Java Runtime Environment (JRE) ซึ่งภายในคือ package java library จำนวนมากให้ทาง developer เรียกใช้งานในการทำ application จากนั้นจึงใช้เครื่องมือใน Java Development Kit (JDK) ซึ่งหนึ่งในนั้นคือ Javac compiler ที่ใช้สำหรับแปลง java bytecode หรือ file .class ที่ใช้รันกันนั่นเอง
การสร้าง Java Virtual Machine (JVM)
- เริ่มจากการเขียน code program ด้วยภาษา Java
- จากนั้นทำการ compile code ด้วย javac program ใน JDK
- ผลลัพธ์ที่ได้คือ java bytecodes หรือ java class file
- ทำการสร้าง Java Virtual Machine (JVM) ด้วยการ load class ของ java bytecode และ library ผ่าน java program
- Java Virtual Machine (JVM) จะทำการจองหน่วยความจำหรือที่เรียกว่า Heap memory เพื่อการใช้งานสำหรับ application
การทำงานของ Class loader
หนึ่งในส่วนสำคัญของ JVM ก็คือ java class ที่ผ่านการ compile มาแล้ว ซึ่งตัว class loader นี่แหละที่จำนำเอา java class พวกนี้ load เข้าสู่ memory เพื่อทำงาน โดยมีการทำงานหลักๆดังนี้
- Load file ข้อมูล รวมถึง import java library ที่เกี่ยวข้อง
- ตรวจเช็กข้อมูลที่ทำการ import รวมถึงจองหน่วยความจำเริ่มต้นสำหรับการใข้งาน (Heap memory)
- เริ่มทำการ initial ่java class โดยการเริ่มสร้างตัวแปรที่ต้องใช้งาน
คุณสมบัติของ Java Virtual Machine (JVM)
- ทำงานเป็น stack-base คือการเพิ่มข้อมูลในลักษณะเป็นชั้นต่อๆกัน LIFO (Last In First Out)
- เป็น symbolic reference สำหรับ java class หรือ interface คือ ตัวแปรทั้งหมดแค่ทำ link ไปยังข้อมูลที่เก็บไว้บน memory
- สามารถทำงานได้ทุก platform โดนการกำหนด data type ทุกชนิดไว้ตายตัวเหมือนกัน
- มี garbage collection ทำการ clear memory หรือ ล้างค่าตัวแปรให้
Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://dzone.com, https://en.wikipedia.org
[…] Java platform เลยก็ว่าได้ โดยหลักการของ java virtual machine หรือ JVM คือ เมื่อทำการรัน java bytecode แล้ว […]
[…] Java คืออะไร และ JVM คืออะไร ที่นี้เรามาต่อในหน่วยย่อยของ JVM […]
[…] Java และ JVM กันไปแล้ว […]