Wenn javac in Java geschrieben wurde, warum kann ich Javac ausführen, als ob es sich um eine kein Java-Programm? Why Java compiler as distributed as executable and not as JVM bytecode?
Zitiert seine Antwort hier unten
javac.exe
Die Antwort auf Ihre Frage von Jon Skeet für die Frage gegeben wurde bereits (auf meiner Installation, JDK 1.8 auf Windows x64) ist ungefähr 15K groß. Dies ist nicht der vollständige Compiler. Der Compiler selbst ist wirklich in Java geschrieben und javac.exe ist nur ein Launcher, effektiv. Dies gilt für viele der Werkzeuge, die mit Java kommen - es wäre ein Schmerz etwas wie laufen zu müssen sein:
java -cp path/to/javac.jar java.tools.Javac -cp path/to/your/libraries Foo.java
Ein einfacher Weg, um die ganze Sache zu verstehen ist JRE (Java Runtime Environment) vorstellen fungiert als Zwischenschicht zwischen Ihrem Programm und dem Betriebssystem. JRE akzeptiert den Bytecode und führt Ihr Java-Programm aus. Der Javacompiler (Java-Compiler) konvertiert Ihren Java-Quellcode in plattformneutralen Bytecode (Ausnahmen sind vorhanden). Ich bin mir nicht sicher, ob Java, Java, Java in Java geschrieben ist oder nicht. Aber wenn sie es sind, dann müssen sie in verschiedenen Betriebssystemen (Plattformen) anders verknüpft/geladen werden.
kommt nun, wie Glas in Windows und Linux Java-Code auszuführen
Normalerweise nach JAR-Datei umgewandelt wird. Dann werden es zwei Dateien sein (meist zusammen mit JAR-Datei), um die JAR-Datei, ein für Windows zu starten und ein für Linux
Zum Beispiel Apache Tomcat-Dateien hat (in derselben Stelle)
startup.bat ==> to start program in windows.
startup.sh ==> to start program in linux.
Sie Abwechselnd könnte jar in exe für windows konvertieren. Für Linux reicht die angegebene Verbindung aus. Das Skript wird vom Befehlsinterpreter in Linux interpretiert und Ihre JAR-Datei wird ausgeführt.
Dieser Link gibt verschiedene Möglichkeiten zum Ausführen eines Shell-Skripts in Linux an. http://www.thegeekstuff.com/2010/07/execute-shell-script/
Dieser Link Code hat, kann Glas als Schläger laufen Run .jar from batch-file
Um es zusammenzufassen, Ihre JAR-Datei plattformunabhängig sein, aber sie Art und Weise die JAR-Datei für verschiedene Plattformen unterscheiden zu starten.
Ich glaube, dass es in C geschrieben wurde (meistens).Wenn Sie möchten, können Sie ein paar Nachforschungen über native ausführbare Dateien für Jars – MadProgrammer
@ MadProgrammer machen: Nein, ist es nicht. 'javac.exe' ist nur ein dünner Wrapper zum Aufruf der entsprechenden Java-Klasse. Es startet die VM (ähnlich wie java.exe) und ruft dann den Java-Compiler auf –
@a_horse_with_no_name Haben Sie eine Referenz dafür? – MadProgrammer