最近Oracle控告搜索巨人Google,宣称其Android智能手机操作系统上的Dalvik虚拟机侵犯了Java专利,这很自然让很多的开发人员感到担心。但大多数分析指出,这场诉讼对绝大多数Java开发人员将不会有多少的影响,但有些程序员却惊恐不安,他们已经开始寻找一种可替代的语言了。如果你也是这样,你是否考虑过转向JavaScript?
“什么?”,你也许会诧异。任何一个开发人员或多说少都知道Java跟JavaScript几乎没有任何的关系。Netscape最初是想把这个跨浏览器的脚本语言叫做LiveScript,但Sun微系统公司说服他们使用JavaScript这个名字——他们的想法是要把JavaScript当成一种HTML和Sun的全功能的Java之间的桥梁。
但如果Sun漠视JavaScript的存在而认为Java将成为Web上的真正语言,那它就大错特错了。Java最终发现它的用武之地只是作为一种服务器端语言,JavaScript在浏览器里给了它致命打击。如今,像CommonJS和Node.js这样的项目把JavaScript扩展到了更广的地方,使它也能够扮演Java在数据中心上的传统角色。在这样一种神奇的角色转换中,JavaScript正在成为一种多才多艺的,强大的,功能齐全的Web语言,而Java却日益显现沦为昔日COBOL语言的结局。
桥接客户端/服务器端
估计经历了那个年代的人都能回忆起当时以浏览器为平台的Java applet的那种笨拙,丑陋,激不起兴趣的样子,它更多给人带来的是烦恼,而不是真正的用处。即使Sun最近的在富(rich)互联网应用技术的尝试——JavaFX,也没有使其在对抗其现有的竞争对手(包括Adobe Flash,微软Silverlight)的进程上前进多少。客户端Java,看起来在出生之日就已被判了死刑。
相似的,服务器端JavaScript(SSJS)也从来没制造出多少火花。早在1996年,Netscape Enterprise Server就支持SSJS,但它一种昂贵且有专利的产品。它很快就被开源的Apache server抢光了所有的市场,SSJS也随着它消失了。
然而,在那些日子里,JavaScript的确成为了最适合Web页面的轻量级脚本语言。对比一下那个时期新兴的其它语言,例如Perl和Python,JavaScript运行缓慢而且语法怪异,只有有限的功能支持。更糟糕的是,每个厂商对其的实现还各不相同,导致开发人员浪费时间写一些修改补丁和相关处理。
至今,JavaScript已经走了一段很长的路。独立的、开源的JavaScript引擎的出现——包括谷歌的V8,Mozilla的SpiderMonkey,和WebKit的SquirrelFish Extreme——意味着任何人都可以在自己的代码里嵌入一个标准兼容的JavaScript解释器,无需你从头来开发它们。目前这三个项目正处在一场猛烈的性能竞赛中,每种引擎的性能都在稳定的进步。随着这些底层技术高速的成熟发展,JavaScript展现出了一种Java从未实现的态势:打破传统的领域壁垒,贯通服务器端和客户端。客户端的Java从未景气过,但服务器端JavaScript却杀了回来。.
服务器端JavaScript越来越受重视
现代的JavaScript引擎都能够单独的独立运行,这使得它们给SSJS提供了天然的便利。但目前JavaScript还只是主要的作为一种浏览器端的语言,这使得它缺少一些开发人员们期望的在其它环境中的功能特征。例如,客户端的开发人员通常是通过互联网加载单独的.js文件,而服务器端的开发人员需要一种更常用的方式,使代码程序能打成包。同样,JavaScript缺少常见的系统功能标准库,相比较而言,像C和Java这样的更加面向系统的语言在这方面要丰富的多。
CommonJS项目正试图解决这些问题。它的目标就是要创造出一套开放的、标准的API,提供诸如二进制对象处理,并行线程,文件、流、和套接字 I/O,系统日志处理等功能接口。除此之外,它还提议了一套代码和相关命名空间的模块格式标准。虽然这还是个很年轻的项目,但它的终极目标却是要让JavaScript开发人员在写代码时有一个CommonJS规范,写出的程序在不作任何修改的情况下可以在任何CommonJS兼容的平台上运行——不论底层的JavaScript引擎和操作系统是什么。
然而,更令人兴奋的却是Node.js这个项目,它和CommonJS的初衷很相似,而且实现了一些CommonJS API。可是,它却把SSJS的概念提升到了一个新的高度。它的最重要的一项革新就是实现了针对服务器端开发的面向事件的编程模型。这意味着不仅仅Nodo.js编程会让客户端的JavaScript开发人员感觉到得心应手——因为事件驱动模型是他们的开发规范,同时对于那些严重依赖于并行操作来支持多个并行用户的Web应用程序也是理想的选择。
如果这听起来像有一只手在向你招唤,请看看Node.js 编程例子。这个完全等效的“Hello,world!”程序是只用了6行JavaScript代码的完全的HTTP服务器端实现。
JavaScript:Web之王?
不要奢望JavaScript能把Java从唯我独尊的宝座上拉下来。CommonJS和Node.js都还有很多的功课要做,一种精确的对这两个项目的描述应该是:试验品。对于更多的改进,例如特定的优化和管理工具等,就像Oracle对JRockit JVM所做的这方面的工作将会使Java成为企业软件开发的一个很有吸引力的平台。
然而,JavaScript作为服务器端开发语言所带来的好处显而易见。它能够让Web开发人员用一种单一的语法实现所有的程序,去除了典型Web应用上的混乱和混淆。JavaScript的运行效率的改进日新月异,这是开发人员最看重的。而JavaScript语言本身也发展成熟,成为一种不错的语言,具有同时支持面向对象和函数的编程风格的特征。
还有另外一点需要注意:JavaScript是完全免费和开放的,它由行业内厂商组成的ECMA标准委员会维护。ECMAScript工作组过去处于停滞状态,但它已经克服了种种困难,使JavaScript继续得到高速的发展。而同时,Java,一边假装开放,有不伦不类的JCP(Java Community Process)负责,一边又受到Oracle潜在的法律诉讼的威胁。如果Oracle自己不能意识的现在的形势,那我相信开发人员们可是清清楚楚的看清楚了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangxin251858048/archive/2010/10/21/5956614.aspx
分享到:
相关推荐
标题中提到的“Javascript和Java语言有什么关系?两种语言间的异同比较”,说明文章的中心议题是探讨Javascript与Java这两种编程语言之间的关系,以及它们之间的异同之处。Javascript是一种广泛用于网页开发的脚本...
JavaScript和Java是两种在互联网开发中广泛使用的编程语言,但它们之间存在显著的差异。...无论是JavaScript的灵活性和前端优势,还是Java的稳定性和后端能力,都是开发者在项目选择中需要考虑的重要因素。
JavaScript和Java都是编程语言,尽管它们在名字上相似,但实际上是两种完全不同的技术。JavaScript,通常简称为JS,是一种轻量级的解释型脚本语言,主要用于网页和网络应用的客户端开发,它使得网页具有交互性和动态...
例如,你可以在Java服务端定义一个接口,该接口允许在运行时加载和执行JavaScript脚本来完成特定任务,这样就能轻松地切换或更新业务逻辑,而无需重新编译和部署Java代码。 在实际项目中,这种方法可以应用于许多...
在IT行业中,Java和JavaScript是两种非常重要的编程语言,它们分别在服务器端和客户端领域有着广泛的应用。然而,有时候我们可能需要在...在实际项目中,根据具体需求和Java版本选择合适的JavaScript引擎是非常重要的。
javaScript和java分别制作的锁屏 javaScript和java分别制作的锁屏javaScript和java分别制作的锁屏 javaScript和java分别制作的锁屏
Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...
5. **GWT(Google Web Toolkit)**:GWT允许开发者使用Java编写前端代码,编译器会将Java代码转换成优化过的JavaScript,使得Java开发者可以利用其熟悉的语法进行前端开发。 6. **Rhino JavaScript引擎**:虽然...
Java语言在处理JavaScript脚本时,常常会借助于一些库来实现,其中一个著名的库就是Rhino。Rhino是由Mozilla开发的一个开源的JavaScript引擎,它完全用Java编写,能够将JavaScript代码编译为Java字节码,从而使得...
volume book shows how to design and implement web applications with a model-based engineering approach, using the two most relevant technology plat- forms for web development: JavaScript and Java....
在IT领域,尤其是在Web开发中,Java和JavaScript的交互是常见的需求。这两种语言在不同的环境运行,Java主要在服务器端,而JavaScript则在客户端。在数据传输过程中,为了保证数据的安全,加密技术扮演了关键角色。...
### Java与Java Applet和JavaScript间的混编方法 随着互联网技术的发展,网页应用程序变得越来越复杂,需要多种编程语言和技术的支持。其中,Java、Java Applet 和 JavaScript 是三种重要的客户端脚本语言,在 Web ...
通过上述步骤,可以实现RSA在Java和JavaScript之间的加解密通信,确保数据在传输过程中的安全。然而,实际开发中可能还需要结合其他安全措施,如HTTPS协议、验证码、CSRF令牌等,以提升系统的整体安全性。
标题和描述中提到的“Java执行JavaScript代码”指向了一个特定的技术范畴,即在Java环境中执行JavaScript代码。这通常涉及到使用Java中的脚本引擎API,特别是那些支持JavaScript的实现。从提供的部分内容中可以提炼...
JavaScript加密和Java解密是两种在软件开发中用于保护数据安全的技术。JavaScript通常用于前端,为用户提供了交互式体验,但因为代码可被浏览器直接查看,所以可能存在安全风险。为了保护敏感信息,开发者可能选择对...
该项目是一个基于JavaScript和Java的学生会管理系统设计源码,包含647个文件,主要语言为JavaScript。项目文件类型包括190个JavaScript文件、152个GIF图片文件、61个CSS样式表、57个XML配置文件、55个JPG图片文件、...
本主题主要关注的是如何在Java和JavaScript之间实现可互操作的AES(Advanced Encryption Standard)加密算法,这涉及到128、192和256位的密钥长度。AES是一种广泛应用的块密码,以其高效性和安全性著称,广泛用于...
本项目是基于JavaScript和Java开发的javaweb高速公路模拟ETC收费系统设计源码,共包含325个文件。其中JavaScript源代码文件101个,GIF图片文件75个,HTML页面文件37个,Java源代码文件36个,CSS样式文件18个,...
Java和JavaScript是两种不同的编程语言,虽然名字相似,但它们在设计理念、用途、执行方式和语法特性等方面有着显著的区别。 1. 开发背景与公司: - Java是由SUN Microsystems(后被Oracle收购)推出的,它是一种...