อะไรคือความแตกต่างระหว่าง JDK และ JRE


926

อะไรคือความแตกต่างระหว่าง JDK และ JRE

อะไรคือบทบาทของพวกเขาและฉันควรใช้อันใดอันหนึ่ง?


12
คำตอบที่ดีและกระชับสำหรับคำถามนี้อยู่ที่: java.com/en/download/faq/techinfo.xml
Akshay Lokur

7
สำเนาที่เป็น
kenorb

5
@kenorb ตามการประทับเวลาคำถามที่เชื่อมโยงดูเหมือนจะซ้ำกับคำถามนี้
Ungeheuer

คำตอบ:


1223

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 เพื่อรวบรวมเซิร์ฟเล็ต ฉันแน่ใจว่ามีตัวอย่างเพิ่มเติม


4
จากนั้นเมื่อเราใช้ไหภายนอกเรากำลังปรับใช้ไหเหล่านั้นใน jre / lib / ext / .. ดังนั้นทำไมจึงเป็นเช่นนั้น ??
i2ijeya

2
มีไหสองสามตั้งใจไว้เป็นพิเศษเป็นส่วนขยายของ Java; สามารถและควรอยู่ใน lib / ext แต่การวางเหยือกของแอปพลิเคชันเก่าไม่ได้เป็นสิ่งที่ไดเรกทอรีนี้มีไว้สำหรับ; เป็นการละเมิดกลไกส่วนขยายและอาจทำให้เกิดปัญหาในภายหลัง
Carl Smotricz

ฉันทำงานกับ JExcel API และฉันได้ตั้ง classpath อย่างถูกต้องและยังคงมีปัญหาอยู่ ดังนั้นฉันจึงปรับใช้ภายในโฟลเดอร์ tlib / ext ซึ่ง woks ดีหลังจากนั้น ?? แล้วจะมีเหตุผลอะไร ??
i2ijeya

3
ฉันไม่มีข้อมูลที่จะแน่ใจอย่างสมบูรณ์ แต่ฉันเดาว่าอาจเป็นเพราะคุณไม่ได้ตั้ง classpath อย่างถูกต้องหรือคุณตั้ง classpath สำหรับ classloader ที่แตกต่างจากที่ลงเอยด้วยการใช้รหัสของคุณ สิ่งที่ทำให้ lib / ext แตกต่างจากส่วนขยายของ classpath คือ lib / ext จะส่งผลต่อแอปพลิเคชัน Java ใด ๆที่ใช้ JRE นั้นโดยเฉพาะ - จะเข้าใจผิดได้มากกว่าการตั้งค่า classpath
Carl Smotricz

สองสามสัปดาห์ที่ผ่านมาฉันประสบกับความล้มเหลวครั้งใหญ่ที่ได้รับการแก้ไขโดยการเปลี่ยนตัวแปรสภาพแวดล้อม JAVA_HOME และ Path เพื่ออ้างอิง JRE แทน JDK แอปพลิเคชันที่ใช้ JRE จะทำงานในกรณีใดและล้มเหลวกับ JDK หรือไม่ ฉันเดาว่าฉันควรจะเปิดคำถามใหม่ สิ่งที่น่าสนใจคือการเริ่มต้นในเวอร์ชั่น 1.6 นั้น JRE นั้นมาพร้อมกับการติดตั้ง JDK แต่ปลดในระดับเดียวกับโฟลเดอร์ JDK ในขณะที่รุ่น 1.5 และก่อนหน้าโฟลเดอร์ JRE นั้นอยู่ใน JDK BTW: คำตอบที่ดี!
Jesse Ivy

143

คำตอบข้างต้น (โดย Pablo) นั้นถูกต้องมาก นี่เป็นเพียงข้อมูลเพิ่มเติม

