JavaScript的征服服务器

Node.js的,Jaxer的,EJScript,RingoJS和AppengineJS结合JavaScript中,低开销,惊人的速度,和独特的曲折的熟悉

1996年时没有人相信苹果和AOL被评为最有可能成功,网景了它的光泽,新的JavaScript语言从浏览器和Netscape企业HTTP服务器始终不离不弃。这可能是第一个瞬间,有人试图让JavaScript中用得上的后台服务器,但它是不是最后一次。网景溶解的Mozilla后,用JavaScript新栈来来去去,因为真正的信徒尝试一遍又一遍。

现在一些15年后,JavaScript的服务器上盛行了。从最新一轮的信徒的嗡嗡声是,JavaScript是一种“新的Ruby,”一切以同样的理由网景开始的趋势。使用相同的代码,客户端和服务器,使生活更容易为大家 - 你永远不知道什么时候你需要从一个到另一个移动程序。我不能告诉你,我已经试过多少次,以确保在服务器上运行的SHA256散列算法的Java版本生成的输出作为客户端的JavaScript版本运行相同。

[同样在信息世界:13个开放源码开发项目,在enterprlse兴风作浪。请参阅“开源崛起编程工具“|,保持了与关键应用程序的开发见解致命异常博客开发者世界通讯。]

但有些东西是不同的这个时候。许多早期的努力都建周围相当漂亮的JavaScript引擎,如犀牛是提供完全可接受的性能。现在我们有一些新的JavaScript引擎如谷歌的V8,这是更快,使用了很多的即时编译想法,持续Java的虚拟机在过去几年。突然,JavaScript是迅速的,以至于人们认为使用它的速度,而不是它的便利性。这是完全可能的,所有的浏览器引擎的辛勤工作是使JavaScript的最快的动态语言和服务器端编程的最佳选择之一。

要了解的热情最新的破灭,我花了一些时间来安装更有趣的JavaScript服务器的几个,建设一些基本的网站。这些工具都是耐人寻味的,彻底的乐趣,并渗出 - 软件相当于一个新鲜的,乳胶漆干净的外套。这种新奇有利有弊,不过,因为一些文件的非常粗略,许多示威比吐出没有复杂得多的“hello world”。

我很喜欢反思我所知道的一切服务器的挑战和刺激,但我还是发现自己犹豫过远或过快推动这些新的思路。这些服务器是从实验室新鲜的尝试,而不是建立一个应用程序的奶奶对她进行检查光盘的利息款。一个企业的理想的项目可能是会来来去去在一瞬间一个或两个为期一天的活动的临时网站。现在,享受他们创造一些新的和有趣的,不是博彩业务。

JavaScript的服务器:Node.js的最炙手可热的明星无疑是Node.js的,即吸引的那种关注一个简​​单的包导致人们推出的术语“变形金刚迷”。博客如如何节点充满了提示和建议,因为人们揣摩多远,他们可以推动工具。还有的已经投入到项目的会议,人们都用的是“节点”作为一个动词,意写Node.js的代码。将语言仍是左右明年冬天为我们做出关于“在节点恶意代码”的双关语?我敢肯定的想法仍然会在这里,因为他们是强大的,但名称可能演变成别的东西,因为有大量的再造在这个空间。

最厉害的想法是,Node.js的是光,而替代品如Java较重。该工具的成功的秘诀似乎在于一个仿真陈述通常由Node.js的恋人重复:Java服务器使用的RAM 2MB只是创建一个线程。作为标准的Java Servlet容器创建为每个请求一个线程,很明显,有,一个相当沉重的服务器说,自由RAM 8GB只能处理8000人。当然线程经常使用更多的内存,这进一步切入开销和位置8000为上限。

线程被认为是一个处理器轻量级的方式来玩弄的工作量,但他们确实在市民满意处理几千个用户同时成功了。但是,当人们开始为越来越大的网站计数的开销的成本,一些开始不知道是否有更好的方法。

Node.js的是一个很好的解决方案。它仅使用一个线程在它的服务器,一切运行。当请求到达飞,Node.js的把他们一个在调用服务器时所指定的单一功能的时间和双手它们。,如果你认为一个Java服务器页面,Java Servlet中,或PHP文件正在建设一个网站的一个轻量级的方式,你会用这种效率印象深刻:

什么?如果你要指出的是,JSP或PHP文件可能是简单的单词“世界你好”,停在那儿。你必须考虑在表面之下,并记住所有的Java Servlet容器或PHP服务器为你做。你可能只是写的“Hello World”的JSP,但是Java将燃烧的RAM 2MB创建线程支持代码,最终将输出线的“hello world”。该JSP可能看似简单,但事实并非如此。

Node.js的确实很少,除了抢传入的请求,调用函数的网站,以及元帅,结果出了门。这从一而终让它兼顾所有在港口锤打请求,并迅速消灭它们。

我见过的标准问题的台式机容易处理的请求数千或多或少地同时进行。因为一切都在RAM中,可能在高速缓存中处理的数据进入和退出像闪电一样。简单的网站有着惊人的效率。

但必须认识到,一些本闪电般的速度来自于留出其他功能是非常重要的。在一个线程中运行一切意味着一切可以备份,如果该线程超载。所有这一切的Java程序把干净,清新的床单在床上度过的工作是值得的,如果一个线程需要很长的时间才能完成。

要做到这一点,我创建了一个简单的服务器,需要一个“n”值,并添加了所有的数字1到n之间。这,顺便说一句,是一个纯粹的CPU绑定的操作,应只使用两个寄存器。它不能获得通过等待RAM或文件系统挂了。服务器是一样快了。我不得不养活我的动力不足桌面(1.83GHz的英特尔酷睿双核),如N = 90000000号似乎都暂停了。之后,它是一个9七0。答案在它有16位。

