电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談Java文件被執行的歷程

瀏覽:47日期:2022-08-11 14:56:10
目錄Java的編譯過程一個例子第一步第二步Java的編譯過程

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

淺談Java文件被執行的歷程

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

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

一個例子

下面我們通過一個簡單的 OneTest.java,來看一下一個java文件從編譯到運行的歷程。

Public class OneTest{ public static void main(String[] args){ Person one = new Person(); one.say(); }}

Public class Person{ private String name; public void say(){ System.out.println('I `m a Person'); }}

這里是兩個java文件,分別是OneTest.java,Person.java

第一步

首先是編譯階段,由JVM編譯器,將OneTest.java文件進行編譯,得到字節碼文件(OneTest.class),這里我們發現,OneTest.java中依賴了Person對象,也就是需要Person.java文件,編譯器便會檢索Persion.java是否被編譯(是否存在Person.class),若不存在,則先編譯Person.java,java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器會自動的先編譯這個所依賴的類,然后引用。

1、如果java編譯器在指定的目錄下找不到該類所依賴的類的 .class文件或者 .java源文件,就會報“Cant found sysbol”的異常錯誤。

2、編譯后的字節碼文件格式主要分為兩部分:常量池和方法字節碼。常量池記錄的是代碼出現過的常量、類名、成員變量(Person.java中的類Person名、name成員變量)等以及符號引用(類引用、方法引用(OneTest.java中的person.say),成員變量引用等);方法字節碼中放的是各個方法的字節碼。

第二步

然后進行解釋運行階段,這里運行階段分為兩步:類的加載和類的執行

JVM主要在程序第一次主動使用類的時候,才會去加載該類。也就是說,JVM并不是在一開始就把一個程序就所有的類都加載到內存中,而是到不得不用的時候才把它加載進來,而且只加載一次。

1、OneTest類的加載:在類路徑下找到編譯好的 java 程序中;得到 OneTest.class 字節碼文件后,系統就會啟動一個 JVM 進程,JVM進程從classpath路徑下找到一個名為OneTest.class的二進制文件,將OneTest.class文件中的類信息加載到運行時數據區的方法區中,這一過程叫做類的加載。(只有類信息在方法區中,才能創建對象,使用類中的成員變量)關于類的加載器

淺談Java文件被執行的歷程

2、運行OneTest.java中的main方法:main函數的第一條命令是Persion person = new Person();就是讓JVM創建一個Person對象,但是這時候方法區中沒有Person類的信息,所以JVM馬上加載Person類,把Person類的類型信息放到方法區中。

3、加載完Person類之后,Java虛擬機做的第一件事情就是在堆區中為一個新的Person實例分配內存, 然后調用構造函數初始化Person實例,這個Person實例持有著指向方法區的Person類的類型信息(其中包含有方法表,java動態綁定的底層實現)的引用

4、當使用person.say()的時候,JVM根據person引用找到Person對象,然后根據Person對象持有的引用定位到方法區中Person類的類型信息的方法表,獲得say()函數的字節碼的地址。

5、執行say方法。

以上就是淺談Java文件被執行的歷程的詳細內容,更多關于Java文件被執行的歷程的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 不锈钢电动球阀_气动高压闸阀_旋塞疏水调节阀_全立阀门-来自温州工业阀门巨头企业 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 加盟店-品牌招商加盟-创业项目商机平台 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 雪花制冰机(实验室雪花制冰机)百科 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 至顶网| 广东成考网-广东成人高考网| 扬州汇丰仪表有限公司| 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 电子天平-华志电子天平厂家 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 瓶盖扭矩测试仪-瓶盖扭力仪-全自动扭矩仪-济南三泉中石单品站 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 篷房[仓储-婚庆-展览-活动]生产厂家-江苏正德装配式帐篷有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 |