Java是什么

Java 是美国的 Sun Microsystems(微太阳)公司于 1995 年推出的一款跨平台的、面向对象的编程语言,其主要设计者是 James Gosling(Java 之父,人称“高司令”)。2009 年 04 月,美国 Oracle(甲骨文)公司以 74 亿美元的价格收购了 Sun,并取得 Java 的所有版权。

图1:Java 之父 James Gosling

Java 的起源和发展

Java 编程语言起源于 1991 年的 Green 项目,该项目的创始人之一是 James Gosling。最初,该项目组计划使用 C++ 编程语言实现嵌入式应用程序,但是由于 C++ 语言的复杂性、缺乏垃圾回收机制和可移植性等问题,James Gosling 基于 C++ 开发了一门新的编程语言,叫做 Oak。

然而,Green 项目并没有取得预期的成功,导致整个项目几乎失败。一半的项目成员被调离,而作为该项目的副产品的 Oak 语言也几乎被遗弃。

直到 1994 年,互联网和浏览器迅猛发展,Java 迎来了它的新生机。Sun 公司认识到这门语言非常适合于互联网编程,于是对它进行了大规模的重构,成为一种全新的编程语言,并于 1995 年以 Java 的名字正式发布。从此,Java 成为了一门广泛应用于互联网开发、移动应用程序和嵌入式系统的编程语言。

Java 自诞生以来就在不断地发展壮大,并在不同的领域中得到了广泛的应用。

在 PC 互联网时代,Java 成为了中大型网站开发的首选语言,它具有良好的跨平台性和可扩展性,能够轻松地应对高并发的访问量和复杂的业务逻辑,因此备受欢迎。

随着移动互联网的兴起,Java 成为了 Android APP 开发的主要编程语言,Android 系统底层就是使用 Java 语言编写的,因此开发人员可以使用 Java 编写高性能、高效、稳定的移动应用程序,这也为 Java 带来了新的发展机遇。

此外,在大数据领域中,Java 也发挥着重要的作用。Hadoop 等大数据处理框架就是使用 Java 语言编写的,这些框架能够高效地处理海量的数据,并且能够轻松地实现分布式计算。

总之,Java 在不同领域中都得到了广泛的应用,成为了全球最受欢迎的编程语言之一,它的开发人员数量和使用范围都非常广泛。随着技术的不断发展和应用场景的不断拓展,Java 的地位和影响力也将会不断增强。

 

图2:世界编程语言排行榜

Java 的特点

Java 是一款十分优秀的编程语言,下面我们就从多个不同的维度来描述下 Java 语言的几大特点。

1. Java 是跨平台的

所谓“跨平台”,就是“跨操作系统”,指的是一段代码可以不加修改地在多种操作系统上运行。

不同操作系统的编程接口和运行机制都是有区别的,要想让代码在不同操作系统上运行,需要进行大量的兼容性处理,这个工作可以由程序员自己完成,也可以由编程语言开发者完成,而 Java 选择了后者。

Java 开发者们为 Java 打造了一套叫做“JVM”的运行环境,只要在不同操作系统上安装 JVM,让 Java 代码运行在 JVM 上,就可以完美实现跨平台,真正做到“一次编写,到处运行”。

JVM 是 Java Virtual Machine 的缩写,译为“Java 虚拟机”。注意,不应该按照字面意思将 JVM 理解为一台虚拟的计算机,而应该将 JVM 理解为一种虚拟的操作系统,它为 Java 程序提供了运行环境,比如内存分配、内存回收、线程调度、函数入栈出栈等。

JVM 是在真实操作系统上构建起来的一种非常受限的虚拟操作系统,它只是用来给 Java 程序提供运行环境,并不管理硬件,也不能让普通用户直接使用。

2. Java 是一种面向对象的编程语言

对很多初学者来说,“面向对象”是一个比较晦涩难懂的概念,各种教科书式的讲解也给“面向对象”披上了一层神秘的面纱。

从本质上讲,面向对象体现的是一种“封装”或者“模块化”的思想:
  • 以前的面向过程编程,代码都是“散装”的,与某个功能有关的代码(尤其是变量和函数)分散在不同的地方,就好像散落在地上的积木,非常凌乱,难以统一管理;
  • 而面向对象编程能够更好地“封装”代码,将与某个功能相关的代码都聚集起来统一管理,就好像把积木都收纳到盒子里面,整体上看作一个模块,使得代码更加有组织和易于维护。

