精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费


學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

一行JAVA代碼如何運行起來?

來源:北大青鳥總部 2023年07月12日 09:56

摘要: 在程序員的世界中,你總會聽到一句“PHP是世界上最好的語言”的調侃。然而在你進入軟件程序開發之后,你會發現即使開發語言千千萬,最盛行的還是JAVA。

在程序員的世界中,你總會聽到一句“PHP是世界上最好的語言”的調侃。然而在你進入軟件程序開發之后,你會發現即使開發語言千千萬,最盛行的還是JAVA。從淘寶的技術變遷中我們可以見一些端倪,早期電商剛起來的時候,那會兒的互聯網還很簡單,使用PHP+Mysql+Apache+Linux就可以快速搭建起一套電商系統,但隨著電商平臺、支付平臺的完善,網上購物開始變得簡單,越來越多的人使用淘寶購物了,淘寶的技術架構也開始不斷的升級,增加服務器數量來提高系統可用性。

通過運維手段擴充資源是一種方式,治標不治本,最根本的原因還是在于PHP這種語言可擴展性不夠,用戶量十萬、百萬、千萬的時候都還能支撐,但到了上億、億萬的時候怎么擴展都不行了。于是淘寶系統開始一點點的前后端分離,后端使用JAVA語言開發,逐漸遷移業務。現在我們所使用的淘寶系統,80%以上的后端程序都是Java開發,可見笑到最后才是贏家啊。不過JAVA語言的上手難度就比PHP、前端高很多了,所以今天我們給大家講解下一行JAVA代碼到底是如何運行起來的,JAVA后浪們可以以此為入門Java的基礎,開啟Java開發、人生贏家之路

Java是一種半解釋型語言,相對的有解釋型語言Python&PHP、編譯型語言C&C++。解釋型語言說的是只需要在客戶端屬于代碼后就可以運行起來,實時看到結果,編譯型語言說的是源代碼需要進行構建編譯成二進制文件才能在機器運行起來,半解釋型語言介于其中,它把輸入的代碼進行編譯,編譯后在JVM虛擬機中運行(注:JVM虛擬機是在實際的機器中運行的)。半解釋型語言的好處就是可以跨平臺,一次編譯,多次執行

我們通過下面這邊Java程序,來講明Java程序從編譯到最后運行到整個流程。JVM運行Java程序有兩種方式,分別是jar包和Class類文件,jar包是偏上層的方式,把所有程序都打包成一個jar包,便于交付測試人員測試、運維人員發布,它的運行邏輯是通過java.exe找到java自帶的GetMainClassName函數,該函數獲取JNIENV實例,并調用JarFileJNIENV實例中的GetMainfest()函數獲取MainClass函數,Main函數再調用Java.c中的LoadClass方法加載主類。

而Class方式則是越過上層,直接通過main函數調用Java.c中的LoadClass方法裝載類。所以說jar運行的方式本質上也是class類運行的方式,因此我們來關注如何類方式如何加載運行就好了。下面代碼想實現的功能是打印Code這個字符,整體代碼如下。我們先定義了一個類HelloJava,在這個類新建了一個對象去打印Code字符,而這個對象又調用了類Product.java



在整個代碼的運行中,包含兩步,第一步是編譯,第二步是運行。源文件創建完之后,使用javac就可以編譯.java程序,程序會被編譯成.class文件,使用java命令就可以運行.class文件。編譯后的文件有代碼中出現過的類名&變量名&方法引用名、類中各個方法的字節碼,它們分別存儲在常量池、方法字節碼中。

在Java程序的編譯過程中,如果該類所依賴的類還沒有被編譯,編譯器就會先編譯被依賴的類,如果依賴類編譯了則直接引用。在Java類的運行中,包含加載和運行兩個步驟。.class文件就是通過類加載器到jvm當中的。在Java中默認有三種類加載器,從下往上依次是自定義類加載器UserClassLoader(負責加載自定義的class文件)、應用類加載器AppClassLoader(負責加載classpath指定的jar包和目錄中的class文件)、擴展類加載器ExClassLoader(負責加載Java平臺中擴展功能的jar包)、啟動類加載器BootstrapClassLoader(負責加載$JAVA_Home中jre/lib/rt.jar中所有的class類)。當AppClassLoader接收到一個類加載命令后,它不會自己先去加載,而是給到擴展類加載器,同樣擴展類加載器自己也不會先去加載類,而是把它給到啟動類加載器去加載,如果失敗再層層往下傳遞。所以Java是動態在加載類。



回到我們剛剛的例子中,在編譯好Java程序后,我們得到HelloJava.class文件,在終端我們輸入javaHelloJava,系統就會啟動一個JVM進程,JVM進程從classpath的路徑中尋找命名為HelloJava.class的二進制文件,將HelloJava的類加載信息加載到運行時數據區的方法區,找到HelloJava的主函數入口,執行Main函數。Main函數的第一條命令是Productproduct = newProduct(“Code”),它需要JVM創建一個Product對象,但此時方法區中沒有沒有Product類的信息,于是JVM加載Product類,把Product類的類型信息放在方法區中。加載完了Product類之后,JVM虛擬機在堆區為新的Product實例分配內存,初始化類。在調用product.printName()方法的時候,JVM根據Product引用找到Product對象,根據Product對象持有的引動定位到方法區中的Animal類的類型信息方法表,獲取printName()函數的字節碼地址,運行printName()函數,打印出來“Code”。

