Java SE 6 เทียบกับ JRE 1.6 เทียบกับ JDK 1.6 - สิ่งเหล่านี้หมายความว่าอย่างไร


179

ฉันเห็นคำศัพท์ Java ที่แตกต่างกันจำนวนมากลอยอยู่รอบ ๆ ฉันต้องการติดตั้ง JDK 1.6 ฉันเข้าใจว่า Java 6 == Java 1.6 อย่างไรก็ตามเมื่อฉันติดตั้ง Java SE 6 ฉันจะได้รับ JVM ที่รายงานเป็นเวอร์ชัน 11.0! ใครสามารถแก้ไขความบ้าคลั่งได้บ้าง?


12
มีJava Conceptual Diagram ที่ดี (พร้อมลิงค์ที่คลิกได้) ที่สามารถช่วยเหลือได้เช่นกัน
informatik01

คำตอบ:


55

เมื่อคุณพิมพ์ "java -version" คุณจะเห็นหมายเลขรุ่นสามหมายเลขคือเวอร์ชัน java (ที่ฉันใช้คือ " 1.6.0_07") เวอร์ชันสภาพแวดล้อมรันไทม์ Java SE ("บิลด์1.6.0_07-b06") และรุ่น HotSpot (ตามลำดับคือ " build 10.0-b23, mixed mode") ฉันสงสัยว่า "11.0" ที่คุณเห็นคือรุ่น HotSpot

อัปเดต: HotSpot คือ (หรือเคยเป็นตอนนี้พวกเขาดูเหมือนจะใช้เพื่อหมายถึง VM ทั้งหมด) คอมไพเลอร์ทันเวลาที่สร้างขึ้นใน Java Virtual Machine พระเจ้าเท่านั้นที่รู้ว่าทำไมดวงอาทิตย์ถึงให้หมายเลขรุ่นแยกต่างหาก


7
ดังนั้นอะไรคือความแตกต่างระหว่าง JVM 1.6 และ JVM 11.0? ฮอตสปอตคืออะไร?
Joe Schneider

ขอบคุณนั่นคือความสับสน - ตัวเลขสองรุ่นที่แตกต่างกัน
Joe Schneider

1
HotSpot ไม่ใช่ JIT JIT หมายถึงการรวบรวมเกิดขึ้นก่อนที่จะดำเนินการ HotSpot ใช้การบุกรุกครั้งแรกในการดำเนินการและวิเคราะห์รหัสก่อนการรวบรวม / การเพิ่มประสิทธิภาพส่วนที่เลือกของโปรแกรม
John Nilsson

174
  • JDK - ชุดพัฒนา Java
  • JRE - Java Runtime Environment
  • Java SE - Java Standard Edition

SE กำหนดชุดของความสามารถและฟังก์ชันการทำงาน มีรุ่นที่ซับซ้อนมากขึ้น (Enterprise Edition - EE) และรุ่นที่ง่ายกว่า (Micro Edition - ME - สำหรับสภาพแวดล้อมมือถือ)

JDK รวมถึงคอมไพเลอร์และเครื่องมืออื่น ๆ ที่จำเป็นในการพัฒนาแอปพลิเคชัน Java; JRE ไม่ ดังนั้นในการรันแอ็พพลิเคชัน Java ที่บุคคลอื่นให้คุณต้อง JRE ในการพัฒนาแอปพลิเคชัน Java คุณต้องมี JDK

แก้ไข : Chris Marasti-Georg ชี้ให้เห็นในความคิดเห็นคุณสามารถค้นหาข้อมูลมากมายได้ที่เว็บไซต์Javaของ Sun และโดยเฉพาะอย่างยิ่งจากส่วนJava SE (ตัวเลือกที่ 2, Java SE Development Kit (JDK) 6 Update 10) .


แก้ไข 2011-04-06: โลกเปลี่ยนและตอนนี้ Java ได้รับการจัดการโดย Oracle ซึ่งซื้อ Sun ปลายปีนี้sun.comโดเมนควรจะมืด หน้าใหม่ (ขึ้นอยู่กับการเปลี่ยนเส้นทาง) คือหน้าJavaนี้ที่ Oracle Tech Network (ดูที่java.comด้วย)


