, neden javac yürütebileceği bir olduğu gibi none-java programı?
Sorunuzun cevabı zaten Windows x64, benim yüklemesinde (
javac.exe altında burada onun cevabını aktaran soruya Why Java compiler as distributed as executable and not as JVM bytecode?
için Jon Skeet tarafından JDK 1.8 verilmiştir) boyutu yaklaşık 15K'dir. Bu tam derleyici değil. Derleyici kendisi gerçekten Java'da yazılmıştır ve javac.exe etkili bir başlatıcıdır. Bu Java ile gelen araçların birçoğu için de geçerli - bir ağrı gibi bir şey çalıştırmak zorunda olacaktır: JRE (Java Runtime Environment) hayal olduğu her şeyi anlamak için basit bir yol
java -cp path/to/javac.jar java.tools.Javac -cp path/to/your/libraries Foo.java
Programınız ve işletim sistemi arasında bir ara katman gibi davranıyor. JRE, byte kodunu kabul eder ve java programını çalıştırır.Javac (java derleyici) java kaynak kodunuzu platform nötr bayt koduna dönüştürür (istisnalar vardır). Java, javac, jre'nin java'da yazılıp yazılmadığından emin değilim. Fakat eğer öyleyse, farklı işletim sistemlerinde (platformlar) farklı bir şekilde bağlanmaları/yüklenmeleri gerekir.
Şimdi pencerelerde kavanoz ve linux
Normalde java kod kavanoz dosyasına dönüştürülür çalıştırma geliyor. Sonra Alternatif (aynı konumda) iki (çoğunlukla kavanoz dosyası ile birlikte) kavanoz dosyasını başlatmak için dosyaları windows için bir Apache Tomcat dosyaları vardır Örneğin
linux
için bir
startup.bat ==> to start program in windows.
startup.sh ==> to start program in linux.
olacak Windows için jar'ı exe'ye dönüştürebilir. Linux için belirttiğiniz link yeterlidir. Komut, linux komut yorumlayıcısı tarafından yorumlanır ve jar dosyanız çalıştırılır.
Bu bağlantı, linux'ta bir kabuk komut dosyasını yürütmenin farklı yollarını belirtir. http://www.thegeekstuff.com/2010/07/execute-shell-script/
Bu bağlantıyı Özetle yarasa Run .jar from batch-file
olarak kavanoz çalıştırmak için kodu vardır, sizin kavanoz dosya platform bağımsız olabilir ama yolu kavanoz dosyası farklı platformlar için farklı olacaktır başlatın.
C (çoğunlukla) yazıldığına inanıyorum.İsterseniz, Kavanozlar – MadProgrammer
@MadProgrammer için yerel çalıştırılabilirlere biraz araştırma yapabilirsiniz: hayır değil. javac.exe, karşılık gelen Java sınıfını çağıran sadece ince bir sarıcıdır. VM'yi (java.exe'nin yaptığı gibi) başlatır ve ardından Java derleyicisini çağırır. –
@a_horse_with_no_name Bunun için bir referansınız var mı? – MadProgrammer