Java 是一种非常流行的面向对象的计算机编程语言。
什么是Java编程语言
Java 具有简单性,它是并发的、基于类的、面向对象的,并且专门设计为具有尽可能少的实现依赖性。
它旨在让应用程序开发人员 write once, run anywhere
(WORA)即:“编写一次,随处运行”,这意味着编译后的 Java 代码可以在所有支持 Java 的平台上运行,而无需重新编译。
例如,你可以在 UNIX 上编写和编译 Java 程序,然后在 Microsoft Windows、Mac 或 LINUX 机器上运行它,而无需对源代码进行任何修改。
WORA是通过将 Java 程序编译成称为字节码的中间语言来实现的。 字节码的格式是平台无关的,Java 虚拟机 (JVM) 用于在每个平台上运行字节码。
需要注意的是,JVM 虚拟机是区分平台(操作系统)的。
Java 的历史
Java是最初由开发詹姆斯·高斯林在 Sun Microsystems
公司(这已经被甲骨文公司收购),并于1995年发布了作为Sun Microsystems的Java平台的核心组件。
该语言从 C 和 C++ 派生出大部分语法,但它的底层复杂度比它们中的任何一个都少。
在 2010 年 1 月 27 日收购 Sun Microsystems 之后,Oracle 公司是 Java SE 平台正式实现的当前所有者。
该实现基于 Sun 对 Java 的原始实现。Oracle 实现可用于 Microsoft Windows、Mac OS X、Linux 和 Solaris。
Oracle 实现被打包到两个不同的发行版中:
- Java 运行时环境 (JRE),其中包含运行 Java 程序所需的 Java SE 平台部分,供最终用户使用。
- Java 开发工具包 (JDK),面向软件开发人员,包括 Java 编译器、Javadoc、Jar 和调试器等开发工具。
Java的特点
Java 具有多种特性。其中一些是 Java 独有的,还有一些在其他语言中很常见。
- 面向对象——在 Java 中,一切都表示为对象。对象是一种封装数据及其相关行为的包装器,Java 支持所有主要的面向对象原则。
- 平台独立——用 Java 编写的程序首先由 Java 编译器转换为字节码。该字节码可以在任何具有 Java 运行时环境 (JRE) 的机器上运行。它使 Java 应用程序独立于平台。它与 C 或 C++ 应用程序非常不同,后者将程序编译为特定于操作系统的二进制文件。
- 安全——Java 应用程序在 Java 运行时环境 (JRE) 中运行,几乎不与系统操作系统交互。它使 Java 比其他语言更安全。
- 多线程——Java 支持编写可以在单独线程中执行多个任务的应用程序。所有任务都使用操作系统线程的时间切片技术进行。
- 高性能——Java 是一种解释型语言,因此它可能永远不会像 C 或 C++ 这样的编译型语言一样快。但是,Java 通过使用即时编译器实现了高性能。
- 操作系统架构中立——Java 编译器生成操作系统架构中立的类文件或字节码。例如,在 C 编程中,int数据类型在 32 位体系结构中占用 2 字节内存,在 64 位体系结构中占用 4 字节内存。但是,对于 Java 中的 32 位和 64 位结构,它都占用 4 字节的内存。
Java 中的垃圾回收
Java 使用自动垃圾收集器来管理对象生命周期中的内存。程序员确定何时创建对象,一旦对象不再使用,Java 运行时负责回收内存。一旦没有对对象的引用,垃圾收集器就会自动释放无法访问的内存。
如果程序员的代码持有对不再需要的对象的引用,则可能仍会发生类似于内存泄漏的情况,通常是当不再需要的对象存储在仍在使用的容器中时。如果调用不存在对象的方法,则会抛出NullPointerException
。
垃圾收集可能随时发生。理想情况下,它会在程序空闲时发生。如果堆上没有足够的空闲内存来分配新对象,则会即可触发,这可能会导致程序暂时停止。显式内存管理在 Java 中是不可能的。