- 1、本文档共5页,可阅读全部内容。
- 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第一次上的课笔记
1.1.1Java发展史:1991年Sun公司为实现“物联网”成立了“绿色小组”,James Gosling于该年6月份开发一种新的语言并命名为OAK(橡树),一种精巧而安全的网络语言,适用于多线程编程,后发现OAK已是另一个公司的注册商标,改名为Java(太平洋上一个盛产咖啡的岛屿名字)。1.1.2Java虚拟机:一、Java虚拟机(Java Virtual Machine)是软件模拟的计算机,可以在任何处理器上安全并且兼容地执行保存在class文件中的字节码。工作原理如下图:二、.Java编译程序将Java源程序翻译为JVM可执行的字节码,字节码其实就是二进制编码,也叫伪代码。(Java.class可在其他操作系统中使用JVM直接运行,但C/C++编译后的obj文件不可运行,需重新编译)。三、.字节码的执行需要三个步骤:1.由类装载器(Class Loader)负责把类文件(class文件)加载到Java虚拟机中(此过程需要检查该类文件是否符合类文件规范)2.字节码校验器(Bytecode Verifier)检查该类文件的代码中是否存在着某些非法操作。3.由Java解释器把该类文件解释成为机器码执行。四、Java的“沙箱”运行模式:“沙箱”的四个组件:·类装载器··class文件检验器·Java虚拟机内置的安全特性·安全管理器类装载器:通过命名空间隔离类,使不同命名空间的类不会互相访问(显示指定了访问方式的例外),解决了类的访问范围问题。类的装载顺序问题和防止恶意加载的方法上图中的网络类装载器理解为用户自定义的装载器,启动类装载器是Java的顶级类装载器和标准扩展类装载器理解为系统自带的类装载器。例,当需要加载类A的时候,会先从父装载器开始寻找是否已经存在类A,如果没有,迭代寻找父装载器,直到启动类装载器返回结果,如果找到了,就由父装载器加载,如果都没有,则由自己加载。类装载器加载类有一些保护规则,如下:使用父装载器优先加载类的方式,能够防止系统类被替换。例,从网络上加载java.land.Integer将会被拒绝,因为由启动类装载器加载的Java API中已经存在,所以原Integer不会被替换。只有由同一个类装载器加载的且同一个包内的类才可以互相访问。例,一个自己写的病毒类java.lang.Virus,由于系统中不存在该类,所以上面的约束1无效,由网络类装载器加载成功,而且与java.lang.*类在同一个包,但是由于类装载器不相同,所以Virus也无法访问java.lang.*。增加黑名单。类装载器可以指定禁止加载的类列表,如果发现企图加载,则立即抛出异常。class文件检验器安全性开始进入到了类的内部了。Java虚拟机对class文件有4次检查:class文件的结构检查。在类被加载时进行。文件格式检查,检查包头、版本、文件长度等。类型数据的语义检查。在连接过程中进行。class文件检验器在运行时检查了一些Java语言在编译时应该遵守的强制规则。字节码验证。在连接过程中进行。我的理解就是检查方法,对方法(操作码、操作数)进行检查,确保能够正确访问。由于“停机问题”的缘故,检查的规则是一个特定的规则集合,而不是所有可能的情况。符号引用的验证。这个是在动态连接的过程中,对外部调用的检查。例,NoClassDefFoundError并不是在预加载过程弹出的,而是直到这个不存在的类首次被程序使用的时候才弹出。顺便提一下,动态连接时,查找被引用的类(如果需要就加载该类),把符号引用转换为直接引用(指针、偏移量)。二进制兼容问题,为什么要在动态连接时进行检查(上面第四条),一个原因是防止原有的class发生了变化,有专门的二进制兼容规则描述哪些情况是可以兼容的。例如,在被调用的类中新添加方法是可以的,但是给老方法改名是不可以的。我个人的理解就是:以符号引用的方法进行动态连接,只要符号不变,就 OK,符号变了就不行。Java虚拟机内置的安全特性·类型安全的引用转换(强制显示类型转换)·结构化内存访问(无指针)·自动垃圾回收·数组边界检查·空引用检查·不指明运行时数据空间分布。Java栈(每个线程一个)、方法区、垃圾收集堆的数据都不预先指明内存地址,只在运行时由Java虚拟机分配。·本地方法不受Java虚拟机安全性的限制。只要开始运行本地方法,就跳出了Java虚拟机的沙箱了。比较安全的做法,是不要直接调用本地方法,通过Java API进行调用,这样可以利用Java API本身的安全性来控制。·线程死亡不影响其它线程。安全管理器每个Java应用程序只有一个Policy对象,通过java.security.Policy.setPolicy()可以使用新的Policy 对象替换当前的Policy对象,类装载器利用这个Policy对象来帮
您可能关注的文档
- HYS-CV-TM-GLCX-009 HYS-MV50-ZRP-MCIF0108 物项标识管理程的序 CFC.1.pdf
- HTY-V100用户手册(配空间外接附件房的间灭菌用).pdf
- Hyper的Mesh入门教程.ppt
- HW-T16数字电影放映机的用户培训手册.doc
- HUAWEI DBS3900的双模基站硬件结构与原理-20090202-ISSUE1.0-B.ppt
- hy的permill安装及基本功能介绍.pptx
- HZD2000系列自的动提升料斗混合机说明书.docx
- H海览F的六练习.ppt
- h的ibernate表关联详解.pdf
- H的TCC-1总线消防电话说明书.pdf
- 云南现代职业技术学院《形势与政策》期末考试检测卷带答案详解(模拟题).docx
- 成都银杏酒店管理学院《形势与政策》期末考试题库检测试题打印附答案详解【预热题】.docx
- 2024年福建水利电力职业技术学院《形势与政策》期末考试能力提升B卷题库及完整答案详解【各地真题】.docx
- 2025厦门华厦学院《形势与政策》期末考试试卷及参考答案详解【精练】.docx
- 2024苏州健雄职业技术学院《形势与政策》期末考试预测复习【考点梳理】附答案详解.docx
- 2024年石家庄职业技术学院《形势与政策》期末考试每日一练试卷参考答案详解.docx
- 2025山东工程职业技术大学《形势与政策》期末考试过关检测试卷含答案详解(轻巧夺冠).docx
- 2024年潍坊环境工程职业学院《形势与政策》期末考试检测卷及参考答案详解【预热题】.docx
- 2024河北工艺美术职业学院《形势与政策》期末考试高分题库附完整答案详解(典优).docx
- 2024浙江广厦建设职业技术大学《形势与政策》期末考试考前冲刺练习参考答案详解.docx
最近下载
- 2025年人防应急救援指挥中心建设项目可行性研究报告.docx
- 【强化】2025年 北京林业大学083400风景园林学《803森林生态学》考研强.docx VIP
- 中兴光纤24芯检测报告.doc VIP
- 每周工作4小时—蒂莫里.费里斯.pdf
- DB2102_T 0078-2023 公用燃气压力管道风险分级管控和隐患排查治理技术规范.pdf VIP
- 办公室管理试题及答案.docx VIP
- 06SG439-1 预应力混凝土叠合板(50mm、60mm实心底板).docx VIP
- 2025云南保山永昌教育发展有限公司招聘12人笔试备考试题及答案解析.docx VIP
- PT2安全认证SSTP含ACAFSIPEDRAtrust题库【深信服PT2题库】.pdf
- 传染病患者的心理特点和心理护理.pptx VIP
文档评论(0)