跳至主要內容

Java 简介

村雨遥原创大约 6 分钟Java 基础系列Java

Java 简介

共勉

不要哀求,学会争取。若是如此,终有所获。

原文

一、前言

本章节中,主要介绍 Java 中的主要特性和发展历史。以及作为新手,日常学习中对 Java 语言的误解。

二、主要特性

1. 简单性

语法类似于 C++ 语言,方便大多程序开发者能够简单地学习和实践。此外,抛弃了 C++ 中复杂的语言特性,如操作符重载、多继承、自动强类型转换等,降低了程序开发者上手难度。Java 中移除了指针的概念,也提供了内容空间的自动分配与回收,使得内存管理也更加方便。

2. 面向对象

面向对象是一种程序设计技术,将重点从过程集中到对象和对象的接口上。Java 提供类、接口和集成等面向对象的特性,抛弃了类之间复杂的多继承,仅支持单继承,但同时支持接口的多继承。

3. 分布式

Java 拥有丰富的类库,可处理 HTTPFTP 类的协议请求。因此,Java 能够访问和打开网络上的资源,开发网络应用。

4. 健壮性

Java 中,没有了 C++ 中类的多继承、指针等概念。同时它的强类型机制、异常处理机制、垃圾回收机制等都为 Java 程序的健壮性提供了重要保障。

5. 安全性

开发网络应用时,安全性十分重要。利用 Java 的诸多安全特性能够构建防病毒、防篡改系统。

6. 体系结构中立

Java 源代码经编译后成为字节码,字节码能够在实现了 Java 虚拟机的各种系统中运行,无视系统差异。

7. 可移植性

正是由于 Java 的体系结构中立,才有了适合分发和高度可移植的特点。

8. 解释型

Java 经编译后形成字节码文件,然后由虚拟机来解释这些字节码并执行,因此说 Java 是一门解释型语言。

9. 高性能

相比于其他编译型编程语言,Java 性能毋庸置疑,同时,引入即时编译器,其性能已经和 C++ 相差不大,在某些场景下甚至更胜一筹。

10. 多线程

大量请求的场景下,单线程的交互响应和实时行为变得十分缓慢。随着摩尔定律的终结,多线程的引入,无疑会带来更加快速的交互响应和实时行为,大大提升体验。

11. 动态性

随着各种应用场景的不断涌现,Java 也在动态适应变化的环境。Java 中所需的类既能动态加载到内存中,也能通过网络来载入,也更有利于软件的迭代升级。

三、发展简史

1990 年代初,Sun 公司的詹姆斯·高斯林等人为了实现电视机、电话、闹钟等家用电器的控制和通信,开发了一套用于设置在家用电器等小型系统中的编程语言。在当时,这门语言被命名为 Oka。但由于市场需求不高,所以该计划被逐渐放弃。

随着 1990 年代互联网的发展,Sun 公司发现 Oka 语言在互联网中的应用前景广泛。于是决定对 Oka 进行改造,并在 1995 年 5 月以 Java 的名义正式发布。

随着互联网的迅猛发展,Java 也得以逐渐成为重要的网络编程语言,詹姆斯·高斯林也被大家公认为 Java 之父。

到了 2009 年, Sun 公司被 Oracle 公司所收购,自此 Java 成为 Oracle 公司的一大产品直至今日。

以下是截止到本文写作时间 Java 的历史年表,累计经过了 21 次主要版本更新,目前来到了 JDK 21。不过虽然 Java 已经经历了这么多版本的更新,但国内目前用的最多的应该还是 JDK 1.8 版本。而出于对稳定性的考虑,企业开发更喜欢 LTS 版本,这也是为什么至今 JDK 1.8 还占有如此高的市场比例。

版本发布日期主要事件
JDK Beta1995Java 语言发布,用 Java 实现的浏览器和 Java Applet 被大量应用
JDK 1.01996 年 1 月奠定了 JDKJREJVM 的体系结构
JDK 1.11997 年 2 月加入 JIT,提升 JDK 效率
J2SE 1.21998 年 12 月确立 J2SEJ2EEJ2ME 产品结构
J2SE 1.32000 年 5 月内置 HotSpot JVM
J2SE 1.42002 年 2 月XML 处理、断言、支持正则表达式
J2SE 5.02004 年 9 月静态导入、泛型、for-each 循环、自动拆,装箱、枚举、可变参数
JDK 62006 年 12 月提供动态语言支持、同步垃圾回收
JDK 72011 年 7 月字符串的 switch 语句、多异常捕抓
JDK 8 (LTS)2014 年 3 月Lambda 表达式
JDK 92017 年 9 月轻量级 json API、垃圾收集机制更新
JDK 102018 年 3 月局部变量类型推断,Java 后续版本快速迭代更新
JDK 11 (LTS)2018 年 9 月常用类增强,JDK 11 是继 JDK 8 之后的首个长期支持本版
JDK 122019 年 3 月switch 表达式增强
JDK 132019 年 9 月文本块支持
JDK 142020 年 3 月instanceof 支持模式匹配
JDK 152020 年 9 月EdDSA 数字签名算法、 密封类、隐藏类
JDK 162021 年 3 月启用 C++ 14 语言特性、向量 API
JDK 17 (LTS)2021 年 9 月恢复总是严格的浮点语义、增强型伪随机数生成器
JDK 182022 年 3 月默认 UTF-8 编码、代码片段、简单的网络服务器
JDK 192022 年 9 月记录模式、外部函数与内存 APILinux/RISC-V 移植、虚拟线程、结构化并发
JDK 202023 年 3 月1. 作用域值
2. 记录模式
3. switch 模式匹配
4. 外部函数和内存 API
5. 虚拟线程
6. 结构化并发
7. 向量 API
JDK 21(LTS)2023 年 9 月1. 分代 ZGC
2. 序列集合
3. 弃用 Windows 32 位 x86
4. 密钥封装机制 API
5. 字符串模板
6. 未命名类和实例主方法

四、常见误解

1. JavaScript 是 Java 的子集

两个东西完全不沾边,JavaScript 是一种可以在网页中使用的脚本语言,而 Java 是完全的强类型语言,两者除了名字很像,其他方面可以说没有一点关系。

2. Java 是解释型语言,所以效率较低

早期版本的 Java 的确是解释型的,但随着 Java 虚拟机中采用了即时编译器,其性能已经和 C++ 相差不大,在某些场景下甚至更胜一筹。

⏳ 联系

想解锁更多知识?不妨关注我的微信公众号:村雨遥(id:JavaPark)

扫一扫,探索另一个全新的世界。

上次编辑于:
贡献者: 村雨遥