ภาษาเป็นยักษ์ใหญ่ในอุตสาหกรรมไอทีมาเป็นเวลานาน มีแนวคิดที่ยอดเยี่ยมบางอย่างที่ทำให้ดีกว่าภาษาโปรแกรมอื่น ๆ แนวคิดหนึ่งคือ Java virtual machine ในบทความนี้เราจะเรียนรู้เกี่ยวกับแง่มุมต่างๆของ เครื่องเสมือนโดยละเอียด ต่อไปนี้เป็นหัวข้อที่กล่าวถึงในบล็อกนี้:
- Java Virtual Machine คืออะไร?
- ทำไมเราต้องใช้ Java Virtual Machine?
- สถาปัตยกรรม Java Virtual Machine
- กระบวนการดำเนินการ
- ความแตกต่างระหว่าง JDK, JRE และ JVM
Java Virtual Machine คืออะไร?
Java virtual machine เป็นเครื่องนามธรรมที่ไม่ขึ้นกับแพลตฟอร์มที่จัดเตรียมสภาพแวดล้อมรันไทม์ซึ่งมีการเรียกใช้โค้ด Java byte
เป็นส่วนหนึ่งของสภาพแวดล้อมรันไทม์ Java ที่แปลง bytecode ของ Java เป็นภาษาที่เครื่องอ่านได้ หลัก ที่เรามีในโปรแกรม Java ถูกเรียกโดยเครื่องเสมือน Java
วิธีเขียนการแจ้งเตือนในจาวาสคริปต์
ทำไมเราต้องใช้ Java Virtual Machine?
เราต้องการเครื่องเสมือน Java สำหรับงานที่ดำเนินการซึ่งจำเป็นอย่างยิ่งสำหรับการพัฒนาใด ๆ ที่เกี่ยวข้องกับ Java ต่อไปนี้เป็นงานบางส่วนที่ Java virtual machine ทำ
- โหลดรหัส
- การตรวจสอบรหัส
- การดำเนินการของรหัส
- จัดเตรียมสภาพแวดล้อมรันไทม์สำหรับแอปพลิเคชัน
- พื้นที่หน่วยความจำ
- ลงทะเบียนชุด
- จัดเตรียมกองรวบรวมขยะ
- การรายงานข้อผิดพลาดร้ายแรง
- ให้ ชั้นเรียน รูปแบบไฟล์
ด้วยการดำเนินการทั้งหมดนี้เครื่องเสมือน Java จึงเป็นส่วนสำคัญของการพัฒนา Java มาลองทำความเข้าใจว่ามันทำงานอย่างไรด้วยความช่วยเหลือของสถาปัตยกรรมเครื่องเสมือน Java
สถาปัตยกรรม Java Virtual Machine
สถาปัตยกรรมเครื่องเสมือน Java นั้นค่อนข้างเรียบง่ายมีพื้นที่หน่วยความจำตัวโหลดคลาสและเอ็นจิ้นการดำเนินการในส่วนประกอบอื่น ๆ ให้เราคุยรายละเอียดแต่ละเรื่อง
ClassLoader
เป็นระบบย่อยที่ใช้ในการโหลดไฟล์คลาส เมื่อใดก็ตามที่เรารันโปรแกรมใน java มันจะถูกโหลดโดย ClassLoader ก่อน ฟังก์ชันหลัก ได้แก่ การเริ่มต้นการเชื่อมโยงและการโหลด ต่อไปนี้คือ classloaders ในตัวใน Java
Bootstrap ClassLoader - เป็นคลาสสุดยอดของ Extension ClassLoader ที่โหลดไฟล์ rt.jar
ส่วนขยาย ClassLoader - โหลดไฟล์ jar ที่อยู่ในไดเร็กทอรี
ระบบ / แอปพลิเคชัน ClassLoader - โหลดไฟล์คลาสจาก classpath
กำลังโหลดการทำงาน - ขั้นแรก classLoader จะโหลดไฟล์. class และสร้างข้อมูลที่เกี่ยวข้องในรูปแบบไบนารีซึ่งบันทึกไว้ในพื้นที่วิธีการ
apache spark กับ hadoop mapreduce
การเชื่อมโยงการทำงาน - หลังจากโหลดแล้วจะเตรียมตรวจสอบและทำการแก้ไข JVM จัดสรรหน่วยความจำสำหรับตัวแปรคลาสและเริ่มต้นหน่วยความจำเป็นค่าดีฟอลต์ ช่วยให้มั่นใจในความถูกต้องของไฟล์. class และเมื่อการตรวจสอบล้มเหลวเราจะได้รับข้อผิดพลาดข้อยกเว้นรันไทม์
การเริ่มต้น - ตัวแปรคงที่ทั้งหมดถูกกำหนดด้วยค่าที่กำหนดไว้ในบล็อกโค้ดในเฟสนี้
หน่วยความจำ JVM
พื้นที่วิธีการ - เก็บโครงสร้างสำหรับแต่ละคลาสเช่นรหัสข้อมูลฟิลด์พูลค่าคงที่รันไทม์ข้อมูลวิธีการ ฯลฯ
กอง - อ็อบเจ็กต์ถูกจัดสรรที่รันไทม์ในฮีป
JVM Language Stacks - มันเก็บตัวแปรท้องถิ่นและผลลัพธ์ มีบทบาทสำคัญในการเรียกและส่งคืนผลลัพธ์ เมื่อใดก็ตามที่มีการเรียกใช้เมธอดเฟรมจะถูกสร้างขึ้นและถูกทำลายทันทีที่การเรียกใช้สิ้นสุดหรือเสร็จสิ้น
รีจิสเตอร์พีซี - มีที่อยู่หรือตำแหน่งของ JVMinstruction ที่กำลังดำเนินการ
สแต็ควิธีดั้งเดิม - เมธอดดั้งเดิมทั้งหมดที่ใช้ในแอปพลิเคชันมีอยู่ในสแต็กเมธอดดั้งเดิม
Execution Engine - เอ็นจินการดำเนินการประกอบด้วยตัวประมวลผลเสมือนล่ามและไฟล์ JIT คอมไพเลอร์
วิธีดั้งเดิม อินเตอร์เฟซ - มันคือ ที่ให้
ตอนนี้เราเข้าใจสถาปัตยกรรมของ JVM แล้วเรามาดูขั้นตอนการดำเนินการและการรวบรวมโค้ดกัน
กระบวนการดำเนินการ
ขั้นตอนต่อไปนี้เกิดขึ้นขณะดำเนินการและคอมไพล์โค้ด Java
- วิธีการหลักจะถูกเก็บไว้ในไฟล์เดียวและวิธีอื่น ๆ จะถูกเก็บไว้ในไฟล์ที่แตกต่างกัน
- หลังจากการคอมไพล์แล้วจะมีไฟล์. class ที่เกี่ยวข้องซึ่งจะมีรหัสไบต์โดยไม่มีการเชื่อมโยงซึ่งแตกต่างจาก C.
- ในระหว่างการดำเนินการไฟล์คลาสจะได้รับการตรวจสอบการละเมิดโดยใช้ Classloader
- หลังจากนี้ไบต์โค้ดจะถูกแปลงเป็นรหัสเครื่องดั้งเดิมที่เกี่ยวข้อง นี่เป็นสาเหตุที่ Java ค่อนข้างช้ากว่า
ตอนนี้เรารู้แล้วว่าการดำเนินการทำงานอย่างไรมาดูความแตกต่างระหว่าง JDK, JRE และ JVM
ความแตกต่างระหว่าง JDK, JRE และ JVM
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญบางประการระหว่าง JDK , JVM และ JRE
- JDK ย่อมาจาก Java development kit และ JRE ย่อมาจาก Java runtime environment
- JDK มีไว้สำหรับการพัฒนาในขณะที่ JRE มีไว้สำหรับสภาพแวดล้อมรันไทม์
- JVM เป็นส่วนสำคัญของ JDK และ JRE ในการรันโปรแกรม Java ใด ๆ
- JVM เป็นส่วนหนึ่งของการเขียนโปรแกรม Java และให้ความเป็นอิสระของแพลตฟอร์ม
สิ่งนี้ทำให้เรามาถึงตอนท้ายของบทความนี้ซึ่งเราได้เรียนรู้เกี่ยวกับเครื่องเสมือน Java โดยละเอียด ฉันหวังว่าคุณจะเข้าใจทุกสิ่งที่แบ่งปันกับคุณในบทแนะนำนี้
.format ทำอะไรใน python
หากคุณพบบทความนี้เกี่ยวกับ“ Java Virtual Machine” ที่เกี่ยวข้องโปรดดูที่ Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้พร้อมเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก
เราพร้อมช่วยเหลือคุณในทุกขั้นตอนในการเดินทางและจัดทำหลักสูตรที่ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer หลักสูตรนี้ออกแบบมาเพื่อให้คุณเริ่มต้นการเขียนโปรแกรม Java และฝึกอบรมแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับเฟรมเวิร์ก Java ต่างๆเช่น Hibernate & Spring
หากคุณพบคำถามใด ๆ อย่าลังเลที่จะถามคำถามทั้งหมดของคุณในส่วนความคิดเห็นของ 'Java Virtual Machine' และทีมงานของเรายินดีที่จะตอบ