C#.NET与JAVA


 
Java和.Net,从应用领域到发展前景的对比与分析,请大家踊跃发言 

java的强项是平台 曾经有句话说除了微软的网站 其他的地层都是java 毕竟网络系统还是linux unix比较多.net到了2.0更具备java竞争的实例了 而且MS已经稍微开始尝试免费了
总得来说 还是要看这两者本身的自身提高的能力 谁更能满足市场的需要 

 

平台是相对于普通的应用程序而言的 举个例子来说 一个网上购物系统就是一个平台
MS退出.net其实就是为了抢夺企业级的平台方面的开发 

.net我不是很熟悉 c#只使用过一点点 其实.net的很多东西都是借鉴了java的 比如说c#编译完的东西在vb.net就可以使用 有点类似于java编译后的class文件
java分为3个版本 j2se j2ee j2me现在名字变了 意思没变
对于应用程序 使用的是j2se 这个时候java才更像一门语言
j2ee是专门做平台开发的 最大的特点是写出来的东西都不是可执行程序 要部署在应用服务器里做服务器端的程序 j2me是移动设备的程序开发 

java最大的特点是,跨平台.与平台无关.即一次编译,N处运行.速度比MS的语言要慢一点,但安全性和健壮性都好很多.JAVA语言相比MS的语言来说,如C++或C#等要简单一些.也更实用一些.
JAVA分为三大技术领域:J2SE J2EE J2ME
J2SE主要用于应用程序开发
J2EE主要用于企业级WEB应用程序开发,比如现在很多银行都用的J2EE做的B TO C电子商务平台
J2ME主要用于手持设备程序开发,如手机,PDA上的程序或JAVA手机游戏
本人对JAVA更喜爱,也在努力JAVA向J2EE学习,J2EE包括java servlet,jsp,javabean,ejb,jta,jmail,jndi,jdbc,rmi等是一个集合
而还有很多J2EE的框架也是热火朝天:struts hibernate spring 等
应用服务器:tomcat weblogic jboss webshare等


不论.NET还是Java,都是中间件技术的应用,不过它们各自面向的目的是不同的,Java是提供一种语言兼容多种平台,而.NET提供一种平台兼容多种语言。
Java最大的优势就是跨平台。Java最大的缺点也是跨平台,因为实际上跨平台很难做到。第一,支持各平台共性必然牺牲各平台特性,Java无法像.NET一样和操作系统无缝结合,造成程序性能低下;第二,一旦追求效率,调用了平台特定的功能,那么就丧失了Java的跨平台性,也就没必要使用Java了;第三,各平台上的Java不是完全没有区别的,真正跨平台需要精通各平台;第四,移动平台(如手机)上,大量厂商制造了改版Java,可谓是版本丰富、参差不齐,跨平台性差。第五,最让人受不了的就是Java的超垃圾的内存管理机制,使得Java程序在运行时极度臃肿、低效,和.NET形成鲜明对比。
有人说.NET很多东西都是借鉴了java的,完全是无稽之谈!首先,.NET和Java面向的目的完全不一样;其次,.NET建立的基础是CLI标准,该标准和Java没有关系,.NET的核心部分——CLR——是微软对CLI的一种实现;第三,.NET和微软的操作系统紧密结合,其中的实现机制(不论从CLI标准的中介语言,到应用程序的生成、启动和运行,还是到内存管理,托管和非托管的交互等等)都和Java大相径庭。至于语法上更没有什么.NET借鉴Java之说,因为.NET是跨语言的,C#借鉴的是VB和C++,和Java没有关系,至于其它的语言(例如Fortran、Pascal、Perl等等)更是和Java扯不上关系。唯一和Java能扯上关系的就只有Java本身和J#了。
又有人说Java的安全性、健壮性比.NET好很多,又是瞎说!由于Java是跨平台的,其安全性不能依靠特定平台提供的功能,一个Java程序对某个平台是安全的,也许对另一个平台就不是安全的,在Java下考虑安全性需要程序员对各平台都要有相当的理解,但这基本上是做不到的,因此程序员只能够将安全性寄托在Java虚拟机本身上,这样做又缺乏健壮性,因为程序缺乏后备手段以应付Java虚拟机的安全漏洞。.NET不一样,.NET背后还有微软的操作系统,除了.NET本身的安全性之外,程序员还可以依靠微软操作系统所提供的一切其它安全手段作后备。
结语:要想跨平台,就去学Java;要只想在微软操作系统上作开发并追求开发效率,就学.NET;要想追求运行效率,就学C/C++。(我本人对Java不敢冒-_-) 

楼上的可能没有深入理解过java 当你深入学过java后再学.net 你就会深刻的看到.net里确实有java的影子 比如一种平台兼容多种语言 原理是什么? 你看看和java的class像不像? 以至于我上.net课上从来不听课 用c#写作业的时候全部使用的是java的思想。大家本来也就探讨的 但是动不动就说别人说的是无稽之谈 是瞎说... 

