java有非托管代码吗,为什么要托管代码

java和.net的异同?

java的特色,网上多得是!这里主要补充一些实际的例子!

创新互联-专业网站定制、快速模板网站建设、高性价比昌都网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式昌都网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖昌都地区。费用合理售后完善,十载实体公司更值得信赖。

1,用java开发业务教复杂的程序,相对来说要轻松一些!因为java社区丰富!本身灵活度很高,并且是OO的语言!可以套现设计模式!

2,java的多数框架都是开源的!学习java很方便!成本低!(.net不开放源码)

3,.net是一个框架,与java语言不相关!具体可以与一些开源框架比较,例如spring,webwork,hibernate等等.

4,java的执行效率没有.net高!

综述,.net适合做网站,中型的!java适合做后台,企业系统,大型网站!

java与.net的相同:

1.都有虚拟机

2.都有庞大的类库

3.代码都在虚拟机保护模式下运行

java与.net的不同:

1.java是多次运行时都解析,而.net是在第一次运行时解析后,以后执行的就是本机代码

2..net虚拟机代码公开,各种语言都可以基于.net虚拟机进行开发

3..net暂时不支持跨平台,不过只要虚拟机一跨平台,你所有的程序就跨平台了.

你可以通过这个链接引用该篇文章:

托管代码和非托管代码有什么区别

广义的说,托管代码就是集成在你所使用的开发平台内的编程语言。例如:目前最常见的

.Net

运行库里集成了VC++,

C#,

VB,

F#...等20多种语言的构件和处理功能。

托管代码:

”托管“的含义就是,这些语言的后台(隐性的)操作都由这个管理系统(.Net)完成了,你把你的编程委托给了开发平台(库)来完成。当你使用这些语言时,一些系统资源的调用、回收、编译……各种工作都由它来完成,你只需要专注于程序功能的实现即可。

非托管代码:

就是指不在你这个集成开发环境里,而是使用其它的开发平台写出的程序(代码)。比如说java语言(不是jscript),basic语言(不是VB),C语言(不是VC/C++/C#)等等……它们也有自己的开发平台和程序,用这些语言写出的程序就属于”非托管“。

当非托管的代码在你的托管平台上运行时,你的托管平台就不能很好地处理一些后台(隐性的)操作,就需要编写额外的代码来使它们变得和谐并且安全。

举个最简单的例子:

C和汇编语言,它们是最早期进入计算机领域的高级语言(汇编已经不能算高级语言了:)),它们可以直接对CPU、内存、总线、I/O、硬盘等硬件进行操作(读/写),像DOS、Windows、iOs这些操作系统都是用它们写的。

所以你在.Net集成环境中直接使用这些语言时,会遇到很大的阻碍,阻碍来源于所谓的”托管平台“,它认为这些操作是不安全的,就会拒绝编译和执行。

但这些语言的特点是操作直接、速度奇快(跟托管平台比),而且专用性和针对性极强,当我们需要运行具有上述特点的程序时,C和汇编可以说是最理想的语言了。要想让它们和托管平台”和平共处“的话,就需要编制额外的代码让它们符合这个托管平台的安全和管理规范,还需要有非常高深的编程功底。要不然等待我们的就会有两种结果:一是程序无法运行、二是直接造成软件或硬件的损坏(底层操作是可以损伤硬件的)。

我解释清楚了吗?

托管代码与非托管代码的区别

简单来说,托管的代码就是把有关内存管理(内存申请,内存释放,垃圾回收之类的)全部都是.net的CLR来管理,就是说使用托管的代码把底层的一些操作都封装起来了,不能直接进行内存的读取之类的和硬件相关的操作,优点就是比较安全,不会出现诸如内存泄露之类的问题,缺点也很明显,不能直接读取内存,性能上会有损失,使用起来有时也不够灵活。

非托管的刚好相反,可以直接进行硬件操作,性能比较高,但是对开发人员的要求也比较高。

最直观的就是c#不推荐使用指针,而c++就可以使用指针来直接读取内存;

c#使用垃圾回收,c++要手动的释放对象……


网页题目:java有非托管代码吗,为什么要托管代码
分享地址:http://ybzwz.com/article/hspoog.html