net与sunjava 策略总体.docx

上传人:b****4 文档编号:3913125 上传时间:2023-05-06 格式:DOCX 页数:25 大小:57.03KB
下载 相关 举报
net与sunjava 策略总体.docx_第1页
第1页 / 共25页
net与sunjava 策略总体.docx_第2页
第2页 / 共25页
net与sunjava 策略总体.docx_第3页
第3页 / 共25页
net与sunjava 策略总体.docx_第4页
第4页 / 共25页
net与sunjava 策略总体.docx_第5页
第5页 / 共25页
net与sunjava 策略总体.docx_第6页
第6页 / 共25页
net与sunjava 策略总体.docx_第7页
第7页 / 共25页
net与sunjava 策略总体.docx_第8页
第8页 / 共25页
net与sunjava 策略总体.docx_第9页
第9页 / 共25页
net与sunjava 策略总体.docx_第10页
第10页 / 共25页
net与sunjava 策略总体.docx_第11页
第11页 / 共25页
net与sunjava 策略总体.docx_第12页
第12页 / 共25页
net与sunjava 策略总体.docx_第13页
第13页 / 共25页
net与sunjava 策略总体.docx_第14页
第14页 / 共25页
net与sunjava 策略总体.docx_第15页
第15页 / 共25页
net与sunjava 策略总体.docx_第16页
第16页 / 共25页
net与sunjava 策略总体.docx_第17页
第17页 / 共25页
net与sunjava 策略总体.docx_第18页
第18页 / 共25页
net与sunjava 策略总体.docx_第19页
第19页 / 共25页
net与sunjava 策略总体.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

net与sunjava 策略总体.docx

《net与sunjava 策略总体.docx》由会员分享,可在线阅读,更多相关《net与sunjava 策略总体.docx(25页珍藏版)》请在冰点文库上搜索。

net与sunjava 策略总体.docx

net与sunjava策略总体

.NET策略和SunJava的策略

目录

企业测评基础1

C++与垃圾回收10

垃圾回收不是自动变速10

Java版本历史12

.net和java的体系结构14

Sun公司的基于Java的策略的开发工具20

Java和.Net的优缺点23

1.Java是简单的23

对.NET策略和基于Java策略的其它挑战29

企业测评基础

策略的定义:

1.可以实现目标的方案集合;

2.根据形势发展而制定的行动方针和斗争方法;

3.有斗争艺术,能注意方式方法;

4.计谋,谋略。

.Net的发展策略

四年的时间对于历史而言只是沧海一粟,而对于一个商业公司而言,却足以重生几回。

从微软提出.NET战略到现在也接近四年了,而今的我们应该怎样去看待.NET四年走过的历程,怎样去评价.NET战略。

微软总裁兼首席执行官——史蒂夫·鲍尔默

.NET的激情起航

2000年6月22日,这是一个所有“微软人”都应该记住的日子,因为从这一天起,微软公司将下一场赌注,一场押上全部身家的世纪豪赌——这一天,比尔.盖茨向全球宣布其下一代软件和服务,即Microsoft.NET平台的构想和实施步骤。

新一代的Microsoft.NET家族产品和技术替代了此前“下一代Windows服务(NGWS)”的提法,它涵盖了帮助软件开发商构建下一代互联网服务和给予新一代智能互联网设备强大功能的软件。

此外,微软还宣布了基于.NET平台的新产品计划,其中包括新一代的微软windows操作系统、WindowsDNA服务器、微软Office、MSN互联网网咯服务、VisualStudio开发系统。

microsoft.NET,最初被认为是下一代视窗服务,是于2000年6月20日日在微软的2000年论坛上首次提出的。

它是微软发展历史中最雄心勃勃的战略性目标,而且,它也将最终影响微软的整个产品线。

TestAge中国软件测试时代。

尽管自从.NET被引进以来,曾带来过争论和混乱,实际上,它仍是一个简明的策略,具有三个关键要素:

.NET构架及工具,.NET企业服务器,以及.NET构建的服务。

所有这三个要素都从根本上为XML和WebServices提供了基本的承诺,保证了运用一个基于松藕合,Internet标准,技术独立,应用程序之间通讯的计算模式。

.NET的核心包括一个虚拟的机构,叫做公共语言运行库(CLR);一组.NET构架类;以及ASP.NET,一个用于应用程序和WebService快速开发的编程构架。

所有这些共同称为.NET构架。

该战略中的第一个关键要素,.NET构架,引进了一个统一的结构,它代替了以前VB,MFC——通常针对C/C++开发人员——以及ASP不同的开发方法(见图1)。

 

