Java基础教程之入门介绍 · 上
- 本节学习目标
- 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踏上了征服互联网的道路。
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各个版本的发展历史,可以参阅我的另一篇文章:
【Java基础教程】特别篇:JDK发展史详解
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语言成为了一个全面的、跨平台的开发工具。
2️⃣ 特征
Java语言具有许多强大的特性,吸引了众多程序员。以下是对这些特性进行详细介绍:
-
简洁有效:Java语言注重简洁性和可读性,采用清晰的语法和面向对象的编程范式,使得代码易于编写、理解和维护。Java还提供了丰富的类库和工具,使开发变得高效和快速。
-
可移植性:Java被设计为一种可移植的语言,可以在不同平台上运行,如Windows、Mac、Linux等,而无需修改源代码。这得益于Java虚拟机(
JVM
)的存在,它提供了一个独立于操作系统的执行环境。 -
面向对象:Java是一种纯粹的面向对象编程语言,所有的代码必须位于类中。这种编程范式使得代码结构清晰且易于扩展,促进了可重用性和模块化开发。
-
解释型:Java使用解释器直接将源代码转换为字节码,并由JVM动态地解释执行字节码。这种特性使得Java具有跨平台的能力,同时也为动态性和灵活性提供了基础。
-
适合分布式计算:Java内置了用于网络通信的行业标准API,如
Socket
、RMI
(远程方法调用)、CORBA
(公共对象请求代理体系结构)等。这使得Java成为开发分布式应用和网络服务的强大工具。 -
较好的性能:Java通过
JIT
(即时编译)将热门的字节码编译为本地机器代码,提高了执行速度。此外,Java使用垃圾回收器自动管理内存,减轻了开发者负担,并且可优化内存使用效率。 -
健壮性:Java具备强大的异常处理机制,可以有效地处理错误和异常情况,增加程序的稳定性。此外,Java还提供了严格的类型检查和内存管理,减少了潜在的运行时错误。
-
多线程处理能力:Java天生支持多线程编程,提供了丰富的并发编程库和工具,使得开发者可以轻松创建并发应用。多线程能力有助于提高程序的响应性和资源利用率。
-
高安全性:Java内置了一些安全性特性,如沙箱安全模型、类加载检查、安全管理器等。这使得Java在 Internet环境下能够安全地执行代码,防止恶意行为和安全漏洞。
-
动态语言:Java虚拟机(JVM)支持动态语言功能,允许对字节码进行动态生成和修改。这为Java提供了动态加载、反射、代理等强大的能力,使得开发更加灵活和可扩展。
-
丰富的类库:Java拥有庞大的类库生态系统,既包含核心类库(如集合、IO、网络等),也有第三方库和框架(如
Spring
、Hibernate
等)。这些类库为开发者提供了广泛的功能组件和工具,简化了开发过程,提升了开发效率。
这些特性共同构成了Java的优势,使其成为一种广泛应用和受欢迎的编程语言。
3️⃣ 代码执行过程
清楚了以上Java语言的主要特点后,下面再来看一下Java语言的运行机制。首先计算机高级语言类型主要有编译型和解释型两种:
🔍关于编译型语言和解释性语言的区别?
计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。
- 解释性语言是指它常用的执行机制是使用一个“解释器”来执行,解释器对于程序是一句一句“翻译”成机器语言来执行,例如shell脚本语言;
- 编译型语言是指它常用的执行机制是使用一个“编译器”来编译成机器语言,然后就可直接执行这个编译好的“可执行文件”,例如C语言。
不管是解释性语言还是编译型都可编译或解释,前提是有这样的编译器或解释器。所以各种编程语言本质没什么不同,所谓的“解释性”和“编译”指的是执行机制上的不同。
而Java是两种类型的集合,Java中处理代码的过程(如图4)如下:
Java程序文件的后缀是“*.java
”,而任何一个*.java
程序首先必须经过编译,编译之后会形成一个*.class
的文件(字节码文件),而后在计算机上执行,但是解释程序的计算机并不是一台真正意义上的计算机,而是一台由软件和硬件模拟出来的计算机——Java虚拟机(JavaVirtualMachine,JVM
)。
在Java中所有的程序都是在JVM上运行的,Java虚拟机(JVM)读取并处理经过编译的与平台无关的字节码*.class
文件。Java解释器负责将Java虚拟机的代码在特定的平台上运行。JVM实现可移植性的原理(如图5)如下:
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的前生今世(上)