- 1、本文档共1页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为什么说java程序是边解释边执⾏的
java应⽤程序的开发周期包括编译、下载、解释和执⾏⼏个部分。java编译程序将java源程序翻译为jvm可执⾏代码--字节码。这⼀编译过程
同c/c++的编译有些不同。当c编译器编译⽣成⼀个对象的代码时,该代码是为在某⼀特定硬件平台运⾏⽽产⽣的。因此,在编译过程中,编
译程序通过查表将所有对符号的引⽤转换为特定的内存偏移量,以保证程序运⾏。java编译器却不将对变量和⽅法的引⽤编译为数值引⽤,
也不确定程序执⾏过程中的内存布局,⽽是将这些符号引⽤信息保留在字节码中,由解释器在运⾏过程中创⽴内存布局,然后再通过查表来
确定⼀个⽅法所在的地址。这样就有效的保证了java的可移植性和安全性。运⾏jvm字节码的⼯作是由解释器(java命令)来完成的。解释执⾏
过程分三部进⾏:代码的装⼊、代码的校验和代码的执⾏。装⼊代码的⼯作由类装载器(classloader)完成。类装载器负责装⼊运⾏⼀个
程序需要的所有代码,这也包括程序代码中的类所继承的类和被其调⽤的类。当类装载器装⼊⼀个类时,该类被放在⾃⼰的名字空间中。除
了通过符号引⽤⾃⼰名字空间以外的类,类之间没有其他办法可以影响其他类。在本台计算机上的所有类都在同⼀地址空间内,⽽所有从外
部引进的类,都有⼀个⾃⼰独⽴的名字空间。这使得本地类通过共享相同的名字空间获得较⾼的运⾏效率,同时⼜保证它们与从外部引进的
类不会相互影响。当装⼊了运⾏程序需要的所有类后,解释器便可确定整个可执⾏程序的内存布局。解释器为符号引⽤同特定的地址空间建
⽴对应关系及查询表。通过在这⼀阶段确定代码的内存布局,java很好地解决了由超类改变⽽使⼦类崩溃的问题,同时也防⽌了代码对地址
的⾮法访问。随后,被装⼊的代码由字节码校验器进⾏检查。校验器可发现操作数栈溢出,⾮法数据类型转化等多种错误。通过校验后,代
码便开始执⾏了。java字节码的执⾏有两种⽅式:1.即时编译⽅式:解释器先将字节码编译成机器码,然后再执⾏该机器码。2.解释执⾏⽅
式:解释器通过每次解释并执⾏⼀⼩段代码来完成java字节码程序的所有操作。通常采⽤的是第⼆种⽅法。由于jvm规格描述具有⾜够的灵
活性,这使得将字节码翻译为机器代码的⼯作具有较⾼的效率。对于那些对运⾏速度要求较⾼的应⽤程序,解释器可将java字节码即时编译
为机器码,从⽽很好地保证了java代码的可移植性和⾼性能。java宣称的⼀处编写随处运⾏就是由jvm来完成.在sun的⽹站上你可以下载到基
于各种cpu和各种操作系统的jdk和jre的下载版本,只要寻找到合适你使⽤的版本,以前你所编写的class⽂件copy到其他的机器上可以直接运⾏
JAVA,不需要再编译.其实j2se是⼀种规范,这种规范约定了其跨平台执⾏的所需要关注很多实现,基于该规范开发⼈员可以任意编写⾃⼰的
java代码⽽不需要关⼼这个程序可能在其他的机器和cpu上⽆法很好运⾏问题.其实你也可以看到ibm和weblogic都有基于j2se规范的⾃⼰实现
的java虚拟机.⽽且sun所宣称的不需要编译⽽可以直接⽤class⽂件在各个jvm上直接运⾏并不精确,博格曾经遇到过⽤sunjre开发的class⽂件
在ibmjre上有⼀个⾃动转换的过程,然后这个类可以很好的⼯作了,幸好这种情况是⾃动完成,否则我们⼜要陷⼊类似于各种cc++的版本编译器
兼容性问题中.以下下摘录了⼏个主要的概念:jvmjavavirtualmachine(java虚拟机),它是⼀个虚构出来的计算机,是通过在实际的计算机上
仿真模拟各种计算机功能来实现的。java虚拟机有⾃⼰完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。jvm屏蔽了与具
体操作系统平台相关的信息,使得java程序只需⽣成在java虚拟机上运⾏的⽬标代码(字节码),就可以在多种平台上不加修改地运⾏。java虚拟
机在执⾏字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执⾏。jrejavaruntimeenvironment(java运⾏环境),运⾏java程
序所必须的环境的集合,包含jvm标准实现及java核⼼类库。jsdkjavasoftwaredevelopmentkit,和jdk以及j2se等同。
jdkjavadevelopmentkit(java开发⼯具包):包括运⾏环境、编译⼯具及其它⼯具、源代码等,基本上和j2se等同。
j2mejava2microedition(java2精简版)api规格基于j2se,但是被修改为可以适合某种产品的单⼀要求。j2me使java程序可以很⽅便的应⽤
于电话卡、寻呼机等⼩型设备,它包
您可能关注的文档
- 个人职业生涯规划7858.pdf
- 东北师范-计算机应用基础22秋学期在线作业1-[学习资料]-答案1.pdf
- 临床思维与人际沟通.pdf
- 一阶微分方程一定是可分离变量微分方程.pdf
- 《冷瓷(树脂粘土)工艺品》4505.pdf
- 丰田卡罗拉_起动及点火电路4600.pdf
- 专科广告职业技能实训题及答案.pdf
- 为什么太阳能发电越来越火,太阳能发电有什么好处?.pdf
- 东北师范-小学数学教学论22秋学期在线作业1-[学习资料]-答案5.pdf
- 东北师范-幼儿园课程论22秋学期在线作业1-[学习资料]-答案4.pdf
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)