《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记

简介: 《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记

曾经有人说,作为Java程序员如果没有卷过这本书,就算不上是真正的Java程序员,那么我就也来卷卷它吧。下面是我的读书摘录笔记。

1.1 Java 程序设计平台

一旦一种语言得到广泛应用,与现存代码尴尬的兼容性问题就摆在了人面的面前。

Java 并不只是一种语言,

Java 是一个完整的平台,有一个庞大的库

1.2 Java “白皮书”的关键术语

11个关键术语进行组织:

1)简单性

2)面向对象

3)分布式

4)健壮性

5)安全性

6)体系结构中立

7)可移植性

8)解释性

9)高性能

10)多线程

11)动态性

1.2.1 简单性

无须深奥的专业画训练就可以进行编程的系统

符合当今的标准惯例

1.2.2 面向对象

面向对象设计是一种程序设计技术

它将重点放在数据(即对象)和对象的接口上

Java 提供了更丰富的运行时自省功能

1.2.3 分布式

Java 有一个丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP/IP 协议

Java 应用程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样

1.2.4 健壮性

可靠性

强调进行早起的问题检测、后期动态的(运行时)检测,以及消除容易出错的情况

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

1.2.5 安全性

防范各种攻击,其中包括

  • 运行时堆栈溢出
  • 破坏自己的进程空间之外的内存
  • 未经授权读写文件

1.2.6 体系结构中立

编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有 Java 运行时系统,这些编译后的代码可以在许多处理器上运行

生成与特定的计算机体系结构无关的字节码指令来实现这一特性

还可以动态地转换成本地机器代码


虚拟机有一个选项,可以将执行最频繁的字节码序列转换成机器吗,这一过程成为即时编译

1.2.7 可移植性

数值类型有固定的字节数,这消除了代码移植时一个令人头痛的主要问题

二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰

字符串则采用标准的 Unicode 格式存储

除了与用户界面有关的部分外,所有其他 Java 库确实能很好地支持平台独立性

不仅程序是可移植的,Java API 往往也比原生 API 质量更高

1.2.8 解释性

Java 解释器可以在任何移植了解释器的机器上直接执行 Java 字节码

Java 9 提供了 jshell 工具支持快捷而且具有探索性的编程

1.2.9 高性能

字节码可以(在运行时)动态地转换成对应运行这个应用的特定 CPU 的机器吗


现在的即时编译器已经非常出色,可以与传统编译器现媲美,而且在某些情况下甚至超越了传统编译器,原因是它们有更多的可用信息。例如,即时编译器可以监控哪些代码频繁执行,并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即“内联”)。即时编译器知道哪些类已经加载。基于当前加载的类集合,如果一个特定的函数不会被覆盖,就可以使用内联。必要时,以后还可以撤销这种优化。


1.2.10 多线程

多线程可以带来更快的交互响应和实时行为


如今,我们非常关注并发性,因为摩尔定律即将走到尽头。不再追求更快的处理器,而是着眼于获得更多的处理器,而且要让它们一直保持工作。


1.2.11 动态性

它能适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何影响。


在 Java 中找出运行时类型信息十分简单。


1.3 Java applet 与 Internet

用户从 Internet 下载 Java 字节码,并在自己的机器上运行。在网页中运行的 Java 程序称为 applet。要使用 applet,只需要一个启动 Java 的 Web 浏览器,它会为你执行字节码。


不同版本的 Netscape 与 Internet Explorer 运行不同版本的 Java,其中有些早已过时。这种糟糕的情况导致更加难于利用 Java 的最新版本开发 applet。


后来,Java 遭遇了严重的安全问题,浏览器和 Java 浏览器插件变得限制越拉越多


1.4 Java 发展简史

设备的处理能力和内存都很有限,所以语言必须非常小且能够生成非常紧凑的代码


不同的厂商会选择不同的中央处理器(CPU),因此很重要的一点是这种语言不应与任何特定的体系结构绑定


代码短小、紧凑且与平台无关,这些要求促使开发团队设计出一个可移植的语言,可以为虚拟机生成中间代码


Sun 公司的人都有 UNIX 的应用背景


不过,像 Gosling 在专访中谈到:“毕竟,语言只是实现目标的工具,而不是目标本身”。


标准版(Standard Edition)


用于手机等嵌入式设备的“微型版”(Micro Edition)


用于服务器端处理的“企业版”(Enterprise Edition)