แก้ไข 2013-01-11:และโลกยังคงหมุน (2012-12-21 แม้จะมี) และแท้จริงและเห็น JRE 6 กำลังจะถึงจุดสิ้นสุดของการสนับสนุน Oracleกล่าวว่าไม่มีการอัพเดทสาธารณะสำหรับ Java 6 อีกต่อไปหลังจากเดือนกุมภาพันธ์ 2013

ภายใน Java เวอร์ชันที่ให้คำตอบนี้ยังใช้ได้ JDK เป็น Java Development Kit, JRE เป็น Java Runtime Environment, Java SE เป็นรุ่นมาตรฐานและอื่น ๆ แต่เวอร์ชัน 6 (1.6) กำลังจะล้าสมัย

แก้ไข 2015-04-29:และด้วยการปฏิวัติอีกสองรอบดวงอาทิตย์เวลาก็สิ้นสุดลงสำหรับการสนับสนุน Java SE 7 ด้วย ในเดือนเมษายนปี 2015 Oracle ยืนยันว่าไม่ได้ให้การอัพเดทสาธารณะกับ Java SE 7 อีกต่อไปการสิ้นสุดการอัปเดตสาธารณะสำหรับ Java SE 8 อย่างไม่แน่นอนคือมีนาคม 2017 แต่วันที่สิ้นสุดนั้นอาจมีการเปลี่ยนแปลง (ภายหลังไม่ใช่ก่อนหน้านี้)


1
ดังนั้นถ้าฉันต้องการ JDK 1.6 ฉันจะติดตั้งอะไร การติดตั้ง Java SE 6 ให้ฉันเป็น JVM ซึ่งรายงานว่าเป็นเวอร์ชัน 11.0!
Joe Schneider

1
คุณต้องไปเจอกับดวงอาทิตย์และดาวน์โหลด JDK 1.6 หรือ 6 ไม่ว่ามันจะอยู่ในรายการใด
Chris Marasti-Georg

ฉันเชื่อว่าสิ่งที่มาพร้อมกับ Java SE 6 ควรเป็น JDK ที่ถูกต้องแม้จะมีความแตกต่างของหมายเลขภายใน
Jonathan Leffler

java.sun.com/javase/downloads/index.jspตัวเลือกที่ 2, Java SE Development Kit (JDK) 6 อัปเดต 10
Chris Marasti-Georg

1
@Pacerier: เป็นจริงในเดือนตุลาคม 2008 ใช่ไหม นอกจากนี้องค์ประกอบหลักของ JDK ก็คือคอมไพเลอร์ Java ใช่ไหม?
Jonathan Leffler

104

สิ่งนี้อาจช่วยบางคน:

ฉันกำลังติดตั้ง Java ล่าสุดบนระบบของฉันเพื่อการพัฒนาและปัจจุบันเป็น Java SE 7 ทีนี้มาดำดิ่งสู่ "madness" นี้ตามที่คุณวางไว้ ...

ทั้งหมดนี้เหมือนกัน (เมื่อนักพัฒนากำลังพูดถึง Java เพื่อการพัฒนา):

  • Java SE 7
  • Java SE v1.7.0
  • ชุดพัฒนา Java SE 7

เริ่มต้นด้วย Java v1.5:

  • v5 = v1.5
  • v6 = v1.6
  • v7 = v1.7

และเราสามารถสรุปได้ว่าสิ่งนี้จะยังคงอยู่สำหรับเวอร์ชันในอนาคต

ถัดไปสำหรับนักพัฒนาดาวน์โหลด JDK ไม่ใช่ JRE

JDK จะมี JRE หากคุณต้องการ JDK และ JRE รับ JDK ทั้งสองจะถูกติดตั้งจากการติดตั้ง JDK เดียวตามที่คุณจะเห็นด้านล่าง

ในฐานะที่เป็นคนดังกล่าวข้างต้น:

  • JDK = Java Development Kit (นักพัฒนาต้องการสิ่งนี้คือคุณถ้าคุณใช้รหัสใน Java)
  • JRE = Java Runtime Environment (ผู้ใช้ต้องการนี่คือผู้ใช้คอมพิวเตอร์ทุกคนในวันนี้)
  • Java SE = Java Standard Edition

