



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java四大核心技术思想详解Java已经成为一个庞大而复杂的技术平台,关于开发人员而言,要想更好的把握Java 技术,深切明白得底层的技术处置细行必不可少。对核心概念和思想的把握能够帮忙咱们触 类旁通、触类旁通,有助于提升咱们对整个Java平台的明白得力。那个地址所介绍的是Java 技术平台的几个核心概念,其中所包括的思想有助于咱们更深刻的明白得Java技术。Java虚拟机Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包 含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需 要的那些类才会被装载。字节码由执行引擎来执行。
2、不同的Java虚拟机中,执行引擎可能实现得非常不同。在由软件实现的虚拟机中, 最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做 “即时编译器(just-in-time compiler)”。在这种情况下,第一次被执行的字行码会被编译 成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第 三种执行引擎是自适应优化器。在这种方法里,虚拟机开始的时候解释字节码,但是会监视 运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活 动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码- 由虚拟
3、机继续解释它们。一个自适应的优化器可以使得Java虚拟机在80旷90舟的时间里执 行被优化过的本地代码,而只需要编译10舟20%的对性能有影响的代码。当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方 法(native method)和主机交互。Java中有两种方法:Java方法和本地方法。Java方法是 由Java语言编写,编译成字”码文件,存储在class文件中的。本地方法是由其他语言(比 如c, C+或汇编语言)编写的,编译成何处理器相关的机器代码。本地方法保存在动态链接 库中,格式是各个平台专有的。运行中Java程序调用本地方法时,虚拟机装载包含这个本地 方
4、法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操作系统的连接方 法。通过本地方法,Java程序可以直接访问底层操作系统的资源。一个本地方法接口 (Java Native Interface, JNI)-使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。如果希望使用特定主机上的资源,它们又无法从Java API访问,那么可以写一个 平台相关的Java程序来调用本地方法。如果希望保证程序的平台无关性,那么只能通过Java API来访问底层系统资源。类装载器的体系结构一个Java应用程序可以使用两种类装载器:”启动(bootstrap) 类装载器和用户定 义的类装载器
5、。启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。启动类装 载器通常使用某种默认方式从本地磁盘中装载类,包括Java API类(启动类装载器也被称为 原始类装载器、系统类装载器或者默认类装载器)。Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自 定义的方式来装载类。例如,从网络下载class文件。尽管启动类装载器是虚拟机实现的本 质部分,而用户定义的类装载器不是,但用户定义的类装载器能够用Java来编写,能够被编 译成class文件,能够被虚拟机装载,还能够像其它对象一样实例化。由于有用户定义类装载器,所以不必再编译的时候就知道运行中的Java应用程序
6、中最终会加入的所有的类。用户定义的类装载器使得在运行扩展Java应用程序成为可能。 当它运行时,应用程序能够解决它需要哪些额外的类,能够决定是使用一个或是更多的用户 定义的类装载器来装载。由于类装载器是用Java编写的,所以用任何在Java代码中可以表 述的风格来进行类装载。这些类可以通过网络下载,可以从某些数据库中获取,甚至可以动 态生成。每一个类被装载的时候,Java虚拟机都监视这个类,看到它到底是被启动类装载 器还是被用户定义类装载器装载。当被装载的类引用了另外一个类时,虚拟机就会使用装载 第一个类的类装载器装载引用的类。例如,如果虚拟机使用一个特定的类装载器装载 Volcano这个类,
7、它就会使用这个类装载器装载Volcano类使用的所有类。由于Java虚拟机采取这种方式进行类的装载,所以被装载的类默认情况下只能看 到被同一个类装载器装载的别的类。通过这种方法,Java的体系结构允许在一个Java应用 程序中建立多个命名空间。运行时的Java程序中的每一个类装载器都有自己的命名空间。Java应用程序可以创建多少个(或多少种)被不同的类装载器装载的类存放在不同 的命名空间中,它们不能相互访问,除非应用程序显示地允许这么做。当编写一个Java应 用程序的时候,从不同源文件装载的类可以分隔在不同的命名空间中。通过这种方法,就能 够使用Java类装载器的体系结构来控制任何不同源文件中
8、装载的代码之间的相互影响,特 别是能够阻止恶意代码获取访问或破坏善意代码的权限。Web浏览器是一个动态扩展的例子,Web浏览器使用用户定义的类装载器从网络下 载用于Java applet的class文件。Web浏览器使用一个用来安装用户定义类装载器的Java 应用程序。这个用户定义的类装载器通常被称为Java Applet类装载器,它知道如何向HTTP 服务器请求class文件。Java Applet可以作为动态扩展的例子,因为Java应用程序并不 知道它什么时候会开始从网络下载浏览器请求的class文件。只有当浏览器遇到有Java applet的页面时,才决定是否需要下载class文件。We
9、b浏览器启动的Java应用程序通常为每个提供class文件的网络地址分别创建 不同的用户定义类装载器,因此,不同的用户定义类装载器装载不同来源的class文件。这 就可以把它们分别放置在Java主机应用程序的不同命名空间之下。由于不同来源的Java applet文件放置在不同的命名空间中,恶意的Java applet代码就不会直接访问从别的地 方下载的class文件。这就能够限制或阻止不同来源的代码之间的相互访问。Java class 文件Java class文件主要在平台无关性和网络移动性方面使Java更适合网络。它在平 台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式
10、的服务。这种 途径途径打破了 C或者C+等语言所遵循的传统,使用这些传统语言写的程序通常首先被编 译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下, 一个平台上的二进制可执行文件不能在其他平台上工作。而Java class文件时可以运行在 任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。当编译和连接一个C+程序时,所获得的可执行二进制文件只能在指定的硬件平台 和操作系统上运行,因为这个二进制文件包含了对目标处理器的机器语言。而Java编译器 把Java源文件的指令翻译成字节码,这种字节码就是Java虚拟机的机器语言。class文件设计得紧凑,因此它们可以
11、快速地在网络上传送。其次,由于Java程 序是动态连接和动态扩展的,class文件可以在需要的时候才下载。这个特点使得Java应 用程序能够安排从网络上下载class文件的时间,从而可以最大限度地减少终端用户的等待 时间。Java APIJava API通过支持平台无关性和安全性,使得Java适应于网络应用。Java API 是运行库的集合,它提供了一套访问主机系统资源的标准方法。运行Java程序时,虚拟机 装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应 用程序中和从Java API中提取的)和所有己经装载的动态库(包含本地方法)共同组成了再 Java虚拟机上运行的整个程序。在一个平台能偶支持Java程序以前,必须在这个特定平台上明确地实现API的功 能。为访问主机上的本地资源,Java API调用了本地方法。由于Java API class文件调用 了本地方法,Java程序就不需要再调用它们了。通过这种方法,Java API class文件为底 层主机提供了具有平台无关性、标准接口的Java程序。对Java程序而言,无论平台内部如 何,Java API都会有同样的表现和可预测的行为。正是由
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课程开发统一课件
- 民间玩具美术课件
- 2025标准借款协议合同范本
- 刘卫国:MATLAB程序设计与应用
- 家庭教育课程课例分享
- 体位性低血压的抢救与护理
- 2025标准设备租赁合同
- 智慧树知到《中国古建筑文化与鉴赏》(清华大学)章节测试答案
- 2025年水路货物运输合同范本GF12
- 2024-2025统编版道德与法治二年级下册第二单元练习卷附参考答案
- GA/T 1047-2013道路交通信息监测记录设备设置规范
- 第一轮复习八年级上第二单元 遵守社会规则 教学案
- 代理授权书模板
- 论语子路篇-论语子路篇讲解课件
- 咯血-护理查房课件
- 公路工程施工现场安全检查手册
- 黄河上游历史大洪水市公开课金奖市赛课一等奖课件
- 激光跟踪仪使用手册
- 货物采购服务方案
- 图纸答疑格式
- DB11-T 1322.64-2019 安全生产等级评定技术规范 第64部分:城镇供水厂
评论
0/150
提交评论