欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之源文件的執(zhí)行全過程

 更新時間:2024年03月25日 16:37:07   作者:perseveregz  
這篇文章主要介紹了Java之源文件的執(zhí)行全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.JVM

1.定義:Java虛擬機

2.作用:運行Java字節(jié)碼文件

3.實現(xiàn)方式:針對不同的操作系統(tǒng)(Windows、MacOS、Linux)存在不同的實現(xiàn)方式。目的是運行相同的Java字節(jié)碼文件,在不同系統(tǒng)中給出相同的結(jié)果

4.自定義JVM:只要滿足JVM規(guī)范,就可以自定義自己的JVM

2.字節(jié)碼

1.定義:字節(jié)碼就是JVM能夠處理的代碼,是面向虛擬機

2.優(yōu)點:由于字節(jié)碼是面向虛擬機的,因此在不同操作系統(tǒng)可以無需重新編譯;并且執(zhí)行效率高

3.Java源文件執(zhí)行的過程

過程:Java源文件--->javac編譯--->.class文件(字節(jié)碼文件)--->解釋運行--->機器碼

重點:字節(jié)碼文件到機器碼這一過程中,Java的類的加載器需要先將字節(jié)碼文件加載到內(nèi)存中,然后解釋器開始逐行解釋執(zhí)行,這樣做效率低。

引入JIT(just in Time Compilation)運行時編譯器,能夠在編譯后將字節(jié)碼文件對應(yīng)的機器碼保存下來,機器碼的運行效率是比較高的。

4.JIT(Just In Time Compilation)

1.定義:運行時編譯器;在對字節(jié)碼文件解釋運行時邊運行邊編譯,并將編譯后字節(jié)碼文件對應(yīng)的機器碼保存下來,從而提高程序運行效率

2.優(yōu)點:根據(jù)內(nèi)存中實際情況調(diào)整代碼;根據(jù)運行情況生成最優(yōu)機器指令序列

缺點:需要占用運行時資源,導(dǎo)致程序卡頓;編譯準(zhǔn)備和識別時會占用時間,使得初始編譯不能達(dá)到最高性能

5.AOT(Ahead Of Time Compilation)

1.定義:提前編譯器;對字節(jié)碼文件在執(zhí)行前就編譯為機器碼;可以減少JIT初始編譯時無法達(dá)到最高性能的問題 

2.優(yōu)點:在程序編譯前編譯,避免在運行中占用系統(tǒng)資源;在程序運行初期就達(dá)到最高性能

缺點:提前編譯會占用更多外存;犧牲了Java的動態(tài)性

6.AOT破壞Java動態(tài)性

Java中的反射機制是動態(tài)獲取運行時類的對象及調(diào)用運行時類的方法,此時只能采用JIT進行編譯;

采用AOT,則全部已經(jīng)提前編譯,無法動態(tài)的修改運行時類的屬性

7.編譯型語言與解釋型語言

編譯型:通過編譯器將源代碼一次性翻譯為可以被平臺執(zhí)行的機器碼

  • 優(yōu)點:執(zhí)行速度快
  • 缺點:開發(fā)效率低
  • 實例:C、C++、Go

解釋型:通過解釋器將代碼逐行解釋為機器碼后,被平臺執(zhí)行

  • 優(yōu)點:開發(fā)效率高
  • 缺點:執(zhí)行速度慢
  • 實例:Python、JavaScript

8.Java-編譯與解釋并存的語言

為改善編譯語言的效率,將編譯和運行相結(jié)合,使得具有編譯語言和解釋語言二者的優(yōu)點。

在Java中,先將程序源代碼編譯為字節(jié)碼文件;在執(zhí)行時,再將字節(jié)碼文件解釋為機器碼

9.Java和C++的相同點與不同點

相同點:都是面向?qū)ο蟮恼Z言;都支持封裝、繼承、多態(tài)

