1996 年 1 月 23 日,Sun 微系统公司发布了一份新闻稿,宣布 Java 1.0 正式可用:
加州帕洛阿尔托,1996 年 1 月 23 日,JavaSoft(Sun 微系统公司新成立的运营公司)宣布,Java 1.0 编程环境现在可以从http://java.sun.com上下载。
JavaSoft 新任命的总裁 Alan Baratz 说:“Java 一次编写、到处运行的能力和它的易访问性已经为软件和互联网社区所接受,成为开发复杂网络应用程序的事实上的标准。开发人员现在可以马上就下载 Java 1.0,并开始构建下一个杀手级应用程序。”
JavaSoft Java 语言和应用程序总经理 Ruth Hennigar 说:“为了发布这个强大的 1.0 版本而不断改进 Java 对我们的团队来说是一个伟大的成就。自从 3 月份发布了第一个 alpha 版本以来,我们已经收到了很多开发者的反馈,并且改进了功能和可靠性。这个版本包含了开发者希望我们加入的组件——用于运行和测试 Applet 的 Java Applet 查看器、Java 编译器、一个原型调试器和 Java 虚拟机。我们还加入了图形、音频、动画和网络类库。”
Sun 公司在1995年发布了Java的alpha版本,包含了用在 Netscape Navigator 和 Mosaic 上的一些技术,但 1.0 版本的发布(紧接着是 1.0.1 和 1.0.2)标志着一段持续至今的旅程的开始。Oracle 公司在去年庆祝Java alpha版发布25周年。
互联网的崛起为 Java 的普及提供了条件,而编译器和库的免费提供对于当时的工具生态圈来说是一个巨大的变化。像 gcc 这样的开源项目比 Java 编译器早出现了 10 多年,大多数操作系统可用的用于构建交互式图形软件的工具都只有商业版。Applet 在开发完以后可以发布到互联网上,然后在各种不同的操作系统上运行,这在当时是独一无二的。
Sun 微系统公司在最初的新闻稿中提到,Java 1.0 可在 Solaris、Windows 95 和 Windows NT 上运行,并承诺在次年年底发布 macOS 版本。在 Apple 和 NeXT 合并一起开发 macOS 时,操作系统上默认安装了 Java,Objective-C 运行时与 Java 进行了桥接,提供了 JavaWebObjects——Objective-C WebObjects 到 Java 的移植(即使是现在,在苹果某些网站的 WebObjects 应用程序中仍然可以看到 Java 遗留的 WebObjects)。IBM 承诺为 OS/2 和 Windows 3.1 提供移植,从那以后,IBM 就一直是 Java 的被许可方。
尽管 Java 经过多年的发展,但 JVM 的核心部分仍然十分稳定——用 Java 1.0 编译的应用程序仍然可以在现代 JVM 上运行。字节码格式(在很大程度上)保持不变,随着时间的推移,只引入了很少的字节码(例如 invokedynamic)和额外的属性类型(module-info)。其他一些,比如泛型,是在 Java 1.2 中以向后兼容的方式引入的,不需要做任何修改,这样它们就也可以在旧 JVM 上运行。
遗憾的是,JVM 存在安全漏洞,为了保证安全,需要频繁更新浏览器的 JVM。随着其他浏览器插件类型的流行(比如 Flash——现在已经跟它说再见了),Java 从浏览器端走到了服务器端。在服务器端,Java 的 J2EE 平台(现在是 JakartaEE)开始流行起来。浏览器技术仍然是恶意软件的温床,只不过这次被攻击的是执行 JavaScript 的 JIT。JavaScript 这个名字是因为 Java 早期为浏览器发布的版本而出现的,但除此之外与 Java 并无关联。
Java 很少会跌出编程语言排行榜顶部的位置,经常与 C 语言分列前两位。安卓的 Dalvik 虚拟机应用程序使用的是 Java,可见下一个十年 Java 仍然会与我们同在。类 C 语言语法的延续和对行尾分号的坚持可能看起来有些过时,但在当时对于 C 语言开发人员来说这是一门很容易过渡的语言。与 1996 年编译的 C 语言程序不同,Java 应用程序到现在仍然可以运行——而且速度要快得多,这要归功于 32 位和 64 位 JVM 以及高级垃圾收集器(如 Shenandoah 和 ZGC)的发展。
Java 在嵌入式领域的成功——毕竟,它最初是作为一种机顶盒编程语言而诞生的——并不那么明显。虽然 Java 出现在蓝光播放设备中,JavaCard 出现在 SIM 和 PIN 芯片中,但它可能并没有在物联网世界掀起一场革命。不过,嵌入式 Java 仍然是有利可图的,这也是 Oracle 收购 Sun 微系统公司的原因之一。
也许 Java 真正宝贵的遗产不仅仅是将面向对象引入到浏览器中,而是 JVM 本身。正如 Java(以及 JavaScript)所展示的那样,如果你拥有一种运行时与处理器无关的语言(JVM 字节码、JavaScript 源码、WASM),那么执行或翻译引擎就可以执行该代码,而无需考虑平台问题。这比其他任何东西都更有助于硬件的发展——从 32 位到 64 位,从 PowerPC 到 ARM 再到 RISC-V——而且仍然不需要开发者修改任何编译后的代码。
现在不只是 Java 在使用 JVM,其他编程语言也在使用 JVM,如受 Java 启发的派生语言 Kotlin 和 Scala,还有其他非 Java 编程语言,如 JRuby 和 Jython。Oracle 的 Truffle 和 GraalVM 项目展示了如何基于 Java 构建 JVM,并优化那些无法利用这些运行时的语言。随着 Java 语言的发展,引入了轻量级的线程和记录类,这些变化将推动 JVM 向前发展,在未来支持更多运行时。
Java 和 JVM 可能已经到了中年,但它们还有几十年的使用和改进空间。
你使用的第一个 Java 版本是什么?请在下面的评论中告诉我们。
原文链接:
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论