Java 是一种流行的面向对象编程语言,尤其适用于中大型项目。由于这类项目通常功能和逻辑都非常复杂,因此代码管理和维护是一个非常大的挑战。使用面向对象编程可以更好地应对这些挑战,因为它能够帮助程序员将代码分解成小的模块,这些模块之间有明确的职责和接口,便于开发和维护。

Java 从 C++ 中借鉴了许多面向对象思想,但也舍弃了 C++ 中的一些复杂特性,例如多继承和运算符重载。这使得 Java 更加容易学习和使用,同时也避免了在 C++ 中常常出现的问题,如代码可读性差、难以维护等。

3. Java 是一种半编译型的语言

相信很多人都知道编译型语言和脚本语言:
  • 编译型语言的源代码必须先编译(借助编译器)成可执行文件才能在操作系统上运行,比如 C/C++、Pascal、Go 等;
  • 脚本语言没有编译过程,借助解释器可以直接运行源文件,比如 JavaScript、PHP、Python 等。

编译型语言执行效率高,但是跨平台困难;脚本语言可以跨平台,但是运行效率极低。为了在保证运行效率的同时实现跨平台,Java 采取了一种折中方案,被设计成了一种半编译半脚本的编程语言。

Java 源代码在运行之前需要被编译,但不是编译成可执行文件,而是编译成一种字节码文件(.class 文件)。字节码文件只能在 JVM 上执行,不能在真实操作系统上执行。字节码文件必须经过 JVM 处理后才能运行,所以 Java 程序的执行离不开 JVM。如果我们把 JVM 当做一种操作系统,那么字节码文件就是 JVM 的可执行文件。

与编译型语言相比,Java 具有跨平台的优势,因为字节码文件是可以在任何装有 JVM 的计算机上运行的。同时,由于 JVM 的不断优化,Java 的执行效率已经远远超过了脚本语言,并且能够与一些编译型语言相媲美,如 Go 语言等。

4. Java 具有垃圾回收功能

所谓“垃圾回收”,指的是及时释放程序不再需要的资源,比如内存、网络连接、文件等。垃圾回收不是 Java 的独门绝技,很多高级编程语言都有垃圾回收功能,比如 PHP、JavaScript、Python 等。

C/C++ 没有自动垃圾回收机制,它将内存的分配和回收工作完全交给程序员自己负责,当项目越来越庞大时,内存泄露将会成为一件非常可怕但又难以解决的事情。

对于中大型项目来说,及时、智能、不出错的垃圾回收机制是非常重要的,Java 在这一方面做得非常出色,为程序员避免了很多麻烦。

5. Java 是一种通用型编程语言

有很多编程语言是针对某个特定的开发领域而设计的,被认为是“专用型”语言,例如:
  • PHP 和 ASP 专门用来开发网站后台;
  • JavaScript 最初只能用于网站前端开发,实现一些网页特效,后来有“好事的”程序员将它移植到服务器上,才赋予 JavaScript 网站后台开发的能力;
  • Objective-C 和 Swift 只能用于苹果产品的开发,包括 iPhone、iPad、Mac、MacBook 等;
  • Visual Basic(VB)专门用来在 Windows 平台下进行软件开发。

还有很多编程语言不是针对某个特定领域设计的,它们能做很多事情,比较通用化。但是在长期的实践过程中,这些编程语言也找到了适合自己的位置,例如:
  • C/C++ 主要用于底层开发、硬件开发、算法开发等,比如开发操作系统内核、开发硬件驱动、开发系统组件、开发单片机和嵌入式等;
  • Python 主要用于系统运维、网站后台开发、数据分析、人工智能等领域;
  • Go 语言除了用于服务器、通讯等较底层的开发,还能用于网站后台开发。

这些编程语言被认为是“通用型”语言。

Java 也是一种通用型语言,它能胜任的开发方向有很多,典型的有网站后台开发、Android APP 开发、大数据处理等。