Java 则成为服务器端应用的首选平台


5.0 这个版本增加了泛型类型(generic type,大致相当于 C++ 的模板),其挑战性在于添加这一特性而不需要对虚拟机作出任何修改


受到 C# 的启发,还增加了几个很有用的语言特性:“for each”循环、自动装箱和注解


Sun 公司终于沦陷,于 2009 年被 Oracle 收购


2014 年,Java 8 终于发布,在近 20 年中这个版本发生的改变最大。Java 8 包含了一种“函数式”编程方式,可以很容易地表述并发执行的计算。


从 2018 年开始,每 6 个月就会发布一个 Java 版本,以支持更快的引入新特性


1.5 关于 Java 的常见误解

1.Java 是 HTML 的扩展


2.使用 XML,所以不需要 Java


3.Java 是一种非常容易学习的程序设计语言


4.Java 将成为适用于所有平台的通用性编程语言


在实际中,某些领域其他语言有更出色的表现


Java 在服务器端编程和跨平台客户端应用领域则很有优势


5.Java 只不过是另外一种程序设计语言


程序设计语言的成功更多地取决于其支撑系统的能力,俄入世语法的精巧性。人们主要关注的是:是否提供了有用、便捷和标准的库能实现你需要的功能?是否有工具开发商建立强大的编程和调试环境?语言和工具集是否与计算基础架构的其他部分整合在一起?


6.Java 是专用的,应该避免使用


根据 GPL,任何人都可以得到专利许可,允许其使用和修改 Java,不过仅限于桌面和服务器平台。如果你像在嵌入式系统中使用 Java,就需要另外一个不同的许可,这很可能需要付费。


7.Java 是解释型的,因此对于关键的应用程序速度太慢了


现在 Java 虚拟机使用了即时编译器,因此采用 Java 编写的“热点”代码运行速度与 C++相差无几,有些情况下甚至更快


8.所有的 Java 程序都是在网页中运行的


9.Java 程序存在重大安全风险


10.JavaScript 是 Java 的简易版


Java 是强类型的,编译器能捕获类型滥用导致的很多错误。而在 JavaScript 中,只有当程序运行时才能发现这些错误,所以消除错误会更费劲


11.使用 Java 可以用廉价的 Internet 设备取代桌面计算机


相关文章
|
22天前
|
设计模式 Java
Java基础—笔记—多态、final、抽象类、接口篇
该文介绍了编程中的多态、final和抽象类、接口相关概念。多态允许子类重写父类方法,通过父类引用调用子类方法,实现解耦和提高代码灵活性,但也可能导致无法使用子类特有功能,需通过强制类型转换解决。final用于修饰不可变的类、方法或变量,防止继承、重写和多次赋值。抽象类是一种包含抽象方法的类,用于强制子类重写特定方法,实现多态,适用于模板方法设计模式,解决代码重复问题。
17 0
|
22天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
22天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
2天前
|
安全 Java API
Java 8新特性概述及其对编程实践的影响
【4月更文挑战第30天】本文将详细讨论Java 8的新特性,包括Lambda表达式、Stream API以及Optional类等,并探讨这些新特性如何改变了Java编程的实践。我们将通过实例代码展示这些新特性的用法,并分析其对提高代码可读性和编写效率的影响。
|
3天前
|
IDE Java 开发工具
基于Java程序设计的实验教学方法优化与实践
基于Java程序设计的实验教学方法优化与实践
12 1
|
8天前
|
Java API
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
|
8天前
|
并行计算 算法 安全
Java从入门到精通:2.1.3深入学习Java核心技术——掌握Java多线程编程
Java从入门到精通:2.1.3深入学习Java核心技术——掌握Java多线程编程
|
8天前
|
IDE Java 开发工具
Java从入门到精通:1.3.1实践编程巩固基础知识
Java从入门到精通:1.3.1实践编程巩固基础知识
|
9天前
|
Java
Java基础知识整理,驼峰规则、流程控制、自增自减
在这一篇文章中我们总结了包括注释、关键字、运算符的Java基础知识点,今天继续来聊一聊命名规则(驼峰)、流程控制、自增自减。
36 3
|
9天前
|
Java 开发者
Java基础知识整理,注释、关键字、运算符
在日常的工作中,总会遇到很多大段的代码,逻辑复杂,看得人云山雾绕,这时候若能言简意赅的加上注释,会让阅读者豁然开朗,这就是注释的魅力!
39 11