Java 编程语言最初是为了适用于嵌入式系统、机顶盒、电视等设备而开发的。因此,根据需求,它最初被设计为可在多种平台上运行。经过多年的发展,Java 成长为最常用的用于开发基于互联网的应用程序的语言之一。
Java 是一个具有丰富特性的语言,随着每一个新版本的推出,它不断地进化和发展。它被广泛应用于数十亿的设备之上。以下是 Java 语言的主要特点:
面向对象
在 Java 中,一切都是一个对象。Java 基于对象模型,因此易于扩展。作为一种具有面向对象特征的语言,Java 支持以下 OOP 的基本概念:
平台独立性
与其他许多编程语言(包括 C 和 C++)不同,Java 在编译时不会编译成特定平台的机器代码,而是编译成平台无关的字节码。这个字节码可以通过网络分发,并在任何平台上由 Java 虚拟机(JVM)解释执行。
Java 是按照“一次编写,到处运行”(Write Once, Run Anywhere, WORA)的原则设计的。用 Java 编写的代码并不直接依赖于其运行的机器类型。Java 代码被编译成字节码,这是平台无关的。Java 虚拟机(JVM)可以理解字节码。Java 提供了针对特定平台的 JVM。确保正确解释字节码是特定平台的 JVM 的责任,因此开发者可以自由地编写代码而不必担心平台,比如 Windows、Linux、Unix、Mac 等。这一特性使得 Java 成为一种平台中立的语言。
由于字节码可以在网络上传播,并且可以在任何平台上由虚拟机(JVM)解释执行,这使得 Java 代码具有高度的可移植性,并且对于在多个平台上运行的应用程序非常有用。
简单
Java 被设计成易于学习的语言。如果你理解了 Java 面向对象的基本概念,那么掌握 Java 将会变得容易。
Java 非常容易学习。它继承了 C 和 C++ 的许多特性,并去除了复杂的功能,如指针、运算符重载、多重继承、显式内存分配等。它提供了自动垃圾回收。凭借丰富的库以及数千个有用的函数,Java 让开发者的生活变得更加轻松。
安全性
Java 的安全性特性使其能够开发无病毒、防篡改的系统。身份验证技术基于公钥加密。
Java 从设计上就高度安全,因为它不要求开发者与底层系统内存或操作系统交互。字节码是安全的,许多安全漏洞如缓冲区溢出、内存泄漏等都非常罕见。Java 的异常处理机制允许开发者处理几乎所有可能在程序执行期间发生的错误/异常。自动垃圾回收有助于保持系统内存空间利用率的可控。
架构中立性
Java 编译器生成一种架构中立的对象文件格式,这使得编译后的代码可以在存在 Java 运行系统的许多处理器上执行。
随着处理器架构的进步或特定机器处理器的发展,Java 代码仍然独立于任何特定的处理器需求。由于 Java 是一个开放标准,即使是为了定制架构也可以准备特定的 JVM。如今,几乎所有的流行平台和架构都有可用的 JVM,因此 Java 代码完全独立。例如,在 Windows 机器上创建的 Java 程序可以在 Linux 机器上运行,无需任何代码修改。
可移植性
由于架构中立性并且没有任何实现相关的规范方面,使得 Java 可移植。Java 的编译器是用 ANSI C 编写的,具有一个干净的可移植边界,即 POSIX 子集。
由于这种可移植性,Java 自问世以来就受到了广泛的欢迎。特别是在基于互联网的应用程序中,平台因地域而异,同一代码库可以在多个平台上使用。因此,开发人员之间的协作在不同的位置变得容易。
健壮性
Java 通过强调编译时错误检查和运行时检查来努力消除容易出错的情况。自动垃圾回收、强大的内存管理、无指针、无法直接访问系统内存、异常处理、错误处理等功能使得 Java 成为一种可靠的、强大的语言,值得信赖。
多线程
利用 Java 的多线程特性,可以编写能够同时执行多个任务的程序。这一设计特性使开发人员能够构建可以顺利运行的交互式应用程序。
一个多线程程序包含两个或更多的部分,它们可以并发运行,每个部分可以同时处理不同的任务,从而充分利用可用资源,特别是当你的计算机拥有多个 CPU 时。
多任务处理是指多个进程共享常见的处理资源,如 CPU。多线程扩展了多任务处理的概念,将其应用于可以将单个应用程序内的特定操作细分为单独线程的情况。每个线程都可以并行运行。操作系统不仅会在不同的应用程序之间划分处理时间,还会在应用程序内的每个线程之间进行划分。
多线程使你能够以一种方式编写程序,使得多个活动可以在同一个程序中同时进行。
解释型
Java 字节码在运行时动态翻译成本地机器指令,并且不会存储在任何地方。链接是一个增量的和轻量的过程,因此开发过程更加迅速和具有分析性。
JVM 位于 javac 编译器和底层硬件之间,javac(或其他编译器)将 Java 代码编译成 JVM 可以理解的字节码。然后,JVM 使用即时(JIT)编译在代码执行时将字节码编译为二进制代码。
高性能
通过使用即时编译器,Java 实现了高性能。JVM 使用 JIT 编译器来提高程序的执行时间。以下是 JIT 编译器通常执行的一些一般优化:
分布式
Java 是为互联网的分布式环境设计的。
动态性
与 C 或 C++ 相比,Java 被认为更具动态性,因为它旨在适应不断变化的环境。Java 程序可以携带大量的运行时信息,这些信息可用于验证和解决运行时的对象访问。