JREคือเป็นชื่อที่แสดงถึงการสภาพแวดล้อม มันเป็นกลุ่มของไดเรกทอรีที่มีไฟล์ที่เกี่ยวข้องกับ Java เพื่อปัญญา:

  • bin/มีโปรแกรมที่ปฏิบัติการได้ของ Java สิ่งสำคัญที่สุดคือjava(และสำหรับ Windows javawเช่นกัน) ซึ่งเปิดตัว JVM มีบางสาธารณูปโภคอื่น ๆ ที่นี่เป็นอย่างดีเช่นและkeytoolpolicytool
  • conf/ เก็บไฟล์การกำหนดค่าที่ผู้ใช้สามารถแก้ไขได้เพื่อให้ผู้เชี่ยวชาญของ Java เล่น
  • lib/มีไฟล์รองรับจำนวนมาก: ไฟล์.jars, ไฟล์กำหนดค่า, ไฟล์คุณสมบัติ, ฟอนต์, การแปล, certs เป็นต้น - "trimmings" ทั้งหมดของ Java ที่สำคัญที่สุดคือmodulesไฟล์ที่มี.classไฟล์ของไลบรารีมาตรฐาน Java
  • ในระดับหนึ่งไลบรารีมาตรฐาน Java จำเป็นต้องเรียกใช้โค้ดเนทีฟ เพื่อจุดประสงค์นี้ JRE มีไฟล์.dll(Windows) หรือ.dylib(macOS) หรือ.so(Linux) บางส่วนภายใต้bin/หรือlib/สนับสนุนไบนารีเนทีฟเฉพาะระบบ

JDKยังเป็นที่ตั้งของไดเรกทอรี มันเป็น superset ของ JRE ที่มีการเพิ่มเติม:

  • bin/ได้รับการขยายด้วยเครื่องมือพัฒนา ส่วนใหญ่ที่สำคัญของพวกเขาคือjavac; รวมถึงคนอื่น ๆjar, และjavadocjshell
  • jmods/ซึ่งเพิ่มไฟล์ JMOD สำหรับไลบรารีมาตรฐานได้รับการเพิ่ม jlinkไฟล์เหล่านี้ช่วยให้ห้องสมุดมาตรฐานที่จะใช้กับ

1
นี่หมายความว่าฉันสามารถตั้งค่าตัวแปรพา ธ ของฉันเป็น JDK ได้หรือไม่
เบรดี้

3
@Brady: ใช่ฉันคิดอย่างนั้น อย่างน้อยก็ใช้ได้ดีสำหรับฉัน ในฐานะนักพัฒนาฉันไม่สนใจ JRE หากมีกรณีพิเศษที่คุณต้องการ JRE โดยเฉพาะฉันไม่รู้จักพวกเขา
Carl Smotricz

JRE สามารถทำงานกับโค้ด Java ที่คอมไพล์แล้วเท่านั้นใช่ไหม?
SexyBeast

2
@Cupidvogel เนื่องจากไม่มีคอมไพเลอร์ใน JRE ฉันคิดว่าคุณสามารถพูดได้ JRE มีไว้สำหรับรันโค้ด Java ที่คอมไพล์แล้วขณะที่ JDK ยังให้เครื่องมือในการพัฒนาอีกด้วย
Carl Smotricz

1
ดังนั้นโดยทั่วไปแล้ว JDK มีคอมไพเลอร์ (เช่น Javac) เพื่อรวบรวมโค้ด, JRE (ระบบรันไทม์) เพื่อรันโค้ดที่คอมไพล์และเครื่องมืออื่น ๆ มีความหมายเพียงเพื่อทำให้ชีวิตโปรแกรมเมอร์ในการพัฒนาง่ายถูกต้องหรือไม่? ดังนั้น AFAIU เฉพาะ Javac และ JRE เป็นเครื่องมือที่จำเป็นจริงๆที่นี่ ทำไมหลายครั้งการติดตั้งซอฟต์แวร์อัพเกรดยืนยันใน JDK ที่จะนำเสนอ?
SexyBeast

131

ป้อนคำอธิบายรูปภาพที่นี่

JDK เป็นชุดของ JRE และประกอบด้วยทุกอย่างที่อยู่ใน JRE รวมถึงเครื่องมือต่าง ๆ เช่นคอมไพเลอร์และดีบั๊กที่จำเป็นสำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน JRE จัดเตรียมไลบรารี, Java Virtual Machine (JVM) และคอมโพเนนต์อื่น ๆ เพื่อรัน applets และแอ็พพลิเคชันที่เขียนด้วยภาษาการเขียนโปรแกรม Java


3
แผนภาพเจ๋ง! ฉันสับสนเล็กน้อยว่าคำสั่ง java เป็นภาพนอก JRE ซึ่งไม่ถูกต้อง ฉันไม่เข้าใจว่าทำไมมีไฟล์แยกต่างหากสำหรับคำสั่ง java เมื่อติดตั้ง JDK ซึ่งมีขนาดอย่างน้อยเหมือนกัน แอปพลิเคชันที่ใช้ JRE จะทำงานในกรณีใดและล้มเหลวกับ JDK หรือไม่ ประสบการณ์นี้เร็ว ๆ นี้และอาจจะกลับมาติดตามการทำซ้ำและได้รับการด้านล่างของมัน ...
เจสซี่ไอวี

