对不起,Java,但JavaScript在浏览器、服务器和移动领域的成功让一些人相信它是真正的 "一次编写,随地运行 "的编程语言。
JavaScript是否取代了Java,成为新的 "一次编写,随处运行 "的编程语言?这完全取决于你的观点。而随着WebAssembly等技术的出现,Java可能会在一个新的 "一次编写,随处编译 "的范式中得到提升。
Java将在JVM工作的地方运行,在许多操作系统和硬件平台上提供可移植性,包括移动和嵌入式设备。Neutralino JavaScript/TypeScript框架的开发者Shalitha Suranga指出,对浏览器内应用来说,JavaScript一直是至关重要的,现在通过Electron框架等技术适用于桌面应用,通过React Native等框架适用于移动应用,并通过Node.js和Deno适用于网络后端。
通过NodeMCU等工具,JavaScript甚至适用于物联网和机器人开发。"数字产品制造商99x的软件工程师、Apache项目管理委员会成员Suranga说:"如今,我们能用Java做的事,也能用JavaScript做。他最近在Medium上发表了一篇观点,认为JavaScript,而不是Java,才是当今的 "一次编写,随地运行 "语言。
JavaScript从网络浏览器到服务器到设备
虽然Suranga的Medium文章宣称JavaScript是不朽的,而Java正在慢慢死去,但他不会说JavaScript正在杀死Java这种编程语言。相反,Suranga认为,在所有那些Java大放异彩的地方--桌面应用、网络服务器、网络客户端、移动应用、智能电视应用--JavaScript现在比Java更能发挥这些作用。特别是,JavaScript统治着网络浏览器,而Java小程序在那里未能站稳脚跟。即使是安卓移动应用,Java也已经让位于Ionic、React Native和NativeScript等跨平台的JavaScript框架。
但在负责监督Java标准版开发的甲骨文公司,人们对Java所谓的衰落而有利于JavaScript的说法持怀疑态度。"甲骨文公司Java平台组的开发者关系副总裁Chad Arimura说:"我们听说Java已经死亡15年了,它仍然是一个极其重要的平台。该公司于3月16日发布了最新版本的标准Java,即Java 16。
在与甲骨文公司竞争的Java运行时供应商Azul公司,该公司不仅强调了Java虚拟机 "在任何地方运行 "的优势,而且还强调了JVM提供的可扩展性,特别是在服务器方面。Azul的副首席技术官Simon Ritter说:"是的,JavaScript确实是完全跨平台的,因为它在浏览器中,并且在你想运行的任何平台上运行,"他补充说:"我认为,从服务器端的性能角度来看,Java仍然有很大的优势,绝对的。"
WebAssembly Java的新生命?
WebAssembly和Spring Native等技术为 "一次编写,随处运行 "的概念带来了新的变化。通过允许各种编程语言被编译成可移植的或本地的可执行文件,它们从本质上将语言与运行时平台解耦。开发人员可以在没有JVM的情况下使用Java。
WebAssembly二进制指令格式作为一种浏览器内编程的机制,WebAssembly是其他语言在网络上运行的编译目标。正在开发的JWebAssembly编译器项目旨在通过WebAssembly在浏览器中原生运行Java。WebAssembly也可以通过Wasmer运行时部署在服务器上。有了WebAssembly,Java可以去任何JavaScript去的地方。
尽管如此,Suranga仍然认为JavaScript在易用性和动态功能方面有优势。Suranga认为,虽然有一种说法是WebAssembly可能使Java不朽,使Java能够用于Web开发而不需要JavaScript,但开发者最终仍然可能会深入研究JavaScript。
同时,Spring Native允许使用Java编程来构建独立的可执行文件,而不需要JVM。Spring Java(和Kotlin)应用程序被编译为本地图像。GraalVM多语言运行时被Spring Native所利用,它刚刚进入测试版阶段。