ความแตกต่างระหว่าง 'java', 'javawv และ' javaws '


184

อะไรคือความแตกต่างระหว่างjava, javawและjavaws?

ผมพบว่าภายใต้ Windows ส่วนใหญ่ของ Java javawจะเริ่มใช้


2
นั่นเป็นเพราะ Windows มีนิสัยนี้น่ารำคาญของการเริ่มต้นที่เกิดขึ้นจริงร์มินัล (ซึ่งไม่ควรแม้แต่จะเรียกว่า "เทอร์มิ" ... ) java -cp ...ในเบื้องหน้าเมื่อใดก็ตามที่คุณเริ่มโปรแกรมด้วย เกือบจะไม่มีใครต้องการjavawมันเป็นทางเลือกที่จะทำให้หน้าต่างที่น่ารำคาญหายไป
Matthieu

คำตอบ:


212

ดูเอกสารประกอบสำหรับ:

  • javaคำสั่ง1 / javawคำสั่ง2
    1. javaเครื่องมือเปิดตัวโปรแกรม Java ทำได้โดยเริ่มต้นสภาพแวดล้อมรันไทม์ Java โหลดคลาสที่ระบุและเรียกใช้mainเมธอดของคลาสนั้น
    2. javawคำสั่งเป็นเหมือนjavaยกเว้นว่ามีjavawหน้าต่างคอนโซลไม่มีที่เกี่ยวข้อง ใช้javawเมื่อคุณไม่ต้องการให้หน้าต่างพรอมต์คำสั่งปรากฏขึ้น
  • javawsคำสั่งที่" Java Web Startคำสั่ง"

    javawsคำสั่งเปิดตัว Java Web Start ซึ่งเป็นดำเนินการอ้างอิงของเครือข่ายเปิดตัว Java Protocol (JNLP) Java Web Start เปิดตัวแอปพลิเคชัน / แอปเพล็ตที่โฮสต์บนเครือข่าย

    หากระบุไฟล์ JNLP javawsจะเรียกใช้งาน 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และจะถูกลบออกในอนาคต


69

java: ตัวจัดการแอปพลิเคชัน Java ซึ่งเชื่อมโยงกับคอนโซลเพื่อแสดงเอาต์พุต / ข้อผิดพลาด

javaw: ตัวดำเนินการแอ็พพลิเคชัน( Java หน้าต่าง ) ไม่เกี่ยวข้องกับคอนโซล ดังนั้นจึงไม่มีการแสดงผลลัพธ์ / ข้อผิดพลาด มันสามารถใช้ในการผลักดันเอาต์พุต / ข้อผิดพลาดไปยังไฟล์ข้อความแบบเงียบ ๆ ส่วนใหญ่จะใช้เพื่อเรียกใช้แอปพลิเคชันที่ใช้ GUI

javaws: ( Java web start ) เพื่อดาวน์โหลดและเรียกใช้เว็บแอพพลิเคชันแบบกระจาย อีกครั้งไม่มีการเชื่อมโยงคอนโซล

ทั้งหมดเป็นส่วนหนึ่งของ JRE และใช้ JVM เดียวกัน


ดังนั้นหากฉันติดตั้ง JRE แล้วjavawควรอยู่ในเส้นทางของฉันหรือไม่ (ไม่ใช่)
endolith

@endolith การติดตั้ง Java บน Windows ไม่ได้เพิ่มอะไรลงไปในตัวแปร PATH หากคุณเพิ่งติดตั้ง JRE คุณอาจต้องเพิ่มไดเรกทอรี JRE / bin ลงใน PATH ด้วยตนเอง หากคุณติดตั้ง JRE และ JDK คุณจะต้องเพิ่ม JDK / bin ลงใน PATH แทน
mcduffee

9

java.exeเชื่อมโยงกับคอนโซลในขณะที่javaw.exeไม่มีการเชื่อมโยงใด ๆ ดังนั้นเมื่อรันjava.exeหน้าต่างจะเปิดหน้าต่างพรอมต์คำสั่งโดยอัตโนมัติซึ่งจะแสดงเอาต์พุตและสตรีมข้อผิดพลาด


6

จากhttp://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix32.60%2Fuser%2Fjava.html :

คำสั่ง javaw เหมือนกับ java ยกเว้นว่า javaw ไม่มีหน้าต่างคอนโซลที่เชื่อมโยง ใช้ javaw เมื่อคุณไม่ต้องการให้หน้าต่างพรอมต์คำสั่งปรากฏขึ้น ตัวเรียกใช้ javaw แสดงหน้าต่างพร้อมข้อมูลข้อผิดพลาดหากล้มเหลว

และ javaws สำหรับแอปพลิเคชันเว็บเริ่มต้น Java, แอปเพล็ตหรืออะไรทำนองนั้นฉันก็สงสัย


ลิงก์ใช้งานไม่ได้: "หน้าที่ร้องขอไม่มีอยู่หรืออาจย้ายไปแล้ว"
Peter Mortensen

1

ฉันได้ตรวจสอบว่าการเปลี่ยนเส้นทางผลลัพธ์ทำงานกับ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 เพื่อดำเนินการคำสั่งหลังจากเริ่มต้น แต่กลไกนี้ไม่ได้ใช้การเปลี่ยนเส้นทางที่กำหนดสำหรับกระบวนการย่อยที่เริ่มต้นโชคไม่ดี

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