当我喂胖号到服务器,我发现所有的其他请求会得到它后面线。当工作量短,Node.js的似乎是多任务,因为它得到的一切办得这么快。但是,如果你发现重关闭服务器的项目,你可以在它后面排队锁定了一切。

不要怕。如果发生这种情况,Node.js的恋人会责怪你,不是机器。你作为一个程序员的工作是预测任何延误,比如对于一个遥远的Web服务的请求。然后你把你的代码转换成两个函数,就像AJAX程序员经常做的客户端上。当返回数据,Node.js的将调用回调函数。在此期间,它会处理其他请求。

在右手连接到正确的思维心态,其结果可能是惊人的效率。当程序员花了几分钟,分离前后的延迟之后所做的工作,没有必要为该机从数据库占用RAM来存储状态的线程只是让这将是准备当数据最后显示出来或远程服务器,甚至是文件系统。这对程序员让电脑保持所有的状态不可否认容易,但它是更有效的这种方式。正如企业试图拼命,以避免库存占压资金,程序员的工作是这样想一个厂的老板,对待RAM作为资本,避免消耗任何它。

这种思维定式似乎是一个负担,程序员谁是用来让编译器去想这样的事情,但JavaScript程序员都习惯用回调函数的工作,因为这是浏览器的沙盒是如何配置的。这种分割是第二大自然给他们,这就是为什么他们的爱是如此。

我认为,Node.js就会快速增长超出了做简单的实验,并开始处理semiserious但重量轻的任务,如网上投票和简单的信息用户之间传递。如果服务器的工作量是简单和短暂的,Node.js的是一个很好的解决方案。该工具是稳定的,至少作为实验,出血边缘代码都和我想到的是熟练的JavaScript编程人员能够编写做一些令人惊讶的事情廉租铁回调的简单链。更大的责任将遵循?我想这是可能的,但现在这已经足够让大家消化。

JavaScript的服务器:Jaxer的另外,对于JavaScript的情人完全不同的选项Jaxer的,从Aptana,谁做了Ruby和PHP一个伟大的,基于Eclipse的IDE中的人一个很好的工具。Aptana的服务器端Java工具是非常不同Node.js的因为它更加着眼于使生活更容易为程序员而不是服务器。Jaxer的处理所有路过的幕后消息的复杂性,因此编写服务器端代码是这样写的客户端代码。

编写服务器端脚本Jaxer的是就像写一个网页之一。所不同的是,你偷偷属性RUNAT =“服务器”进入脚本标签。而已。其他的都是类似于建立一个支持JavaScript的网页。每当你调用一个函数与特殊runat属性,它会在服务器上执行,而不是浏览器。Jaxer的处理参数捆绑到一个AJAX调用的琐事。一个小属性控制运行这些代码,并Jaxer的处理所有传递和调用消息。

自由可以是一个有点令人不安的老手在JavaScript编程谁已经花了多年的思考,他们只编程客户端。现在,您可以通过仅仅将runat属性写入数据库或访问遥远的文件。

我发现它很容易使用该技术构建的Web页面。任何人谁是新的AJAX会发现它更方便,让Jaxer的处理所有捆绑和分拆数据的工作背景。这一切主要是自动的,更简单的比一些AJAX库,如jQuery的使用。

目前尚不清楚Jaxer的多少支持,享受这些天。服务器用来与Aptana的其他产品捆绑在一起,但现在它独自在一个角落里。我的猜测是,很多人并不需要那么多的帮助处理目前的AJAX调用如jQuery库简化这个过程。

对Jaxer的理想的工作将是一个地方的大部分工作是在客户端,但一些关键的部分,必须在服务器上运行上完成。这很容易使服务器上运行的代码,但它不是那么容易编写复杂的服务器端代码。有很多这样的工作,和人民编码这些工作时,它说,你可以在一个文件中写一个完整的Web应用程序的Aptana瞄准的人。

JavaScript的服务器:EJScript虽然在服务器上听起来很简单,使用JavaScript的想法,也有方法可以解决这一个令人惊讶的多样号。EJScript是从两个完全不同Jaxer的Node.js的但在结构上非常相似,经典的服务器设计,比如Ruby on Rails和Struts的。它使用内置的纯模型 - 视图 - 控制器模式,所以这将是谁的创建使用流行的Ruby或Java框架的网站,任何人都相当熟悉。

基本工具是一个命令行可以执行JavaScript或创建一个Web服务器。如果你想使用JavaScript编写你的服务器脚本,基本的shell将这样做。如果你想创建网站,该工具将使用标准的脚手架全部的创建,更新建了网站,并在数据删除(CRUD)操作。

整个过程类似于在部分Java和各种服务器框架编码因为EJScript包括一种方法,定义类和子类。这个面向对象的结构是JavaScript的,如果你问我一个很大的提高,但是这将是任何人谁是了解到JavaScript的浏览器不同。尽管大多数JavaScript程序员知道很多关于胡闹与周围的原型,他们可能不熟悉Java和其他面向对象的语言是如何打造出来的类型层次。

EJScript从Ruby on Rails的借用,因为脚手架的许多地方被定义为“约定不配置。”该目录是在标准位置,而且往往是最容易的解决方案是创建一个正确名称的文件。从JavaScript进一步区分,没有必要为一个尾随分号,如果你把在不同的行的语句。在Python和CoffeeScript的模型击败了旧的C和Pascal世界观。

有关:
12 第1页
页面1的2
IT薪资调查:结果是