当前位置:编程学习 > JAVA >>

java和.net哪个比较好?

答案:
Java语言优劣考

Java是一门静态强类型面向对象的编程语言它是C++和Smalltalk取长补短的产物
Java是静态编译的强类型语言你必须声明变量的类型,以便编译器能够检查代码的类型是否正确这和C++是相同的Java是一门类型非常安全的编程语言
Java只支持一种编程范式:面向对象编程范式对于过时的面向过程编程范式并不支持也不支持基于对象的编程范式,也没有模板
原因可能是,当java在90年代中期刚刚诞生时,面向过程的编程已被唾弃而C++的基于对象的编程方式,由于没有和模板相互结合,而名声扫地C++对于面向对象的编程范式的支持又比较差
于是,汲取经验教训之后, Java作为一门纯正的面向对象编程语言诞生了
Java使用面向对象的编程范式实现了动态多态,实现了抽象化的编程方式取得了巨大的成功

Java语言中,除了基本类型是值类型之外,没有任何值类型,你也不能创建任何值类型这样,基于对象编程这条路就被卡死了
虽然丧失了值类型的效率,但是也避免了基于对象编程的大量错误

Java语言中所有方法也都是虚函数这也是为了保证纯正的面向对象编程


Java语言是静态面向对象编程范式的顶峰使用面向接口的抽象编程,是有效使用java开发的唯一途径!

另一方面,Java实际上是一门动态语言它是动态解释执行的和Ruby,JavaScript等一样
这使java具备了运行时的灵活性可以实现自省,反射等C++等传统静态语言无法实现的功能


.NET语言优劣考

.NET是java的兄弟是微软因为被Sun排除在java之外而开发的一套语言主要包括C#,VB.net,C++/CLI等语言
它的设计理念基本和java相同,也是一个支持静态面向对象编程范式的平台
对于.NET语言平台,我选择C#和C++/CLI这两种语言进行论述VB.NET和C#类似,这里就不再多说了


C#

C#.net还支持值类型,也就是基于对象的编程范式(当然,.NET框架也是支持值类型的)
C#.net的泛型类型替换是在运行时执行的对于引用类型(在堆内存中创建实例的类型),它使用类型强制转换,而不是C++模板的源代码生成来实现参数化类型
对于值类型,则使用类似于C++模板的MSIL中间代码生成机制实现
顺便提一下,java的泛型实现和C#的机制类似也是使用强制类型转换实现而且,Java中没有值类型,也不能对基本类型进行泛型操作,因此没有C#和C++中的源代码扩张问题
但是,老实说,java的泛型机制确实太弱了!

C#语言首选的是面向对象编程范式C#也可以使用泛型支持的基于对象的编程范式
使用值类型,对于用惯面向对象编程范式的C#和java程序员来说有一定的难度而且,提升的效率也并不很高
同时,在语法层面上,C# 泛型是实现参数化类型的更简单方法,不具有 C++ 模板的复杂性此外,C# 并不尝试提供 C++ 模板所提供的所有功能
因此,C#泛型支持的基于对象编程要比模板支持的基于对象的编程要弱很多
理念上,泛型编程有些不伦不类,有着太强的面向对象编程的气味
C#中,使用泛型支持的基于对象的编程范式不如面向对象编程范式
我认为,C#语言还是应该首先使用面向对象编程范式


C++/CLI

C++/CLI是为了让C++使用.NET平台而提供的扩展机制
.NET平台是类似于java的静态强类型动态执行的执行平台是面向对象编程范式理念的框架
C++/CLI使用了新的语法,使用C++/CLI进行.NET开发时,类似于C#编程
同时,也可以使用模板进行C++/CLI编程这是C++/CLI2005新增的功能
使用C++/CLI进行.NET编程时,既可以使用C#样式的面向对象编程也可以使用模板支持的基于对象的编程范式进行开发
可以把模板支持的基于对象的编程范式和.NET的面向对象的编程范式结合起来使用

C++/CLI可以同时使用原生C++和.NET编程如果使用.NET框架执行,那么C++原生代码就会存放在生成的MSIL中间代码中,在运行时再使用C++编译器编译成机器码


.NET的互操作机制

.NET运行时本身就是使用COM编写的,是一个COM服务器因此,.NET和COM互操作是非常简单的也可以使用COM技术,用C/C++直接调用.NET内的方法
在互操作上.NET比java实现得更好不能从C语言调用Java方法,只能从java代码中使用JNI调用C方法


总体评价

.NET是java的表兄弟又做出了一下改变
1,定义了.NET的汇编语言基于.NET的汇编语言可以支持任何语言在.NET平台上执行Java自然也可以作为一个平台但是java平台的设计目标就是java这一种语言,因此没有定义汇编语言,只有java的机器码