你没看我的贴吗,第一句话不就是思想?不论是一种平台兼容多种语言,还是一种语言兼容多种平台,都是中间件技术的应用,.NET和Java又恰巧同时是中间件技术中中介语言技术的应用罢了。中间件技术和中介语言技术又不是Java发明的,怎么就叫借鉴Java了?
Java的class又咋了?.NET采用的是传统的dll和exe,内部结构和class一样吗?不但如此,.NET通过用xml编写的manifest将dll和exe组织成一个个assembly,同时也实现了side-by-side多版本并存。.NET程序允许managed与native代码并存,允许managed和native互交,并通过Window系统的程序loader提供启动各类程序的支持(包括对manifest的解析等等),这一套都是微软自己的东西;Java的class loader又如何呢?在运行时,.NET提供高效的自动内存垃圾回收机制;Java又如何呢?
你说我不要动不动就说别人说的是无稽之谈、是瞎说,我也要说你不要首先动不动就说哪个哪个是Java的影子!跨平台的语言中,Java不是唯一的,只不过Java是应用最广泛的,但不等于什么思想都是Java提出来的。至于.NET跨语言的思想,更是和Java不沾边。
还有,我不明白你所谓“写C#程序时的思想全部使用Java的思想”。什么是Java的思想?面向对象的思想?
最后,我想说尽管.NET和Java本质上是同一的,但是在目的和形式上几乎完全不一样,思想和实现机制上大相径庭,没必要一厢情愿地认为好像一切都源于Java一样。 

那也请你不要一厢情愿的认为java是垃圾一样
java是十年前产生的 .net是哪年 你认为MS设计.net的时候有可能不参考不研究java的成功经验么?.net为什么要产生?就是MS看到j2ee已经抢了太多的市场了
我劝你说话还是客气点 谢谢!!! 

请问一下:
1、在.net中,从CLR environment 到 Managed Native code之间是什么?JIT吧,just in time就是java最早使用的编译技术,后来因为效率原因抛弃了,使用了现在的hotspot。那么.net使用这个技术难道和当时的java不像?
2、.net就可以有较高的运行效率?当然,如果同时都运行hello world这样的程序,我不得不承认.net的运行效率高
3、java的跨平台性导致了不安全性?并且java的运行效率低?如果你依然停留在jdk1.2的时代那没什么好说了,事实上jdk1.4及1.5的出现已经大大加速了java的运行效率,C++也不再以速度为优势了,仅仅是api对java的支持还相对落后而已。跨平台性?一次编译到处运行?太老了,虽然sun在java 出现之初入此宣称,但随着j2ee,j2me的出现,这种口号已经成为过去

事实上,一个语言一个平台是否有前景,很大程度上是对你个人是否有前景,正如GC是java和.net的核心之一,但是那些C++大牛们不用GC依然可以很好的处理memory management并且可以很大的提高效率。
java和.net都有相互不可替代的优势,再我看来,不久的将来应该是两者更为紧密趋于结合,而不是各自消亡:) 

1. 凡是中介语言的程序(不论是Java、.NET,还是别的语言),在运行时实时地被转换到机器语言的过程,都可以被称作JIT Compilation。这种思想、模式不是Java提出来的,Java只是建立在这样的思想、模式之下。你的意思似乎是说任何采用了中介语言、并且在运行时实时转换到机器代码的语言都是学Java的?
2. 和Java像 不等于 借鉴了Java。像Java的语言不少,可以借鉴的语言很多,非得是Java?
3. 我的意思是说Java的安全性更难把握。例如一个需要NTFS安全性支持的程序放到别的磁盘操作系统中可能变得不安全,程序员要做出在各个环境下可以互通互用的、有高安全性的程序很难。当然,如果Java仅仅是提供一些接口(例如数据库接口,而不参与数据库本身的编码),那么Java仍然可能是安全的。
4. 至于Java的运行效率,你可以用用NetBeans,看到工具栏上的那个Gabarge Collect按钮没有?内存管理极其糟糕,手工整理未免太不人性化了。其它很多Java程序都是这样的。没提供此功能的,内存占用又大得不得了,相信很多人都有体会。
5. Java的执行效率和C/C++没得比。你看到过大型商用软件(数据库、仿真软件、3D制作等等等等)采用Java编写内核的吗?Java充其量就是提供接口、界面罢了,执行效率从来和Java不沾边,开发效率倒是挺高的,不过.NET也能做到。同时.NET不必为了照顾平台兼容性而牺牲执行效率——.NET底层可以调用一切微软平台提供的功能(不论是平台兼容的、还是平台特定的)来提升执行效率。
6. 商业用途中,开发效率是很重要的,这也是为什么Java受宠的原因。不过.NET也能做到这点,所以Java也不会简单消失,毕竟Java跨平台的特点决定了非微软平台下其强大的生命力。.NET也不会,因为世界上相当多(大多数?)的程序员在为微软的平台开发软件。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值