.net体系与java体系
对于.NET Framework体系结构,参考了"你必须知道的.NET"并”借用“别人的经典体系结构图从宏观上说明一下我的理解。

图1
简单的说下几个名词:
- CLR: 通用语言运行平台(Common Language Runtime),是.NET框架的核心,与Java界的JVM类似。是代码执行的大管家,提供CTS和基础服务。
- FCL: 类库(Framework Class Library),如图所示提供了很多的标准类型,方便程序设计人员,完成了程序设计基础性工作,作为初学者要知道怎么用这些类库。类库的根就是System。
- BCL: 基类库Base Class Library,作为FCL的基类库,IO、String、NET等等必须熟练的掌握。
- CLS: 公共语言规范Common Language Specification,是.NET开发语言必须遵守的规范的最小集合。
- CTS: 公共类型系统Common Type System,解决各个语言类型定义的不一致问题,成为了.NET体系中跨语言编程的规范,.NET所有语言都用这一个类型系统。
上图中CTS和CLS构成了通用语言基础架构CLI(Common Language Infrastructure)的一部分,CLI还包含CIL(常称为MSIL),CIL就是我们常说的IL代码,是所有的.NET语言编程生成的中间代码,其实就像汇编语言一样的中间代码,只不过IL是处于.NET和汇编语言之间的语言。这一点和Java中的字节码(Bytecode)类似,以后的文章会讲解它们的区别。
CLI、CTS、CLS和CIL的关系可以用下图来表示:

图2
具体开发运用程序时如下图:

图3
|
1
|
JAVA技术体系 |
说下我找到的JAVA相关的资料,JAVA只是粗浅的了解一些。有的可能说的不准确,希望错误的地方大家指出,对于JAVA来说就没有这么“庞大”了,毕竟JVM中只运行JAVA一种语言。
Sun官方所定义的Java技术体系包含Java程序设计语言、各种硬件平台上的Java虚拟机、Class文件格式、JavaAPI类库、来自商业机构和开源社区的第三方Java类库。
我们可以把Java程序设计语言、Java虚拟机、JavaAPI类库这三部分统称为JDK。(JavaDevelopmentKit),JDK是用于支持Java开发的最小环境。可以把JavaAPI类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。图4展示了Java技术体系所包括的内容,以及JDK和JRE所涵盖的范围。

图4
JAVA中的很多名词不是很了解,先贴几个:
- JPDA:Java平台的调试架构
- JavaFx:作为一个富客户端平台的下一步演进。它的目的是为企业业务应用提供一个轻量级的,硬件加速的Java UI平台。
- Swing: 所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heavyweight组件。比如JWindow,Dialog,JFrame
- 同时,由于AWT是通过操作系统实现的,所以AWT的组件只能采取各个操作系统的交集,组建数量少,功能少。而Swing则不依赖于操作系统,所以组件多,功能强。
- AWT: 是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。
同样JAVA的实现如图5

