1. 简介
Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性,跨系统操作的可移植性以及自动垃圾收集等服务的执行环境。
2. Java 之父
詹姆斯·高斯林 James · Gosling
原 Sun 公司 → 后被 Oracle 公司收购
写出 Java 语言的初期目标是编写一个纯净版的 C++
底层 JVM 由 C++ 编写
3.1 JavaSE
- Java 标准版(Java Standard Edition)
- 各应用平台的基础,桌面开发和低端商务应用的解决方案
3.2 JavaEE
- Java 企业版(Java Enterprise Edition)
- 以企业为环境而开发应用程序的解决方案
3.3 JavaME
- Java 微型版(Java Micro Edition)
- 致力于消费产品和嵌入式设备的最佳方案
4. Java 可以做什么
开发桌面应用程序(awt+swing+javaFX)- 开发面向Internet的web应用程序
- 提供各行业的解决方案
- 开发Android手机应用程序
5. 特性
5.1 简单性
- 当年尽可能地按照 C++ 来设计的 Java,以便系统能够简单理解。比 C++ 简单,祛除了很多例如指针,头文件,操作符重载等,也叫 C++ 的纯净版本。
5.2 面向对象
- 将重点放在数据(对象)和对象的接口上
- 没有对象就 new 一个,再也不用怕没对象了!
5.3 分布式
- Java 有一个丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP/IP 协议。
- Java 应用程序能够通过 URL 打开和访问网络上的对象,和访问本地文件一样快捷
5.4 健壮性
- Java 的设计目标之一在于是的 Java 编写的程序有多方面的可靠性。
- Java 非常强调进行早期的问题检测,后期动态的(运行时)检测,以及消除容易出错的情况。
- Java 采用的指针模型可以消除重写内存和损坏数据得可能性。
5.5 安全性
- Java 适用于网络/分布式环境
- 使用 Java 可以构建防病毒,防篡改的系统
- 普遍攻击模式:
- 运行时,堆栈溢出,这是蠕虫和病毒常用的手段。
- 破坏自己的进程空间之外的内存
- 未经授权读写文件
5.6 结构体系中立
- 编译器生成一个体系结构中立的目标文件格式,文件已经经过编译
- 只要有 Java 运行时系统,这些编译后的代码可以在其他处理器上运行
- Java 编译器通过生成与特定计算机结构体系无关的字节码指令来实现这一特性
- 这些字节码不仅可以在各种机器上解释执行,也可以动态地转换成本地机器代码
- 解释性虚拟机指令比全速运行机器指令要慢很多
- Java 虚拟机有一个选项,将执行最频繁的字节码序列转换成机器码,这一过程就是即时编译
5.7 可移植性
- Java int 只有 32 位。数值类型有固定的字节数,消除了代码移植时可能会出现的头疼事。
- 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。
- 字符串采用标准的 Unicode 格式存储。
5.8 解释型
- Java 解释器可以在任何移植了解释机器上直接执行 Java 字节码。
5.9 高性能
- 字节码可以(在运行时)动态地转换成对应运行这个应用特定的 CPU 的机器码。
- 例如,即时编译器监控并发现一些代码被频繁地执行,随即转换成当前系统的机器码,优化代码可以提高速度。
5.10 多线程
- 多线程可以带来更快的交互响应和实时行为。着手于更多的处理器,并让他们一直保持工作。而并非追求摩尔定律,即需求一个性能极致的处理器。
- 第一个支持并发程序设计的主流语言。
5.11 动态性
- 能够适应不断发展的环境。
- 库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。
5.12 Jshell
- 不用为写 main 方法而困扰,会让学习 Java 基础语言和类库变得轻松有趣。
- 命令行 jshell 即可进入。版本需求 ≥ Java JDK9
- 我个人觉得没啥用,因为我们开发还停留在 Java 8 (笑 :D
6. 运行机制
- 调用配置好的系统环境路径下的
javac.exe
先编译生成.class
文件, 后java.exe
解释运行.class
文件
7. 程序开发步骤
- 编写 Java 源代码文件,编译源程序,编译器编译成 Java字节码文件,运行Java虚拟机(JVM)执行剩下的操作
8. 垃圾回收器(GC)
- 在 Java 运行过程中自动启动,程序员无法干预。
9. JDK,JRE,JVM
JDK
- Java 开发工具包(Java Development Kit)
JRE
- Java 运行环境(Java Runtime Environment)
JVM
- Java 虚拟机(Java Virtual Machine)
- Java 虚拟机实际上只是一层接口,一层 Java 程序和操作系统通讯的接口
- Java 文件编译生成
.class
文件,而 Java 虚拟机就是这些.class
文件能够在上面运行的一个平台- 可以把
.class
文件看成一个软件,Java虚拟机就是这个软件可以运行的操作系统。
- 可以把
10. Java 历史
- 课后作业~