.NET战略的第三个关键要素,.NET构建的服务,包括一群根本上通用的,用于如身份,鉴定和通知等领域的WebServices。

微软正在更新它的基于Internet的服务,使它们成为.NET前景完整的一部分。

这些更新包括用于用户身份识别,鉴定和付费的Passport;用于电子邮件信息的Hotmail;用于出席,通知和其它实时通讯服务的MSNMessenger;以及其它MSN性能。

微软计划进一步扩大该清单范围,包括软件发布,个性化和其它服务。

TestAge中国软件测试时代。

.NET包括一切。

.NET战略将最终影响微软的每个产品。

例如,PC用户用的WindowsXP操作系统将为全体用户和Passport用户身份识别服务提供统一的登录服务。

VisualStudio.NET的目标平台,便携PC平台,也将期待着未来的.NETCompactFramework。

从近期来说,成为.NET的一部分就是围绕XML和WebServices构建。

最终,成为.NET的一部分将意味着对.NET构架和.NET服务的承诺。

.NET重要技术思考

.NETRemoting

从COM(ComponentObjectModel)时代到DCOM(DistributedCOM),微软扮演了一个推动者的角色。

如果说COM提供了一个Windows平台上的对象通讯技术,并且逐渐成为应用程序之间彼此通讯及互动的技术主流,那么DCOM则是解决了计算机的通信和互动技术。

COM的着眼点是在于同一台计算机上不同应用程序之间的通讯需求,跨到另外一台计算机之外,就不是一开始COM所设想到的领域。

.EnterpriseServices

从一个很直接的感觉来说,EnterpriseServices只是对于COM+的一个包装,从使用方式和技术实现本身而言,和vb或者VC下使用COM+服务没有本质的区别,而更多的只是在于多了一层托管代码的包装,让.NET开发人员能够比较顺利的使用这些服务的功能。

WebService从一开始,微软就将其作为“重头戏”推出,并且饶有意思的增加了XML,然那个“XMLWebServices”就成为了.NET战略中一个非常重要的术语,就如微软的白皮书所言“Microsoft®.NET是MicrosoftXMLWebServices平台”,微软通过.NET来改变现有的互联网络结构,“Windows正在走向过去”这样的宣传是在于希望各个子系统之间的通信完全基于WebService,那样的话,作为Win32开发人员一直困扰的组建注册,分发等等一系列问题都能够得到解决,并且能够用更多的语言更多的平台去开发应用。

“一切皆是WebService”,这是一个冒进的举动,至少对于4年以前的世界,而这四年以来,虽然WebService有很多很多的优点可以让我们“歌功颂德”,但是不是“万金油”,比如一直称垢的性能和安全问题也阻碍了WebService一统天下,于是其他分布式应用架构在特定的领域依然能够有自己的生存空间。

XMLWebServices的内置集成则使ASP.NET成为WebService应用的最好实现,日前市场上相当大部分的WebService都是基于ASP.NET的,在这点方面ASP.NET已经远远超出Java社群的技术,包括JSP,包括Struct,包括JSF还有其他相关的Web应用技术,在ASP.NET都能够得到非常好的集成。

ADO.NET

相信大家不会忘记ADO(ActiveXDataObject),我想Windows上面数据库开发流行它功不可没,通过统一的接口来实现对于数据库的访问,从而屏蔽复杂的数据库访问协议。

而到了.NET时代,ADO.NET进一步将数据访问“进化”,不要以为ADO.NET只是ADO的一个升级,在ADO的技术上提供了一个托管类库,除了都是数据访问框架,其他没有太多本质的关联。

这个世界本来就是一个需要不断探索的世界,.NET同样如此。

从总体上来说.NET,经历从狂热到迷惘,在到务实,从而逐步走向成熟

 

Java的发展策略

Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。

C++与垃圾回收

垃圾回收不是自动变速

最近几天遇到的好几个和内存回收有关的C++程序的bug。

有对同一个指针两次调用delete;还有在delete了一个对象之后又通过其它地方保存的指针调用了这个对象的方法。

当然从开始学C++就明白要绝对避免这些问题,但是如果两段没有配合好的代码在callstack里相隔几十个函数调用的时候,避免并不像一开始想想的那么容易。

造成内存回收问题的根源在于程序的复杂度增长带来了程序运行时的不确定性,程序员无法准确判断一个对象真正不再被使用的时机。

最著名的不确定性的来源当属多线程。

但是单线程的程序也会有及高的不确定性

从架构设计的角度看,我们应该尽量通过合理的设计来减少这样的不确定性。

但是,从实际看来,很难把这种不确定性降低到能够准确判断一个对象可以在哪行代码的位置被回收的程度。

