杰瑞科技汇

java是从语言改进重新设计

Java 是从 C++ 语言改进并重新设计的。

java是从语言改进重新设计-图1
(图片来源网络,侵删)

更准确地说,Java 的设计深受 C++ 的影响,但它并不是对 C++ 的简单升级或修改,而是一次彻底的“重新设计”,其核心目标是创建一种更简单、更健壮、更安全的面向对象编程语言。

下面详细解释 Java 是如何从 C++ 改进而来的,以及为什么说它是“重新设计”:

Java 设计的目标

Java 诞生于 1990 年代初,由 Sun 公司的詹姆斯·高斯林等人发起,最初名为“Oak”项目,当时的主要目标是:

  1. 简单性:让开发者更容易学习和使用。
  2. 健壮性:创建可靠的、不易出错的应用程序,尤其是在网络环境中。
  3. 安全性:防止恶意代码破坏系统。
  4. 平台无关性:“一次编写,到处运行”(Write Once, Run Anywhere)。

为了实现这些目标,Java 的设计者们从 C++ 中“取其精华,去其糟粕”。

java是从语言改进重新设计-图2
(图片来源网络,侵删)

从 C++ 中“继承”的特性(保留的优点)

Java 借鉴了 C++ 中最核心和成功的概念:

  1. 类和对象:两者都是基于类的面向对象编程语言,都支持封装、继承和多态。
  2. 语法结构:Java 的基本语法(如 if-elseforwhile 循环、运算符、数据类型等)与 C++ 非常相似,这使得 C++ 程序员可以相对容易地转向 Java。
  3. 指针概念的影子:虽然 Java 没有直接的指针,但其引用的概念在功能上与指针类似,都用于访问内存中的对象。
  4. 内存管理:两者都使用 来存储对象。

对 C++ 的“改进”和“重新设计”(去除的缺点)

Java 的“重新设计”主要体现在它移除了 C++ 中最复杂、最危险、最容易导致错误的特性,并引入了新的机制。

特性 C++ Java (改进与重新设计) 目的
内存管理 手动管理:开发者需要使用 new 分配内存,并使用 delete 释放,这是导致内存泄漏和悬垂指针的主要原因。 自动垃圾回收:JVM 会自动跟踪和回收不再使用的对象内存,开发者无需手动释放内存。 提高健壮性,减少内存泄漏
指针 直接指针操作:允许直接操作内存地址,功能强大但极其危险,容易导致程序崩溃和安全隐患。 无指针,只有引用:不允许直接操作内存地址,引用是类型安全的,不能指向无效内存。 提高安全性,防止内存破坏
头文件与实现分离 需要头文件:代码通常分散在 .h (声明) 和 .cpp (实现) 文件中,增加了编译的复杂性。 无头文件:所有代码都在 .java 文件中,声明和实现在一起。 简化开发流程,提高可读性
多重继承 支持多重继承:一个类可以继承自多个父类,这会导致“菱形继承”等复杂问题,使得代码难以理解和维护。 单继承,多接口实现:一个类只能继承一个父类,但可以实现多个接口,接口只定义方法签名,不包含实现,避免了多重继承的复杂性。 简化继承模型,提高代码清晰度
运算符重载 支持运算符重载:允许开发者自定义 , , 等运算符的行为,虽然强大,但容易被滥用,导致代码难以理解。 不支持运算符重载:保持语言的简洁性,避免潜在的混淆。 保持语言的简单性和一致性
全局变量和函数 支持:可以在命名空间外定义全局变量和函数,破坏了封装性。 不支持:所有变量和函数都必须属于某个类。 强制面向对象,提高封装性
数据类型 基本类型与对象分离:如 intInteger 是两种不同的东西,使用时需要手动转换(装箱/拆箱)。 基本类型与包装类:基本类型(int, double)和它们的包装类(Integer, Double)设计得更紧密,JDK 5+ 后引入了自动装箱/拆箱,简化了使用。 在保持高性能的同时,提供了面向对象的便利性
平台依赖性 编译为机器码:代码需要针对不同的操作系统(Windows, Linux, macOS)和 CPU 架构分别编译。 编译为字节码:Java 编译器将 .java 文件编译成 .class 字节码,然后由 JVM 在任何平台上解释或即时编译执行。 实现“一次编写,到处运行”的平台无关性

Java 并不是在 C++ 的代码基础上修改的,而是在设计理念上对 C++ 进行了一次彻底的反思和重构。

  • C++ 的设计哲学是“无所不包”,它试图成为一种既支持底层系统编程又支持高级应用开发的“超级语言”,但这带来了巨大的复杂性。
  • Java 的设计哲学是“专注和精简”,它砍掉了 C++ 中危险的、复杂的部分,强制使用更安全、更简单的编程范式,并通过 JVM 和垃圾回收机制解决了当时最棘手的内存管理和跨平台问题。

最准确的答案是:Java 是从 C++ 语言的设计思想中汲取灵感,并针对其缺点进行彻底的改进和重新设计而来的一门全新的、更简单、更安全的面向对象语言。

java是从语言改进重新设计-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