强曰为道

与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

01 - 简介:Java 历史、JVM 生态、适用场景

01 - 简介:Java 历史、JVM 生态、适用场景

Java 的诞生与发展

Java 由 James Gosling 于 1995 年在 Sun Microsystems 开发,最初名为 Oak(橡树),后更名为 Java(源自印尼爪哇岛的咖啡)。Java 的设计目标是:

“Write Once, Run Anywhere”(一次编写,到处运行)

版本演进时间线

年份版本里程碑特性
1996JDK 1.0首次发布,Applet、AWT
1998JDK 1.2集合框架、Swing、JIT 编译器
2004JDK 5.0泛型、枚举、注解、自动装箱、增强 for 循环
2006JDK 6脚本引擎、JDBC 4.0
2011JDK 7try-with-resources、钻石操作符、NIO.2
2014JDK 8Lambda、Stream API、Optional、新日期 API
2017JDK 9模块化系统(Jigsaw)、JShell
2018JDK 11LTS、HTTP Client、局部变量推断(var)
2021JDK 17LTS、sealed class、pattern matching、record
2023JDK 21LTS、虚拟线程(Loom)、分代 ZGC、switch 模式匹配

⚠️ 企业生产环境推荐使用 LTS(长期支持)版本,如 JDK 17 或 JDK 21。非 LTS 版本仅维护 6 个月。

Java 平台体系

Java 不仅仅是一门语言,更是一个庞大的平台生态系统:

┌─────────────────────────────────────────────────────┐
│                   Java 应用程序                       │
├─────────────┬───────────────┬───────────────────────┤
│   Java SE   │   Java EE     │   Java ME             │
│  (Standard) │ (Enterprise)  │   (Micro)             │
│             │ → Jakarta EE  │                       │
│ 核心 API    │ Web/企业服务   │ 嵌入式/移动设备        │
├─────────────┴───────────────┴───────────────────────┤
│              Java 虚拟机 (JVM)                        │
├─────────────────────────────────────────────────────┤
│              操作系统 (Windows / Linux / macOS)       │
└─────────────────────────────────────────────────────┘

JVM — Java 的核心竞争力

JVM(Java Virtual Machine) 是 Java 生态的基石。它是一个抽象的计算机器,负责执行 Java 字节码(bytecode)。

JVM 架构简图

源码 (.java)
    │
    ▼  javac 编译器
字节码 (.class)
    │
    ▼
┌──────────────────── JVM ────────────────────┐
│  类加载器 (Class Loader)                     │
│    ↓                                         │
│  运行时数据区 (Runtime Data Areas)            │
│  ┌─────┬──────┬───────┬──────┬──────────┐  │
│  │堆   │栈    │方法区  │PC    │本地方法栈 │  │
│  │Heap │Stack │Method │Reg.  │Native    │  │
│  │     │      │Area   │      │          │  │
│  └─────┴──────┴───────┴──────┴──────────┘  │
│    ↓                                         │
│  执行引擎 (Execution Engine)                 │
│  ┌──────────┬───────────┬──────────────┐   │
│  │解释器     │JIT 编译器  │垃圾回收器(GC)│   │
│  │Interpreter│Compiler   │              │   │
│  └──────────┴───────────┴──────────────┘   │
└──────────────────────────────────────────────┘

JVM 语言多样性

JVM 不仅运行 Java,还支持众多语言:

语言特点典型用途
Kotlin现代、简洁、空安全Android、后端开发
Scala函数式 + 面向对象大数据(Spark)
Groovy动态、脚本化Gradle 构建、测试
ClojureLisp 方言、不可变并发编程、数据处理
GraalVM多语言运行时高性能、原生编译

Java 生态系统

Java 拥有业界最成熟的生态系统:

┌──────────────── 生态全景 ────────────────────┐
│                                               │
│  构建工具: Maven · Gradle · Ant               │
│  Web 框架: Spring Boot · Quarkus · Micronaut  │
│  ORM:      Hibernate · MyBatis · jOOQ        │
│  微服务:   Spring Cloud · Dubbo · gRPC        │
│  消息队列: Kafka · RabbitMQ · RocketMQ        │
│  缓存:     Redis · Ehcache · Caffeine        │
│  搜索:     Elasticsearch · Solr              │
│  容器化:   Docker · Kubernetes · Jib          │
│  监控:     Prometheus · Grafana · Arthas      │
│  测试:     JUnit · Mockito · Testcontainers  │
│                                               │
└───────────────────────────────────────────────┘

Java 适用场景

✅ 最适合的场景

场景原因代表案例
企业级后端稳定、安全、生态丰富银行、电商、ERP
大数据处理Hadoop/Spark 生态数据仓库、ETL
Android 开发官方支持(Kotlin 基于 JVM)移动应用
微服务架构Spring Cloud 体系分布式系统
中间件开发高并发、高性能MQ、RPC 框架

❌ 不太适合的场景

场景更好的选择
系统级编程(驱动、OS)C / Rust
前端开发JavaScript / TypeScript
简单脚本任务Python / Shell
实时嵌入式系统C / C++

第一个 Java 程序

/**
 * 我的第一个 Java 程序
 * 文件名: HelloWorld.java
 */
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("你好,Java!");
        System.out.println("Java 版本: " + System.getProperty("java.version"));
        System.out.println("JVM 名称: " + System.getProperty("java.vm.name"));
    }
}

编译运行:

# 编译
javac HelloWorld.java

# 运行
java HelloWorld

# 输出:
# 你好,Java!
# Java 版本: 21.0.2
# JVM 名称: Java HotSpot(TM) 64-Bit Server VM

Java 与其他语言对比

维度JavaPythonGoRust
类型系统静态强类型动态类型静态类型静态类型
运行方式JVM 解释 + JIT解释执行编译为原生编译为原生
性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
学习曲线中等
并发模型线程 + 虚拟线程GIL 限制Goroutine所有权模型
生态成熟度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
薪资水平很高

💡 技巧

  1. JShell — JDK 9+ 内置的 REPL 工具,可快速试验 Java 代码片段:

    jshell
    |  Welcome to JShell -- Version 21.0.2
    jshell> 2 + 3
    $1 ==> 5
    
  2. GraalVM Native Image — 可将 Java 应用编译为原生可执行文件,启动时间从秒级降到毫秒级。

  3. 多版本 JSDK 管理 — 推荐使用 SDKMAN! 管理多个 JDK 版本:

    sdk install java 21.0.2-tem
    sdk use java 21.0.2-tem
    

🏢 业务场景

  • 金融行业: Java 是银行核心系统的首选语言。某大型银行使用 Spring Boot + MyBatis 构建的交易系统,日处理千万级交易。
  • 电商系统: 阿里巴巴是国内最大的 Java 使用者,其电商平台基于 Java 构建,支撑双 11 流量洪峰。
  • 大数据平台: Hadoop、Spark、Flink 等大数据框架均基于 JVM,Java 是数据工程师的必备技能。

📖 扩展阅读