Perbedaan antara 'java', 'javawv, dan' javaw '

184

Apa perbedaan antara java, javawdan javaws?

Saya menemukan di bawah Windows sebagian besar Java mulai digunakan javaw.

user705414
sumber
2
Itu karena Windows memiliki kebiasaan yang mengganggu ini untuk memulai Terminal yang sebenarnya (yang seharusnya tidak disebut "Terminal" ...) di latar depan setiap kali Anda memulai program dengan java -cp .... Karena hampir tidak ada yang menginginkan itu, javawadalah pilihan untuk membuat jendela yang mengganggu itu menghilang.
Matthieu

Jawaban:

212

Lihat dokumentasi untuk:

  • javaperintah 1 / javawperintah 2
    1. The javaalat meluncurkan aplikasi Java. Itu melakukan ini dengan memulai lingkungan Java runtime, memuat kelas yang ditentukan, dan memanggil mainmetode kelas itu .
    2. The javawperintah identik dengan java, kecuali bahwa dengan javawtidak ada terkait jendela konsol. Gunakan javawsaat Anda tidak ingin jendela prompt perintah muncul.
  • javawsperintah , " perintah Java Web Start "

    The javawsperintah peluncuran Java Web Start, yang merupakan acuan pelaksanaan Jaringan Jawa Launching Protocol (JNLP). Java Web Start meluncurkan aplikasi Java / applet yang dihosting di jaringan.

    Jika file JNLP ditentukan, javawsakan meluncurkan aplikasi Java / applet yang ditentukan dalam file JNLP.

    The javawspeluncur memiliki seperangkat pilihan yang didukung dalam rilis saat ini. Namun, opsi dapat dihapus dalam rilis mendatang.

    Lihat juga JDK 9 Catatan Rilis API, Fitur, dan Opsi yang ditinggalkan :

    Teknologi Java Deployment sudah ditinggalkan dan akan dihapus dalam rilis
    Java Applet dan fungsionalitas WebStart yang akan datang, termasuk API Applet, plug-in Java, Java Applet Viewer, JNLP dan Java Web Start, termasuk javawsalat , semuanya sudah usang di JDK 9 dan akan dihapus dalam rilis mendatang.

Andrew Thompson
sumber
69

java: pelaksana aplikasi Java yang dikaitkan dengan konsol untuk menampilkan output / kesalahan

javaw: ( Java windowed pelaksana aplikasi ) yang tidak terkait dengan konsol. Jadi tidak ada tampilan output / kesalahan. Ini dapat digunakan untuk secara diam-diam mendorong output / kesalahan ke file teks. Itu sebagian besar digunakan untuk meluncurkan aplikasi berbasis GUI.

javaws: ( Java web start ) untuk mengunduh dan menjalankan aplikasi web terdistribusi. Sekali lagi, tidak ada konsol yang dikaitkan.

Semua adalah bagian dari JRE dan menggunakan JVM yang sama.

Venkataswamy
sumber
jadi jika saya sudah menginstal JRE, javawharus di PATH saya? (Tidak)
endolith
@endolith, instalasi Java pada Windows tidak, dalam pengalaman saya, menambahkan apa pun ke variabel PATH. Jika Anda hanya menginstal JRE, Anda mungkin harus menambahkan direktori JRE / bin ke PATH secara manual; jika Anda sudah menginstal JRE dan JDK, Anda akan menambahkan JDK / bin ke PATH sebagai gantinya.
mcduffee
9

java.exe dikaitkan dengan konsol, sedangkan javaw.exe tidak memiliki asosiasi seperti itu. Jadi, ketika java.exe dijalankan, secara otomatis membuka jendela command prompt di mana aliran output dan kesalahan ditampilkan.

Serge Bekenkamp
sumber
6

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

Perintah javaw identik dengan java, kecuali bahwa javaw tidak memiliki jendela konsol terkait. Gunakan javaw ketika Anda tidak ingin jendela command prompt ditampilkan. Peluncur javaw menampilkan jendela dengan informasi kesalahan jika gagal.

Dan javaw adalah untuk aplikasi web Java start, applet, atau sesuatu seperti itu, saya curiga.

lfxgroove
sumber
Tautan rusak: "Halaman yang diminta tidak ada atau mungkin sudah dipindahkan."
Peter Mortensen
1

Saya telah memeriksa apakah pengalihan output berfungsi dengan javaw:

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

Itu berarti, jika aplikasi Java mencetak sesuatu melalui System.out atau System.err, itu ditulis ke file-file itu, seperti juga dengan menggunakan java (tanpa w). Terutama pada saat memulai java, JRE dapat menulis kesalahan awal (kelas tidak ditemukan) pada pipa keluaran kesalahan. Dalam hal ini, penting untuk mengetahui kesalahan. Saya sarankan untuk menggunakan pengalihan konsol dalam hal apa pun jika javawdiminta.

Sebaliknya jika Anda gunakan

start java .... 1>log.txt 2>err.txt

Dengan startperintah konsol Windows , pengalihan output konsol tidak berfungsi dengan javaatau dengan javaw.

Penjelasan mengapa demikian: Saya pikir itu javawmembuka proses internal di OS (memadai menggunakan kelas java.lang.Process), dan mentransfer redirection output yang dikenal untuk proses ini. Jika tidak ada pengalihan yang diberikan pada baris perintah, tidak ada yang diarahkan dan proses mulai internal untuk javawtidak memiliki output konsol. Perilaku untuk java.lang.Process serupa. Mesin virtual juga dapat menggunakan fitur internal ini javaw.

Jika Anda menggunakan 'start', konsol Windows menciptakan proses baru untuk Windows untuk mengeksekusi perintah setelah mulai, tetapi mekanisme ini tidak menggunakan redirection yang diberikan untuk sub proses yang dimulai, sayangnya.

Hartmut Schorrig
sumber