1996年1月23日,Sun Microsystems发布了一个新闻稿,宣布Java 1.0的可用性:
加利福尼亚州帕洛阿尔托,1996年1月23日-Sun Microsystems,Inc.的新成立的运营公司JavaSoft今天宣布,可以从http://java.sun.com下载Java™1.0编程环境。
Java的一次写入运行无处不在的功能以及易于访问的特性,促使软件和Internet社区将其作为事实上的标准来编写复杂网络的应用程序, JavaSoft的新任总裁Alan Baratz说。我们很高兴邀请开发人员立即下载Java 1.0并开始构建下一个杀手级应用程序。
"改进Java以创建此强大的1.0通用发行版对我们的团队而言是一项巨大的成就," JavaSoft Java语言和应用程序总经理Ruth Hennigar说。 "自3月份首次发布Alpha版以来,我们收到了许多开发人员的反馈,并且功能和可靠性得到了改善。该版本包含软件开发人员告诉我们所需的组件,即用于运行和测试applet的Java Applet Viewer; Java编译器;原型调试器和Java虚拟机来运行基于Java的程序。我们还包括了用于图形,音频,动画和网络的类库。
Sun一直在1995年以前发布Java的alpha版本,包括在Netscape Navigator和Mosaic中提供其技术,但是1.0版本的发布(此后不久是1.0.1和1.0.2)标志着旅程的开始,并继续这天。甲骨文去年庆祝Java发行alpha版本25周年。
新兴的互联网的最初成功和广泛的可用性帮助将Java推向了大众,并且免费提供编译器和库这一事实与当时工具的可用性发生了巨大变化。像gcc这样的开源项目早于十年,但是大多数操作系统只有用于构建交互式图形软件的商业工具。小程序可以被编写,发布到互联网上,然后可以在各种不同的操作系统上运行的事实在当时是独一无二的。
在最初的新闻发布中,Sun Microsystems表示Java 1.0可用于Solaris,Windows 95和Windows NT,并承诺在次年年底发布适用于macOS的版本。当Apple和NeXT合并以创建macOS时,Java是操作系统的默认安装,并且将Objective-C运行时桥接到Java以具有JavaWebObjects,这是Objective-C WebObjects堆栈的Java化端口。 (今天,在某些Apple网站上的某些WebObjectApplications或.woa扩展中仍然可以看到Java WebObjects堆栈的遗留物。)IBM承诺为OS / 2和Windows 3.1提供端口。从那时起,Java被许可方就可以了。
尽管Java已经发展了许多年,但JVM的核心一直保持稳定性-到目前为止,用Java 1.0编译的应用程序仍可以在现代JVM上运行,尽管速度更快。字节码格式(大部分)保持不变;取而代之的是,随着时间的推移,这种演进引入了很少的字节码(例如invokedynamic)和其他属性类型(module-info)。 Java中以向后兼容的方式引入了一些泛型(如泛型),而无需进行任何更改,因此它们可以继续在较早的JVM上运行。
可悲的是,JVM通常被用作安全漏洞的载体,并且为了保持安全性,需要对浏览器中的JVM进行频繁更新。随着其他浏览器内插件类型的流行(例如Flash,我们已经在本月早些时候说了再见),Java从浏览器降级到了服务器,在Java中它随J2EE平台(现在为JakartaEE)的流行而增长。浏览器内技术继续是恶意软件的媒介,只是这次针对的JIT是执行JavaScript的JIT,其名称的存在归因于Java早期发布到浏览器中,但与此无关。
在此期间,Java很少超出编程表的顶部,在C上排名前两位,而在Android版本中使用Java源代码(如果未命名)为其Dalvik提供动力VM应用程序看起来将与我们再呆十年。类似C的语法的延续及其在行尾使用分号的坚定态度可能看起来过时了,但当时为C开发人员提供了一种轻松过渡到该语言的方法。与1996年编译的C程序不同,由于32位和64位JVM的发展以及Shenandoah和ZGC等高级垃圾收集器的发展,Java应用程序仍然可以运行,而且运行速度显着提高。
Java在嵌入式领域的成功-毕竟最初是作为机顶盒编程语言设计的-几乎不那么明显。尽管Java出现在Blu-Ray上,并且JavaSIM规范包含在SIM和PIN芯片中,但它也许并没有掀起IoT世界的革命。但是,嵌入式Java利润丰厚,这也是Oracle收购Sun Microsystems的原因之一,该公司至今仍在开放环境中管理语言和运行时,其中包括将GPL引入代码库的OpenJDK发行版(尽管Java是免费提供的,直到被收购后它才是开源的)。
也许Java的持久遗产不仅是将面向对象的功能引入支持Internet的浏览器,而且是JVM本身。正如Java(以及JavaScript)所显示的那样,如果您使用的语言与处理器无关,那么运行时就可以与处理器无关(JVM字节码,JavaScript源代码,WASM),那么无论平台如何,执行引擎或翻译引擎都可以执行该代码。最重要的是,它使硬件得以发展-从32位到64位,从PowerPC到ARM再到RISC-V-仍然不需要原始作者的任何已编译代码更改。
JVM不再仅由Java使用,而是由建立在JVM之上的其他语言使用,例如受Java启发的派生工具(如Kotlin和Scala)到非Java语言,如JRuby和Jython。 Oracle的Truffle和GraalVM项目展示了如何在Java之上构建JVM并优化语言,这些语言否则将无法利用这些运行时优化。随着Java语言的发展,引入了轻量级线程和记录,这些更改将使JVM向前发展,以支持将来更多的奇异运行时。
Java和JVM可能正在接近中年,但是它们已经有数十年的使用和改进了。
您使用的Java的第一个版本是什么? 在下面的评论中让我们知道。 上周在InfoQ上收集的内容汇总于每个星期二发送。 加入由超过25万名高级开发人员组成的社区。 查看范例 选择您同意的国家/地区,我同意InfoQ.com按照本隐私声明中的说明处理我的数据。