在这个日新月异、信息化浸透的时代,编程技术已然成为一项至关重要的技能。Java,这门被广大开发者所采纳的编程语言,凭借其强大的功能和无视平台差异的特性,在业界赫赫有名。无论你是身处计算机专业的学堂,还是对编程怀揣浓厚兴趣的初探者,精通 Java 都将对你的学术研究和职业道路产生深远的影响。
本次 Java 入门指南系列旨在为你展现一个 Java 的基础全景,内容涵盖 Java 的基本语法、数据类型、运算符、控制流程等诸多方面。我们将从最基础的部分出发,深入浅出,助你筑建坚实的 Java 基础。无论你是编程领域的新手,还是已经有所积累的学者,都可以从本文中受益匪浅。
期望通过本文,你能对 Java 有一个全方位的理解,为你的 Java 学习之旅垒砌坚实的基石。让我们共同踏上这个旅程吧!
1.1、Java语言简介
1.1、Java语言概述
Java 是由 Sun 公司的 James Gosling 团队于 1991 年研发的一门面向对象的编程语言。最初命名为 Oak,于 1995 年更名为 Java 并开始推广。随着互联网的崛起,Java 逐渐成为最重要的 Web 应用开发语言之一。
Java 是一门面向对象的高级编程语言,它吸收了 C 语言的优点,同时摒弃了 C 语言中难以理解的多继承、指针等概念,使得 Java 语言既功能强大又简单易用。作为静态面向对象编程语言的代表,Java 极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java 具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。它可以编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等。
如今,Java 不仅仅是一门编程语言,更是由一系列计算机软件和规范组成的技术体系,成为了开发和提供嵌入式和移动应用程序、游戏、基于 Web 内容和企业软件的全球标准。
从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在,它是几乎所有网络应用程序的基础,深受全球开发者的喜爱。
Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
1.2、Java语言的命名
Java语 言的命名源于印度尼西亚的爪哇岛,因其盛产咖啡而闻名。Java 语言中的许多类库名称,如 JavaBeans、NetBeans 和 ObjectBeans 等,也都与咖啡有关。Java 的创始人 James Gosling 最初将其命名为 Oak,但由于 Oak 已被其他公司注册,因此不得不更名。在一次命名征集会上,大家提出了许多名字,最终选择了排名第四的 Java。如今,Java 已经成为全球知名的企业级应用平台,其语言如同咖啡一般醇香动人。
1.3、Java在互联网领域的应用
Java 在互联网领域的应用非常广泛,主要体现在以下几个方面:
Web 开发:Java 提供了大量的库和框架(如 Spring、Struts、Hibernate 等)用于 Web 开发,可以快速构建出功能强大的 Web 应用。
企业级应用:Java EE(Java Enterprise Edition)提供了一套完整的企业级应用解决方案,包括分布式计算、Web 服务、消息服务等。
大数据处理:Java 是 Hadoop、Spark 等大数据处理框架的主要开发语言。
云计算:许多云服务提供商(如 Amazon AWS、Google Cloud Platform 等)都提供了 Java SDK,开发者可以使用 Java 开发云应用。
移动应用开发:Android 系统的应用主要使用 Java 开发。
物联网:Java 由于其跨平台的特性,被广泛应用于物联网设备的开发。
游戏开发:Java 也被用于开发一些桌面游戏和网络游戏。
总的来说,Java 由于其强大的功能、优秀的跨平台性以及丰富的开发框架和库,使其在互联网领域得到了广泛的应用。
2、Java语言演进
2.1、Java 各版本特点
Java 语言自 1995 年由 Sun Microsystems 公司发布以来,已经经历了多次重要的版本更新和语言特性的改进。以下是 Java 语言的一些主要演进阶段:
版本 | 发布日期 | 版本特性 |
---|---|---|
JDK1.0 | 1996 年 01 月 | Java 的首个正式版本,伟大的一个里程碑,提供了基本的对象导向编程能力和网络处理能力 |
JDK1.1 | 1997 年 02 月 | 引入了 Java Beans, JDBC, RMI 等新特性 |
JDK1.2 | 1998 年 12 月 | 引入了 集合框架、Swing 包、内存映射文件 I/O、NIO、断言、正则表达式等新特性 |
JDK1.3 | 2000 年 05 月 | 增加了 HotSpot JVM、JavaSound、Java Naming and Directory Interface (JNDI) 等特性 |
JDK1.4 | 2002 年 02 月 | 增加了 XML 解析、正则表达式、Java Web Start、Java Print Service 等特性 |
JDK5 | 2004 年 09 月 | 引入了泛型、自动装箱/拆箱、枚举、可变参数、for-each 循环等特性 |
JDK6 | 2006 年 12 月 | 增加了 JDBC 4.0、Java Compiler API、Pluggable Annotations 等特性 |
JDK7 | 2011 年 07 月 | 引入了 switch 对字符串的支持、自动资源管理、改进的类型推断、多异常捕获等特性 |
JDK8 | 2014 年 03 月 | 引入了 Lambda 表达式、函数式接口、方法引用、Stream API、默认方法和静态方法等特性 |
JDK9 | 2017 年 09 月 | 引入了模块系统,可以将 JDK 划分为多个模块,便于开发大型应用。同时还引入了 JShell、改进了 Javadoc、增强了 Stream API 等 |
JDK10 | 2018 年 03 月 | 引入了局部变量类型推断,可以使用 var 关键字声明局部变量,无需显式指定其类型 |
JDK11 | 2018 年 09 月 | 引入了新的垃圾收集器 ZGC,可以处理 TB 级别的堆内存,且停顿时间不超过 10ms。同时还引入了新的字符串方法、HTTP 客户端 API 等 |
JDK12 | 2019 年 03 月 | 引入了新的 switch 表达式,可以使用更简洁的方式编写 switch 语句 |
JDK13 | 2019 年 09 月 | 引入了文本块功能,可以方便地编写多行字符串 |
JDK14 | 2020 年 03 月 | 引入了 instanceof 的模式匹配,可以在 instanceof 操作符后面声明一个变量,如果类型匹配,该变量就会被自动赋值 |
JDK15 | 2020 年 09 月 | 引入了密封类和接口,可以限制哪些其他类或接口可以继承或实现它们 |
JDK16 | 2021 年 03 月 | 引入了 Records,可以方便地创建只包含数据的类,无需编写大量模板代码 |
JDK17 | 2021 年 09 月 | 引入了模式匹配的第二阶段,可以在 switch 表达式中使用模式匹配。同时还引入了新的垃圾收集器 Shenandoah |
JDK18 | 2022 年 03 月 | 默认 UTF-8、简单的网络服务器、弃用 finalize |
JDK19 | 2022 年 09 月 | 模块化编程、本地类型推断、文本块、嵌套注解、改进的 Garbage Collection |
JDK20 | 2023 年 03 月 | 模式匹配、Sealed Classes、Records、Text Blocks、ZGC |
JDK21 | 2023 年 09 月 | 引入虚拟线程、结构化并发、顺序集合、记录模式、外部函数和内存 API、向量 API |
2.2、Java发展简史
1991 年:Sun Microsystems 的 Patrick Naughton、Mike Sheridan 和 James Gosling 在这一年启动了 Green 项目,这个项目的目标是为数字设备(如电视机、电话机等)开发编程语言。这个项目最终导致了 Java 语言的诞生。
1995 年 5 月:Sun Microsystems 正式发布了 Java 语言。Java 的设计目标是 "一次编写,到处运行",这使得 Java 语言具有很好的跨平台性。
1996 年 1 月:Sun Microsystems 发布了 JDK 1.0,这是 Java 的第一个正式版本。
1997 年 2 月:Sun Microsystems 发布了 JDK 1.1,这个版本引入了 Java Beans, JDBC, RMI 等新特性。
1998 年 12 月:Sun Microsystems 发布了 JDK 1.2,也被称为 Java 2。这个版本引入了 Swing 包、内存映射文件 I/O、NIO、断言、正则表达式等新特性。
1999年:Sun Microsystems 发布了 J2SE(Java 2 Platform Standard Edition),J2EE(Java 2 Platform, Enterprise Edition)和 J2ME(Java 2 Platform, Micro Edition)。这标志着 Java 平台的分化,以满足不同类型的设备和应用需求。
2000 年 5 月:Sun Microsystems 发布了 JDK 1.3,这个版本引入了 HotSpot JVM、JavaSound、Java Naming and Directory Interface (JNDI) 等新特性。
2002 年 2 月:Sun Microsystems 发布了 JDK 1.4,这个版本增加了 XML 解析、正则表达式、Java Web Start、Java Print Service 等特性。
2004 年 9 月:Sun Microsystems 发布了 Java SE 5.0,这个版本引入了泛型、自动装箱/拆箱、枚举、可变参数、for-each 循环等特性。
2006 年 12 月:Sun Microsystems 发布了 Java SE 6,这个版本增加了 JDBC 4.0、Java Compiler API、Pluggable Annotations 等特性。
2011 年 7 月:Oracle(已经收购了 Sun)发布了 Java SE 7,这个版本引入了 switch 对字符串的支持、自动资源管理、改进的类型推断、多异常捕获等特性。
2014 年 3 月:Oracle 发布了 Java SE 8,这个版本引入了 Lambda 表达式、函数式接口、方法引用、Stream API、默认方法和静态方法等特性。
2017 年 9 月:Oracle 发布了 Java SE 9,这个版本引入了模块系统,可以将 JDK 划分为多个模块,便于开发大型应用。同时还引入了 JShell、改进了 Javadoc、增强了 Stream API 等。
2018 年 3 月:Oracle 发布了 Java SE 10,这个版本引入了局部变量类型推断,可以使用 var 关键字声明局部变量,无需显式指定其类型。
2018 年 9 月:Oracle 发布了 Java SE 11,这个版本引入了新的垃圾收集器 ZGC,可以处理 TB 级别的堆内存,且停顿时间不超过 10ms。同时还引入了新的字符串方法、HTTP 客户端 API 等。
2019 年 3 月:Oracle 发布了 Java SE 12,这个版本引入了新的 switch 表达式,可以使用更简洁的方式编写 switch 语句。
2019 年 9 月:Oracle 发布了 Java SE 13,这个版本引入了文本块功能,可以方便地编写多行字符串。
2020 年 3 月:Oracle 发布了 Java SE 14,这个版本引入了 instanceof 的模式匹配,可以在 instanceof 操作符后面声明一个变量,如果类型匹配,该变量就会被自动赋值。
2020 年 9 月:Oracle 发布了 Java SE 15,这个版本引入了密封类和接口,可以限制哪些其他类或接口可以继承或实现它们。
2021 年 3 月:Oracle 发布了 Java SE 16,这个版本引入了 Records,可以方便地创建只包含数据的类,无需编写大量模板代码。
2021 年 9 月:Oracle 发布了 Java SE 17,这个版本引入了模式匹配的第二阶段,可以在 switch 表达式中使用模式匹配。同时还引入了新的垃圾收集器 Shenandoah。
2022 年 3 月:Oracle 发布了 Java SE 18,这个版本引入了默认 UTF-8、简单的网络服务器、弃用 finalize。
2022 年 9 月:Oracle 发布了 Java SE 19,这个版本引入了模块化编程、本地类型推断、文本块、嵌套注解、改进的 Garbage Collection。
2023 年 3 月:Oracle 发布了 Java SE 20,这个版本引入了模式匹配、Sealed Classes、Records、Text Blocks、ZGC。
2023 年 9 月:Oracle 发布了 Java SE 21,这个版本引入了引入虚拟线程、结构化并发、顺序集合、记录模式、外部函数和内存 API、向量 API。
3、Java白皮书的关键术语
3.1、Java白皮书介绍
Java 白皮书是由 Java 的创造者 Sun Microsystems 公司发布的一份官方文档,主要介绍了 Java 语言的设计理念、核心特性和应用领域。白皮书详细阐述了 Java 的跨平台性、面向对象、网络编程、安全性、多线程等特性,以及 Java 的运行环境模型等内容。
Java 白皮书是理解 Java 语言设计初衷和主要特性的重要参考资料,对于 Java 开发者和学习者来说具有很高的参考价值。
Oracle 官网 Java 白皮书参考链接:https://www.oracle.com/java/technologies/language-environment.html
3.2、Java白皮书内容
Java 的设计者已经编写了颇有影响力的"白皮书",用来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要。这个摘要用了 11 个关键术语进行组织:①、简单性;②、面向对象;③、分布式;④、健壮性;⑤、安全性;⑥、体系结构中立;⑦、可移植性;⑧、解释型;⑨、高性能;⑩、多线程;⑪、动态性。
这 11 个关键术语是 Java 设计哲学的核心:
简单性:Java 的设计目标之一是要简单易用。Java 的语法与 C++ 相似,但去除了一些容易引起错误的特性,如指针和多重继承;
面向对象:Java 是一种纯面向对象的编程语言。在 Java 中,所有的代码都必须位于类中;
分布式:Java 提供了丰富的 API,支持 TCP/IP 协议,使得在网络中创建和访问远程对象变得容易;
健壮性:Java 语言的设计目标之一是健壮性,即程序能够可靠地运行。Java 语言强制进行类型检查,有助于在编译时发现错误;
安全性:Java 提供了许多特性来保证程序的安全性,包括类加载机制、异常处理、垃圾回收等;
体系结构中立:Java 语言的一个重要特性是“一次编写,到处运行”,这是通过 Java 虚拟机实现的;
可移植性:Java 程序(字节码)可以在任何支持 Java 的平台上运行,无需进行任何修改;
解释型:Java 程序在运行时需要通过 Java 虚拟机解释执行,这使得 Java 程序具有很好的跨平台性;
高性能:虽然 Java 是一种解释型语言,但通过即时编译技术,Java 程序的运行速度可以接近 C++ 程序;
多线程:Java 语言内建对多线程的支持,提供了一套简单易用的 API 来创建和管理线程;
动态性:Java 语言是动态的,可以在运行时加载类,这使得 Java 程序可以适应不断变化的环境。