Java作为一种成熟的语言,同时作为一种优秀的平台,已被广为接受。很多的程序员对Java技术很精通。如果说在进行软件开发的时候,把Java这个平台抛掉或对之置若罔闻,对现在的开发者来说,这是一件忍痛割爱的事情。不管是为了更好的提高程序的性能或是稳定性,还是看中了Java非常丰富的类库,非Java应用程序在JVM上运行已经吊足了程序员的胃口。那么,Java可以为应用程序提供统一的运行平台吗?JVM能承担这一艰巨的任务否?
一、 引言
最近笔者读到一篇”Use Java to Improve Drupal s Scalability”的文章。作者(Geert Bevin)在使用Drupal(一套采用GPL授权的开放源码软件,它可以让个人或社区使用者很容易地发表、管理并组织一个网站里大量且多样的内容,已经有许多个人和组织采用Drupal来建立各种不同的网站)时遇到了程序稳定性方面的瓶颈。由于Drupal使用数据库作为缓存,而PHP在跨越Request时是不会保存对象的状态信息的,所以他决定使用Terracotta——一个JVM级的开源群集框架,能提供:HTTP Session复制,分布式缓存,POJO群集,跨越群集的JVM来实现分布式应用程序协调。使用这一替代方案后,尽管他也遇到了一些别的小问题,但稳定性的问题最终得以解决。同时,将PHP在Java下运行,还可以得到更加安全的运行环境。
上面的例子,我们可以看出,应用程序虽然采用了非Java的技术来构建,但最终在Java的环境下运行,并通过JVM来提高应用程序的稳定性和性能。而且,非Java编写的程序可以在JVM上更加快速的运行,这是非常有意思且有意义的事情。而在不久之前,也许三年或四年前,程序员经常报怨,一种语言编写的程序往往只能在特定的环境下运行。当然,这也包括Java本身。
当然,如今而言,这听上去有点不够人性化。因为不管是PHP应用程序,Ruby on Rails应用程序,或是.NET应用程序,似乎都可以在Java环境下运行了。更有甚者宣称,这三种应用程序在Java环境下的运行效率比他们在各自特定的环境下运行的效率还要高。
不管是为了更好的提高程序的性能或是稳定性,还是看中了Java非常丰富的类库,非Java应用程序在JVM上运行已经吊足了程序员的胃口。那么,Java可以为应用程序提供统一的运行平台吗?JVM能承担这一艰巨的任务否?
二、在JVM中运行.NET依旧能保证性能
Mainsoft公司最近发布了2.0版本的Mainsoft for Java EE(原名Visual Mainwin),同时发布的还有一份有趣的白皮书 。据该白皮书称,一个基于.NET的应用程序,若是借助于Mainsoft for Java EE技术交叉编译之后运行于Java EE平台上,那么在某些方面的性能甚至会强于原有的.NET应用程序。
交叉编译引擎将.NET Framework生成的Microsoft Intermediate Language(MSIL)交叉编译成Java的字节代码。然后基于Java的.NET Framework实现即可支持应用程序运行于Java平台之上。不但如此,Visual Studio扩展还能够允许开发者在Java EE平台上编写、编译、部署以及调试Web或服务器应用程序。
因为代码的交叉编译发生于字节码级别,所以其过程并不需要源文件转换——这就意味着开发者仍旧可以使用Visual Studio.Net作为他们可移植程序的开发环境。Mainsoft还使用Java重新实现了很大的一部分.NET Framework,包括ASP.Net、ADO.Net以及Web Service API等。不过因为Mainsoft for Java EE主要专注于Web以及服务器应用程序方面,所以类似Windows Form的组件则没有提供。
相关文章
Java能为应用程序提供统一的平台吗?
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