| 前言: 当J2EE出来的时候,我觉得很好,对J2EE的理解是一套Web开发的API标准. 这个标准由Sun公司负责制定,其他公司如IBM,BEA等去实现. 以至于后来.NET出来时对它有一些抵触, 最近对.net的资料进一步的接触,才知道原来他们是各有所长. l 共同点: 1. 都是基于web应用的开发. 2. 都是解释性的语言 3. 对象的销毁都基于垃圾收集器 4. 都支持Web Service的开发 5. 都支持XML,数据库访问 6. 安全控制 l 优缺点
内容 | J2EE | .net | 编程语言 | Java | C#,C++,VB,Delphi等多语言 | 可移植性 | 垮平台 | 只适合于windows平台 | 动态网页 | 第一次访问时编译成一个Servlet存储. | 访问时或第一次访问时编译成class.
| 网页实现手段 | Jsp | Asp.net | 网页开发 | 基于传统的HTML | 使用专门的WEB控件使得开发网业同开发程序一样的流程. 支持事件 | 基本类型实现reference | 用对象去封装一个基本类型 然后进行基本单类型与对象的相互转换 | 装箱 拆箱 | 中介语言 | ByteCode | MSIL | 编译方式 | 即时编译 | JIT | 执行宿主 | 虚拟机 | CLR | Web Service | 较弱 | 强 | 移动嵌入式开发 | KJava, J2ME | Evc,Evb, Windows CE | 网络传输类类型 | Class文件 | 源数据(MetaData)和MainFest | 数据库访问 | JDBC | ADO.net | 执行速度 | 慢 | 教快 | 本地接口 | 调用原生代码(JINI) | C++ 编程是唯一的二进制代码工具 | l 编程语言 J2EE是只用Java语言实现, 而.NET支持多种语言,甚至连Fortran, Cobol,phyto都支持.但是Java语言是与平台无关的,由此可看出, 一个是平台无关性,注重于移植性, 一种注重语言无关性, 为的是将各类程序员都吸引到一个平台上.从而可以说,sun注重客户的应用,让客户在一个平台上一次性投资,可在多个操作系统中运行. 而微软则是注重吸引程序员,达到市场扩大目的. l 动态网页 既然是web开发,就少不了动态网页,两者都有自己的开发技术,JSP与ASP. JSP与Servlet是J2EE中对网页处理的最主要的技术,通过将Jsp调用时编译成为一个Servlet,而碰巧的是Asp.net也是将aspx文件编译成一个Class文件,并有一些事件,其中有HTML的部分直接转换到类的Render含数中去. ( 这与以前的asp不一样,以前IIS将启动一个asp解释程序将*.asp文件解释翻译成一个纯HTML输出到浏览器中. 另外 原来在<% %>之间可以定义函数,而在asp.net中只能支持在<script> </script>书写函数) 另外有一点确实是微软很高明的一招,在.net中放入web.UI的控件,使的程序员不需要学习另外一种技术(网页制作),便可以象VB那样拖拖控件,更改属性,就可以开发出网页. 当然DreamWare,frontPage等等也都可以这样在Jsp中一样使用,但是明显没有这么方便.另外程序员需要学习这些工具的使用方法. 这也体现了一个原则, .net适合中小web应用,而j2ee多用于大中型web应用开发. 如果一个程序员j2ee开发一个web应用,需掌握的学习的技术点远远大于用.net开发. l 本地接口 J2EE更确切说应当是Java语言提供了JINI方式,通过这种原码编程, 为Java增加一些新的特性..net则只支持C++编译产生原生代码一种直接编译途径. l 发布时的环境 J2EE程序执行时需要安装JDK( 也就是虚拟机).同样 .net程序执行时需要安装.net FrameWork. 在Java虚拟机中, 一个Java类-其保存形式为class文件,被类装载器在需要时装入,然后由执行引擎执行.这种装入也可以通过网络,装入位于其它机器内的class文件.class文件由魔数,版本号,常量表,访问标志,this类,Supper类,接口,成员域,方法区以及属性区组成. ..ne则是运行CLR,实际上多个或一个类别组装到一个dll文件中,这个DLL文件首先有一个Mainifests,就是装配清单,装配清单中包含有多个class的MetaData,一个MetaData定义了一个Clss类型.CLR通过查询每个Dll中的manifests来加载执行一个新类型class.这样一来避免早期微软的COM接口必须要写注册表才能注册使用的弊端.有一点必须注意:所有的.net程序其实都是在一个被称为运行宿主进程内运行.因为所有的 .net程序都是以装配件.dll文件保存的,当然需要一个exe作为这些dll的宿主进程(asp.net提供了一个,IE也是,windows shell也充当的宿主进程) 的宿主进程创建了多个app domain,每个app domain类似于操作系统的Proces. |