而且,如今的程序要集成不同的API。

这些API和消息处理线程集成的方式往往有很大差别,这些差别的细微之处很少被文档完全提及,即使文档完全描述了这些细节,程序员也无法从中分析出两个或者多个不同的API集成在一起会发生的所有情况。

C++成了一个标杆——人们开始认为C++有的特性都是大型软件开发必需的,C++没有的特性都是大型软件开发可选的——前者就像汽车中的变速箱,是必需的;后者就像自动变速箱,高手是可以不用的。

垃圾回收是C++始终不曾具备的特性,但是我开始认为它不是自动变速箱,它是每个大型软件的开发都不可缺少的。

抛弃垃圾回收的人认为只是把驾驶的汽车从自动变速换成了手动变速,其实是把一个好的变速箱换成了一个漏油的变速箱。

Mosaic浏览器

1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论后,Green团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。

他们认为随着Mosaic浏览器

的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。

此时Green小组组员正在在印度尼西亚爪哇岛(Java)度假时,于是他们把Oak改名为Java。

HotJava

∙1994年6月、7月间,在经历了一场历时三天的脑力激荡的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。

他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。

作为原型,帕特里克·诺顿写了,WebRunner,后来改名为HotJava。

  由于商标搜索显示,Oak已被一家显卡制造商注册。

于是同年,Oak被改名为Java。

当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CAFEBABE,即词组“CAFEBABE”(咖啡屋宝贝)。

  1994年10月,HotJava和Java平台为公司高层进行演示。

1994年,Java1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。

升阳公司的科学指导约翰·盖吉声明Java技术。

这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。

1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。

 

比较:

NET的优势在于其效率高,java的优势在于它有很多成熟的框架,他们优胜与lamp的原因在于他们的面向对象和事务

 

.net和java的体系结构

NET体系由公共语言运行库和.NETFramework类库所构成。

CLR是.NETFramework的核心执行环境,也称为.NET运行库。

.NETFramework类库是一个内容丰富的类集合,它可以完成以前要通过WindowsAPI来完成的绝大多数任务。

一、CLR概述

CLR主要负责托管代码的编译和运行。

在.NET中代码的编译分为两个阶段:

1.把源代码编译为Microsoft中间语言(IL)。

2.CLR把IL编译为平台专用的代码。

在CLR的控制下运行的代码常常称为托管代码(managedcode)。

托管代码的优点:

1.平台无关性。

源代码先编译成中间语言,运行时由CLR将中间语言编译成平台专用的代码,跟Java的字节代码一样,这样即可实现平台无关性。

2.提高性能。

首先,IL比Java的字节码作用还要大,因为IL是即时编译的,而Java的字节码常常是解释性的,在转换为平台可执行代码的时候可能会导致性能损失。

其次,.NET的即时编译器(JIT)(JustInTime)并非一次把全部代码编译完才执行,而是只编译调用的那部分代码,并把得到的这部分内部可执行代码保存起来,下次需要调用的时候无须重新编译。

Microsoft认为这个过程要比一开始编译整个应用程序代码的效率高得多,因为任何程序的大部分代码实际上并不是在每次运行过程中都执行。

最后,传统的编译器会优化代码,但它们的优化过程是独立于代码所运行的特定处理器的。

例如VisualStudio6优化了一台一般的Pentium机器,它所生成的代码就不能利用PentiumШ处理器的硬件特性。

而JIT与平台无关,所以它可以针对不同的机器完成不同的优化。

3.语言的互操作性。

互操作性即能将任何一种语言编译为中间代码,编译好的代码可以与从其它语言编译过来的代码进行交互操作。

在.NET中可以交互操作的语言有C#、VB.NET、VisualC++.NET、VisualJ#、脚本语言、COM和COM+。

二、中间语言

中间语言(IL)在.NETFramework中有非常重要的作用,所有面向.NET的语言都要先编译成IL,那么它们在逻辑上都需要支持IL的主要特征。

IL的主要特征:

1.        面向对象和使用接口

2.        值类型和引用类型之间的巨大差别

3.        强数据类型

4.        使用异常来处理错误

5.        使用特性(attribute)

下面详细讨论一下这些特性。

1.面向对象和接口的支持

Microsoft为IL选择的特定道路是传统的面向对象的编程,带有类的单一继承性。

此外IL还引进了接口的概念。

.NET接口与COM接口不同,它们不需要支持任何COM基础结构,例如,它们不是派生自IUnknown,也没有GUID。

但是它们与COM接口共享下述理念:

提供一个契约,实现给定接口的类必须提供该接口指定的方法和属性的实现方式。

