GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Java 1.0 已经 25 岁了,你使用的第一个 Java 版本是什么?| 欢迎评论

2021 年 1 月 29 日

Java 1.0已经25岁了,你使用的第一个Java版本是什么?| 欢迎评论

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 版本是什么?请在下面的评论中告诉我们。


原文链接

Java 1.0 Turns 25

2021 年 1 月 29 日 16:022607

评论

发布
暂无评论
发现更多内容

2020,这个世界会好吗?

IT民工大叔

读书笔记

我从来不在朋友圈晒投资人合影,却融了很多钱

邓瑞恒Ryan

高效工作 人脉 职业规划

三点思考,判断一家公司是否值得加入

邓瑞恒Ryan

高效工作 个人成长 职业

Arduino 蓝牙遥控+超声避障小车

黄耗子皮

树莓派 极客

Flink获取kafka中每条消息对应的topic

shengjk1

flink kafka flink 消费 kafka 获取 topic等信息

破解 Java Agent 探针黑科技!

谭建

Java JVMTI APM Profile

给业务线的总经理多交代了几句

霍太稳@极客邦科技

创业 效率 团队管理

无代码开发

Fenng

Kubernetes中的CI/CD

倪朋飞

Kubernetes DevOps 微服务

我如何用 Python 给 Github 的 README.md 做一个访客统计功能

遇见

Python GitHub 开源 badge open-source

一篇文章搞定 java 中的 path 和 classpath

shengjk1

Java classpath vs path classpath path

国内10大前端团队网站

有思且行

技术 前端 大前端

如何解决 Kubernetes 的 DNS 延迟问题

倪朋飞

Kubernetes 微服务 云原生

Kubernetes 容器运行时演进

倪朋飞

Kubernetes 容器 云原生

关于Iterator和Iterable

shengjk1

Java Iterator和Iterable

阿里面试,一面就倒在了Java内存模型上?赶紧来看看

七哥爱编程

面试 Java并发 内存模型

回“疫”录:开篇

小天同学

疫情 回忆录 现实纪录 纪实

Scrum vs Kanban,如何选择

TerryLee

Scrum Kanban 敏捷开发 Worktile 研发管理

【SpringBoot】掌握这两个属性,你的测试类可以启动的更快些

遇见

Java Spring Boot Unit Test

你不必读完一本书

池建强

学习 读书

极客父母送给孩子的 ABC Book 就是这么 GEEK

魏彬(rockybean)

GEEK BOOK

像黑客一样思考

Fooying

黑客思维 黑客 安全攻防

Fire Fast 再深一层的是什么?

树上

管理 考核 Fire Hire 用人

一文搞定 equals 和 hashCode

shengjk1

Java equals vs hashcode

聊聊:Java

谢烟客

Java 编程 开发者 随笔杂谈 「Java 25周年」

死磕Java并发编程(1):探究Java并发机制的底层原理

七哥爱编程

Java Java并发 并发编程

简单到不可能失败 —— 《微习惯》

零和幺

读书笔记

程序员职业鉴赏

陆陆通通

程序员 加班 职业病 鄙视链

用你喜欢的 emoji 作为页面的 favicon 吧 🎉

遇见

CSS html favicon emoji

Java中的Stream用还是不用

孙苏勇

Java 流计算 程序设计 性能

公司大了,人多事杂,如何落地项目制?

树上

项目制 落地 公司管理 业务线 考核

Java 1.0已经25岁了,你使用的第一个Java版本是什么?| 欢迎评论-InfoQ