不同點:

  • Java不提供指針直接訪問內(nèi)存,程序更安全
  • Java類是單繼承,C++的類支持多繼承
  • Java存在GC垃圾自動回收,無法手動釋放無用內(nèi)存
  • C++支持方法重載和操作符重載,Java只支持方法重載

10.Oracle JDK 和 Open JDK

Sun公司2006將Java開源,因此有了Open JDK

Oracle公司2009年收購了Sun公司,在Open JDK基礎(chǔ)上整理出Oracle JDK,Oracle JDK不開源

二者區(qū)別:

  • 是否開源:Oracle JDK是不完全開源的,Open JDK是開源的
  • 是否免費:Oracle JDK僅僅3年免費,Open JDK免費
  • 功能性:Oracle JDK相比于Open JDK添加了特有的功能和工具

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus實現(xiàn)數(shù)據(jù)攔截的使用示例

    MybatisPlus實現(xiàn)數(shù)據(jù)攔截的使用示例

    在MyBatis-Plus中,可以通過自定義攔截器來實現(xiàn)對SQL語句的攔截和修改,本文就來介紹一下如何使用,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • IntelliJ IDEA中如何調(diào)試Java Stream操作

    IntelliJ IDEA中如何調(diào)試Java Stream操作

    這篇文章主要介紹了IntelliJ IDEA中如何優(yōu)雅的調(diào)試Java Stream操作,在強大的IDEA插件支持下,stream的調(diào)試其實也沒那么難了,下面就來學(xué)習(xí)一下在IDEA中如何調(diào)試stream操作吧
    2022-05-05
  • 解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題

    解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題

    這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題,本文重點給大家介紹Spring-Cloud-OpenFeign的原理及問題解決方法,需要的朋友可以參考下
    2021-10-10
  • java使用Filter實現(xiàn)自動登錄的方法

    java使用Filter實現(xiàn)自動登錄的方法

    這篇文章主要為大家詳細(xì)介紹了java使用Filter實現(xiàn)自動登錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java中的Object類詳細(xì)介紹

    Java中的Object類詳細(xì)介紹

    這篇文章主要介紹了Java中的Object類詳細(xì)介紹,本文講解了Object類的作用、Object類的主要方法、Object類中不能被重寫的方法、Object類的equals方法重寫實例等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • java開發(fā)中的誤區(qū)和細(xì)節(jié)整理

    java開發(fā)中的誤區(qū)和細(xì)節(jié)整理

    這篇文章給大家整理了關(guān)于JAVA開發(fā)中的細(xì)節(jié)以及經(jīng)常進入的誤區(qū)整理,希望我們整理的內(nèi)容能夠給大家提供到幫助。
    2018-04-04
  • Java報錯:ClassCastException問題解決方法

    Java報錯:ClassCastException問題解決方法

    異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的,下面這篇文章主要給大家介紹了關(guān)于Java報錯:ClassCastException問題解決方法,需要的朋友可以參考下
    2024-07-07
  • Java日常練習(xí)題,每天進步一點點(59)

    Java日常練習(xí)題,每天進步一點點(59)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實例代碼

    Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實例代碼

    這篇文章主要介紹了Apache Commons Math3學(xué)習(xí)之?dāng)?shù)值積分實例代碼,涉及使用辛普森積分的例子,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • SpringBoot自定義動態(tài)數(shù)據(jù)源的流程步驟

    SpringBoot自定義動態(tài)數(shù)據(jù)源的流程步驟

    動態(tài)數(shù)據(jù)源,本質(zhì)上是把多個數(shù)據(jù)源存儲在一個?Map?中,當(dāng)需要使用某一個數(shù)據(jù)源時,使用?key?獲取指定數(shù)據(jù)源進行處理,本文將給大家介紹一下SpringBoot自定義動態(tài)數(shù)據(jù)源的流程步驟,需要的朋友可以參考下
    2024-06-06

最新評論