java和.net哪个比较好?
15个回答
2013-09-18
展开全部
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是一门静态强类型面向对象的编程语言它是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上手难一些,.net上手简单些,另外目前Java公司要少于.net公司,不过后期的话可能Java公司优势更大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
各有各的好。。。到时候手机用windows系统的时候net就会火一段时间了。。。不过推荐学java。,java转net简单些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
尺有所长,寸有所短。我觉得java和.net都不错,关键看你自己的意愿了,如果你想快速就业,我建议你学.net,因为就目前的状况而言,。net比java好找工作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java工资更高,。NET工作更好找。java一般是大企业才招收,比如上100人的,.net一般是小公司,有可能是1-5个人的比较多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询