104

ในแง่คนธรรมดา: 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

กระบวนการรวบรวม JIT (ความอนุเคราะห์: เอกสารของ Oracle)

JDK> JRE> JVM


เมื่อคุณพูดว่า "คอมไพล์" หรือ "คอมไพเลอร์" มันสับสนอย่างมากในบริบทนี้ซึ่งคุณอ้างถึง: การเปลี่ยนซอร์สโค้ดจาวาเป็นโค้ดจาวาไบต์หรือเปลี่ยนรหัสจาวาไบต์เป็นรหัสเครื่อง
OrangeSherbet

ดี! ฉันชอบปู่พ่อและลูกชายเปรียบเทียบ : D
Emzor

ใช่ขอบคุณมันง่ายมากที่จะเข้าใจว่าใครไม่คุ้นเคยกับคำเหล่านี้มากนัก
Jaimin Patel

25

จากเว็บไซต์ java อย่างเป็นทางการ ...

JRE (สภาพแวดล้อม Java Runtime):

  • เป็นการดำเนินการของ Java Virtual Machine * ซึ่งจริงๆแล้วรันโปรแกรม Java
  • Java Runtime Environment เป็นปลั๊กอินที่จำเป็นสำหรับการเรียกใช้โปรแกรมจาวา
  • JRE นั้นเล็กกว่า JDK ดังนั้นจึงต้องการพื้นที่ดิสก์น้อยกว่า
  • สามารถดาวน์โหลด / รองรับ JRE ได้อย่างอิสระจาก https://www.java.com
  • ซึ่งรวมถึง JVM ไลบรารี Core และคอมโพเนนต์เพิ่มเติมอื่น ๆ เพื่อเรียกใช้แอปพลิเคชันและแอปเพล็ตที่เขียนด้วย Java

JDK (ชุดพัฒนา Java)

  • เป็นชุดของซอฟต์แวร์ที่คุณสามารถใช้เพื่อพัฒนาแอปพลิเคชันที่ใช้ Java
  • Java Development Kit จำเป็นสำหรับการพัฒนาแอปพลิเคชัน Java
  • JDK ต้องการพื้นที่ดิสก์เพิ่มเติมเนื่องจากมี JRE พร้อมด้วยเครื่องมือการพัฒนาที่หลากหลาย
  • สามารถดาวน์โหลด / รองรับ JDK ได้อย่างอิสระจาก https://www.oracle.com/technetwork/java/javase/downloads/
  • มันมี JRE ชุดของคลาส API คอมไพเลอร์ Java, Webstart และไฟล์เพิ่มเติมที่จำเป็นในการเขียน Java applets และแอปพลิเคชัน

23

ข้อแตกต่างอย่างหนึ่งจากมุมมองการแก้ไขข้อบกพร่อง:

ในการดีบักลงในคลาสระบบ Java เช่น String และ ArrayList คุณต้องมี JRE เวอร์ชันพิเศษซึ่งถูกคอมไพล์ด้วย "debug information" JRE ที่รวมอยู่ใน JDK ให้ข้อมูลนี้ แต่ JRE ปกติไม่ได้ JRE ปกติไม่มีข้อมูลนี้เพื่อให้แน่ใจว่ามีประสิทธิภาพที่ดีขึ้น

ข้อมูลการดีบักคืออะไร นี่คือคำอธิบายสั้น ๆ ที่นำมาจากโพสต์บล็อกนี้ :

คอมไพเลอร์สมัยใหม่ทำงานได้ดีมากในการแปลงโค้ดระดับสูงของคุณด้วยโครงสร้างการควบคุมที่เยื้องเข้าหาและซ้อนกันและพิมพ์ตัวแปรตามอำเภอใจเป็นกองขนาดใหญ่ของบิตที่เรียกว่ารหัสเครื่อง (หรือ bytecode ในกรณีของ Java) วัตถุประสงค์เพียงอย่างเดียว เพื่อเรียกใช้เร็วที่สุดบน CPU เป้าหมาย (CPU เสมือนจริงของ JVM ของคุณ) รหัส Java ได้รับการแปลงเป็นคำแนะนำรหัสเครื่องหลาย ตัวแปรจะถูกผลักไปทั่วสถานที่ - ลงในสแต็กเข้าสู่การลงทะเบียนหรือปรับให้เหมาะสมอย่างสมบูรณ์ โครงสร้างและวัตถุไม่มีอยู่ในโค้ดผลลัพธ์ - มันเป็นเพียงนามธรรมที่ได้รับการแปลเป็นออฟเซ็ตแบบตายตัวลงในบัฟเฟอร์หน่วยความจำ