2.值类型与引用类型

与其它编程语言一样,IL提供了许多预定义的基本数据类型,IL的一个特征就是值类型和引用类型有明显的区别。

对于值类型,变量直接保存其数据,在堆栈上面分配存储空间;而对于引用类型,变量保存数据的地址,引用类型的数据在堆上非配存储空间。

3.强数据类型

IL的一个重要方面是它基于强数据类型,即所有的变量都清晰地标记为属于某个特定数据类型,IL一般不允许对模糊的数据类型执行任何操作。

尽管强迫实现类型的安全性最初会降低性能,但在许多情况下下,我们从.NET提供的、依赖于类型安全的服务中获得的好处更多。

这些服务包括:

(1)      语言的互操作性

(2)      垃圾收集

(3)      安全性

(4)      应用程序域

下面我们分别阐述一下:

3.1语言互操作性中强数据类型的重要性

如果类派生其它类,或包含其它类的实例,它就需要知道其它类使用的所有数据类型,这就是强数据类型非常重要的原因。

假定VB.NET类中的一个方法被定义为返回一个整型,但C#中没有该名称的数据类型,如果要实现语言的互操作性,那么编译器就需要知道如何把VB.NET的整型类型映射为C#定义的某种已知类型,这样就可以在C#代码中使用返回的类型。

这个问题在.NET中是通过通用类型系统(CTS)(CommonTypeSystem)和公共语言规范(CLS)(CommonLanguageSpecification)来解决的。

首先CTS定义了可以在中间语言中使用的预定义数据类型,所有用于.NET的语言都可以生成最终基于这些类型的编译代码。

例如,VB.NET的整型实际上是一个32位的有符号整数,它映射为IL的类型Int32,C#中的int也映射为IL的类型Int32,这样C#代码和VB.NET中的整型数据就可以通过IL类型Int32建立相应的关系,从而实现互操作。

CTS除了定义了基本数据类型以外,还定义了一个内容丰富的类型层次结构。

通用类型系统的层次结构反映了IL的单一继承的面向对象的方法,如下图所示。

其次CLS和CTS一起确保语言的互操作性。

CLS是一个最低标准集,所有面向.NET的编译器都必须支持它。

3.2垃圾收集

垃圾收集器用来在.NET中进行内存管理,特别是它可以恢复正在运行中的应用程序需要的内存。

到目前为止,Windows平台已经使用了两种技术来释放进程向系统动态请求的内存:

(1)完全手工方式使应用程序代码完成这些工作。

(2)让对象维护引用计数。

第一种方式是低级、高性能的语言使用技术,例如C++。

这种技术很有效,能即时释放资源,但是最大的缺点是容易出错,遗忘释放内存,导致内存泄漏。

尽管现代开发环境提供了帮助检测内存泄漏的工具,但它们很难跟踪错误。

第二种方式是COM对象采用的一种技术,其方法是每个COM组件都保留一个计数,记录客户机目前对它的引用数。

当这个计数下降到0时,组件就会删除自己,并释放相应的内存和资源。

但它仍然需要客户机通知组件它们已经完成了内存的使用,只要有一个客户机没有这么做,对象就仍驻留在内存中。

在某些方面,这个比C++内存泄漏更为严重,因为COM对象可能存在于它自己的进程中,从来不会被系统删除。

.NET采用的方法是垃圾收集器,这是一个程序,其目的是清理内存,方法是所有动态请求的内存都分配到堆上,当.NET检测到给定进程的托管堆已满,需要清理时,就调用垃圾收集器。

垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,确定哪些对象有引用,哪些没有引用,没有引用的对象就不能再从代码中访问,即可以被删除。

Java就使用与此类似的垃圾收集器系统。

3.3安全性

3.4应用程序域

应用程序域是.NET中的一个重要技术改进,它用于减少运行应用程序的系统开销,这些应用程序需要与其它程序分离开来,但同时还需要彼此通信。

典型的例子是web服务器应用程序,它需要同时响应许多浏览器请求,因此,要有许多组件实例同时响应这些同时运行的请求。

到现在为止,孤立代码的唯一方式是通过进程来实现的。

在运行一个新的应用程序时,它会在一个进程环境内运行。

Windows通过地址空间把进程分隔开来。

这样,每个进程有4GB的虚拟内存来存储其数据和可执行代码(4GB对应32位系统),虚拟内存映射到物理内存,物理内存不能有重叠,这种情况如下图所示:

 

 

进程对确保安全有很大的帮助,而它们却存在性能的缺点。

往往多个进程需要一起工作,且需要相互通信。

