Java 的历史、特点
Java的历史
Java的诞生和发展核心节点如下:- 起源(20世纪90年代初)
Java 最初由 Sun Microsystems(升阳公司)的詹姆斯・高斯林(James Gosling)团队研发,初衷是为了解决嵌入式系统(如智能家电)的编程问题。早期名为 “Oak”(橡树),因语言名称已被注册,后改名为 “Java”(灵感来自印度尼西亚的爪哇岛咖啡)。
- 首次发布(1995)
1995 年,Sun 正式发布 Java 1.0 版本。此时正值互联网兴起,Java 的 “跨平台” 特性完美契合了网页端动态内容的需求(如早期的 Applet 技术),迅速获得关注。
- 技术迭代与普及
- 2004 年,Java 5.0 发布,引入泛型、注解、枚举等重要特性,大幅提升开发效率。
- 2009 年,Sun 被 Oracle(甲骨文)收购,Java 进入 Oracle 时代。
- 近年来,Java 保持快速更新(如 Java 8 引入 Lambda 表达式,Java 11 成为长期支持版本),持续适应现代开发需求
Java的特点
- 跨平台性(Write Once, Run Anywhere)
Java 程序通过编译器编译为字节码(.class 文件),而非直接生成机器码。字节码需在 Java 虚拟机(JVM)上运行,而 JVM 可在不同操作系统(Windows、Linux、macOS 等)上安装,因此同一字节码可在多平台执行,解决了传统语言的平台依赖问题。
- 面向对象(Object-Oriented)
Java 完全支持面向对象编程的三大特性:封装(将数据和方法封装为类)、继承(子类复用父类代码)、多态(同一方法在不同对象上有不同实现)。这种设计使代码更模块化、可维护性更强。
- 安全性与可靠性
- 字节码验证机制:JVM 会检查字节码的合法性,防止恶意代码执行。
- 自动内存管理(垃圾回收):开发者无需手动释放内存,JVM 会自动回收不再使用的对象,减少内存泄漏风险。
- 异常处理机制:强制使用 try-catch 等结构处理错误,避免程序崩溃。
- 多线程支持
Java 内置多线程库(如 Thread 类、Runnable 接口),允许程序同时执行多个任务,适合开发高并发应用(如服务器、游戏等)。
- 丰富的类库与生态
Java 标准库(JDK)提供了大量现成类(如集合框架、IO 操作、网络编程等),无需重复开发。此外,第三方库(如 Spring、Hibernate、Apache 工具包)和框架生态成熟,覆盖企业级开发、移动开发(Android)、大数据(Hadoop)等多个领域。
- 简单性与易学性
Java 语法借鉴 C/C++,但移除了指针、多重继承等复杂特性,降低了学习门槛。同时,严格的语法规范(如强制类型声明)使代码更易读。
JDK、JRE、JVM 的关系与作用
三者的关系
包含关系:JDK包含JRE包含JVM
简单说开发Java程序需要JDK,运行Java程序至少需要JRE(包含JVM)。
各自的作用
- JVM(Java Virtual Machine,Java 虚拟机)
- 核心作用:是执行Java字节码的虚拟计算机。
Java 源代码编译后生成字节码(.class 文件),JVM 负责将字节码翻译成具体操作系统的机器码并执行,这是 Java 实现 “跨平台” 的核心(不同系统安装对应 JVM 即可运行同一字节码)。
- 特点:JVM 本身依赖操作系统,不同系统需安装对应的 JVM 版本(如 Windows x64、Linux ARM 等),但字节码无需修改。
- JRE(Java Runtime Environment,Java 运行时环境)
- 核心作用:提供 Java 程序运行所需的最小环境。
- 组成:
- JVM(虚拟机,执行字节码)
- 核心类库(如 java.lang、java.util 等,提供基础功能)
- 其他支持文件(如配置文件、资源文件等)
- 适用场景:如果仅需运行已编译的 Java 程序(如 .class 或 .jar 文件),安装 JRE 即可。
- JDK(Java Development Kit,Java 开发工具包)
- 核心作用:提供 Java 程序开发所需的工具和环境。
- 组成:
- JRE(包含 JVM 和类库,确保开发出的程序可运行)
- 开发工具(如编译器 javac、调试器 jdb、文档工具 javadoc、打包工具 jar 等)
- 额外的开发类库(如 tools.jar,支持开发工具的运行)
- 适用场景:开发 Java 程序必须安装 JDK,因为需要用其提供的编译器(javac)将源代码(.java)编译为字节码(.class)
第一个 Java 程序(Hello World)的编写、编译与运行
- 步骤1:编写Java源代码.java文件。
public class HelloWorld {
// 程序入口点(主方法)
public static void main(String[] args) {
// 输出"Hello, World!"到控制台
System.out.println("Hello, World!");
}
}
- 步骤2:编译Java程序。
通过javac命令把.java文件编译为.class文件。
- 步骤3:运行Java程序
通过java命令运行java程序。
java HelloWorld
注释(单行、多行、文档注释)
Java 中的注释用于解释代码含义,不影响程序运行,主要分为三种类型:单行注释、多行注释和文档注释。合理使用注释可以提高代码的可读性和可维护性。单行注释(Single-line Comment)
- 语法:以
//开头,注释从//到本行末尾的内容。 - 用途:解释单行代码的简短说明。
- 示例:
public class CommentExample {
public static void main(String[] args) {
// 这是一个单行注释,用于说明下面的代码功能
System.out.println("Hello, Comments!"); // 打印输出语句
}
}
多行注释(Multi-line Comment)
- 语法:以
/*开头,以*/结尾,可注释多行内容(包括单行)。 - 用途:解释一段代码的逻辑或功能,适合较长的说明。
- 注意:多行注释不能嵌套(即
/*内部不能再包含/*)。 - 示例:
public class CommentExample {
/*
* 这是一个多行注释
* 用于说明主方法的作用:
* 作为程序入口,执行打印操作
*/
public static void main(String[] args) {
/* 打印欢迎信息 */
System.out.println("Hello, Comments!");
}
}
文档注释(Documentation Comment)
- 语法:以
/**开头,以*/结尾,主要用于注释类、方法、变量等,可通过 JDK 的 javadoc 工具生成 API 文档(HTML 格式)。 - 用途:生成规范化的文档,方便其他开发者了解代码的功能、参数、返回值等。
- 支持标签:可使用
@param、@return、@author、@version等标签增强文档信息。 - 示例:
/**
* 这是一个演示注释用法的类
* @author 开发者名称
* @version 1.0
*/
public class CommentExample {
/**
* 程序的主入口方法
* @param args 命令行参数(未使用)
*/
public static void main(String[] args) {
System.out.println("Hello, Comments!");
}
/**
* 计算两个整数的和
* @param a 第一个整数
* @param b 第二个整数
* @return 两个整数的和
*/
public int add(int a, int b) {
return a + b;
}
}
- 生成文档:在命令行中执行以下命令,可将文档注释生成 HTML 文档
<font style="color:rgb(28, 31, 35);">javadoc CommentExample.java</font>