ดังนั้นดีบักเกอร์จะรู้ได้อย่างไรว่าจะหยุดเมื่อคุณขอให้มันแตกที่รายการในฟังก์ชั่นบางอย่าง? มันจะจัดการเพื่อค้นหาสิ่งที่จะแสดงให้คุณเมื่อคุณถามมันสำหรับค่าของตัวแปรอย่างไร คำตอบคือ - ข้อมูลการดีบัก

ข้อมูลการดีบักถูกสร้างโดยคอมไพเลอร์พร้อมกับรหัสเครื่อง มันเป็นตัวแทนของความสัมพันธ์ระหว่างโปรแกรมปฏิบัติการและรหัสต้นฉบับ ข้อมูลนี้จะถูกเข้ารหัสในรูปแบบที่กำหนดไว้ล่วงหน้าและเก็บไว้ข้างรหัสเครื่อง หลายรูปแบบดังกล่าวถูกประดิษฐ์ขึ้นในช่วงหลายปีที่ผ่านมาสำหรับแพลตฟอร์มและไฟล์ปฏิบัติการต่าง ๆ


9

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 (โปรแกรมดูแอปเพล็ตแอปเพล็ต) ฯลฯ แอปพลิเคชันไม่ว่าจะเป็นแบบสแตนด์อโลนหรือแบบเว็บ


8

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 ด้วย


8

JVM, JRE และ JDK ขึ้นอยู่กับแพลตฟอร์มเนื่องจากการกำหนดค่าของแต่ละระบบปฏิบัติการแตกต่างกัน แต่ Java เป็นแพลตฟอร์มอิสระ

Java Virtual Machine (JVM) เป็นระบบรันไทม์ที่รัน Java bytecode

JRE เป็นสภาวะแวดล้อม (ไลบรารีมาตรฐานและ JVM) ที่จำเป็นสำหรับการรันแอ็พพลิเคชัน Java

JDK รวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน


7

นี่คือคำตอบง่ายๆจาก Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

สภาพแวดล้อมรันไทม์ Java SE

JRE จัดเตรียมไลบรารีเครื่องเสมือน Java และส่วนประกอบอื่น ๆ ที่จำเป็นสำหรับคุณในการรันแอปเพล็ตและแอปพลิเคชันที่เขียนด้วยภาษาการเขียนโปรแกรม Java สภาพแวดล้อมรันไทม์นี้สามารถแจกจ่ายซ้ำกับแอปพลิเคชันเพื่อให้มีสถานะว่าง

ชุดพัฒนา Java SE (JDK)

JDK รวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน


7

หากคุณต้องการรันโปรแกรม Java แต่ไม่พัฒนาให้ดาวน์โหลด Java สภาพแวดล้อมรันไทม์หรือ JRE หากคุณต้องการพัฒนาพวกเขาดาวน์โหลดชุดพัฒนา Java หรือ JDK

JDK

เรียกว่า JDK เป็นชุดซึ่งรวมถึงสิ่งที่จำเป็นสำหรับการพัฒนาและเรียกใช้โปรแกรมจาวา

JDK ถูกกำหนดให้เป็นสภาพแวดล้อมการพัฒนาสำหรับการสร้างแอปพลิเคชันส่วนประกอบและแอปเพล็ต

JRE

มันมีทุกสิ่งที่คุณจำเป็นต้องเรียกใช้แอปพลิเคชัน Java ในรูปแบบที่รวบรวม คุณไม่จำเป็นต้องมีห้องสมุดและสิ่งของอื่น ๆ ทุกสิ่งที่คุณต้องการรวบรวม

JRE ไม่สามารถใช้สำหรับการพัฒนาใช้เพื่อเรียกใช้แอปพลิเคชันเท่านั้น


6

JVM (Java Virtual Machine) เป็นเครื่องที่เป็นนามธรรม มันเป็นข้อกำหนดที่ให้สภาพแวดล้อมรันไทม์ซึ่ง java bytecode สามารถดำเนินการได้

JRE เป็นตัวย่อสำหรับ Java Runtime Environment มันถูกใช้เพื่อจัดเตรียมสภาพแวดล้อมรันไทม์มันเป็นการใช้งานของ JVM มันมีอยู่จริงมันมีชุดของไลบรารี + ไฟล์อื่น ๆ ที่ JVM ใช้ที่รันไทม์

