平台比较(不说跨平台,我正在学习.NET,没有测试平台相关性质)
JAVA平台包含:JVM、JAVA语言和JAVA运行库
.NET平台包含:CLR,实现语言和CFL。
Java只能使用一种语言实现,但是.NET可以使用不同的语言实现。但是.NET使用不同语言实现的条件是这些语言(如果需要交叉调用)则需要限制在最小的CLR子集(CLS)之内,这样限制了不少的功能。而且为了照顾VB.NET这样的不区分大小写的语言,CLS中的大小写也是不敏感了(原生语言中还是敏感的)。
Java程序使用Java虚拟机运行,.NET程序使用内嵌的操作系统进程实现。JAVA虚拟机因为跨平台关系,不太可能使用核心态运行,但是.NET由于是亲生的,想怎么宠都可以。
.NET执行的时候生成的代码是本地代码,但是Java执行的时候生成的是中间代码(JVM规范),由Java虚拟机执行中间代码和本地代码之间的转换,就这点而言JAVA速度慢一点。.NET和Java都支持“按需调用”,也就是在用到某个类型(组件)的时候才去分析这个组件的引用并加载到虚拟机中。JAVA对于引用是生成引用表,类似VTable,这样第二此使用的时候直接使用这个VTable就可以找到“中间代码”;.NET则直接生成类型的本地代码,并修改PE文件的入口指向这个“本地代码”(好像又慢一点)。
Java提出了很多相关部署的东西,都是和Jar文件相关的,这样在部署的时候只需要一个文件就搞定(理想情况),其资源和class文件可以合在一起打包。更有甚者,其web Application的配置信息也可以一起打包。.NET提出了一个程序集的概念,和jar文件的初衷是相同的,但是其版本控制十分严格——看来m$是被Dell Hell给搞郁闷了——但是其文件不是在一个文件包里面(这个部分没有深究)
待续............
关于Java和.Net,持续更新中
最新推荐文章于 2024-07-12 15:51:39 发布