微觀的編譯執行介紹完了,我們來看看中觀的執行。在介紹Java是解釋型語言時,我們有講到JVM是跨平臺執行的,也就是一份Java代碼編譯之后,可以在Linux、unix、Windows、Macos等操作系統平臺中執行。我們一起來看看是如何實現的呢?在Java程序運行中有三個概念,JVM、JDK、JRE

  • 所謂JVM就是Javavirtual Machine,Java虛擬機,執行Java代碼;

  • 所謂JDK是指的JavaDevelopment kit,Java開發工具包,Java開發人員使用;

  • 所謂JRE就是JavaRuntimeEnvironment,Java運行時環境。

JVM屬于JRE,JRE屬于JDK。在JDK的安裝中,有不同的版本,比如Linuxx86、Windowsx64,只要安裝了JDK之后,就由JDK來區分操作系統,JVM是運行在操作系統之上,區分操作系統的任務就是由JDK來完成的,只要你的電腦裝了JDK,任何一份Class字節碼都會運行在JVM中,JVM又可以運行在任意操作系統中,從而實現了“跨平臺一次編譯,多次執行”。

講完了中觀的執行,我們來看看宏觀執行。我們程序員在寫Java代碼時,都會把程序編譯成jar包,通過jar包來運行程序。一個jar包代表了一個功能模塊的實現,如果某個jar包有我們想要使用的功能,就在程序中引用就好。然而業務功能在開發實現時可運行依賴的jar包很多,如果把每個功能所實現的jar包都放在自己的jar包中,就會非常的浪費資源和運行效率。這時候我們可以把程序依賴的jar包都放在一個單獨的文件夾中,然后修改jar包中“META-INF”目錄下的“MANIFEST.MF”清單文件即可。在manifest文件中,我們指定Manifest文件的版本,運行主類的名稱,程序所依賴的jar包的Classpath路徑都寫明清楚,Java程序執行時加載manifest文件即可。



本文詳細的介紹了一行JAVA代碼是如何在JVM系統中運行起來的,對于有志加入互聯網行業,使用Java語言開發貢獻力量的朋友們來說,可以在初學時深刻的理解體會到Java代碼時怎么運行起來的、JDK&JRE&JVM是什么?在面試的時候也能比較輕松從容的回到面試官問題,在帶新人的時候也可以裝一把大佬。


