อะไรคือความแตกต่างระหว่างjava, javawและjavaws?
ผมพบว่าภายใต้ Windows ส่วนใหญ่ของ Java javawจะเริ่มใช้
อะไรคือความแตกต่างระหว่างjava, javawและjavaws?
ผมพบว่าภายใต้ Windows ส่วนใหญ่ของ Java javawจะเริ่มใช้
คำตอบ:
ดูเอกสารประกอบสำหรับ:
javaคำสั่ง1 / javawคำสั่ง2
javaเครื่องมือเปิดตัวโปรแกรม Java ทำได้โดยเริ่มต้นสภาพแวดล้อมรันไทม์ Java โหลดคลาสที่ระบุและเรียกใช้mainเมธอดของคลาสนั้นjavawคำสั่งเป็นเหมือนjavaยกเว้นว่ามีjavawหน้าต่างคอนโซลไม่มีที่เกี่ยวข้อง ใช้javawเมื่อคุณไม่ต้องการให้หน้าต่างพรอมต์คำสั่งปรากฏขึ้น
javawsคำสั่งที่" Java Web Startคำสั่ง"
javawsคำสั่งเปิดตัว Java Web Start ซึ่งเป็นดำเนินการอ้างอิงของเครือข่ายเปิดตัว Java Protocol (JNLP) Java Web Start เปิดตัวแอปพลิเคชัน / แอปเพล็ตที่โฮสต์บนเครือข่าย
หากระบุไฟล์ JNLPjavawsจะเรียกใช้งาน Java application / applet ที่ระบุในไฟล์ JNLP ปล่อยมีชุดของตัวเลือกที่ได้รับการสนับสนุนในรุ่นปัจจุบัน อย่างไรก็ตามตัวเลือกอาจถูกลบในรุ่นอนาคตjavaws
โปรดดูAPI การเลิกใช้ฟีเจอร์และตัวเลือกของ JDK 9 Release Notes ที่เลิกใช้แล้ว :
เทคโนโลยีการปรับใช้ Java เลิกใช้แล้วและจะถูกลบในการทำงานในอนาคต
Java Applet และ WebStart รวมถึง Applet API, ปลั๊กอิน Java, Java Applet Viewer, JNLP และ Java Web Start รวมถึงjavawsเครื่องมือทั้งหมดเลิกใช้ใน JDK 9และจะถูกลบออกในอนาคต
java: ตัวจัดการแอปพลิเคชัน Java ซึ่งเชื่อมโยงกับคอนโซลเพื่อแสดงเอาต์พุต / ข้อผิดพลาด
javaw: ตัวดำเนินการแอ็พพลิเคชัน( Java หน้าต่าง ) ไม่เกี่ยวข้องกับคอนโซล ดังนั้นจึงไม่มีการแสดงผลลัพธ์ / ข้อผิดพลาด มันสามารถใช้ในการผลักดันเอาต์พุต / ข้อผิดพลาดไปยังไฟล์ข้อความแบบเงียบ ๆ ส่วนใหญ่จะใช้เพื่อเรียกใช้แอปพลิเคชันที่ใช้ GUI
javaws: ( Java web start ) เพื่อดาวน์โหลดและเรียกใช้เว็บแอพพลิเคชันแบบกระจาย อีกครั้งไม่มีการเชื่อมโยงคอนโซล
ทั้งหมดเป็นส่วนหนึ่งของ JRE และใช้ JVM เดียวกัน
javawควรอยู่ในเส้นทางของฉันหรือไม่ (ไม่ใช่)
java.exeเชื่อมโยงกับคอนโซลในขณะที่javaw.exeไม่มีการเชื่อมโยงใด ๆ ดังนั้นเมื่อรันjava.exeหน้าต่างจะเปิดหน้าต่างพรอมต์คำสั่งโดยอัตโนมัติซึ่งจะแสดงเอาต์พุตและสตรีมข้อผิดพลาด
คำสั่ง javaw เหมือนกับ java ยกเว้นว่า javaw ไม่มีหน้าต่างคอนโซลที่เชื่อมโยง ใช้ javaw เมื่อคุณไม่ต้องการให้หน้าต่างพรอมต์คำสั่งปรากฏขึ้น ตัวเรียกใช้ javaw แสดงหน้าต่างพร้อมข้อมูลข้อผิดพลาดหากล้มเหลว
และ javaws สำหรับแอปพลิเคชันเว็บเริ่มต้น Java, แอปเพล็ตหรืออะไรทำนองนั้นฉันก็สงสัย
ฉันได้ตรวจสอบว่าการเปลี่ยนเส้นทางผลลัพธ์ทำงานกับjavaw:
javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt
หมายความว่าหากแอปพลิเคชัน Java พิมพ์อะไรผ่าน System.out หรือ System.err มันจะถูกเขียนไปยังไฟล์เหล่านั้นเช่นเดียวกับการใช้ java (โดยไม่ต้องw) โดยเฉพาะอย่างยิ่งในการเริ่มต้นjavaJRE อาจเขียนข้อผิดพลาดในการเริ่มต้น (ไม่พบคลาส) บนไพพ์เอาต์พุตข้อผิดพลาด ในส่วนนี้จำเป็นต้องทราบเกี่ยวกับข้อผิดพลาด ฉันแนะนำให้ใช้การเปลี่ยนเส้นทางคอนโซลในทุกกรณีหากjavawมีการเรียกใช้
ในทางตรงกันข้ามถ้าคุณใช้
start java .... 1>log.txt 2>err.txt
ด้วยคอนโซลของ Windows startคำสั่งเปลี่ยนเส้นทางคอนโซลการส่งออกไม่ได้ทำงานร่วมกับหรือด้วยjavajavaw
คำอธิบายว่าทำไมจึงเป็นเช่นนั้น: ฉันคิดว่าjavawเปิดกระบวนการภายในในระบบปฏิบัติการ (เพียงพอโดยใช้คลาส java.lang.Process) และถ่ายโอนการเปลี่ยนเส้นทางเอาต์พุตที่ทราบไปยังกระบวนการนี้ หากไม่มีการเปลี่ยนเส้นทางในบรรทัดคำสั่งจะไม่มีการเปลี่ยนเส้นทางใด ๆ และกระบวนการเริ่มต้นภายในสำหรับjavawไม่มีคอนโซลเอาต์พุตใด ๆ พฤติกรรมสำหรับ java.lang.Process คล้ายกัน เครื่องเสมือนอาจใช้คุณสมบัติภายในนี้javawเช่นกัน
หากคุณใช้ 'เริ่ม' คอนโซล Windows จะสร้างกระบวนการใหม่สำหรับ Windows เพื่อดำเนินการคำสั่งหลังจากเริ่มต้น แต่กลไกนี้ไม่ได้ใช้การเปลี่ยนเส้นทางที่กำหนดสำหรับกระบวนการย่อยที่เริ่มต้นโชคไม่ดี
java -cp ...ในเบื้องหน้าเมื่อใดก็ตามที่คุณเริ่มโปรแกรมด้วย เกือบจะไม่มีใครต้องการjavawมันเป็นทางเลือกที่จะทำให้หน้าต่างที่น่ารำคาญหายไป