Java Architecture รวมกระบวนการรวบรวมและตีความ จะอธิบายกระบวนการต่างๆที่เกี่ยวข้องในขณะที่กำหนดก . ก่อนที่จะเริ่มหัวข้อให้ฉันแนะนำคุณเกี่ยวกับวาระการประชุมสำหรับบทความนี้
คำแนะนำที่กล่าวถึงด้านล่างนี้จะเป็นหัวข้อสนทนาของเรา:
ให้เราเริ่มต้นด้วยการทำความเข้าใจสถาปัตยกรรม Java คืออะไร?
Java Architecture คืออะไร?
ที่นี่ฉันจะอธิบายสถาปัตยกรรมจาวาในขั้นตอนง่ายๆ
- ใน Java มีกระบวนการรวบรวมและตีความ
- รหัสที่เขียนใน ถูกแปลงเป็นรหัสไบต์ซึ่งทำโดย Java Compiler
- รหัสไบต์จากนั้นจะถูกแปลงเป็นรหัสเครื่องโดย JVM
- รหัสเครื่องถูกเรียกใช้งานโดยตรงจากเครื่อง
แผนภาพนี้แสดงให้เห็นถึงการทำงานภายในของโค้ด Java หรือ Java Architecture!
ตอนนี้ให้เราขุดลึกลงไปอีกเล็กน้อยในสถาปัตยกรรม java และพูดคุยเกี่ยวกับสิ่งต่างๆ .
ส่วนประกอบของสถาปัตยกรรม Java
องค์ประกอบหลักของภาษา Java มีสามส่วน: JVM, JRE และ JDK .
Java Virtual Machine, Java Runtime Environment และ Java Development Kit ตามลำดับ
ให้ฉันอธิบายแต่ละคนทีละคน:
เครื่องเสมือน Java:
เคยได้ยินเกี่ยวกับ WORA ไหม? (เขียนครั้งเดียว Run Anywhere) แอปพลิเคชัน Java เรียกว่า WORA เนื่องจากความสามารถในการรันโค้ดบนแพลตฟอร์มใดก็ได้ สิ่งนี้ทำเพราะ JVM เท่านั้น JVM เป็นคอมโพเนนต์แพลตฟอร์ม Java ที่จัดเตรียมสภาพแวดล้อมสำหรับการรันโปรแกรม Java JVM ตีความ bytecode เป็นรหัสเครื่องซึ่งเรียกใช้งานในเครื่องที่โปรแกรม Java ทำงาน
ดังนั้นโดยสรุป JVM ทำหน้าที่ดังต่อไปนี้:
- โหลดรหัส
- ตรวจสอบรหัส
- รันโค้ด
- จัดเตรียมสภาพแวดล้อมรันไทม์
ตอนนี้ให้ฉันแสดงสถาปัตยกรรม JVM นี่ไป!
คำอธิบาย:
คลาส Loader : Class loader เป็นระบบย่อยของ JVM ใช้เพื่อโหลดไฟล์คลาส เมื่อใดก็ตามที่เรารันโปรแกรม java class loader จะโหลดขึ้นมาก่อน
พิมพ์สองครั้งเพื่อ int java
พื้นที่วิธีการเรียน : เป็นหนึ่งใน Data Area ใน JVM ซึ่งจะจัดเก็บข้อมูล Class Static Variables, Static Blocks, Static Methods, Instance Methods จะถูกเก็บไว้ในพื้นที่นี้
กอง : ฮีปถูกสร้างขึ้นเมื่อ JVM เริ่มทำงาน อาจเพิ่มหรือลดขนาดในขณะที่แอปพลิเคชันทำงาน
ซ้อนกัน : JVM stack เรียกว่า thread stack เป็นพื้นที่ข้อมูลในหน่วยความจำ JVM ซึ่งสร้างขึ้นสำหรับเธรดการดำเนินการเดียว สแต็ก JVM ของเธรดถูกใช้โดยเธรดเพื่อจัดเก็บองค์ประกอบต่างๆเช่นตัวแปรโลคัลผลลัพธ์บางส่วนและข้อมูลสำหรับวิธีการเรียกและส่งคืน
สแต็คดั้งเดิม : ใช้วิธีดั้งเดิมทั้งหมดที่ใช้ในแอปพลิเคชันของคุณ
Execution Engine:
- คอมไพเลอร์ JIT
- คนเก็บขยะ
คอมไพเลอร์ JIT: คอมไพเลอร์ Just-In-Time (JIT) เป็นส่วนหนึ่งของสภาพแวดล้อมรันไทม์ ช่วยในการปรับปรุงประสิทธิภาพของแอปพลิเคชัน Java โดยการรวบรวม bytecodes เป็นรหัสเครื่องในขณะทำงาน คอมไพเลอร์ JIT ถูกเปิดใช้งานโดยค่าเริ่มต้น เมื่อคอมไพล์เมธอด JVM จะเรียกโค้ดที่คอมไพล์ของเมธอดนั้นโดยตรง คอมไพเลอร์ JIT รวบรวม bytecode ของวิธีการนั้นไว้ในรหัสเครื่องโดยรวบรวม 'ทันเวลา' เพื่อเรียกใช้
คนเก็บขยะ: เป็นชื่อที่อธิบายว่า คนเก็บขยะ หมายถึงการรวบรวมวัสดุที่ไม่ใช้แล้ว ใน JVM งานนี้ทำโดย Garbage collection ติดตามวัตถุแต่ละชิ้นที่มีอยู่ในพื้นที่ฮีป JVM และลบวัตถุที่ไม่ต้องการออกไป
พนักงานเก็บขยะทำงานในสองขั้นตอนง่ายๆที่เรียกว่า Mark and Sweep:
- เครื่องหมาย - เป็นที่เก็บขยะระบุหน่วยความจำที่ใช้อยู่และไม่ได้ใช้งาน
- กวาด - จะลบวัตถุที่ระบุในช่วง 'เครื่องหมาย'
Java Runtime Environment:
ซอฟต์แวร์ JRE สร้างสภาพแวดล้อมรันไทม์ซึ่งสามารถเรียกใช้โปรแกรม Java ได้ JRE เป็นระบบบนดิสก์ที่ใช้รหัส Java ของคุณรวมเข้ากับไลบรารีที่จำเป็นและเริ่มต้น JVM เพื่อเรียกใช้งาน JRE ประกอบด้วยไลบรารีและซอฟต์แวร์ที่จำเป็นสำหรับโปรแกรม Java ของคุณในการรัน JRE เป็นส่วนหนึ่งของ JDK (ซึ่งเราจะศึกษาในภายหลัง) แต่สามารถดาวน์โหลดแยกต่างหากได้
ชุดพัฒนา Java:
Java Development Kit (JDK) เป็นสภาพแวดล้อมการพัฒนาซอฟต์แวร์ที่ใช้ในการพัฒนาแอปพลิเคชัน Java และแอพเพล็ต ประกอบด้วย JRE และเครื่องมือในการพัฒนาหลายตัวล่าม / ตัวโหลด (java) คอมไพเลอร์ (javac) ตัวเก็บถาวร (jar) ตัวสร้างเอกสาร (javadoc) พร้อมกับเครื่องมืออื่น
พื้นที่สีน้ำเงินที่แสดงในแผนภาพคือ JDK ตอนนี้ให้ฉันอธิบายรายละเอียดเกี่ยวกับเครื่องมือการพัฒนาให้คุณทุกคน
วิธีใช้ microsoft visual studio
java : มันเป็นตัวเรียกใช้งานสำหรับแอปพลิเคชัน java ทั้งหมด
javac : สอดคล้องกับภาษาโปรแกรม Java
javadoc : เป็นตัวสร้างเอกสาร API
โถ : สร้างและจัดการไฟล์ JAR ทั้งหมด
ก้าวไปข้างหน้าด้วยสถาปัตยกรรม Java ให้เราเข้าใจว่าแพลตฟอร์ม Java เป็นอิสระอย่างไร?
แพลตฟอร์ม Java เป็นอิสระอย่างไร
เมื่อใดที่ภาษาโปรแกรมใด ๆ เรียกว่าไม่ขึ้นกับแพลตฟอร์ม ก็ต่อเมื่อมันสามารถทำงานบนระบบปฏิบัติการที่มีอยู่ทั้งหมดเกี่ยวกับการพัฒนาและการคอมไพล์
ตอนนี้ Java ไม่ขึ้นกับแพลตฟอร์มเพียงเพราะ bytecode ให้ฉันบอกคุณว่า bytecode คืออะไร? พูดง่ายๆคือ
Bytecode คือรหัสของ JVM ที่เครื่องเข้าใจได้
การเรียกใช้ Bytecode ใน Java พิสูจน์ได้ว่าเป็นภาษาที่ไม่ขึ้นกับแพลตฟอร์ม
ที่นี่ฉันจะแสดงขั้นตอนที่เกี่ยวข้องกับกระบวนการทำงานของ java bytecode
ด้านล่างนี้คือคำอธิบายของขั้นตอนที่เกี่ยวข้อง:
sample.java → javac (คลาสตัวอย่าง) → JVM (sample.obj) →ผลลัพธ์สุดท้าย
ซอร์สโค้ดแรกถูกใช้โดยคอมไพเลอร์ java และถูกแปลงเป็นไฟล์. class รหัสไฟล์คลาสอยู่ในรูปแบบรหัสไบต์และไฟล์คลาสนั้นถูกใช้โดย JVM เพื่อแปลงเป็นไฟล์อ็อบเจ็กต์ หลังจากนั้นคุณจะเห็นผลลัพธ์สุดท้ายบนหน้าจอของคุณ
ก้าวไปข้างหน้าในบทความสถาปัตยกรรม Java ให้เราเข้าใจแนวคิดของ JIT ใน Java .
JIT ใน Java
คอมไพเลอร์ Just In Time ที่รู้จักกันทั่วไปในชื่อ JIT มีหน้าที่โดยทั่วไปในการเพิ่มประสิทธิภาพของแอปพลิเคชันที่ใช้ java ในขณะทำงาน ประสิทธิภาพของแอปพลิเคชันขึ้นอยู่กับคอมไพเลอร์
นี่คือแผนภาพง่ายๆที่แสดงให้คุณเห็นกระบวนการภายในที่เกิดขึ้น
คอมไพเลอร์ JIT รวบรวมรหัสไบต์ของเมธอดเป็นรหัสเครื่องคอมไพล์ 'Just In Time' เพื่อเรียกใช้ เมื่อคอมไพล์เมธอด JVM จะเรียกโค้ดที่คอมไพล์ของเมธอดนั้นโดยตรง
มาเจาะลึกกัน:
รหัสไบต์จะต้องถูกตีความหรือรวบรวมตามคำแนะนำของเครื่องที่เหมาะสมขึ้นอยู่กับชุดคำสั่งที่ให้มา นอกจากนี้สิ่งเหล่านี้สามารถดำเนินการได้โดยตรงหากสถาปัตยกรรมคำสั่งเป็นแบบไบต์โค้ด การตีความรหัสไบต์มีผลต่อความเร็วในการดำเนินการ
เพื่อปรับปรุงประสิทธิภาพคอมไพเลอร์ JIT จะโต้ตอบกับ Java Virtual Machine (JVM) ในขณะรันและรวบรวมลำดับไบต์โค้ดที่เหมาะสมลงในโค้ดเครื่องดั้งเดิม (ดังแสดงในแผนภาพ) ในขณะที่ใช้คอมไพเลอร์ JIT ฮาร์ดแวร์จะสามารถรันโค้ดเนทีฟได้เมื่อเทียบกับการที่ JVM ตีความลำดับไบต์โค้ดเดียวกันซ้ำ ๆ และเกิดค่าใช้จ่ายสำหรับกระบวนการแปล
ด้วยเหตุนี้ฉันจึงมาถึงตอนท้ายของบทความเกี่ยวกับสถาปัตยกรรม Java นี้ ฉันหวังว่าหัวข้อที่กล่าวถึงข้างต้นจะช่วยเพิ่มมูลค่าให้กับความรู้ Java ของคุณ คอยติดตามบทความเพิ่มเติม!
เมื่อคุณเข้าใจพื้นฐานของ Java แล้วให้ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer หลักสูตรนี้ออกแบบมาเพื่อให้คุณเริ่มต้นการเขียนโปรแกรม Java และฝึกอบรมแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับเฟรมเวิร์ก Java ต่างๆเช่น Hibernate & Spring
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'สถาปัตยกรรม Java และส่วนประกอบ' และเราจะติดต่อกลับโดยเร็วที่สุด