標簽: java
熱門班型時間
人工智能就業班 即將爆滿
AI應用線上班 即將爆滿
UI設計全能班 即將爆滿
數據分析綜合班 即將爆滿
軟件開發全能班 爆滿開班
網絡安全運營班 爆滿開班
報名優惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內鏈接
精品欧美激情精品一区,亚洲自拍的二区三区,亚洲综合精品一区二区,国产伦精品一区二区三区视频免费
亚洲一卡二卡三卡| 国产亚洲婷婷免费| 中文幕一区二区三区久久蜜桃| 亚洲免费视频成人| 国产麻豆午夜三级精品| 国产精品10p综合二区| 色综合中文字幕国产 | 亚洲与欧洲av电影| 黄色精品一二区| 国产精品久久一区二区三区| 色综合久久久久综合体| 精品国产伦一区二区三区观看方式 | 欧美精品一区二区三区在线| 一区二区国产视频| 粉嫩在线一区二区三区视频| 免费精品视频一区二区三区| 91精品欧美久久久久久动漫 | 欧美一激情一区二区三区| 亚洲人成影院在线观看| 国产精品一二三| 欧美一区二区三区在线免费观看| 亚洲一区美女| 久久久一区二区三区| 日韩高清一区二区| 国产精品日韩欧美一区二区三区| 在线精品视频免费播放| 国产精品欧美一区二区三区| 国产综合久久久久久久久久久久| 久久久久久久久一区| 欧美一二区视频| 天天影视网天天综合色在线播放| 91免费观看国产| 欧美午夜一区二区三区免费大片| 国产精品激情偷乱一区二区∴| 国产一区二区三区四| 视频一区二区三区在线观看| 久久久久久毛片| 精品一区二区免费| 日韩一区二区电影在线观看| 久久久精品免费免费| 美日韩一区二区| 蜜桃精品久久久久久久免费影院| 欧美成人一区二区三区片免费| 日韩国产精品久久久久久亚洲| 国产精品三区www17con| 91精品国产乱| 免费成人小视频| 欧美国产一二三区| 久久久激情视频| 国产老肥熟一区二区三区| 一区二区冒白浆视频| 国产精品乱码久久久久久| 成人久久18免费网站麻豆 | 亚洲精品一区二区三区在线观看| 毛片一区二区三区| 日韩一本精品| 中文字幕一区二区三区在线观看 | 久久五月天婷婷| 久久综合给合久久狠狠狠97色69| 久久精品理论片| 图片区小说区区亚洲五月| 欧美激情自拍偷拍| 不卡的电视剧免费网站有什么| 国产亚洲第一区| 精品国产免费视频| 国产精品自拍在线| 欧美色视频在线| 婷婷久久综合九色综合绿巨人| 精品婷婷色一区二区三区蜜桃| 欧美精品一区二区三区蜜桃| 国产呦萝稀缺另类资源| 日本道免费精品一区二区三区| 一区二区三区不卡视频| 国产精品一区二区三区在线观 | 国产91在线看| 精品视频一区 二区 三区| 无码av免费一区二区三区试看| 欧美精品与人动性物交免费看| 中文字幕高清不卡| 91看片淫黄大片一级在线观看| 日韩一区二区三区三四区视频在线观看| 另类的小说在线视频另类成人小视频在线 | 久久久水蜜桃| 国产精品激情偷乱一区二区∴| 91一区二区三区| wwww国产精品欧美| 成人激情小说网站| 欧美成人一级视频| 成人午夜伦理影院| 日韩一级片在线观看| 国产麻豆欧美日韩一区| 欧美日韩国产在线观看| 激情综合亚洲精品| 欧美日韩一区国产| 久久97超碰国产精品超碰| 欧洲在线/亚洲| 麻豆91免费看| 欧美丝袜自拍制服另类| 久久99久久久久| 欧美日韩日本视频| 国产精品一线二线三线| 在线播放91灌醉迷j高跟美女| 国内精品嫩模私拍在线| 欧美日韩亚洲综合| 国产精品一二三四区| 91精品国产欧美一区二区18| 国产成人精品影视| 日韩欧美色综合| 菠萝蜜视频在线观看一区| 精品国产一区a| 9色porny自拍视频一区二区| 久久综合九色综合97婷婷| 91丝袜美腿高跟国产极品老师 | 日韩精品一区二区三区在线| 成人app网站| 久久免费美女视频| 国产高清一区视频| 综合激情成人伊人| 日本在线播放不卡| 日韩电影在线一区二区| 在线免费观看一区| 国产精品一区二区无线| 精品日韩一区二区| 翡翠波斯猫1977年美国| 自拍偷拍亚洲综合| 亚洲国产高清国产精品| 免费观看日韩av| 51精品久久久久久久蜜臀| 成人午夜精品在线| 国产日韩高清在线| 明星裸体视频一区二区| 婷婷丁香久久五月婷婷| 欧美日韩综合在线免费观看| 国产激情一区二区三区桃花岛亚洲| 精品成人a区在线观看| 国产日韩欧美精品| 亚洲a一区二区| 欧美日韩专区在线| aaa亚洲精品一二三区| 中文字幕在线播放不卡一区| 日韩不卡av| 精品一区二区三区久久久| 日韩精品一区二区三区视频播放 | 久久精品第九区免费观看| 亚洲国产精品一区二区久久| 91国产精品成人| 国产69精品久久久久毛片| 亚洲国产高清aⅴ视频| 天堂社区 天堂综合网 天堂资源最新版 | 国产亚洲欧美中文| 欧美激情视频一区二区三区| 日本午夜精品视频在线观看| 欧美一区二区三区爱爱| 粉嫩av免费一区二区三区| 亚洲国产综合色| 制服丝袜亚洲精品中文字幕| 99re在线国产| 亚洲第一福利一区| 欧美一区二区免费| 狠狠久久综合婷婷不卡| 日本午夜一本久久久综合| 精品国一区二区三区| 欧美精品一区二区三区久久| 免费成人在线播放| 久久久99精品免费观看不卡| 日韩免费电影一区二区| 国产一区二区视频在线播放| 中文字幕乱码亚洲精品一区| 一区二区免费在线视频| 成人网在线免费视频| 亚洲久草在线视频| 欧美美女一区二区三区| 国产在线资源一区| 六月丁香综合在线视频| 国产欧美日本一区二区三区| 影音先锋欧美在线| 99这里都是精品| 亚洲va欧美va人人爽午夜| 日韩久久久精品| 日韩av在线电影观看| 成人禁用看黄a在线| 亚洲午夜激情网站| 精品国产髙清在线看国产毛片 | 欧美老女人第四色| 久久久久天天天天| 国产福利一区二区| 曰韩精品一区二区| 日韩精品一区二区三区swag| 手机在线观看国产精品| 成人h动漫精品一区二区| 亚洲国产精品久久人人爱| 精品久久久久久久久久久院品网 | 一区二区视频在线播放| 91视频在线看| 青青青爽久久午夜综合久久午夜| 国产日韩欧美一区二区三区乱码| 在线观看av一区| 精品一区国产| 成人丝袜高跟foot| 日韩黄色免费网站|