




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习Java前的准备工作 相关概念 老师 什么是JDK啊 即JavaDevelopKit Java开发工具包 老师 你们讲的是Java1还是Java2 1998年12月 SUN公司发布了JDK1 2 开始使用 Java2 这一名称 目前我们已经很少使用JDK1 1版本 所以我们所说的Java都是指Java2 J2SDK当然就是Java2SoftwareDevelopKit 老师 什么是JRE JRE JavaRuntimeEnvironment 即Java运行环境 通常已包含在J2SDK中了 如果我们仅仅是为了运行Java程序 而不是从事Java开发 我们可以直接下载JRE 在我们的系统上安装 Java的开发工具包 JDK J2SE Java2Platform StandardEdition J2EE Java2Platform EnterpriseEdition J2ME Java2Platform MicroEdition J2SEv1 4 2相关下载 Java2Platform StandardEdition v1 4 2 Java技术与应用 Java来自于Sun公司的一个叫Green的项目 其原先的目的是为家用消费电子产品开发一个分布式代码系统 这样我们可以把E mail发给电冰箱 电视机等家用电器 对它们进行控制 和它们进行信息交流 开始 准备采用C 但C 太复杂 安全性差 最后基于C 开发了一种新的语言Oak Java的前身 Oak是一种用于网络的精巧而安全的语言 Sun公司曾以此投标一个交互式电视项目 但结果被SGI打败 可怜的Oak几乎无家可归 恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员 他们用Java编制了HotJava浏览器 得到了Sun公司首席执行官ScottMcNealy的支持 触发了Java进军Internet Java的取名也有一则趣闻 有一天 几位Java成员组的会员正在讨论给这个新的语言取什么名字 当时他们正在咖啡馆喝着Java 爪哇 咖啡 有一个人灵机一动说就叫Java怎样 得到了其他人的赞赏 于是 Java这个名字就这样传开了 Java的起源 我们为什么要用Java 因为Java是简单的面向对象的健壮的安全的解释的与平台无关的多线程的动态的语言 我们为什么要用Java 简单的Java最初是为对家用电器进行集成控制而设计的一种语言 因此它必须简单明了 Java语言的简单性主要体现在三个方面 1 Java的风格类似于C 因而C 程序员初次接触Java语言 就会感到很熟悉 从某种意义上讲 Java语言是C及C 语言的一个变种 因此 C 程序员可以很快地掌握Java编程技术 2 Java摒弃了C 中容易引发程序错误的一些特性 如指针 结构 枚举以及内存管理等 3 Java提供了丰富的类库 可以帮助我们很方便的开发Java程序 我们为什么要用Java 面向对象的面向对象可以说是Java最重要的特性 所以它支持继承 重载 多态等面向对象的特性 Java语言的设计是完全面向对象的 它不支持类似C语言那样的面向过程的程序设计技术 我们为什么要用Java 健壮的Java致力于检查程序在编译和运行时的错误 Java也是一种强类型的语言 其类型检查比C 还要严格 类型检查帮助我们检查出许多开发早期出现的错误 Java自己负责内存管理 提供了垃圾内存回收机制 有效的避免了C 中最头疼的内存泄漏问题 我们为什么要用Java 安全的Java的安全性可从两个方面得到保证 一方面 在Java语言里 删除了指针和释放内存等C 功能 避免了非法内存操作 另一方面 通过Java的安全体系架构来确保Java代码的安全性 当我们从网上下载Java代码在本地执行时 Java的安全架构能确保恶意的代码不能随意访问我们本地计算机的资源 例如 删除文件 访问本地网络资源等操作都是被禁止的 我们为什么要用Java 解释的Java代码是解释执行的 我们使用Java编译器将Java代码编译成字节码 这是一种中间代码 然后由Java解释器解释执行 而C 程序是编译执行的 C 程序代码被编译为本地机器指令 然后执行 我们为什么要用Java 与平台无关的Java作为一种网络语言 其源代码被编译成一种结构中立的中间文件格式 只要有Java运行系统的机器都能执行这种中间代码 Java源程序被编译成一种与机器无关的字节码格式 在Java虚拟机上运行 我们为什么要用Java 多线程的Java语言的一个重要特性就是在语言级支持多线程的程序设计 多线程就好像我们做一张桌子 如果你一个人完成这张桌子 就好像单线程 那么你需要先做桌面 做完桌面后 再做4个桌子腿 如果现在有5个人来做桌子 在程序中开辟5个线程 其中1个人做桌面 另外4个人分别做4个桌子腿 那么这两种方式效率的高低 相信大家都能区分出来 我们为什么要用Java 动态的Java的动态特性是其面向对象设计方法的扩展 它允许程序动态地装入运行过程中所需要的类 这是我们采用C 语言进行面向对象程序设计所无法实现的 在C 程序设计过程中 每当在类中增加一个实例变量或一个成员函数后 引用该类的所有子类都必须重新编译 否则将导致程序崩溃 Java从以下几个方面采取措施来解决这个问题 Java编译器不是将对实例变量和成员函数的引用编译为数值引用 而是将符号引用信息在字节码中保存下来 传递给解释器 再由解释器在完成动态连接类后 将符号引用信息转换为数值偏移量 一个在存储器中生成的对象不在编译过程中决定 而是延迟到运行时由解释器确定 这样 对类中的变量和方法进行更新时就不至于影响现存的代码 解释执行字节码时 这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次 随后代码便可以全速执行 在运行时确定引用的好处是可以使用已被更新的类 而不必担心会影响原有的代码 如果程序连接了网络中另一系统中的某一类 该类的所有者也可以自由地对该类进行更新 而不会使任何引用该类的程序崩溃 Java还简化了使用一个升级的或全新协议的方法 如果你的系统运行Java程序时遇到了不知怎样处理的程序 Java能自动下载你所需要的功能程序 Java跨平台的原理 Java的跨平台是通过Java虚拟机 JVM 来实现的 Java跨平台的原理 Java源文件的编译过程Java应用程序的开发周期包括编译 下载 解释和执行几个部分 Java编译程序将Java源程序翻译为JVM可执行代码 字节码 这一编译过程同C C 的编译有些不同 当C编译器编译生成一个对象的代码时 该代码是为在某一特定硬件平台运行而产生的 因此 在编译过程中 编译程序通过查表将所有对符号的引用转换为特定的内存偏移量 以保证程序运行 Java编译器却不将对变量和方法的引用编译为数值引用 也不确定程序执行过程中的内存布局 而是将这些符号引用信息保留在字节码中 由解释器在运行过程中创建内存布局 然后再通过查表来确定一个方法所在的地址 这样就有效的保证了Java的可移植性和安全性 Java跨平台的原理 Java解释器的执行过程运行JVM字节码的工作是由解释器来完成的 解释执行过程分三步进行 代码的装入 代码的校验和代码的执行 装入代码的工作由 类装载器 classloader 完成 类装载器负责装入运行一个程序需要的所有代码 这也包括程序代码中的类所继承的类和被其调用的类 当类装载器装入一个类时 该类被放在自己的名字空间中 除了通过符号引用自己名字空间以外的类 类之间没有其他办法可以影响其它类 在本台计算机上的所有类都在同一地址空间内 而所有从外部引进的类 都有一个自己独立的名字空间 这使得本地类通过共享相同的名字空间获得较高的运行效率 同时又保证它们与从外部引进的类不会相互影响 当装入了运行程序需要的所有类后 解释器便可确定整个可执行程序的内存布局 解释器为符号引用同特定的地址空间建立对应关系及查询表 通过在这一阶段确定代码的内存布局 Java很好地解决了由超类改变而使子类崩溃的问题 同时也防止了代码对地址的非法访问 随后 被装入的代码由字节码校验器进行检查 校验器可发现操作数栈溢出 非法数据类型转换等多种错误 通过校验后 代码便开始执行了 Java跨平台的原理 Java字节码的两种执行方式1 即时编译方式 解释器先将字节码编译成机器码 然后再执行该机器码 2 解释执行方式 解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作 通常采用的是第二种方法 由于JVM规格描述具有足够的灵活性 这使得将字节码翻译为机器代码的工作具有较高的效率 对于那些对运行速度要求较高的应用程序 解释器可将Java字节码即时编译为机器码 从而很好地保证了Java代码的可移植性和高性能 Java跨平台的原理 JVM规格描述JVM的设计目标是提供一个基于抽象规格描述的计算机模型 为解释程序开发人员提供很好的灵活性 同时也确保Java代码可在符合该规范的任何系统上运行 JVM对其实现的某些方面给出了具体的定义 特别是对Java可执行代码 即字节码 Bytecode 的格式给出了明确的规格 这一规格包括操作码和操作数的语法和数值 标识符的数值表示方式 以及Java类文件中的Java对象 常量缓冲池在JVM的存储映象 这些定义为JVM解释器开发人员提供了所需的信息和开发环境 Java的设计者希望给开发人员以随心所欲使用Java的自由 JVM是为Java字节码定义的一种独立于具体平台的规格描述 是Java平台独立性的基础 Java跨平台的原理 Java程序执行与C C 程序执行的对比分析如果把Java源程序想象成我们的C 源程序 Java源程序编译后生成的字节码就相当于C 源程序编译后的80 x86的机器码 二进制程序文件 JVM虚拟机相当于80 x86计算机系统 Java解释器相当于80 x86CPU 在80 x86CPU上运行的是机器码 在Java解释器上运行的是Java字节码 Java解释器相当于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防安全知识培训课件体会
- 2025年陕西省“选调生基层行”笔试预测试题及答案
- 2025按揭商品房买卖合同范本
- 农村生态旅游开发与资源保护协议
- 酒店管理项目合作协议
- 2025标准的合作合同书范文
- 物流运输规划与调度辅助工具
- 公证员任职面试经典题及答案
- 工程预算修正合同
- 企业年会活动策划协议
- 2025年福建南平市武夷山水茶业有限公司招聘笔试参考题库含答案解析
- 2025-2030年中国液压系统行业市场全景评估及未来趋势研判报告
- JCC工作循环检查流程与标准
- 牢记教师初心不忘育人使命作新时代合格人民教师课件
- 门窗工程采购相关知识
- 2025风电机组无人机巡检技术方案
- 浙江省台州市住在室内装修施工合同书
- 2025年高压电工资格考试国家总局模拟题库及答案(共四套)
- 《服务器安装与维护》课件
- 金蝶K3供应链操作手册
- 老年患者护理心理护理
评论
0/150
提交评论