《Java核心技术(卷一)》学习笔记(一)
《Java核心技术(卷一)》学习笔记(一)
liutongl_5 发表于1个月前
《Java核心技术(卷一)》学习笔记(一)
  • 发表于 1个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云实验室 1小时搭建人工智能应用,让技术更容易入门 免费体验 >>>   

摘要: 第一章 Java 简介 1.1 作为编程平台的Java,Java不只是编程语言,还有复杂的运行机制。 1.2 Java的11个关键特性。 1.3 Java网页应用简介。 1.4 Java简史。 1.5 Java常见误解(略)。

第一章 Java 简介

1.1 作为编程平台的 Java

  • Java 曾经有机会成为一个伟大的编程语言,但是为了追求兼容性与多功能的扩展性,Java变得更像一个编程平台。
  • 臃肿的 Java 有着强大的库,可复用的代码,运行时环境,还有诸如安全性,跨平台,自动垃圾回收之类的服务。
  • 当然,Java 和许多编程语言一样,有着良好的语法(而 C++ 没有),同时拥有着高质量的服务,这使得他不可避免的吸引着很多程序员。

虽然略显臃肿,但是好用,而且自成平台。

1.2 Java 白皮书中的关键词

  • Java 的创造者们写了一个颇具影响力的白皮书来阐述发明这个新语言的目标。挑选出的这 11 个关键词可以进行简洁的概括:

1.2.1 简单

  • Java 的设计理念是易学但又不颠覆 C++ 的优秀传统。因此 Java 是简洁版的 C++,取缔了头文件、指针运算,结构体,联合体等笨拙的语法。当然有些笨拙的语法,例如switch并没有被移除。
  • 在设计之初,Java 的简洁性还体现在占用空间小。当然随着兼容性的考虑,Java 标准版(Java SE)标准库也越做越大。为了秉持初衷,Java又推出了微型版(Java ME)。

1.2.2 面向对象

  • 面向对象的设计使得对象包含的数据和接口变得更重要,而无需把工作重点放在如何创建对象,用什么工具管理数据和接口。
  • 对比 C++ 中的面向对象设计,Java 用概念上更简单的接口interface)实现了多继承的问题(一个子类 继承了 多个 父类 的特征),Java也有更充裕的空间进行自我审查(第五章将详细讨论)。

1.2.3 分布式

  • Java 有一个配合 TCP/IP 协议(如 HTTP 和 FTP等)使用的扩展库。这个特性让 Java 访问网络中的远程文件和访问本地文件一样容易。【现在这个特性已经成为编程标配,但在1995年这是个新颖的概念。】

1.2.4 稳健性

  • Java 平台在寻找潜在错误上付出了很大的努力。很多其他语言在运行时才出现的问题,Java 可以提早发现。相比 C++ ,Java内含的指针模型也免去了内存溢出、数据损坏之类可能花去几小时才能发现的细微问题。

1.2.5 安全

  • 由于 Java 设计之初就是面向网络和分布式环境,Java 从设计之初就在建设反病毒反篡改系统。
  • 当然各种各样的漏洞依然存在,而随着 Java 的日渐臃肿,发现并修复这些漏洞也越来越困难。
  • 虽然 Java 的安全模型并不像当初想象的那样安全,但他还是处于时代的前列。

1.2.6 跨平台架构

  • Java 编译器先编译出与平台无关的字节码(bytecode)。之后任何安装了 Java 运行时系统的平台都可以解释运行这些代码,实现了可以在多平台运行。
  • 通过运行时系统解释运行伪机器指令(字节码)当然会比直接运行机器码慢一些。Java通过将一些常用伪机器指令提前翻译成机器码提高一部分运行速度,这个过程被称作及时(JIT,just-in-time)编译。
  • 先生成字节码交给“虚拟机”运行在当时也并不新鲜,Lisp、Smalltalk、Pascal等语言多年来已经采用这种机制。
  • Java 的虚拟机的另一大优势是提高安全性,他会在运行过程中监测指令序列并发现可疑指令。

