本文目錄一覽:
Java是什麼文件?
Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執行的語言,語法規則和C++類似。同時,Java也是一種跨平台的程序設計語言。用Java語言編寫的程序叫做“Applet”(小應用程序),用編譯器將它編譯成類文件後,將它存在WWW頁面中,並在HTML檔上作好相應標記,用戶端只要裝上Java的客戶軟件就可以在網上直接運行“Applet”。 Java非常適合於企業網絡和Internet環境,現在已成為Internet中最受歡迎、最有影響的編程語言之一。 Java有許多值得稱道的優點,如簡單、面向對象、分布式、解釋性、可靠、安全、結構中立性、可移植性、高性能、多線程、動態性等。Java擯棄了C++中各種弊大於利的功能和許多很少用到的功能。 Jave可以運行與任何微處理器,用Java開發的程序可以在網絡上傳輸,並運行於任何客戶機上。
如何在cmd下執行java程序?謝謝
如圖新建一個hello.java文件,寫上你的代碼。
2.在文件的目錄下打開cmd,輸入命令 javac hello.java
3.編譯成功會生成hello.class文件
4.運行編譯好的文件,輸入命令javac hello (不需要文件後綴)。
拓展:Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程 。
java怎樣解釋執行
java程序,是先把java源程序通過javac命令編譯成字節碼文件,然後再用java命令解釋執行。把字節碼文件複製到其他的計算機上,只要有java虛擬機就可以用java命令來執行。
如何實現讀取一段java文本然後執行
如果是計算式子,可以使用JAVA內置的script
如果是java類,簡單地,可以使用ClassLoader載入、但執行要看如何反射了
~
java運行的五個步驟?
Java程序從源文件創建到程序運行要經過兩大步驟:1、源文件由編譯器編譯成字節碼(ByteCode)
2、字節碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( “semi-interpreted” language)。
下面通過以下這個java程序,來說明java程序從編譯到最後運行的整個流程。代碼如下:
//MainApp.java
public class MainApp {
public static void main(String[] args) {
Animal animal = new Animal(“Puppy”);
animal.printName();
}
}
//Animal.java
public class Animal {
public String name;
public Animal(String name) {
this.name = name;
}
public void printName() {
System.out.println(“Animal [“+name+”]”);
}
}
第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報“cant find symbol”的錯誤。
編譯後的字節碼文件格式主要分為兩部分:常量池和方法字節碼。常量池記錄的是代碼出現過的所有token(類名,成員變量名等等)以及符號引用(方法引用,成員變量引用等等);方法字節碼放的是類中各個方法的字節碼。下面是MainApp.class通過反彙編的結果,我們可以清楚看到.class文件的結構:
第二步(運行):java類運行的過程大概可分為兩個過程:1、類的加載 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去加載該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都加載到內存中,而是到不得不用的時候才把它加載進來,而且只加載一次。
下面是程序運行的詳細步驟:
在編譯好java程序得到MainApp.class文件後,在命令行上敲java AppMain。系統就會啟動一個jvm進程,jvm進程從classpath路徑中找到一個名為AppMain.class的二進制文件,將MainApp的類信息加載到運行時數據區的方法區內,這個過程叫做MainApp類的加載。
然後JVM找到AppMain的主函數入口,開始執行main函數。
main函數的第一條命令是Animal animal = new Animal(“Puppy”);就是讓JVM創建一個Animal對象,但是這時候方法區中沒有Animal類的信息,所以JVM馬上加載Animal類,把Animal類的類型信息放到方法區中。
加載完Animal類之後,Java虛擬機做的第一件事情就是在堆區中為一個新的Animal實例分配內存, 然後調用構造函數初始化Animal實例,這個Animal實例持有着指向方法區的Animal類的類型信息(其中包含有方法表,java動態綁定的底層實現)的引用。
當使用animal.printName()的時候,JVM根據animal引用找到Animal對象,然後根據Animal對象持有的引用定位到方法區中Animal類的類型信息的方法表,獲得printName()函數的字節碼的地址。
開始運行printName()函數。
特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。
java文件是怎麼執行的
首先:使用javac命令把.java文件編譯成.class文件(字節碼文件)
然後:JVM(java虛擬機)裝載.class文件並翻譯成機器碼後運行java程序;
共同學習—–請參考:
我們手工執行java程序是這樣的:
1 在記事本中或者是UE的文本編輯器中,寫好源程序;
2 使用javac命令把源程序編譯成.class文件;
編譯後的.class(類字節碼)文件中會包含以下內容:
ConstantPool:符號表;
FieldInfo:類中的成員變量信息;
MethodInfo:類中的方法描述;
Attribute:可選的附加節點。
FieldInfo節點包含成員變量的名稱,諸如public,private,static等的標誌。ConstantValue屬性用來存儲靜態的不變的成員變量的值。Deprecated和Synthetic被用來標記一個成員變量是不被推薦的或由編譯器生成的。
3 有了.class文件,我們執行 java 解釋命令就可以運行java程序了。
現在我們主要討論一下,當執行 java這個命令後,會發生什麼事情呢?
首先,JVM裝載.class,也就是類裝載器裝載類字節碼。一個類裝載器本身也是一個java類,所以,類裝載器自身也需要被另外一個類裝載器裝載,這就出現了類似先有蛋,還是先有雞的問題。但JAVA中的類裝載器的這個問題卻很容易解決。JAVA的虛擬機(JVM)中內嵌了一個稱為Bootstrap類裝載器,它是用特定於操作系統的本地代碼實現的,屬於JAVA虛擬機的內核,Bootstrap類不用專門的類裝載器去進行裝載。Bootstrap類負責加載JAVA核心包中的類(即rt.jar文件中的類),這些類的Class.getClassLoader()方法返回值為null,即表示是Bootstrap類裝載器。JAVA核心包中有另外兩個類裝載器:ExtClassLoader和AppClassLoader,它們都是用JAVA語言編寫的JAVA類,其中ExtClassLoader類裝載負責加載存放在JAVA_HOME/jre/lib/ext目錄下的jar包中的類,AppClassLoader負責加載應用程序的啟動執行類,即當使用java命令去啟動執行一個類時,JAVA虛擬機使用AppClassLoader加載這個類。在編譯和運行JAVA程序時,都會通過ExtClassLoader類裝載器去JAVA_HOME/jre/lib/ext目錄下的JAR包中搜索要加載的類,所以,如果將包含例如Servlet API的jar包或者是javamail.jar包複製到該目錄下,在編譯Servlet或JavaMail程序時,就不必在CLASSPATH環境變量中增加包含Servlet API的jar包或者是javamail.jar包文件。
以上,就是一個JAVA程序執行的大致過程。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301541.html