学习“专用型”语言容易获得成就感,因为你明确地知道它能做什么,在学习过程中就能做出一些炫酷的演示项目。而“通用型”语言的学习会稍显枯燥,而且周期较长:
  • 你必须先学习语言本身的语法,这期间基本是什么演示项目也做不了的,比较煎熬;
  • 接下来需要再针对某个开发方向学习一些专用知识、类库或者框架,然后才能做出一些实用项目。

对于初学者来说,“通用”在意味着“无所不能”的同时,往往也意味着“啥也不能”,因为不知道学了以后能做什么。Java 初学者可能没有强烈的感受,但是 C/C++ 初学者一定知道我在说什么。

6. Java 拥有完整而强大的生态系统

Java 不仅是一门编程语言,还是一个完整的生态系统。

Java 的生态系统是非常强大和完整的。Java 的类库和框架覆盖了各种应用场景和领域,包括但不限于企业应用开发、Web 应用开发、移动应用开发、游戏开发等等。这些类库和框架不仅提供了基础的功能和工具,还有很多高级特性和解决方案,让开发人员能够更加高效地开发出高质量的软件。

同时,Java 生态系统的开放性和共享性也促进了技术的传播和共享。开发者可以自由地使用和贡献各种类库和框架,让技术变得更加丰富和多样化。Java 生态系统还拥有很多优秀的开源项目和社区,这些项目和社区不仅提供了代码和工具,还有各种教程、文档和交流平台,让开发者能够更好地学习和成长。

Java 生态系统的强大和完整性为开发者提供了丰富的资源和工具,让开发工作变得更加高效和便捷。而这也是 Java 成为一门广泛使用的编程语言的重要原因之一。

Java技术体系

为了满足不同场景的需要,Java 技术体系衍生出了三个不同的平台:Java SE、Java EE 和 Java ME。

1. Java SE(Java Platform Standard Edition)

Java SE 是 Java 技术体系的核心和基础,它主要用于桌面应用程序的开发。

Java SE 主要由以下两部分组成。

组成部分 说明
Java 基础 指的就是 Java 语言本身,主要包括:Java 的基础语法、面向对象、I/O 输入输出,多线程,JDBC 数据库操作,网络通信,多线程等内容。
GUI 工具包 Java 提供了一系列用于开发桌面应用程序的工具包,例如 AWT、Swing 等。

虽然由于历史和定位原因,Java 在桌面应用开发领域的表现不佳,现在已经很少有人使用 Java 进行桌面应用程序的开发了,但是学习 Java SE 仍然是开发 Java 技术的必备基础。

2. Java EE(Java Platform Enterprise Editoin)

Java 企业版,它在 Java SE 的基础上增加了一系列的服务、API 以及协议,并增加了用于编写企业级应用程序的类库。

Java EE 是 Java 技术体系中应用最广泛的部分,它为开发企业级应用程序提供了一整套完整的解决方案。该技术体系中包含的技术诸如 Servlet 、JSP 等,主要针对的是 Web 应用程序(网站)的开发。 

3. Java ME(Java Platform Micro Eidtion)

Java 微型版,它在 Java SE 的基础上进行了一定的精简,并增加了对移动终端的支持,主要用于开发移动端或嵌入式系统中的应用程序,例如移动设备(手机)、PDA、机顶盒等。

在这三个技术体系中,Java SE 是整个 Java 技术体系的核心和基础,Java EE 和 Java ME 都是在 Java SE 的基础上发展而来的,因此想要开发 Java EE 和 Java ME 的应用,就必须先掌握 Java SE。

通常我们所说的 Java,指的就是 Java SE,本套 Java 教程也是针对 Java SE 进行讲解的。

Java的应用领域

目前,Java 语言主要应用在以下几个领域。

应用领域 说明
企业级应用开发 主要指复杂的、大型的企业级软件系统、各种类型的网站,应用领域包括金融、电信、交通、电子商务等。
大数据平台开发 在大数据领域,Hadoop、Spark、Storm、Flink 等主流的大数据框架以及  flume、kafka、sqoop 等工具都是使用 Java 以及与 Java 相关的编程语言(例如 Scala 语言)编写的。
Android 应用开发 Android 手机上有很多 APP 都是用 Java 开发的,例如 QQ、微信、UC 浏览器。

添加微信咨询 扫码添加管理员微信 扫码添加管理员微信
微信ID:biancheng_yan