发布于:2021-01-18 15:21:58
0
73
0
在本文中,NikoKöbler提出了一个有趣的想法:s JavaScript是否正像JVM一样成为通用的运行时平台?在Java的世界中,JavaScript社区现在可能恰好是10-15年前的地方。
我有机会在JAX 2016与许多人讨论了“ IT领域中的JavaScript”主题。我很高兴对这个话题有很多兴趣。不是所有与我交谈过的人都对JavaScript感到兴奋,但这很好。
我可以理解大多数关于JavaScript的问题。但是在大多数情况下,这与语言本身的复杂性无关。因为一旦您了解了JavaScript,复杂性就可以管理了。剩下的,有时还让我感到困扰的是,许多JavaScript框架和库的复杂性及其生命周期。关于内容,时间或质量(本主题将占据整篇文章)。
在Java中,我们习惯于成熟的标准和稳定性。我们可以指望很多事情。JavaScript还不是这种情况。目前,在Java的世界中,社区是10到15年前的地方。随着所有的跌宕起伏。有时我称JSX方言,这是React.js使用的 “类固醇上的JSP”。它使我想起了我们在JSP中经常遇到的问题。但这只是一个旁注,我真的很喜欢React.js。
一旦了解了JavaScript,复杂性就可以管理了。
JavaScript库的发展非常迅速。有人认为这种发展“太快”,因为他们无法跟上发展的步伐而错过了连续性。在大多数情况下,JavaScript库的估计半衰期为一年,在大多数情况下已经太高了。但这也显示了平台和语言规范的潜力。进化并非一成不变。这使某些人感到不舒服。人类害怕改变。不,实际上人类不害怕改变自身,他们害怕改变。人类是习惯的生物,最重要的是,爱自己的习惯。
运行环境
但是,让我们不理会JavaScript语言,并尝试考虑运行时环境。同时,JavaScript可在许多不同的设备上使用,不仅是浏览器和Node.js,还包括SmartTV,智能手机,各种微控制器(甚至我们的汽车)都可以运行JavaScript的“事物”。Nashorn直接在JVM上提供了JavaScript引擎,还有许多其他我将不提及的场景。是的,已经存在许多可能性,并且JavaScript的分布广泛。这使得将基于JavaScript的应用程序带给许多用户很容易。
这样,无需使用JavaScript本身编写应用程序;它们仅在JavaScript中运行。借助GWT,Vaadin,DukeScript和其他工具,已经有一些框架可以生成以另一种语言编程的可执行JavaScript代码。使用TypeScript,可以编写静态编写的代码并将其转换为标准JS。这样做时,可以将现有库用作依赖项,并针对其API进行编程。这是一个巨大的好处,因为可以(重新)使用现有的生态系统,并且它们不需要处理实现它们的语言。Scala.js遵循类似的方法来使用Scala代码开发类型安全的前端组件。通过使用适当的绑定,可以在Scala.js库(如jQuery,Angular,React.JS等)中使用并将此Scala代码转换为可执行的JavaScript代码。
也许我们必须将JavaScript引擎视为一种二进制运行时,例如JVM是一个二进制运行时。当然,有些人会问“为什么”。使用JVM,我们已经有一个适当的运行时,并且不想将这种不安全的JavaScript作为运行时。但是JavaScript真的那么不安全吗?我认为不是。特别是如果转译/可执行代码最初是用打字语言编写的。也不太可能有人编写Java字节码(好的,不是我们中的很多人这样做)。正如我已经提到的,分布非常广泛的用户群的分布以及因此的可及性非常容易,并且已经在许多部分进行了设置。
JavaScript可以做更多的事情
仅仅因为已经存在某种东西(例如JVM),并不意味着类似的东西(JavaScript运行时)也必须不存在。如果在社区和行业中没有任何兴趣和/或需求,那么JavaScript生态系统中就不会有这种发展。这就是我对经济学以及“供求关系”的了解。
整个JavaScript生态系统的发展仍处于起步阶段,但是已经存在许多东西。前端组件和库只是全局的一部分。JavaScript可以做更多的事情。但是仍然需要更多时间。我知道很多人都想不同意我并与我自相矛盾,并且几年后他们会以我的说法来反对我。但是,众所周知,“世界最终可能会出现五台计算机的市场”……
作者介绍