導航:首頁 > 源碼編譯 > java編譯和編寫誰先

java編譯和編寫誰先

發布時間:2023-09-24 15:08:15

A. 一個java程序運行從上到下的環境次序是( )

Java程序、JRE/JVM、操作系統、硬體。

編寫Java程序首先需要一個入口點,在運行的時候通過指定MainClass來指定入口點,代碼層面主類必須實現一個靜態的main函數,運行時虛擬機會從MainClass.main開始執行指令,其他的邏輯只是import和函數調用了。

(1)java編譯和編寫誰先擴展閱讀:

注意事項:

運行java文件,必須先編譯java文件為Class文件。然後在解析class文件。這兩個步驟都是需要在安裝了java運行環境的。安裝好java後,要對java進行配置。

代碼里的標點符號都要是英文狀態下的,這一點很多新手朋友在寫java文件的時候犯錯。

java程序文件的文件名必須和java程序里的class名一致。

B. 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的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。

C. 簡述Java應用程序的開發流程

分為網頁和桌面的應用開發

網頁或者桌面開發流程
項目啟動1)、項目組成立(公司成員、客戶成員)
2)、制定項目預期目標
3)、制定項目計劃周期
4)、建立好項目組成員溝通機制


2、需求調研
1)、創建調研計劃、協調調研時間
2)、收集客戶資料,獲取客戶需求所有的資料都需要保留一份,資料中存疑的需要及時詢問
3)、編寫需求文檔重點描述出客戶的業務流程和性能要求。採用Word、Excel、Rose等形式。
4)、需求變更記錄
5)、確定開發環境和運行環境
6)、擴展性要求
7)、與舊系統的接駁要求。
8)、估算出項目工作量本階段需要一套需求管理系統來進行需求的管理。本階段的需求文檔也是用戶測試的依據。


3、系統設計/詳細設計一個系統可以分為基礎平台和應用模塊兩部分。
1)、選擇基礎平台,無論是採用第三方平台還是自行開發平台,都需要深入了解,查看是否符合要求。
2)、應用模塊設計(針對業務流程)
3)、中間件的採用或自行開發,需要深入了解。
4)、用戶界面的設計如果用戶界面設計完畢並確認,即可初步寫出用戶使用手冊、管理員使用手冊。
5)、變更記錄本階段的系統設計是集成測試的依據。

4、程序開發創建開發任務計劃表、開發計劃日程表
1)、優先編寫測試用例
2)、按照編碼規范編寫代碼
3)、按照文檔注釋規范注釋以上形成開發文檔。本階段需要一套版本管理系統。本階段的測試用例也是單元測試的依據。如果能做到,最好每日構建。

5、測試本階段需要一套Bug管理系統,形成需求、設計、開發、測試互動。
1)、編寫測試計劃和測試方案
2)、功能測試單元測試、集成測試
3)、性能測試集成測試、壓力測試如果能做到,最好能進行自動化測試。如果能做到,做分析統計工作。最後形成測試報告。
6、試用、培訓、維護本階段需要解決:
1)、解決異地修改和公司修改的同步問題。
2)、用戶測試中的Bug修改問題,按照級別分為a)、程序Bugb)、設計變更c)、需求變更盡量按照a b c的順序來進行修改,盡量避免b、c級的修改。最後形成安裝手冊、維護記錄。

D. java中編譯順序和運行順序是一樣的嗎

java是面向對象的語言,面向對象的特性之一就是重載,也就是方法的參數列表不同,其它聲明都一樣,這樣編譯的時候無論先編譯哪個都不表示先運行哪個,因為,重載決定在運行期,只有運行的時候,看真正調用哪一個,才去運行哪一個,所以編譯順序和運行順序是不一樣的。

--------------------------------
編譯都幹了什麼,具體我也說不清楚,只直到類成員是優先的。

E. 簡述JAVA程序的編輯編譯和運行過程

第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。

如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。

特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。

(5)java編譯和編寫誰先擴展閱讀:

Java整個編譯以及運行的過程相當繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。

Java代碼編譯:是由Java源碼編譯器來完成;

Java位元組碼的執行:是由JVM執行引擎來完成

Java程序從源文件創建到程序運行要經過兩大步驟:

1、源文件由編譯器編譯成位元組碼(ByteCode)

2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。

F. 運行java程序時,為什麼要先編譯再運行,編譯運行一起進行不行嗎

java講究的是 一次編譯 處處運行,也就是提高了程序的一致性。java的程序之所在不同的操作系統上的運行結果是一樣的,是因為java虛擬機。

所以要運行java都要裝一個叫jdk的東西,裡面有java的虛擬機。這個虛擬機就是來解釋我們寫的代碼。通過這個虛擬機,就實現了代碼的移植。

我們寫好的程序,通過虛擬機,編譯成class文件,然後在運行。但是我們只需要編譯一次即可。

G. java程序的執行和編譯順序

這個程序就是實驗在類初始化時的執行順序:先初始化構造函數外的靜態變數,再初始化非靜態變數,再調用構造函數

H. Java語言的運行機制

在分析程序語言的運行機制時,通常會討論兩種類型的程勛執行模式: 編譯行的程序語言和解釋性的程序語言。語言的編譯過程類似於日常生活中的翻譯——翻譯人員將一片文章翻譯從中文翻譯成英文,在過程中有批次處理和離線完成的特點。C語言就是這種類型的典型代表。解釋性語言就類似於國際上的「中英同傳」——在發言者將出中文的同時,對方的耳機就會有對應英文發言,此時的編譯就叫做同傳,在過程上有在線和及時的特點,BASIC語言就是這類典型的代表。
JAVA語言是一種變異性解釋性語言,同時具備編譯特性和解釋特性。作為變異性語言,JAVA程序要被統一編譯成位元組碼文件——文件後綴是class。此種文件在java中又稱為類文件。java類文件不能再計算機上直接執行,它需要被java虛擬機編譯成本地的機器碼後才能執行,而java虛擬機的翻譯過程則是解釋性的。java位元組碼文件首先被載入到計算機內存中,然後讀出一條指令,翻譯一條指令,執行一條指令,該過程被稱為java語言的解釋執行,是有java虛擬機完成的。而在現實中,java開發工具JDK提供了兩個很重要的命令來完成上面的編譯和解釋過程。兩個命令分別是java.exe和javac.exe,前者載入java類文件,並逐步對位元組碼文件進行解釋執行,而另一個命令則對應了java語言的編譯過程。在次序上,java語言是要先進行編譯的過程,接著解釋執行。

閱讀全文

與java編譯和編寫誰先相關的資料

熱點內容
怎麼在安卓手機登繪旅人 瀏覽:404
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19
金斗雲伺服器 瀏覽:447