อะไรคือความแตกต่างระหว่าง JDK และ JRE
อะไรคือบทบาทของพวกเขาและฉันควรใช้อันใดอันหนึ่ง?
อะไรคือความแตกต่างระหว่าง JDK และ JRE
อะไรคือบทบาทของพวกเขาและฉันควรใช้อันใดอันหนึ่ง?
คำตอบ:
JREเป็นJava Runtime Environment มันเป็นแพคเกจของทุกสิ่งที่จำเป็นในการรันโปรแกรม Java ที่คอมไพล์รวมถึง Java Virtual Machine (JVM), Java Class Library, java
คำสั่งและโครงสร้างพื้นฐานอื่น ๆ อย่างไรก็ตามไม่สามารถใช้สร้างโปรแกรมใหม่ได้
JDKเป็นชุดพัฒนา Javaที่ SDK เต็มรูปแบบสำหรับ Java มันมีทุกอย่างที่ JRE มี แต่ยังเป็นคอมไพเลอร์ ( javac
) และเครื่องมือ (เช่นjavadoc
และjdb
) มันมีความสามารถในการสร้างและรวบรวมโปรแกรม
โดยปกติถ้าคุณสนใจเพียงแค่รันโปรแกรม Java บนคอมพิวเตอร์คุณจะติดตั้ง JRE เท่านั้น มันคือทั้งหมดที่คุณต้องการ ในทางตรงกันข้ามหากคุณวางแผนที่จะทำการเขียนโปรแกรมจาวาบางอย่างคุณต้องติดตั้ง JDK แทน
บางครั้งแม้ว่าคุณไม่ได้วางแผนที่จะทำการพัฒนา Java ใด ๆ บนคอมพิวเตอร์คุณยังคงต้องติดตั้ง JDK ตัวอย่างเช่นหากคุณกำลังปรับใช้เว็บแอ็พพลิเคชันด้วย JSP คุณกำลังใช้เทคนิคเพียงแค่รันโปรแกรม Java ภายในแอ็พพลิเคชันเซิร์ฟเวอร์ ทำไมคุณต้องใช้ JDK? เนื่องจากแอ็พพลิเคชันเซิร์ฟเวอร์จะแปลง JSP เป็น Java servlets และจำเป็นต้องใช้ JDK เพื่อรวบรวมเซิร์ฟเล็ต ฉันแน่ใจว่ามีตัวอย่างเพิ่มเติม
คำตอบข้างต้น (โดย Pablo) นั้นถูกต้องมาก นี่เป็นเพียงข้อมูลเพิ่มเติม
JREคือเป็นชื่อที่แสดงถึงการสภาพแวดล้อม มันเป็นกลุ่มของไดเรกทอรีที่มีไฟล์ที่เกี่ยวข้องกับ Java เพื่อปัญญา:
bin/
มีโปรแกรมที่ปฏิบัติการได้ของ Java สิ่งสำคัญที่สุดคือjava
(และสำหรับ Windows javaw
เช่นกัน) ซึ่งเปิดตัว JVM มีบางสาธารณูปโภคอื่น ๆ ที่นี่เป็นอย่างดีเช่นและkeytool
policytool
conf/
เก็บไฟล์การกำหนดค่าที่ผู้ใช้สามารถแก้ไขได้เพื่อให้ผู้เชี่ยวชาญของ Java เล่นlib/
มีไฟล์รองรับจำนวนมาก: ไฟล์.jar
s, ไฟล์กำหนดค่า, ไฟล์คุณสมบัติ, ฟอนต์, การแปล, certs เป็นต้น - "trimmings" ทั้งหมดของ Java ที่สำคัญที่สุดคือmodules
ไฟล์ที่มี.class
ไฟล์ของไลบรารีมาตรฐาน Java.dll
(Windows) หรือ.dylib
(macOS) หรือ.so
(Linux) บางส่วนภายใต้bin/
หรือlib/
สนับสนุนไบนารีเนทีฟเฉพาะระบบJDKยังเป็นที่ตั้งของไดเรกทอรี มันเป็น superset ของ JRE ที่มีการเพิ่มเติม:
bin/
ได้รับการขยายด้วยเครื่องมือพัฒนา ส่วนใหญ่ที่สำคัญของพวกเขาคือjavac
; รวมถึงคนอื่น ๆjar
, และjavadoc
jshell
jmods/
ซึ่งเพิ่มไฟล์ JMOD สำหรับไลบรารีมาตรฐานได้รับการเพิ่ม jlink
ไฟล์เหล่านี้ช่วยให้ห้องสมุดมาตรฐานที่จะใช้กับJDK เป็นชุดของ JRE และประกอบด้วยทุกอย่างที่อยู่ใน JRE รวมถึงเครื่องมือต่าง ๆ เช่นคอมไพเลอร์และดีบั๊กที่จำเป็นสำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน JRE จัดเตรียมไลบรารี, Java Virtual Machine (JVM) และคอมโพเนนต์อื่น ๆ เพื่อรัน applets และแอ็พพลิเคชันที่เขียนด้วยภาษาการเขียนโปรแกรม Java
ในแง่คนธรรมดา: JDK เป็นปู่ JRE เป็นพ่อและ JVM เป็นลูกชายของพวกเขา [ie JDK> JRE> JVM]
เครื่องมือ JDK = JRE + การพัฒนา / การดีบัก
JRE = JVM + คลาสแพ็กเกจ Java (เช่น util, math, lang, awt, swing ฯลฯ ) + runtime library
JVM = ระบบตัวโหลดคลาส + พื้นที่ข้อมูลรันไทม์ + Execution Engine
กล่าวอีกนัยหนึ่งถ้าคุณเป็นโปรแกรมเมอร์ Java คุณจะต้องใช้ JDK ในระบบของคุณและแพ็คเกจนี้จะรวม JRE และ JVM ด้วยเช่นกัน แต่ถ้าคุณเป็นผู้ใช้ทั่วไปที่ต้องการเล่นเกมออนไลน์คุณจะต้องใช้ JRE และแพ็คเกจนี้จะไม่มี มัน JDK
JVM:
โปรแกรม Java Virtual Machine (JVM)เป็นเครื่องเสมือนที่รัน bytecodes Java JVM ไม่เข้าใจซอร์สโค้ด Java นั่นคือสาเหตุที่คุณรวบรวมไฟล์ * .java ของคุณเพื่อรับไฟล์ * .class ที่มี bytecode ที่เข้าใจได้โดย JVM นอกจากนี้ยังเป็นเอนทิตีที่อนุญาตให้ Java เป็น "ภาษาแบบพกพา" (เขียนครั้งเดียวทำงานได้ทุกที่) แน่นอนมีการใช้งานเฉพาะของ JVM สำหรับระบบที่แตกต่างกัน (Windows, Linux, MacOS, ดูรายการวิกิพีเดีย .. ) จุดมุ่งหมายคือด้วยไบต์เดียวกันพวกเขาทั้งหมดให้ผลลัพธ์เดียวกัน
JDK และ JRE
เพื่ออธิบายความแตกต่างระหว่าง JDK และ JRE สิ่งที่ดีที่สุดคือการอ่านเอกสารของ Oracle และดูแผนภาพ:
Java Runtime Environment (JRE)
Java Runtime Environment (JRE)ให้ห้องสมุดที่โปรแกรม Java Virtual Machine และส่วนประกอบอื่น ๆ ที่จะเรียกใช้แอปเพล็และการประยุกต์ใช้ในการเขียนโปรแกรมภาษาจาวา นอกจากนี้เทคโนโลยีการปรับใช้ที่สำคัญสองอย่างเป็นส่วนหนึ่งของ JRE: Java Plug-in ซึ่งทำให้แอปเพล็ตสามารถทำงานในเบราว์เซอร์ยอดนิยม และ Java Web Start ซึ่งปรับใช้แอพพลิเคชันแบบสแตนด์อโลนผ่านเครือข่าย เป็นพื้นฐานสำหรับเทคโนโลยีในแพลตฟอร์ม Java 2, Enterprise Edition (J2EE) สำหรับการพัฒนาและปรับใช้ซอฟต์แวร์ระดับองค์กร JRE ไม่มีเครื่องมือและยูทิลิตี้เช่นคอมไพเลอร์หรือดีบั๊กสำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
ชุดพัฒนา Java (JDK)
JDK เป็นชุดของ JRE และมีทุกอย่างที่อยู่ใน JRE รวมถึงเครื่องมือต่าง ๆ เช่นคอมไพเลอร์และดีบั๊กที่จำเป็นสำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
โปรดทราบว่า Oracle ไม่ใช่เครื่องมือเดียวที่ให้บริการ JDK
จากเว็บไซต์ java อย่างเป็นทางการ ...
JRE (สภาพแวดล้อม Java Runtime):
JDK (ชุดพัฒนา Java)
ข้อแตกต่างอย่างหนึ่งจากมุมมองการแก้ไขข้อบกพร่อง:
ในการดีบักลงในคลาสระบบ Java เช่น String และ ArrayList คุณต้องมี JRE เวอร์ชันพิเศษซึ่งถูกคอมไพล์ด้วย "debug information" JRE ที่รวมอยู่ใน JDK ให้ข้อมูลนี้ แต่ JRE ปกติไม่ได้ JRE ปกติไม่มีข้อมูลนี้เพื่อให้แน่ใจว่ามีประสิทธิภาพที่ดีขึ้น
ข้อมูลการดีบักคืออะไร นี่คือคำอธิบายสั้น ๆ ที่นำมาจากโพสต์บล็อกนี้ :
คอมไพเลอร์สมัยใหม่ทำงานได้ดีมากในการแปลงโค้ดระดับสูงของคุณด้วยโครงสร้างการควบคุมที่เยื้องเข้าหาและซ้อนกันและพิมพ์ตัวแปรตามอำเภอใจเป็นกองขนาดใหญ่ของบิตที่เรียกว่ารหัสเครื่อง (หรือ bytecode ในกรณีของ Java) วัตถุประสงค์เพียงอย่างเดียว เพื่อเรียกใช้เร็วที่สุดบน CPU เป้าหมาย (CPU เสมือนจริงของ JVM ของคุณ) รหัส Java ได้รับการแปลงเป็นคำแนะนำรหัสเครื่องหลาย ตัวแปรจะถูกผลักไปทั่วสถานที่ - ลงในสแต็กเข้าสู่การลงทะเบียนหรือปรับให้เหมาะสมอย่างสมบูรณ์ โครงสร้างและวัตถุไม่มีอยู่ในโค้ดผลลัพธ์ - มันเป็นเพียงนามธรรมที่ได้รับการแปลเป็นออฟเซ็ตแบบตายตัวลงในบัฟเฟอร์หน่วยความจำ
ดังนั้นดีบักเกอร์จะรู้ได้อย่างไรว่าจะหยุดเมื่อคุณขอให้มันแตกที่รายการในฟังก์ชั่นบางอย่าง? มันจะจัดการเพื่อค้นหาสิ่งที่จะแสดงให้คุณเมื่อคุณถามมันสำหรับค่าของตัวแปรอย่างไร คำตอบคือ - ข้อมูลการดีบัก
ข้อมูลการดีบักถูกสร้างโดยคอมไพเลอร์พร้อมกับรหัสเครื่อง มันเป็นตัวแทนของความสัมพันธ์ระหว่างโปรแกรมปฏิบัติการและรหัสต้นฉบับ ข้อมูลนี้จะถูกเข้ารหัสในรูปแบบที่กำหนดไว้ล่วงหน้าและเก็บไว้ข้างรหัสเครื่อง หลายรูปแบบดังกล่าวถูกประดิษฐ์ขึ้นในช่วงหลายปีที่ผ่านมาสำหรับแพลตฟอร์มและไฟล์ปฏิบัติการต่าง ๆ
JVM, JRE, JDK - นี่คือหัวใจหลักของภาษาจาวา แต่ละองค์ประกอบทำงานแยกกัน JDK และ JRE มีอยู่จริง แต่ JVM เป็นเครื่องที่เป็นนามธรรมซึ่งหมายความว่ามันไม่มีอยู่จริง
JVMเป็นระบบย่อยของ JDK และ JRE ซึ่งใช้เพื่อตรวจสอบรหัสกลางที่รู้จักกันในชื่อ "bytecode" ก่อนจะโหลด "ไฟล์คลาส" (มีนามสกุล. c) ที่สร้างขึ้นโดยคอมไพเลอร์ Java (javac) ผ่านระบบย่อย classloader ของ JVM และตำแหน่งหน่วยความจำที่จัดประเภท (พื้นที่คลาส, สแต็ก, ฮีปและรีจิสเตอร์พีซี) ตามการใช้งาน จากนั้นจะตรวจสอบไบต์ทั้งหมดเพื่อให้แน่ใจว่าจะถูกส่งคืนใน Java และเครือข่ายการเข้าถึงการเข้าถึงหน่วยความจำทั้งหมด งานของล่ามเริ่มต้นหลังจากนั้นจะตรวจสอบโปรแกรมทั้งหมดทีละบรรทัด ในที่สุดผลลัพธ์จะปรากฏในคอนโซล / เบราว์เซอร์ / แอปพลิเคชันผ่าน JRE (Java Runtime Environment) ซึ่งสิ่งอำนวยความสะดวกรันไทม์
JREยังเป็นระบบย่อยของ JDK ซึ่งจัดให้มีสิ่งอำนวยความสะดวกรันไทม์เช่น JVM, คลาส, ไฟล์ที่เรียกใช้งานได้เช่นไฟล์. jar เป็นต้น
JDKย่อมาจาก Java Development Kit มันมีส่วนประกอบที่จำเป็นทั้งหมดที่ใช้ในการเขียนโปรแกรม Java เช่นคลาส, วิธีการ, แกว่ง, AWT, แพคเกจ, Java (ล่าม), javac (คอมไพเลอร์), appletviewer (โปรแกรมดูแอปเพล็ตแอปเพล็ต) ฯลฯ แอปพลิเคชันไม่ว่าจะเป็นแบบสแตนด์อโลนหรือแบบเว็บ
JRE
JRE เป็นตัวย่อสำหรับ Java Runtime Environment มันถูกใช้เพื่อจัดเตรียมสภาพแวดล้อมรันไทม์มันเป็นการใช้งานของ JVM มันมีอยู่จริงมันมีชุดของไลบรารี + ไฟล์อื่น ๆ ที่ JVM ใช้ที่รันไทม์
JDK
JDK เป็นตัวย่อสำหรับ Java Development Kit มีอยู่จริงมีเครื่องมือในการพัฒนา JRE +
ลิงก์: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
โดยปกติเมื่อคุณสนใจเพียงแค่รันโปรแกรม Java บนเบราว์เซอร์หรือคอมพิวเตอร์ของคุณคุณจะติดตั้ง JRE เท่านั้น มันคือทั้งหมดที่คุณต้องการ ในทางกลับกันถ้าคุณวางแผนที่จะทำการเขียนโปรแกรมจาวาบางตัวคุณจะต้องใช้ JDK ด้วย
JVM, JRE และ JDK ขึ้นอยู่กับแพลตฟอร์มเนื่องจากการกำหนดค่าของแต่ละระบบปฏิบัติการแตกต่างกัน แต่ Java เป็นแพลตฟอร์มอิสระ
Java Virtual Machine (JVM) เป็นระบบรันไทม์ที่รัน Java bytecode
JRE เป็นสภาวะแวดล้อม (ไลบรารีมาตรฐานและ JVM) ที่จำเป็นสำหรับการรันแอ็พพลิเคชัน Java
JDK รวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
นี่คือคำตอบง่ายๆจาก Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
สภาพแวดล้อมรันไทม์ Java SE
JRE จัดเตรียมไลบรารีเครื่องเสมือน Java และส่วนประกอบอื่น ๆ ที่จำเป็นสำหรับคุณในการรันแอปเพล็ตและแอปพลิเคชันที่เขียนด้วยภาษาการเขียนโปรแกรม Java สภาพแวดล้อมรันไทม์นี้สามารถแจกจ่ายซ้ำกับแอปพลิเคชันเพื่อให้มีสถานะว่าง
ชุดพัฒนา Java SE (JDK)
JDK รวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
หากคุณต้องการรันโปรแกรม Java แต่ไม่พัฒนาให้ดาวน์โหลด Java สภาพแวดล้อมรันไทม์หรือ JRE หากคุณต้องการพัฒนาพวกเขาดาวน์โหลดชุดพัฒนา Java หรือ JDK
เรียกว่า JDK เป็นชุดซึ่งรวมถึงสิ่งที่จำเป็นสำหรับการพัฒนาและเรียกใช้โปรแกรมจาวา
JDK ถูกกำหนดให้เป็นสภาพแวดล้อมการพัฒนาสำหรับการสร้างแอปพลิเคชันส่วนประกอบและแอปเพล็ต
มันมีทุกสิ่งที่คุณจำเป็นต้องเรียกใช้แอปพลิเคชัน Java ในรูปแบบที่รวบรวม คุณไม่จำเป็นต้องมีห้องสมุดและสิ่งของอื่น ๆ ทุกสิ่งที่คุณต้องการรวบรวม
JRE ไม่สามารถใช้สำหรับการพัฒนาใช้เพื่อเรียกใช้แอปพลิเคชันเท่านั้น
JVM (Java Virtual Machine) เป็นเครื่องที่เป็นนามธรรม มันเป็นข้อกำหนดที่ให้สภาพแวดล้อมรันไทม์ซึ่ง java bytecode สามารถดำเนินการได้
JRE เป็นตัวย่อสำหรับ Java Runtime Environment มันถูกใช้เพื่อจัดเตรียมสภาพแวดล้อมรันไทม์มันเป็นการใช้งานของ JVM มันมีอยู่จริงมันมีชุดของไลบรารี + ไฟล์อื่น ๆ ที่ JVM ใช้ที่รันไทม์
JDK เป็นตัวย่อสำหรับ Java Development Kit มีอยู่จริงมีเครื่องมือในการพัฒนา JRE +
หากคุณเป็นโปรแกรมเมอร์ Javaคุณจะต้องมีJDKในระบบของคุณและแพ็คเกจนี้จะรวม JRE และ JVM ด้วย แต่ถ้าคุณเป็นผู้ใช้ทั่วไปที่ชอบเล่นเกมออนไลน์คุณจะต้องใช้JREและแพ็คเกจนี้จะไม่มี JDK อยู่ในนั้น .
JVM
JVM (Java Virtual Machine) เป็นเครื่องที่เป็นนามธรรม มันเป็นข้อกำหนดที่ให้สภาพแวดล้อมรันไทม์ซึ่ง java bytecode สามารถดำเนินการได้
JVM พร้อมใช้งานสำหรับแพลตฟอร์มฮาร์ดแวร์และซอฟต์แวร์จำนวนมาก JVM, JRE และ JDK ขึ้นอยู่กับแพลตฟอร์มเนื่องจากการกำหนดค่าของแต่ละระบบปฏิบัติการแตกต่างกัน แต่ Java เป็นแพลตฟอร์มอิสระ
JRE
มันมีทุกสิ่งที่คุณจำเป็นต้องเรียกใช้แอปพลิเคชัน Java ในรูปแบบที่รวบรวม คุณไม่จำเป็นต้องมีห้องสมุดและสิ่งของอื่น ๆ ทุกสิ่งที่คุณต้องการรวบรวม
JRE ไม่สามารถใช้สำหรับการพัฒนาใช้เพื่อเรียกใช้แอปพลิเคชันเท่านั้น
ชุดพัฒนา Java SE (JDK)
JDK รวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
(แหล่งข้อมูล: GeeksForGeeks Q&A , ภาพรวมแพลตฟอร์ม Java )
ความเข้าใจที่ชัดเจนของคำเหล่านี้ (JVM, JDK, JRE) เป็นสิ่งจำเป็นที่จะเข้าใจการใช้งานและความแตกต่าง
JVM Java Virtual Machine (JVM) เป็นระบบรันไทม์ที่รัน Java bytecode JVM เปรียบเสมือนคอมพิวเตอร์เสมือนจริงที่สามารถดำเนินการชุดคำสั่งที่คอมไพล์แล้วและจัดการตำแหน่งหน่วยความจำ เมื่อคอมไพเลอร์ Java รวบรวมซอร์สโค้ดมันจะสร้างชุดคำสั่งที่ปรับให้เหมาะสมอย่างสูงที่เรียกว่า bytecode ในไฟล์. class JVM ตีความคำแนะนำแบบ bytecode เหล่านี้และแปลงเป็นรหัสเฉพาะเครื่องเพื่อการดำเนินการ
JDK Java Development Kit (JDK) เป็นสภาพแวดล้อมการพัฒนาซอฟต์แวร์ที่คุณสามารถใช้เพื่อพัฒนาและดำเนินการแอปพลิเคชัน Java มันมี JRE และชุดเครื่องมือการเขียนโปรแกรมเช่นคอมไพเลอร์ Java, ล่าม, appletviewer และโปรแกรมดูเอกสาร JDK ถูกนำไปใช้ผ่านแพลตฟอร์ม Java SE, Java EE หรือ Java ME
JRE Java Runtime Environment (JRE) เป็นส่วนหนึ่งของ JDK ที่รวมถึง JVM คลาสหลักและไลบรารีหลายไลบรารีที่สนับสนุนการพัฒนาแอปพลิเคชัน แม้ว่า JRE จะมีให้เป็นส่วนหนึ่งของ JDK คุณสามารถดาวน์โหลดและใช้แยกต่างหากได้
เพื่อความเข้าใจที่สมบูรณ์คุณสามารถดูบล็อกของฉัน: Jdk Jre Jvm และความแตกต่าง
jdk จำเป็นต้องคอมไพล์โค้ดและแปลงจาวาโค้ดเป็นโค้ดไบต์ในขณะที่ jre จำเป็นสำหรับการเรียกใช้โค้ดไบต์
JDKรวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน
JREนั้นเป็น Java Virtual Machine ที่โปรแกรม Java ของคุณทำงานอยู่ นอกจากนี้ยังมีปลั๊กอินของเบราว์เซอร์สำหรับการใช้งาน Applet
JDKเป็นเครื่องที่เป็นนามธรรม มันเป็นข้อกำหนดที่ให้สภาพแวดล้อมรันไทม์ซึ่ง java bytecode สามารถดำเนินการได้
ดังนั้นโดยทั่วไป JVM <JRE <JDK ตาม @Jaimin Patel กล่าว
เพียง:
JVM เป็นโค้ด Java ของเครื่องเสมือนที่เรียกใช้งาน
JRE เป็นสภาวะแวดล้อม (ไลบรารีมาตรฐานและ JVM) ที่จำเป็นสำหรับการรันแอ็พพลิเคชัน Java
JDK เป็น JRE พร้อมเครื่องมือสำหรับนักพัฒนาและเอกสารประกอบ
ข้อแตกต่างระหว่าง JDK และ JRE คือ JDK เป็นชุดพัฒนาซอฟต์แวร์สำหรับจาวาในขณะที่ JRE เป็นสถานที่ที่คุณเรียกใช้โปรแกรมของคุณ
สมมติว่าถ้าคุณเป็นนักพัฒนาแล้วบทบาทของคุณคือการพัฒนาโปรแกรมเช่นเดียวกับการดำเนินการโปรแกรม ดังนั้นคุณต้องมีสภาพแวดล้อมในการพัฒนาและดำเนินการซึ่งให้บริการโดย JDK
สมมติว่าถ้าคุณเป็นลูกค้าคุณไม่ต้องกังวลเกี่ยวกับการพัฒนาเพียงแค่คุณต้องการสภาพแวดล้อมในการรันโปรแกรมและรับผลลัพธ์เท่านั้นซึ่ง JRE ให้บริการ
JRE เรียกใช้งานแอปพลิเคชัน แต่ JVM อ่านบรรทัดคำแนะนำทีละบรรทัดดังนั้นจึงเป็นล่าม
เครื่องมือพัฒนา JDK = JRE +
JRE = JVM + คลาสไลบรารี
JRE
JRE เป็นตัวย่อสำหรับ Java Runtime Environment มันถูกใช้เพื่อจัดเตรียมสภาวะแวดล้อมรันไทม์เป็นการนำ JVM มาใช้ มันมีอยู่จริง มันมีชุดของไลบรารี + ไฟล์อื่น ๆ ที่ JVM ใช้ที่รันไทม์
การดำเนินการตาม JVM นั้น บริษัท อื่น ๆ นอกเหนือจาก Sun Micro Systems
JDK
JDK เป็นตัวย่อสำหรับ Java Development Kit มีอยู่จริงมีเครื่องมือในการพัฒนา JRE +