例如进程调用一个COM组件,而该COM组件是可执行的,需要在它自己的进程上运行。

因为进程不能共享任何内存,所以必须使用一个复杂的编组过程在进程之间复制数据。

这对性能有非常大的影响。

避免性能影响的唯一方法是基于DLL的组件,让所有的组件在同一地址空间运行——其相关的风险是执行出错的组件会影响其它组件。

应用程序域是分离组件的一种方式,它不会导致因在进程之间传送数据而产生性能问题。

其方法是把任何一个进程分解到多个应用程序域中,每个应用程序域大致对应一个应用程序,执行的每个线程都运行在一个具体的应用程序域中,如下图所示:

    

 

中间语言具有强大的类型安全功能,在大多数情况下,除非代码明确使用不安全的特性,例如指针,否则它使用的数据类型可以确保内存不会被错误地访问。

 

三、程序集

程序集(assembly)是包含编译好的、面向.NETFramework的代码的逻辑单元。

它是完全自我描述性的,是一个逻辑单元,可以存储在多个文件中。

如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件,该文件描述了程序集中的其它文件。

可执行代码和库代码的程序集结构相同,唯一区别是可执行的程序集包含一个主程序入口点,而库程序集不包含。

程序集包含程序的元数据,元数据描述了对应代码中定义的类型和方法以及描述程序集本身,这样其它程序在调用该程序集的时候,不需要指定注册表或其它数据源。

通过元数据还可以将程序集放在不同的位置上而不影响数据的同步问题。

程序集有两种类型:

共享程序集和私有程序集。

私有程序集一般附带在某些软件上,且只能用于该软件中。

系统可以保证私有程序集不被其它软件使用,因为应用程序只能加载位于主执行文件所在文件夹或其子文件夹中的程序集。

共享程序集是其它应用程序可以使用的公共库。

 

四、.NETFramework类

.NETFramework类是一个内容丰富的托管代码类集合,它可以完成以前要通过WindowsAPI来完成的绝大多数任务。

这些类派生于与中间语言相同的对象模型,也基于单一继承性。

可以实例化.NETFramework类,也可以从它们派生自己的类。

.NETFramework类直观易用,它结合了VisualBasic和Java库的易用性和WindowsAPI函数的丰富功能。

.NETFramework类包括:

1. IL提供的核心功能,例如,通用类型系统中的基本数据类型

2. WindowsGUI支持和控件

3. Web窗体

4. 数据访问

5. 目录访问

6. 文件系统和注册表访问

7. 网络和web浏览

8. .NET特性和反射

9. 访问Windows操作系统的各个方面(如环境变量等)

10.COM互操作性

JAVA体系结构

1.3  Java类文件格式

 JVM无法直接解释Java编程语言,因此要先编译Java代码,生成1个或多个JVM能够解释的类文件。

类文件中包含了字节码、符号表、以及关于类或接口的其他信息。

类文件的结构是精确定义的二进制格式,确保任何JVM都能加载并解释任意的类文件,而无需考虑类文件是在哪里生成的。

 

1.4Java编程语言与API

 之前所讲的这些内容对程序开发人员而言都是透明的。

实际上,使用Java编程并不要求您理解Java的内部体系结构,而只要求了解如何将Java作为编程语言,以及如何使用不同平台上的各种API与底层软件和操作系统进行通信。

Sun公司的基于Java的策略的开发工具

UltraEdit——IDMComputerSolutions公司出品的著名文本编辑器。

这款功能强大的文本编辑器,可以编辑文字、Hex、ASCII码,可以取代记事本,内建英文单字检查、C++、Java、HTML、VB、JSP等多种语言的指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。

也可以编辑其他扩展名的文件。

(如.dat.sav等)最新版本的软件修正了老版本存在的一些Bug,并新增了对安全FTP(SFTP)的支持,整合了CSEHTMLValidator,增添了新的宏命令等二十余项新功能。

 Notepad++——是一套非常有特色的自由软件的纯文字编辑器(许可证:

GPL),有完整的中文化接口及支援多国语言撰写的功能(UTF8技术)。

它的功能比Windows中的Notepad(记事簿)强大,除了可以用来制作一般的纯文字说明文件,也十分适合当作撰写电脑程序的编辑器。

Notepad++不仅有语法高亮度显示,也有语法折叠功能,并且支援宏以及扩充基本功能的外挂模组。

 Eclipse——是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。

NetBeansIDE——是一个屡获殊荣的集成开发环境,可以方便的在Windows,Mac,Linux的solaris中运行。

NetBeans包括开源的开发环境和应用平台,NetBeansIDE可以使开发人员利用Java平台能够快速创建Web

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2