นี่คือลิงค์ทีละขั้นตอนที่ฉันติดตาม (ขั้นตอนเดียวนำไปสู่การต่อไปนี่คือทั้งหมดสำหรับการดาวน์โหลดครั้งเดียว) เพื่อดาวน์โหลด Java เพื่อการพัฒนา (JDK):

  1. ไปที่ "ดาวน์โหลด Java SE": http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. คลิก "ดาวน์โหลด JDK" และไปที่ "ดาวน์โหลด Java SE Development Kit 7": http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html (โปรดทราบว่า การติดตามลิงก์จากขั้นตอนที่ # 1 จะนำคุณไปยังลิงก์อื่นเช่นการอัปเดต JDK 1.7 รุ่นที่ใหม่กว่าออกมาแล้ว)
  3. ยอมรับข้อตกลง :)
  4. คลิก "Java SE Development Kit 7 (Windows x64)": http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-windows-x64.exe (สำหรับ Windows 7 64 บิตของฉัน ระบบ)
  5. คุณกำลังดาวน์โหลด (หวังว่าล่าสุด) JDK สำหรับระบบของคุณ! :)

โปรดทราบว่าลิงก์ข้างต้นมีไว้เพื่อการอ้างอิงเท่านั้นเพื่อแสดงวิธีการทีละขั้นตอนในการดาวน์โหลด JDK

และติดตั้งด้วยการตั้งค่าเริ่มต้นไปที่:

  • “ C: \ Program Files \ Java \ jdk1.7.0 \” (JDK)
  • “ C: \ Program Files \ Java \ jre7 \” (JRE) <--- ทำไมมันถามโฟลเดอร์การติดตั้งใหม่ มันคือ JRE!

โปรดจำไว้จากด้านบนว่า JDK มี JRE ซึ่งเหมาะสมถ้าคุณรู้ว่าทั้งคู่คืออะไร อีกครั้งดูด้านบน

หลังจากการติดตั้งของคุณให้ตรวจสอบ“ C: \ Program Files \ Java” อีกครั้งเพื่อดูทั้งสองโฟลเดอร์ ตอนนี้คุณรู้ว่าพวกเขาคืออะไรและทำไมพวกเขาอยู่ที่นั่น

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


8
คำตอบนี้จะต้องชนขึ้น :)
fchen

ฉันเพิ่งต้องติดตั้ง jre เพื่อเรียกใช้หนึ่งในตัวติดตั้งอื่นแล้วต้องติดตั้งรุ่น 32 บิตเพื่อให้ตัวติดตั้งตัวอื่นทำงานได้ รุ่นที่ฉันใช้ในตอนท้ายนั่นคือ glassfish 4 ซึ่งดูเหมือนว่าจะยังไม่ได้ให้บริการ javax.persistence จากนั้นก็กลายเป็นว่าฉันต้องการ maven ซึ่งคุณเปิดเครื่องรูดแล้วตั้งค่าตัวแปรสภาพแวดล้อมบางอย่าง ช่างเป็นระเบียบ!
JonnyRaa

สำหรับฉันแล้วดูเหมือนว่า Java SE และ Java SDK เป็นแพ็คเกจเดียว
galmok

20

