服务器端javascript优于java的优点

时间:2012-05-13 09:54:22

标签: java javascript performance server-side serverside-javascript

我是服务器端javascript编程的新手,我正在尝试理解它与传统服务器端java之间的区别。 有什么显着的差异以及为什么SSJS会变得流行? SSJS如何比Java更好? 从外行人的角度来看,我认为JS在性能方面要慢于Java,主要是因为它是一种解释型语言。

此致 阿南德

5 个答案:

答案 0 :(得分:8)

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

http://nodejs.org/

很确定它是许多commonjs库开发等的推动力。

我看到评论的结果是,当客户端和服务器端代码使用相同的语言时,它会使生活更轻松。对于我所研究的节点项目,最初只有3个程序员用于所有事情,而且我们或多或少地全权使用我们想要的任何技术。这导致了一些争论,因为每个人都有不同的背景;但当有人建议使用nodejs时,一个的原因似乎是一个好主意,javascript是我们共同拥有的东西。

但是,我不认为节点的成功主要是因为它使用了js;这是关于设计。我喜欢它比我使用的大多数其他服务器端技术(Rails,PHP,cgi,mod_perl,mason)更喜欢它,我可能也喜欢它,无论如何界面中使用的语言。但是它是。

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

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

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

答案 1 :(得分:7)

  

这与传统服务器端java

之间的差异

首先,Java和JavaScript没有任何共同之处。它们是两个完全不同的东西。记住这一点。

  • 我认为很多人喜欢服务器端JavaScript,因为他们可以使用一种语言。他们在服务器上也使用JavaScript,而不是使用其他语言(如Java,PHP或Ruby)。此外,许多网络程序员都熟悉JavaScript(因为他们在客户端上使用它),所以他们很了解它。

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

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

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

答案 2 :(得分:2)

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

如果您已经了解JS,则不应该学习一种新语言来进行服务器端工作。

答案 3 :(得分:2)

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

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

我不是说Java比js更好(尽管我认为它对于大型服务器端项目更好),但我认为大多数js服务器端用户都使用它,因为他们已经对js感到满意,所以他们不想改变它。

答案 4 :(得分:1)

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