读后笔记 -- Java核心技术(第11版 卷I )Chapter1-2 Java 程序设计

发布时间 2023-03-22 21:08:52作者: bruce_he

本书源码(下载对应版本的代码):https://horstmann.com/corejava/index.html

Java 17 API 文档:https://docs.oracle.com/javase/17/docs/api

配套视频讲解(卷一):https://space.bilibili.com/442631500/favlist?fid=262105&ftype=collect&ctype=21

                      (卷二):https://space.bilibili.com/1133349031/channel/collectiondetail?sid=296478


Chapter1. Java程序设计概述

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

Java: Good programming language + Efficient and Secure execution environment + Huge library

11个关键术语:

  • 1)简单性:           去除了C++的头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等;
  • 2)面向对象        重点放在数据(对象)和对象的接口上。Java与C++的主要不同点在多重继承,Java 使用的是更简单的接口概念;
  • 3)分布式           有一个丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP/IP 协议。Java 能简便地通过 URL 来访问网络对象;
  • 4)健壮性:           和 C++ 最大的不同在于 Java 采用的指针模型可以消除重写内存和损坏数据的可能性;
  • 5)安全性:      适用于 网络/分布式 环境。构建了防病毒、防篡改的系统(包括:a. 运行时堆栈溢出;b. 破坏自己的进程空间之外的内存;c. 未经授权读写文件);
  • 6)体系结构中立:编译器通过生成与特定的计算机体系机构无关的字节码指令;“JVM”;
  • 7)可移植性:     (1)规定了数据类型的固定大小,故比C++可移植性好;(2)为系统组成部分的类库,定义了可移植性的接口;
  • 8)解释性:          Java 解释器可以在任何移植了解释器的机器上执行 Java 字节码;
  • 9)高性能:          Java 即时编译器 JIT。参见另外一篇文章 https://www.cnblogs.com/bruce-he/p/15699282.html
  • 10)多线程性    多线程带来更好的交互响应和实时行为;是第一个支持并发程序设计的主流语言
  • 11)动态性:        Java 比 C/C++ 更具动态性;

1.3 Java applet 与 Internet

Java applet:可在网页中运行的 Java 程序 => deprecated in Java 9. 已经由 JavaScript 取代

1.4 Java 发展简史

重要版本:

  • 5.0:添加 泛型类型、"for each"循环、自动装箱、注解
  • 8.0:包含了“函数式”编程
  • 9.0:模块
Spring 和 JDK 的对应关系
Spring Framework 6.0.x:JDK 17-21(预期)
Spring Framework 5.3.x:JDK 8-19(预期)
Spring Framework 5.2.x:JDK 8-15
Spring Framework 5.1.x:JDK 8-12
Spring Framework 5.0.x:JDK 8-10
Spring Framework 4.3.x:JDK 6-8
Spring Framework 3.x:  JDK 5

Chapter 2. Java 程序设计环境

2.1 安装 Java 开发工具包

2.1.1 下载 JDK

Java 术语
术语名 缩写 解释
Java Development Kit JDK 编写 Java 程序的程序员使用的软件
Java Runtime Environment JRE 运行 Java 程序的用户使用的软件
Server JRE --- 在服务器上运行 Java 程序的软件
Standard Edition SE 用于桌面或简单服务器应用的 Java 平台
Enterprise Edition EE  用于复杂服务器应用的 Java 平台
Micro Edition ME 用于手机和其他小型设备的 Java 平台
Java FX --- 用于图形化用户界面的一个替代工具包,在 Oracle 的 Java SE 发布版本中提供
OpenJDK --- Java SE 的一个免费开源实现,不包含浏览器集成或 Java FX
Java 2 J2 过时的术语,用于描述1998年 ~ 2006年间的 Java 版本
Update u Oracel 的术语,表示 bug 修正的版本
NetBeans --- Oracle 的集成开发环境

下载注意事项

  • 1)JDK用于开发,而不是JRE;
  • 2)Windows(选择 x32/x64)或 Linux(rpm 或 .tar.gz 版本【建议】)
  • 3)Java 10 之前有 JRE,之后没有。需要额外生成。
// 进入 jdk 目录
jdk-17.0.1>bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

2.1.3 源文件和文档

1. 源文件

  • src.zip,位置 在 \jdk-17.0.5\lib
  • jdk 根目录下新建 javasrc,将上面的 .zip 解压放在该目录

2. 文档

  • 在线找文档 https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html, 名称为: jdk-17.0.6_doc-all.zip
  • 上述 .zip 解压后的 docs 文件夹可重命名为 javadoc,然后放在 jdk 根目录下

2.2 设置 JDK

1)环境变量设置(!!! 因为某些软件版本要求,需要将 JDK 路径放在 JRE 前面

1)windows(路径中最好不要有空格)-> 环境变量:
    JAVA_HOME:c:\Java\jdk_9.0.1
    PATH:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

2)Linux -> /etc/profile: 
    export JAVA_HOME=/home/data/tools/jdk
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

2.3 命令行运行

> cd corejava\v1ch02\Welcome
> javac Welcome.java
> java Welcome
 提醒:这个地方是类的名称,不能写成 Welcome.class,否则会出现 “不到或无法加载主类”

2.4 使用集成工具

下图使用 IJ,

   

 后面一直 Next 到 Finish。