《Java核心技术卷Ⅰ》

发布时间 2023-09-24 17:39:49作者: vLiion

《Java核心技术卷Ⅰ》阅读笔记,更新中——

第一章 Java程序设计概述

1.1 Java白皮书

1)简单性

2)面向对象

3)分布式

4)健壮性

5)安全性

6)体系结构中立

7)可移植性

8)解释性

9)高性能

10)多线程

11)动态性


1.1.1 简单性

Java可以说是C++的一个纯净版本。Java没有头文件、指针运算、结构、联合、操作符重载、虚基类等。同时C++和Java的语法很相似。


1.1.2 面向对象

Java的面向和C++的面向对象旗鼓相当。Java和C++的不同点在于多重继承,在Java中,取而代之的是接口。与C++相比,Java提供了更丰富的运行时自省功能。[?]


1.1.3 分布式

Java有丰富的库用于处理HTTP和FTP之类的协议,是的访问URL和网上内容很便捷。


1.1.4 健壮性

Java与C/C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。[?]

Java编译器能够检测许多其他语言中仅在运行时才能够检测出来的问题。


1.1.5 安全性

一开始的Java程序并不安全,存在一些小Bug。


1.1.6 体系结构中立

Java能够生成体系结构中立的目标文件格式(.class)。这是一种编译型代码,它可以在很多处理器上运行。可以在虚拟机上转化为原生机器代码。

解释虚拟机指令肯定比全速运行机器指令慢得多。不过,虚拟机有个选项,可以将执行最频繁的字节码序列转换成机器码,即即时编译(just-in-time compliation)


1.1.7 可移植性

  • Java中的int总是32位整数,不像C++中int'大小依据操作系统。
  • 二进制数据以固定的格式进行存储和传输,消除了有关字节顺序的困扰。[?]
  • 字符串采用标准的Unicode格式存储。
  • 很多Java库也能很好地支持平台独立性,无需顾虑底层操作系统。

1.1.8 解释性

Java9 提供了jshell工具来支持类似于逐行执行并能直接看到结果的编程。


1.1.9 高性能

现在的即时编译器已经非常出色,可以和传统编译器相媲美。即时编译器可以监控哪些代码频繁执行,并优化这些代码以提高速度。还能消除函数调用(即“内联”)。即时编译器知道已经加载了哪些类。基于当前加载的类集合,如果一个特定的函数不会被覆盖,就可以使用内联。[?]


1.1.10 多线程

摩尔定律即将走到尽头,我们不在追求更快的处理器,而是着眼于更多的处理器。Java支持多线程。


1.1.11 动态性

Java本质为静态语言,而不是动态语言。动态语言显著的特点是在程序运行时,可以改变程序结构或变量类型,典型的动态语言有Python、ruby、javascript等。Java不是动态语言,但Java具有一定的动态性。[?]


1.2 Java发展简史

Java版本分为三种,标准版(Java SE)微型版(Java ME)企业版(Java EE)

Java版本的更迭