2,支持值类型虽然用处不大,但是可以提高性能,也方便与C语言的函数库交互

3,泛型的实现比java强大

4,特别是C++/CLI,具有模板*.NET运行库的强大能力
JAVA语言发明已有10年历史,在IBM、SUN等公司的推动下已经比较稳定与成熟,获得了大规模企业的普遍应用。时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平台,吸引了400万开发者,在网络技术遍及全球的的今天,更有17.5亿台设备使用JAVA技术.同时, Mustang版本的J2EE正在紧锣密鼓的开发当中,按照惯例,每2年将发布一个全新的J2SE版本,所以Mustang开发版对应的J2SE6.0版本将在2006年底完成.对于开发人员来说.从技术难度角度, 由JAVA开发转.NET或其它软件的开发较为容易. 

.NET则是微软公司目前主推的开发平台,是微软未来操作系统以及长远战略的基础。对于软件开发人员来讲,.NET的技术相对简单,入门较快。由于.NET拥有易学易用、开发迅速的特性,随着它的成熟和完善,使其受到越来越多企业的青睐。 北美一些大型企业(如加拿大Royal Bank, Scotia Bank)纷纷将应用平台迁移到.NET,从而走出了Microsoft之平台与技术只适合于中小企业的阴影。 近一年来,.NET在国内也取得了惊人的发展 - 众多企业纷纷采用.NET作为企业应用开发技术与平台,使用.NET项目之企业数量快速增长,甚至与JAVA一样被银行业、电信业所采用。

专家预测,在这种情况下, .NET的强劲发展还未到来,现今仍然处于发展初期。作为发展初期的.NET开发人员,不仅要求具备良好的.Net基础知识,更要求掌握全面的、高深的.NET专用技术,以适应企业级应用开发。欲在激烈的就业竞争或者在公司众多的Developer 中脱颖而出,除了具备基本技能外,“人无我有,人有我精”无疑是必经的过程。 .NET的兴起与发展为我们提供了崭新的契机。

JAVA与.NET就业需求

信息产业已经成为中国发展速度最快的产业,以每年30%左右的速度增长,IT行业形成了大量的就业机会。近几年,Java/J2EE的就业市场一直都是IT业中需求最热、职位最多,而且整体薪资水准较高。

那么值得关注的是,2005年.Net的就业需求突然之间异军突起,年薪可观等突出优势,不啻为走上软件开发之路的关键选择!

很多正在寻找发展方向的朋友非常关心的是,自己是否适合学习并从事Java/.Net开发工作,也有更多的已有一定基础的朋友关心的是,怎样在竞争中取胜,怎样进一步提高,怎样快速找到软件开发工作。我们可以简单的以一个IT培训机构的就业情况简要分析。

加拿大达内外企IT培训是业界公认的“高端外企IT培训中心”,以学员的高薪、高比率就业赢得了优秀的信誉与品质。以其学员就业情况为例, JAVA方面各企业用人需求长年不断,9月间即36家企业发出用人申请,如果工程师在掌握JAVA语言的基础上,同时掌握C++语言,那么就业选择渠道将更为广泛。普通JAVA工程师平均月薪RMB 4000-6000左右。中心已经毕业的学员已经广泛就业于IBM、华为、摩托罗拉、用友、新浪、搜狐、亚信等一流IT企业。

各企业对.NET毕业学员的需求在6-8月份激增,已累计24家公司需要大量的软件工程师,达内的学员供不应求。并且相关公司多为国内知名外企和新兴外企,薪水也在RMB4000以上。.NET继续风头正劲,达内今年3期.NET就业班学员全部成功就业,令人深感欣慰和喜悦。

不论对现在正在从事软件开发的人员,还是对希望进入这一领域的朋友,JAVA和.NET 都给我们带来了新的机会!好的就业机遇一向都是可遇而不可求的,目前, JAVA和..NET工作机会巨大,诸多行业都在使用,抢占先机,才能始终从容!不论我们做何种选择,都将给我们带来一个美好的职业前途
没有最好的编程工具 只有最好的编程思想
自己能用的最好!
java比较好
从写程序方面说的话  :
.net 好多东西都封装了,写起来比java简单些,.net 也比java快得多,java是走高端,.net是走低端.
从学东西方面来说, java比.net要多学点东西,因为好多代码要自己写.而且java的程序一般都比较大,
java可以跨平台 asp.net不可以 它必须依靠windowns
都好。学好一个就行了

上一个:java面向对象的思想?
下一个:怎么安装java的运行环境

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,