Java核心技术卷1——第一章

时间:2021-01-01 20:18:50
  • 程序设计平台
  1. 与现存代码的相容性问题是其应用于某一领域需要面对的
  2. java不止是一种语言,还是一个完整的平台,有一个庞大的库
    1. 可重用代码
    2. 一个提供安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境
  • 关键术语
    • 简单性
      • C++纯净版
        • 接近c++
        • 剔除c++中很少使用、难以理解、易混淆的特性
          • 头文件、指针运算、结构、联合、操作符重载、虚基类
        • 开发能够在小型机器上独立运行的程序
        • 基本解释器及类支持40KB
        • 基础标准类库和对线程的支持(自包含的微内核)增加175KB
        • 注:经扩展以上up...则有Java微型版用于嵌入式开发
      • 可视化编程环境
        • 第三方开发环境
    • 面向对象
      • 将重点放在数据(对象)对象的接口
      • 与c++不同于多继承——>接口、元类模型替代
    • 网络技能
      • 例程库
        • 处理TCP/IP协议
    • 健壮性
      • Java的指针模型可以消除重写内存和损坏数据的可能性
        • 隐式指针:
          • 不构造字符串、数组这样的结构(安全[不会有内存分配错误和内存泄漏])
          • 又可实现许多数据结构(相对于没有显式指针的)
      • Java编译器能检测许多在其他语言中仅在运行时刻才能检测出来的问题
        • 早期问题检测
        • 后期动态(运行时)检测
        • 消除有出错倾向的状态
    • 安全性
      • Java适用于网络/分布式环境
      • 可以构建防病毒、防篡改的系统
      • 运行时堆栈溢出(蠕虫等病毒攻击手段)
      • 在自己处理空间之外破坏内存
      • 未经授权读写文件
      • 数字签名类(类->作者->权限)
    • 体系结构中立
      • 编译器生成体系结构中立的目标文件.class
      • 有java运行时系统即可运行
      • 缺点:比直接运行机器指令慢
      • 改进:把使用最频繁的字节码序列翻译成机器码(即时编译)
      • 虚拟机还可检测指令序列行为,以增强其安全性
    • 可移植性
      • 没有“依赖具体实现
        • 基本数据类型大小明确”——>代码移植方便
        • 二进制以固定格式进行存储传输,消除了字节顺序的困扰
        • 字符串标准的Unicode格式存储
        • 系统组成部分类库,定义了可移植接口(不同环境不同实现)
    • 解释型
      • Java解释器可以在任何移植了解释器的机器上执行Java字节码(.class)
      • 链接是一个增值且简便的过程——>开发过程快捷、具有探索性
      • 早期Java开发工具速度相当慢——>即时编译器(字节码 —> 机器码)
    • 高性能
      • 需要更高效的性能
        • 即时编译器
          • 可以监控经常执行哪些代码并优化以提高速度
          • 消除函数调用(即内嵌)
            • 基于已加载的类集,且特定函数不被覆盖就可以内嵌
    • 多线程
      • 带来交互响应和实时行为
      • 可利用多个处理器
      • 多线程编译简单性 
        • 平台无关性
          • 代码相同,由底层操作系统或线程库实现多线程
    • 动态性
      • 能够适应不断发展的环境
      • 库中可以*添加新方法和实例变量,对客户端无影响
      • 找到运行时类型信息简单
  • JavaApplet与Internet
    • JavaApplet在网页中运行
    • 需要web浏览器执行字节码
    • Sun发放Java源代码许可证,坚持不允许对语言和基本类库的结构做任何修改
      • 得到的程序版本一致
      • 不怕恶意代码袭击
    • Java版本不一致——>不推荐开发applet
    • 动态效果现在用JavaScript或Flash
    • Java用于开发服务器端应用程序(产生网页、运行后端逻辑)
  • 发展史
    • 1991年,Patrick Naughton和James Gosling带领的Sun公司的工程师小组想要设计一种小型的计算机语言(代码小、紧凑、平台无关),项目命名Green
    • 使用虚拟机
    • 命名:
      • Oak——>Java(因为Oak已有)
    • Internet的万维网壮大
      • 开发浏览器(中立、实时、可靠、安全)
      • HotJava浏览器——>执行网页具有内嵌代码的能力
      • 一次编写,随处运行
      • 改进:
        • 泛型、for each循环、自动打包、元数据
  • 常见误解(以下正确)
    • Java 程序设计语言
    • HTML描述网页结构的方式
    • XML描述数据的方式
    • JavaAPI对处理XML提供了很好的支持
    • C#借鉴了Java的好的思想
    • Java开发源代码(2007)
    • Java早期是解释型的,现在使用即时编译器,热点代码运行速度和C++差不多
    • Java有额外开销:
      • 虚拟机启动时间
      • Java GUI比本地GUI慢(平台无关绘图方式)
    • 仅JavaApplet运行在网页中
    • JavaScript是在网页中使用的脚本语言
      • 语法类似Java,与Java没关系