5

我是服务器端 javascript 编程的新手,我试图了解这与传统服务器端 java 之间的区别。有哪些显着差异,为什么 SSJS 变得流行?SSJS 比 Java 好在哪里?从外行的角度来看,我认为 JS 在性能方面比 Java 慢,主要是因为它是一种解释性语言。

问候,阿南德

4

5 回答 5

8

我认为 node.js 与这种现象的兴起有很大关系:

http://nodejs.org/

可以肯定的是,它一直是许多 commonjs 库开发等的推动力。

我看到评论说,当客户端和服务器端代码使用相同的语言时,它会让生活更轻松。对于我从事的节点项目,最初只有 3 名程序员负责一切,我们或多或少全权委托我们使用任何我们想要的技术。这引发了一些争论,因为每个人都有不同的背景;但是当有人建议使用 nodejs 时,它看起来是个好主意的一个原因是 javascript 是我们所有人的共同点。

但是,我不认为node的成功主要是因为它使用了js;这是关于设计的。与我使用过的大多数其他服务器端技术(Rails、PHP、cgi、mod_perl、mason)相比,我喜欢它,而且无论界面中使用哪种语言,我都可能同样喜欢它。但是js是的。

所以这就是我的观点:我认为它与 javascript 没有什么特别的关系,而更多地与“javascript 社区”中的一些聪明的思考和发展有关,令人惊讶。考虑 PHP:我不认为 PHP 的成功与语言的设计(或性能特征)有很大关系,我认为这与它的使用方式以及人们如何构思服务器端编程有关10-15 年前,以及(密切相关的)他们必须依赖的工具。

那里的一个问题(在“聪明的思考”部门)是由节点背后的人做出的(非常有说服力的,如果你尝试一下)断言,例如,nginx,大意是异步的,事件驱动的模型是比传统的并行同步、线程驱动模型更适合服务器编程。我相信后者在 java 中占主导地位,即使我认为它也可以很容易地以另一种方式使用。另一方面,Javascript 最初旨在用于浏览器的异步、事件驱动世界,并且根本没有线程。再说一遍:与其说是语言,不如说是文化。

另外值得注意的是,主要使用 JSON 作为交换格式以及 NoSQL 数据库,如 couchdb(我使用过)和 mongodb(我没有使用过),它们在构建数据库时基本使用 JSON。Couchdb 还使用 js 进行一些服务器端编程(基本上是查询处理程序),大概是因为数据库文档是 JSON 格式的,这也很适合交给客户端。非常圆滑和聪明。一种语言,一种协议,从模型到视图;从某种意义上说,根本没有“交换”。

于 2012-05-13T11:12:40.477 回答
7

这个和传统的服务器端java的区别

首先,Java 和 JavaScript 没有任何共同之处。它们是两种完全不同的东西。记在脑子里。

  • 我认为很多人喜欢服务器端 JavaScript,因为他们可以使用一种语言。他们在服务器上和客户端上都使用 JavaScript,而不是使用另一种语言(如 Java、PHP 或 Ruby)。另外,很多 web 程序员都熟悉 JavaScript(因为他们在客户端使用它),所以他们理解得很好。

  • JavaScript 也可以像 Java 一样简单。如果您只有一个小项目,那么与 JavaScript 相比,Java 的开销可能会很大。回调之类的东西在 JavaScript 中可能非常优雅。

  • 此外,像 Node.js 这样的新框架使得使用这种语言很有吸引力。只要没有任何服务器端框架,你根本无法在服务器上使用 JavaScript。但是今天的语言发展得很好。

  • 我认为 JavaScript 的性能还取决于服务器。我不确定这一点,但据我所知,JavaScript 也可以(及时)编译。谷歌的 chrome 正在做类似的事情。此外,在大多数网站上,性能并不是什么大问题,因为性能主要是对数据库的 IO。实际创建 HTML 页面非常简单,没什么大不了的。并且:PHP 也在许多网站上被解释和使用。Ruby 比 Java 慢得多,但 Ruby on Rails 非常流行。所以性能似乎并不那么重要。更多的是关于语言的“好”和优雅。

于 2012-05-13T10:00:45.517 回答
2

这就像当你拥有像 JS 这样美妙的东西时,为什么要使用 GWT(来自谷歌的 java web 客户端)。

我认为这更像是一个心理学问题——人们倾向于留在自己的保存和已知区域,而不是转向未知语言。如果您在过去 5 年中使用过 java,并且知道它的所有缺陷,并且非常喜欢它,那么您就会开始说服自己,所有东西都应该用 java 编写,并且是最快的解决方案。

我不是说 Java 比 js 好(虽然我认为它更适合大型服务器端项目),但我认为大多数 js-服务器端用户使用它是因为他们已经习惯了 js,所以他们不想改变它。

于 2012-05-13T10:37:57.390 回答
2

从我的角度来看,主要优点是如果您拥有丰富的 JS 客户端界面,则可以简化客户端-服务器交互。如果您在服务器端和客户端使用相同的语言,您可以在它们之间共享公共代码(例如,如果您有一些业务逻辑,例如验证,并且它在客户端和服务器上使用,您可以在 JS 中实现一次并在多个地方)。

如果你已经了解 JS,你不应该学习一门新的语言来做服务器端的工作。

于 2012-05-13T10:00:24.020 回答
1

我想在这里补充一下我的观点。
一句话:Node.js 在使用推送技术而不是 websockets 的实时 Web 应用程序中大放异彩。
经过 20 多年基于无状态请求-响应范式的无状态 Web,我们终于有了具有实时双向连接的 Web 应用程序,客户端和服务器都可以发起通信,允许它们自由交换数据。
这与典型的 Web 响应范式形成鲜明对比,后者总是由客户端发起通信。此外,它全部基于在标准端口 80 上运行的开放式 Web 堆栈(HTML、CSS 和 JS)。

于 2015-06-07T12:05:23.527 回答