- 本节学习目标
- 1️⃣ Java发展简史
-
- 1.1 诞生
- 1.2 发展
- 1.3 分支
- 2️⃣ 特征
- 3️⃣ 代码执行过程
- * 总结
本节学习目标
- 清楚Java语言的发展历史以及语言主要特点;
- 清楚Java代码从源文件到解释执行的大致过程;
- 理解Java实现可移植性的实现原理;
1️⃣ Java发展简史
1.1 诞生
Java
,这个酷炫的编程语言!它发展到如今已经成为了编程世界一个真正意义上的标杆。老实说,在技术开发公司里,大家为了让用户更方便地写程序,都选择用Java作为应用层的代表,通过Java来调用一些底层操作。比如现在流行的Android
开发,就是通过Java调用Linux
内核操作来搞定的!
如果你之前学过C
和C++
的话,学Java会觉得眼前一亮!因为Java的语法结构和这些语言超级像!这样的天然优势,正是Java风靡全球的原因之一。没错,Java成了主流应用真的不冤枉。
而要了解Java的发展历程,我们先得回到1991年的那个“GREEN
” 项目。当时电子邮件正在风靡一时,有个想法就是利用邮件控制家电设备的运行(有点像现在的物联网
概念)。最初,SUN
公司的工程师们打算使用C++来开发这个项目,但后来他们发现C++的复杂性过高,于是他们创造出了一个新平台——OAK
(橡树)平台。
OAK
是为网络而设计的一种精巧且安全的语言,主要由詹姆斯*高斯林
设计(见图1)。SUN公司曾用OAK投标一个交互式电视项目,但遗憾的是输给了SGI
(硅图)公司。此时的OAK几乎无处可去,然而马克*安德里森所开发的Mosaic
(马赛克)和Netscape
(网景)却给了OAK项目组以启示。SUN公司的工程师们用Java编写了HotJava
浏览器,并得到了公司CEO史考特*麦克里尼(Scott McNealy)的支持,于是引领Java踏上了征服互联网的道路。
图1Java之父:詹姆斯*高斯林
1.2 发展
1995年,为了推广Java编程语言,SUN公司正式将OAK改名为Java
(咖啡),与此同时,随着互联网的迅猛发展,Java也开始在更多的网络项目中广泛使用。Java的发展历程可以概括为以下阶段:
- 第一阶段(完善期):从JDK1.0(于1995年发布)到JDK1.2(于1998年发布,Java更名为Java2)。这个阶段主要着重于完善Java语言本身并增强开发工具和类库,重要的更新包括内部类、AWT/Swing GUI库、JDBC数据库访问等;
- 第二阶段(平稳期):从JDK1.3到JDK1.4。这个阶段注重于提高性能和稳定性,而少有大规模破坏性改变。重要的更新包括垃圾回收器性能改进、Java Web Start、XML处理API等;
- 第三阶段(发展期):从JDK1.5(于2005年发布)到JDK1.7(Oracle收购之后发布)。这个阶段标志着Java全面迈入成熟和创新的阶段,引入了许多重要的新技术和特性。其中最显著的包括泛型、注解、枚举、自动装箱拆箱、增强的循环语法(for-each)、并发编程API(如并发集合类和线程池)、JVM参数调优、更快的JIT编译器等。在Oracle(见图2)接手后,Java的发展仍在继续;
- 第四阶段(现代化期):JDK1.8,也被称为Java 8,是Java发展历史上的一个重要里程碑。它引入了许多创新的特性,其中最著名的是函数式编程风格的Lambda表达式和流(Stream) API。Java 8还改进了日期和时间API(java.time包)、默认方法、Optional类等;
- 第五阶段(演进期):JDK9至JDK11,在这个阶段,Java继续向前发展并引入一些重要特性,如模块系统(Java Platform Module System),使得更好的组织和管理代码。其他关键更新包括HTTP/2客户端支持、改进的集合工厂方法、响应式流程处理API(Reactive Streams)和JShell交互式编程工具等;
- 第六阶段(持续演进期):JDK12以及之后的版本,Java持续演进并在每个版本中加入一些小而有用的特性改进。这些改进包括代码分段(Switch Expressions)、紧凑型数字格式化、预测能力增强等。
总结来说,Java的发展可以分为这六个大的阶段,每个阶段都带来了一系列新技术和重大更新,这些阶段代表了Java不断完善与演进的历程,也使得Java成为现在广泛应用的强大编程语言。随着时间的推移,Java继续发展,并持续在各个领域和平台上焕发光彩。
*关于更详细的JDK各个版本的发展历史,可以参阅我的另一篇文章:
图2SUN公司、ORACLE公司的LOGO
1.3 分支
Java语言在其产生以来,在许多领域都得到了广泛的技术支持。除了适用于网络应用的JavaEE(Java Enterprise Edition)
,它还具备强大的硬件支持。Java的开发可以分为三个主要分支:JavaEE
、JavaSE
和JavaME
(见图3)。下面将对这三个分支逐一进行解释。
- JavaSE(Java标准版): 最早称为J2SE(Java 2 Platform Standard Edition),在2005年之后更名为JavaSE。JavaSE是Java平台的核心部分,提供了完整的JVM(Java虚拟机)和标准类库,是用于构建应用程序和独立运行的标准开发工具包。无论是桌面应用程序、命令行工具还是其他通用型应用,JavaSE都提供了丰富的功能和库来支持开发;
- JavaEE(Java企业级开发):JavaEE曾被称为J2EE(Java 2 Enterprise Edition),是针对企业级应用开发而设计的。它基于JavaSE,并在其基础上提供了一系列的API和服务,用于开发复杂的、分布式的、可伸缩性强的企业级应用程序。JavaEE提供了诸如EJB(Enterprise JavaBeans)、servlet、JDBC(Java数据库连接)、JMS(Java消息服务)等技术,用于处理事务、持久化、安全性、多线程、通信等企业级需求;
- JavaME(Java嵌入式开发):JavaME原名Micro Edition,针对嵌入式设备和移动设备的开发而设计。它提供了一套精简的Java运行环境和类库,以满足资源有限的设备(如手机、智能卡、传感器等)的需求。JavaME适合在有限的内存和处理能力下运行,提供了移动应用开发所需的API和配置文件。
这三个分支相互补充,满足不同领域的开发需求。JavaSE
是基础,JavaEE
用于开发大规模的企业级应用,JavaME
则专注于嵌入式和移动设备开发。通过使用这些分支,Java语言成为了一个全面的、跨平台的开发工具。
图3JavaEE、JavaSE和JavaME间的关系及作用
2️⃣ 特征
Java语言具有许多强大的特性,吸引了众多程序员。以下是对这些特性进行详细介绍:
1、 简洁有效:Java语言注重简洁性和可读性,采用清晰的语法和面向对象的编程范式,使得代码易于编写、理解和维护Java还提供了丰富的类库和工具,使开发变得高效和快速;
2、 可移植性:Java被设计为一种可移植的语言,可以在不同平台上运行,如Windows、Mac、Linux等,而无需修改源代码这得益于Java虚拟机(JVM
)的存在,它提供了一个独立于操作系统的执行环境;
3、 面向对象:Java是一种纯粹的面向对象编程语言,所有的代码必须位于类中这种编程范式使得代码结构清晰且易于扩展,促进了可重用性和模块化开发;
4、 解释型:Java使用解释器直接将源代码转换为字节码,并由JVM动态地解释执行字节码这种特性使得Java具有跨平台的能力,同时也为动态性和灵活性提供了基础;
5、 适合分布式计算:Java内置了用于网络通信的行业标准API,如Socket
、RMI
(远程方法调用)、CORBA
(公共对象请求代理体系结构)等这使得Java成为开发分布式应用和网络服务的强大工具;
6、 较好的性能:Java通过JIT
(即时编译)将热门的字节码编译为本地机器代码,提高了执行速度此外,Java使用垃圾回收器自动管理内存,减轻了开发者负担,并且可优化内存使用效率;
7、 健壮性:Java具备强大的异常处理机制,可以有效地处理错误和异常情况,增加程序的稳定性此外,Java还提供了严格的类型检查和内存管理,减少了潜在的运行时错误;
8、 多线程处理能力:Java天生支持多线程编程,提供了丰富的并发编程库和工具,使得开发者可以轻松创建并发应用多线程能力有助于提高程序的响应性和资源利用率;
9、 高安全性:Java内置了一些安全性特性,如沙箱安全模型、类加载检查、安全管理器等这使得Java在Internet环境下能够安全地执行代码,防止恶意行为和安全漏洞;
10、 动态语言:Java虚拟机(JVM)支持动态语言功能,允许对字节码进行动态生成和修改这为Java提供了动态加载、反射、代理等强大的能力,使得开发更加灵活和可扩展;
11、 丰富的类库:Java拥有庞大的类库生态系统,既包含核心类库(如集合、IO、网络等),也有第三方库和框架(如Spring
、Hibernate
等)这些类库为开发者提供了广泛的功能组件和工具,简化了开发过程,提升了开发效率;
这些特性共同构成了Java的优势,使其成为一种广泛应用和受欢迎的编程语言。
3️⃣ 代码执行过程
清楚了以上Java语言的主要特点后,下面再来看一下Java语言的运行机制。首先计算机高级语言类型主要有编译型和解释型两种:
*关于编译型语言和解释性语言的区别?
计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。
- 解释性语言是指它常用的执行机制是使用一个“解释器”来执行,解释器对于程序是一句一句“翻译”成机器语言来执行,例如shell脚本语言;
- 编译型语言是指它常用的执行机制是使用一个“编译器”来编译成机器语言,然后就可直接执行这个编译好的“可执行文件”,例如C语言。
不管是解释性语言还是编译型都可编译或解释,前提是有这样的编译器或解释器。所以各种编程语言本质没什么不同,所谓的“解释性”和“编译”指的是执行机制上的不同。
而Java是两种类型的集合,Java中处理代码的过程如下:
图4Java的代码执行过程
Java程序文件的后缀是“*.java
”,而任何一个*.java
程序首先必须经过编译,编译之后会形成一个*.class
的文件(字节码文件),而后在计算机上执行,但是解释程序的计算机并不是一台真正意义上的计算机,而是一台由软件和硬件模拟出来的计算机——Java虚拟机(JavaVirtualMachine,JVM
)。
在Java中所有的程序都是在JVM上运行的,Java虚拟机(JVM)读取并处理经过编译的与平台无关的字节码*.class
文件。Java解释器负责将Java虚拟机的代码在特定的平台上运行。JVM实现可移植性的原理如下:
图5JVM实现可移植性的原理
Java虚拟机的最大作用体现在平台的支持上,通过图5可以发现,所有要解释的程序都要在JVM上执行,并且由不同版本的JVM匹配不同的操作系统,这样只要JVM的支持不变,程序就可以任意地在不同的操作系统上运行。但是这种运行方式很明显没有直接运行在操作系统上性能高,不过随着硬件技术的发展,这些问题几乎可以忽略。
* 总结
本文回顾了Java语言的发展历史、主要特点以及代码从源文件到解释执行的过程,同时介绍了Java实现可移植性的原理。
可以知道Java语言经历了多个阶段的发展,不断引入新技术和特性。从JDK1.0到现在的最新版本,Java变得更加强大、成熟和全面。它具有简洁有效、可移植性、面向对象、健壮性、高安全性以及动态语言等重要特点。
而代码从源文件到解释执行,首先会通过编译器将源文件转换为字节码文件(以.class
为扩展名)。然后,Java虚拟机(JVM)将字节码加载到内存中,并通过解释器逐行执行字节码。同时,JVM还使用即时编译器(JIT
)将热门的字节码编译为本地机器代码,提高代码执行效率。
而Java实现可移植性得益于两个主要因素。首先,Java采用了字节码的形式,它是一种与具体操作系统和硬件无关的中间代码。其次,Java虚拟机(JVM)作为一个在目标操作系统上运行的软件层,它负责将字节码转换为适合不同操作系统执行的指令,实现了解释执行的跨平台特性。
通过这篇文章的介绍,我们可以看到Java语言在发展历史中经历了多个阶段,并拥有许多强大的特点。同时,Java代码的解释执行过程以及Java实现可移植性的原理也被详细解释。这使得Java成为了一种广泛应用的编程语言,被开发者广泛接受和使用。
本文图片来源:
《禅与计算机程序设计艺术:Java 之父 James Gosling 最新访谈:JI》
《甲骨文收购sun,甲骨文为什么收购sun》
《JAVA系统学习之三大版本JavaSE、javaEE、javaME》
《Java的前生今世(上)》
[ ]nbsp_nbsp 6