1.2.7 可移植性

  • 可移植性是指 Java 尽力让代码在不同环境下运行结果相同。
  • 对比 C/C++ 语言中对 整数型int)的定义,各个平台环境的 Java 虚拟机都使得它拥有相同的范围(32位),而 C/C++ 则可能由于编译器、运行环境不同(32/64位系统)得出不一样的结果。
  • 在 Java 中,很多类别都有很好的可移植性,比如文件系统、正则表达式、XML、时间日期、数据库操作、网络连接、线程等等。
  • 有趣的是,在白皮书原文中,举出的用户界面 Window 类的例子反而并不是很恰当。因为Window类在不同操作系统中显示出的窗口并不尽如人意,跨平台的用户界面统一性至今仍是问题。

1.2.8 解释型(运行过程中)

  • 解释型语言的优点在于每步单独执行,每一步代码量小,因此迅速而及时,能看到当时的结果并及时发现错误。用过 Lisp、VB、Python、R 等语言的人都体验过这种优势。
  • Java 提出的解释型语言有点强词夺理,因为你需要先编译才能用解释器运行。所以 Java 的开发环境并不完全有这种优势。

1.2.9 高性能

  • 早期的用户并不十分认同这个特点,因为解释器的存在对于整体运行速度有所减缓。(运行时每一步都需要额外转化成机器码)。
  • 但随着及时(JIT)编译系统的引入,Java 有了很大的性能提升。因为 JIT编译器可以大量优化常用代码,减少函数调用,当某个类的函数尚未重载时只加载一次并在遇到重载时再加载新函数,等等各种优化方案。

1.2.10 多线程

  • 多线程可以减少互动过程中的响应时间,提高及时性。
  • 现如今随着摩尔定律走向尽头,单个核心处理性能的提升放缓,多核心共同工作越来越重要。Java 在这方面走在时代前列,他是主流语言中第一个支持并发编程的。
  • 当然,当年使用并发的特性并不是为了应对摩尔定律,而是由于网络传输速度过慢,单核心等待结果时空转的时间太长,使用并发多线程可以在等待时处理其他任务。

1.2.11 动态性

  • Java 比C/C++更动态,可以很好的适应变化的运行环境。
  • Java 可以在运行过程中向库中添加新的方法和实例变量并且不影响正在使用这些库的关联部分。同时,在 Java 运行过程中获取类别信息也非常容易。
  • 动态性使得在运行的程序中添加运行代码也很容易,例如在运行的浏览器中,从网络上下载并执行一段新的 Java 代码。用 C/C++ 很难实现这一点。

在 Java 初露峥嵘后不久,微软发布了和 Java 很像的 J++ 语言和虚拟机。现在微软不再支持 J++ 而是又发布了和 Java 有很多共同点的 C#,C# 可以在另一种虚拟机上运行。

1.3 Java 网页应用(Java applet)与互联网

  • Java 网页应用通过从网站服务器下载字节码,使得动态交互的应用可以在网页浏览器中运行。起初人们认为这种技术会推进 Java 的发展,但由于不同浏览器对 Java 版本支持不同,开发兼容性成为了问题。
  • 随着 Flash 的崛起和安全性的因素,Java 网页应用渐渐退出了舞台。

1.4 Java 简史

  • 1991年,升阳电脑(Sun Microsystems)的由 Patrick Naughton 和 James Gosling 领导的工程师想开发一种能应用于小型设备的编程语言,并希望它能跨平台、可移植。由于大多数人来自 UNIX 背景,因此新的语言也基于 C++ 语法。
  • 最初项目叫做“Green Project”,希望开发有限电视有关的产品。语言被起初命名为“Oak”,发现与一个已有语言重名后,改叫“Java”。
  • “Green Project”的产品长期无人问津,直到互联网的兴起,1994年,团队开始转行做浏览器,并以当时的 Mosaic 浏览器为参照。1995年,HotJava浏览器面世并使得 Java 和 Java 网页应用得到关注。
  • 后来浏览器虽然不温不火,但是 Java 的图形界面以及其他功能得到关注,Java 开始广泛发展。其中,初始几个版本过后最大的一次更新在于2005年从 1.4 版直接晋升为 5.0 版,并加入了泛型等重要特性。
  • 2014年的 Java 8 引入了函数式编程使得 Java在计算上的并发效率大大提高。Java 语言历久弥新。

1.5 常见 Java 误解

  • Java 容易学;
  • Java 只是一个编程语言;
  • Java 是网页的补充;
  • 等等等等……(略)
标签: Java 学习笔记
共有 人打赏支持
粉丝 0
博文 3
码字总数 7844
×
liutongl_5
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: