前言: 当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.