Node.js 创始人:Javascript 容器是简化服务器抽象的“先驱”践行者

简介: Node.js 创始人:Javascript 容器是简化服务器抽象的“先驱”践行者

众所周知,大多数服务器程序都运行的是 Linux 系统,它们由一个文件系统、一些可执行文件、一些共享库组成,它们可能与 systemd 或 nsswitch 等系统软件接口。

但由于服务器软件通常依赖于许多系统资源和配置,因此在过去部署它一直是一项挑战。而 Linux 容器的出现,就很好的解决了这个问题。特别是 Docker 进一步让 Linux 容器的使用得到普及后,操作系统级的虚拟化为分发服务器软件提供了极好的机制,每个容器映像都是一个无依赖性的随时可以运行的软件包。

Ryan Dahl 表示,尽管是在更高的抽象级别上,但 browser JavaScript 中也依旧能找到类似的封闭环境。直到 2018年,Cloudflare 的 Zack Bloom 推出了 Workers 服务,这才“促使我们思考 JavaScript 本身能否能提供一种新型的自给自足的服务器容器” —— “我们越能消除不必要的抽象,就越能接近‘The Network Is the Computer’的概念。

JavaScript 是通用脚本语言的“未来”

Ryan Dahl 认为,技术很难预测,但 World Wide Web (万维网、广域网)肯定会在 10 年后出现。随着越来越多的人类基础设施通过网络应用连接在一起,10 年后 HTTP、HTML、CSS、JavaScript 这些构成网络的标准肯定也会出现。因此,“我相信 JavaScript 将会继续得到开发和改进”。

网络异常,图片无法展示
|

我们知道,网络是人类信息的基本媒介,脚本语言则像是驱动网络发展的“基石”,这其中,JavaScript 不同于其他编程语言,因为它与这个基础设施紧密相连。

脚本语言对于解决许多服务器端问题很有意义,它允许更快、更便宜地编写业务逻辑,但大多数正在编写的代码不受计算的限制,而是受生产力的限制 —— 编写速度和开发人员的金钱成本。

脚本语言(Python、Ruby、Lua、Shell、Perl、Smalltalk、JavaScript)非常相似,在语法和 API 方面存在差异,但几乎没有其他可以与之对比的地方。这一点,相信每一位在 Rust 或 C 中工作过的人都能理解脚本语言的感受。

Ryan Dahl 总结称,脚本语言很有用,但它们几乎都是一样的,其中 “JavaScript 的使用要广泛得多,而且是未来的证明。因此,将 JavaScript视为通用脚本语言是有道理的”。

服务器软件高级别容器:JavaScript 沙箱

Javascript 中的沙箱并非传统意义上的沙箱,它是一种语法上的 hack 写法,指 Javascript 中处理模块依赖关系的闭包。

image.png

JavaScript 沙箱本身这个“容器”并非为了解决 Linux 容器所针对的问题,它的出现是其简单化的结果 —— 最小化了 web 服务业务逻辑的样板文件,它与浏览器共享概念,并减少程序员需要知道的概念(如在编写web服务时,很可能任何 systemd 配置都只是不必要的样板)。

提起 JavaScript browser API,相信每个网络开发者都知道,因为 JavaScript 容器抽象是在相同的 browser API 上构建的,所以开发者需要的经验总量减少了,这恰恰是 Javascript 的通用性降低了其复杂性。

在这个新服务器抽象层中,JavaScript 取代了 Shell,且比 Bash/Zsh 更适合编写脚本。JavaScript 沙箱可以调用 Wasm,而非像 Shell 那样调用 Linux 可执行文件。

综述

不可否认,JavaScript 是通用的脚本语言,也正是由于 JavaScript 的普遍性,一种新的类似容器的抽象正在出现 —— JavaScript 容器,它简化了服务器。

JavaScript 容器的出现并非意味着 Linux 容器正在“消亡”,这种抽象层次总是有用的。特别是对于编写的许多“业务逻辑”的开发者来说,当你建立一个网站的时候,或许大多数“web服务”可以通过使用 JavaScript 容器而不是 Linux 容器来简化。

目前,为了试图从根本上简化服务器抽象,为了进一步探索这些想法,JavaScript 容器或许就是一种“先驱”践行者。你是否也这么觉得呢?欢迎在评论区留言互动。

相关文章
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
815 12
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
1067 10
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
1429 17
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
400 8
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
595 2
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
440 1
JavaScript中的原型 保姆级文章一文搞懂
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
353 0