ประวัติโดยย่อและอาจไม่ถูกต้องของเวอร์ชัน Java

  • Java เป็นแพลตฟอร์ม ประกอบด้วยสองผลิตภัณฑ์ - ชุดพัฒนาซอฟต์แวร์และสภาพแวดล้อมรันไทม์

  • เมื่อ Java ได้รับการปล่อยตัวครั้งแรกมันก็เห็นได้ชัดว่าเรียกว่าเพียงแค่Java หากคุณเป็นนักพัฒนาซอฟต์แวร์คุณก็รู้จักเวอร์ชันซึ่งเป็น "1.0" ปกติและต่อมาเป็น "1.1" ผลิตภัณฑ์ทั้งสองที่เป็นส่วนหนึ่งของแพลตฟอร์มได้รับชื่อด้วย:

    • JDK - "ชุดพัฒนา Java"
    • JRE - "สภาวะแวดล้อม Java Runtime"
  • เห็นได้ชัดว่าการเปลี่ยนแปลงในรุ่น 1.2 จึงมีความสำคัญที่พวกเขาเริ่มเรียกแพลตฟอร์มเป็นJava 2

    • ค่าเริ่มต้น "การกระจาย" ของแพลตฟอร์มนั้นได้รับชื่อ "มาตรฐาน" เพื่อตัดกันกับพี่น้อง ดังนั้นคุณมีสามแพลตฟอร์ม:

      • "Java 2 Standard Edition (J2SE)"
      • "Java 2 Enterprise Edition (J2EE)"
      • "Java 2 Mobile Edition (J2ME)"
    • JDK ได้เปลี่ยนชื่อเป็น "Java 2 Software Development Kit" อย่างเป็นทางการ

  • เมื่อรุ่น 1.5 ออกมาชุดสูทตัดสินใจว่าพวกเขาต้องการ "เปลี่ยนโฉม" ผลิตภัณฑ์ ดังนั้นแพลตฟอร์ม Java จึงมีสองรุ่น - รุ่นผลิตภัณฑ์ "5" และรุ่นผู้พัฒนา "1.5" (ใช่กฎดังกล่าวถูกกล่าวถึงอย่างชัดเจน - "วาง '1') อย่างไรก็ตาม" 2 "ยังคงอยู่ใน ชื่อ. ดังนั้นตอนนี้แพลตฟอร์มที่เรียกว่าอย่างเป็นทางการ"Java 2 Platform Standard Edition 5.0 (J2SE 5.0)"

    • ชุดยังตระหนักว่าชุมชนการพัฒนาไม่ได้รับการเปลี่ยนชื่อ JDK แต่แทนที่จะย้อนกลับการเปลี่ยนแปลงของพวกเขาพวกเขาก็ตัดสินใจที่จะลดลง "2" จากชื่อของแต่ละผลิตภัณฑ์ซึ่งขณะนี้ได้รับเป็น"J2SE 5.0 Development Kit (JDK 5.0)"และ"J2SE Runtime Environment 5.0 (JRE 5.0)"
  • เมื่อรุ่น 1.6 ออกมามีคนรู้ว่าการมีตัวเลขสองตัวในชื่อแปลก ๆ ดังนั้นพวกเขาจึงตัดสินใจทิ้งส่วนต่อท้ายที่ 2 (และส่วนท้าย ".0") โดยสมบูรณ์และเราลงท้ายด้วย"Java Platform, Standard Edition 6 (Java SE 6)"ที่มี"Java SE Development Kit 6 (JDK 6)"และ"Java SE Runtime Environment 6 (JRE 6)"

  • เวอร์ชั่น 1.7 ไม่ได้ทำอะไรโง่ ๆ ถ้าฉันต้องเดาการเปลี่ยนแปลงครั้งใหญ่ครั้งต่อไปก็จะทิ้ง "SE" เพื่อให้วัฏจักรเสร็จสมบูรณ์และ JDK จะถูกเรียกว่า "Java Development Kit" อีกครั้ง

หมายเหตุ

  • เพื่อความง่ายสัญญาณกลุ่มหนึ่งถูกตัดออก ดังนั้นสมมติว่า Java ™, JDK ™และ JRE ™

  • ดังนั้นดูเหมือนว่าจะมีปัญหาในการแสดงรายการที่ซ้อนกัน

อ้างอิง

ถ้อยคำส

เพียงแค่วาง "1. " จากรุ่นพิมพ์javac -versionและjava -versionและคุณจะดีไป


3
วัวศักดิ์สิทธิ์ ฉันคิดว่ามีเพียง Microsoft เท่านั้นที่มีคนไร้บ้านที่บ้าคลั่งที่สร้างชื่อผลิตภัณฑ์
Stabledog

2
มันเป็นบ้า ฉันไม่สามารถเข้าใจสิ่งเหล่านี้ได้โดยไม่ต้องค้นหาพวกเขาอย่างชัดเจนทุกครั้ง
Preet Sangha


3

Java SE Runtime สำหรับผู้ใช้ดังนั้นคุณต้องใช้ Java JRE รุ่นแรกของ Java คือ 1 จากนั้น 1.1 - 1.2 - 1.3 - 1.4 - 1.5 - 1.6 - 1.6 เป็นต้นและโดยปกติแต่ละรุ่นจะมีชื่อตามเวอร์ชันดังนั้น JRE 6 หมายถึง Java jre 1.6 มีรุ่นอัปเดตอยู่แล้วเช่น 1.6 update 45 ซึ่งมีชื่อว่า java jre 6u45

จากสิ่งที่ฉันรู้พวกเขาต้องการใช้หมายเลข 6 แทนการใช้ 1.6 เพื่อสะท้อนระดับวุฒิภาวะความมั่นคงความยืดหยุ่นและความปลอดภัย

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