JDK เป็นตัวย่อสำหรับ Java Development Kit มีอยู่จริงมีเครื่องมือในการพัฒนา JRE +


6

หากคุณเป็นโปรแกรมเมอร์ 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) ครั้งต่อไปโปรดอ้างอิงแหล่งที่มาของคุณ - มันไม่ใช่งานต้นฉบับของคุณ
Jonathan Lam

6

ความเข้าใจที่ชัดเจนของคำเหล่านี้ (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 และความแตกต่าง


5

jdk จำเป็นต้องคอมไพล์โค้ดและแปลงจาวาโค้ดเป็นโค้ดไบต์ในขณะที่ jre จำเป็นสำหรับการเรียกใช้โค้ดไบต์


5
@ ไม่มี: ไม่เพียง แต่เป็นข้อมูลที่น้อยมาก แต่ยังไม่มีสิ่งที่คำตอบอื่น ๆ ไม่ได้
Amos M. Carpenter

5

JDKรวมถึง JRE plus เครื่องมือพัฒนาบรรทัดคำสั่งเช่นคอมไพเลอร์และดีบั๊กที่จำเป็นหรือมีประโยชน์สำหรับการพัฒนาแอปเพล็ตและแอปพลิเคชัน

JREนั้นเป็น Java Virtual Machine ที่โปรแกรม Java ของคุณทำงานอยู่ นอกจากนี้ยังมีปลั๊กอินของเบราว์เซอร์สำหรับการใช้งาน Applet

JDKเป็นเครื่องที่เป็นนามธรรม มันเป็นข้อกำหนดที่ให้สภาพแวดล้อมรันไทม์ซึ่ง java bytecode สามารถดำเนินการได้

ดังนั้นโดยทั่วไป JVM <JRE <JDK ตาม @Jaimin Patel กล่าว


5

เพียง:

JVM เป็นโค้ด Java ของเครื่องเสมือนที่เรียกใช้งาน

JRE เป็นสภาวะแวดล้อม (ไลบรารีมาตรฐานและ JVM) ที่จำเป็นสำหรับการรันแอ็พพลิเคชัน Java

JDK เป็น JRE พร้อมเครื่องมือสำหรับนักพัฒนาและเอกสารประกอบ


4

ข้อแตกต่างระหว่าง JDK และ JRE คือ JDK เป็นชุดพัฒนาซอฟต์แวร์สำหรับจาวาในขณะที่ JRE เป็นสถานที่ที่คุณเรียกใช้โปรแกรมของคุณ


4

สมมติว่าถ้าคุณเป็นนักพัฒนาแล้วบทบาทของคุณคือการพัฒนาโปรแกรมเช่นเดียวกับการดำเนินการโปรแกรม ดังนั้นคุณต้องมีสภาพแวดล้อมในการพัฒนาและดำเนินการซึ่งให้บริการโดย JDK

สมมติว่าถ้าคุณเป็นลูกค้าคุณไม่ต้องกังวลเกี่ยวกับการพัฒนาเพียงแค่คุณต้องการสภาพแวดล้อมในการรันโปรแกรมและรับผลลัพธ์เท่านั้นซึ่ง JRE ให้บริการ

JRE เรียกใช้งานแอปพลิเคชัน แต่ JVM อ่านบรรทัดคำแนะนำทีละบรรทัดดังนั้นจึงเป็นล่าม

เครื่องมือพัฒนา JDK = JRE +

JRE = JVM + คลาสไลบรารี


2

JRE

JRE เป็นตัวย่อสำหรับ Java Runtime Environment มันถูกใช้เพื่อจัดเตรียมสภาวะแวดล้อมรันไทม์เป็นการนำ JVM มาใช้ มันมีอยู่จริง มันมีชุดของไลบรารี + ไฟล์อื่น ๆ ที่ JVM ใช้ที่รันไทม์

การดำเนินการตาม JVM นั้น บริษัท อื่น ๆ นอกเหนือจาก Sun Micro Systems

ป้อนคำอธิบายรูปภาพที่นี่

JDK

JDK เป็นตัวย่อสำหรับ Java Development Kit มีอยู่จริงมีเครื่องมือในการพัฒนา JRE +

ป้อนคำอธิบายรูปภาพที่นี่


ทั้งข้อมูลในข้อความและกราฟิกมีให้ในคำตอบอื่น ๆ ก่อนหน้านี้
Karl Richter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.