java的編譯,java的編譯過程及原理

本文目錄一覽:

如何編譯java?

比如你要編譯一個java文件,路徑是”D:\java\Test.java”

在dos中輸入下面的命令

d: —表示進入d盤

cd java —表示進入java文件夾

javac Test.java —表示將Test.java文件編譯成class文件

java Test —表示運行編譯後的Test

如何編譯一個java文件

javac 用於編譯Java文件,格式為:

java [options] [sourcefiles] [@files]

其中:

options:命令行選項;

sourcefiles:一個或多個要編譯的源文件;

@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。

有幾個比較重要的選項:

-d 用於指定編譯成的class文件的存放位置,缺省情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;

-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;

-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;

需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:

windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;

linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :

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

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

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

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

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

擴展資料:

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

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

Java字節碼的執行:是由JVM執行引擎來完成

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

1、源文件由編譯器編譯成字節碼(ByteCode)

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

如何編譯運行一個簡單的java程序

通常開發一個java應用程序可分為三個步驟:

1.創建一個帶有文件擴展名 *.java 的源文件

1).使用編輯器(如記事本,小編使用的是notepad++),輸入以下6行文本:

1 //一個簡單的application例子:打印一行文本

2 class Hello {

3 public static void main (String args[]){

4 System.out.println(“Hello Java,This is my first Java Application!”);

5     }

6 }

輸入完成,如下圖所示

2).把文件名命名為Hello.java ,並保存,

2.使用java編輯器javac.exe編譯源文件生成一個帶有文件擴展 *.class 的字節碼文件

1).win+R,在文本框輸入cmd,回車,進入DOS窗口。

2).使用cd命令將路徑轉入源文件“Hello.java”所在路徑(cd用法可參照DOC窗口之cd命令),輸入“javac Hello.java”命令,回車。

同時,我們在源文件“Hello.java”所在文件夾可以發現多了一個字節碼文件(編輯器javac.exe編譯的結果),這就對了。

3.使用java解釋器 java.exe 運行字節碼

在當前路徑下,輸入 “java Hello” 命令,回車。運行結果如下

爪哇之路開啟成功。

如何編譯java

用命令提示符編譯java程序的步驟:

1.先新建文本文檔,輸入自己的java程序。

這裡我寫一個簡單的java程序,來做示範。

import java.util.*;

public class HelloDate{

public static void main(String[] args)

{

  System.out.println(“Hello,it’s:”);

  System.out.println(new Date());

}

}

2.然後另存為一個java文件。

1.選擇文件—另存為—名稱為“HelloDate.java”—–選擇“所有文件”。

2.記住自己這個文件的存儲位置。(方便調用!)

3.打開程序—-附件—命令提示符。

4.由於我的那個java文本保存在了F:/java/(在F盤下的java文件夾里)下,所以如果要想編譯,就需要先通過命令提示符進入java這個文件夾,具體步驟如下:

1.進入F盤:輸入【F:】,然後按下回車鍵【Enter】

2.輸入【cd java】,按下回車鍵【Enter】

這樣就已經進入了。這裡的cd的意思就是進入的意思。

5.緊接着調用java編譯器進行編譯。

輸入【javac HelloDate。java】,然後按下回車鍵【Enter】

然後運行結果。

輸入【java HelloDate】,按下回車鍵【Enter】

經驗總結:運行一個java程序的大概的流程是:

書寫源代碼——編譯——-運行—-結束。

注意事項:

1.在輸入的時候一定要注意區分大小寫。

2.操作之前要保證自己的電腦配置了java的運行環境。

什麼是Java代碼的編譯與反編譯?

Java代碼的編譯與反編譯

2017-02-21Hollis數盟

一、什麼是編譯

1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。

2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

二、什麼是反編譯

計算機軟件反向工程(Reverseengineering)也稱為計算機軟件還原工程,是指通過對他人軟件的目標程序(可執行程序)進行“逆向分析、研究”工作,以推導出他人的軟件產品所使用的思路、原理、結構、算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟件時的參考,或者直接用於自己的軟件產品中。

三、Java類的編譯與反編譯

我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。

class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後被連接成單獨的、專門支持特定硬件平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬件平台和操作系統上的二進制文件。

那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)

四、什麼時候會用到反編譯

1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼我們可以把它反編譯成我們可以看得懂的文件。

2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。

五、反編譯工具

1、javap

2、Jad:官網(牆裂推薦)

客戶端:

可以在官網下載可執行文件,找到對應的操作系統的對應版本,然後進行安裝使用。

因為我使用的是linux操作系統,所以我下載的是Linux版本的工具,這個工具下載好之後會有一個執行文件,只要在執行文件所在目錄執行./jadhelloworld.class就會在當前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼

Eclipse插件:

下載地址在官網下載插件的jar包,然後將jar包放到eclipse的plugins目錄下‘在打開Eclipse,Eclipse-Window-Preferences-Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置即可。基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/152273.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:56
下一篇 2024-11-12 00:56

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29

發表回復

登錄後才能評論