图5
图4是根据组成部分的功能划分的,按照技术所服务领域划分, Java技术体系可以分为四个平台,分别为:
- JavaCard:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。
- JavaME(MicroEdition):支持Java程序运行在移动终端(手机、PDA)上的平台,对JavaAPI有所精简,并加入了针对移动终端的支持,这个版本以前称为J2ME。
- JavaSE(StandardEdition):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本以前称为J2SE。
- JavaEE(EnterpriseEdition):支持使用多层架构的企业应用(如ERP、CRM应用)的Java平台,除了提供JavaSEAPI外,还对其做了大量的扩充并提供了相关的部署支持,这个版本以前称为J2EE。
目前作为Andriod基本取代了JavaME成为了移动领域开发的热点。JAVA体系相比.NET只多不少,不是一张图就能展示完的。本来想找个完整图展示所有的JAVA技术体系,可惜没有找到。
接下来说下我理解的.NET(C#)和JAVA的相关技术对应关系。有错请指出啊~~
|
.NET(C#) |
JAVA |
|
WPF/WinForm |
Swing等/AWT |
|
ASP.NET |
JSP、Servlet |
|
EntityFramework/NHibernate/ibatis.net |
Hibernate/ibatis |
|
Spring.NET |
Spring |
|
MVC |
Strusts |
|
Windows Mobile/Windows Phone |
Java ME/Andriod |
|
WCF/WebService |
WebService |
|
WF(Work Flow)- |
JBPM |
表1
.net体系与java体系的更多相关文章
- atitit.为什么java体系开发效率这样低的原因and解决
atitit.为什么java体系开发效率这样低的原因and解决 #---开发理念问题(影响度:很大的,2-3倍效率) mvc<>webform server control ajax< ...
- JAVA体系学习-导向
一:当前学习内容 数值类型处理总结,字符类型处理总结,日期类型处理总结 spring 事务源码分析 spring源码系列 二:当前学习 主攻:并发编程->RPC原理->MQ原理->- ...
- JAVA体系的线程的实现,线程的调度,状态的转换
java体系中线程的实现 1.使用内核线程实现 内核线程就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上,每个内核 ...
- 深入理解Java虚拟机 - Java体系
使用JAVA已经快三年了,但说来惭愧,一直以来认为Java就是Java语言本身,最多再包括一个JVM,对于整个Java的体系结构还是不甚明了,现在有时间把<深入理解Java虚拟机>这本书读 ...
- RSA体系 c++/java相互进行加签验签--转
在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java ...
- Java体系总结
一.Java SE部分 1.java基础:基础语法:面向对象(重点):集合框架(重点):常见类库API: 2.java界面编程:AWT:事件机制:Swing: 3.java高级知识:Annotatio ...
- JAVA中有一个特殊的类: Object。它是JAVA体系中所有类的父类(直接父类或者间接父类)。
接口往往被我们定义成一类XX的东西. 接口实际上是定义一个规范.标准. ① 通过接口可以实现不同层次.不同体系对象的共同属性: 通过接口实现write once as anywhere. 以JA ...
- 【从刷面试题到构建知识体系】Java底层-synchronized锁-1
在技术论坛中,经常看到一种言论:面试造火箭,干活拧螺丝.我们平时写的大部分代码的确是CRDU,再提一个层次,也无非就是揉进去复杂一些的业务逻辑,把一堆的CRDU组合起来. 那么问题来了:我们提倡的研究 ...
- Java体系
Java之父:詹姆斯·高斯林 java之前叫做“Oak”,后改名为Java.//Oak来源于橡树,java 来源爪哇岛的一种咖啡 Java语言平台 J2SE(Java 2 Platform Stand ...
随机推荐
- ByteCache
private static class ByteCache { private ByteCache(){} //256个元素,用于缓存-128到127 static final Byte cache ...
- servlet练习1
1. 编写一个Servlet,当用户请求该Servlet时,显示用户于几点几分从哪个IP(Internet Protocol)地址连线至服务器,以及发出的查询字符串(Query String).查询一 ...
- JS时间格式和时间戳的互转
//时间格式转为时间戳 function sjc(){ var date = new Date(); //时间对象 var str = date.getTime(); //转换成时间戳 } //时间戳 ...
- iframe中子页面父页面里函数互调
在iframe中很多要用的子页面父页面函数互调的情况,下面看一下各自用法,本人写个人网站的时候用过其他场景尚未试过 子页面调父页面 function fu(){ alert('父'); } funct ...
- Simple2D-19(音乐播放器)播放器的源码实现
使用 BASS 和 ImGui 实现音乐播放器 MusicPlayer. 将播放器和一个文件夹关联起来,程序刚开始运行的时候就从该文件夹加载所有音频文件.而文件夹的路径则保存在配置文件中,所以程序的第 ...
- Apache配置本地域名
打开Apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号. LoadModule vhost_alias_module modules/mod_vhost_alias. ...
- python环境准备以及easy_install和pip的安装
python3的安装: yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...
- 向oracle中的表插入数据的方法
向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...
- Pandas数据规整
Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...
- 【Java杂记】Equals 和 hashCode
equals 和 hashCode含义 equal:判断两个对象是否相等,如果相同,返回true 否则返回false hashcode: 返回一个int数 Object 默认(内部地址转化为一个数字) ...