程序是一门艺术

程序架构与公共代码--本博客文章均系原创

.Net 与 Java 在大型项目中的比较(欢迎拍砖)

1:性能
======================================
这个问题,本来不是问题.看到网上N多人在讨论性能问题,我也只能拿出来说了

首先,命题是:大型项目.既然是大型项目,那性能不是首要的东西.

如果:java ,c#之间的性能差距10%,这根本不算问题,就算性能差距30%都不是什么大问题.

只要差距不是一个数量级的,问题都不大.毕竟性能不是大型项目的主要考虑的.

2:平台的支持
==============================================
这是.Net在大型项目在平台支持上的死穴!

Windows大多只能运行在PC服务器上,PC服务器本来就是个畸形的概念.

PC = 个人电脑!把个人电脑当服务器用本来就是不适合的,虽然现在的个人电脑速度越来越快。

但个人电脑的安全性和稳定性 和 巨型和大型机差距还是太大了.

知识总是融会贯通的,结合第一条:巨型或者大型机的运行速度是很快的,所以性能问题不是主要的考虑的!
(注:虽然现在有linux下的.net模拟器,但我个人认为模拟器的安全性和性能不能和真机相比,大型项目部署在虚拟或者称模拟器上,不认为太冒险了吗)

3:安全性
==============================================
Windows操作系统的安全性没有unix或者linux高.这是肯定的.

大多数人都不知道怎么攻击Linux.所以,安全性方面,linux占优势.并且linux开源代码比较多

虽然源代码公开使得攻击更容易,但更多人的参与使其漏洞变得更少.

有时候开源是有利有弊的.

4:稳定性
=================================================
Windows操作系统的复杂性导致稳定性下降.

软件功能越少,越简单,稳定性越是高.
linux内核可以定制,绝对可以定制成专用系统.漏洞更少,性能更好,稳定性更高!

当C++程序员饱受了内存泄露,莫名的数组越界,长时间的Debug,就知道java,c#有多么好了.很多问题,在C#是不可能发生的.如果一但出现内存泄露问题,一般在Debug就能发现.就算debug没有发现,后期运行也不会出现数组越界等情况.

包括jvm,clr等机制,使内存管理更方便,而且最主要的是数据安全.对于数组检查,内存检查方面的性能消耗也很高,但问题是:我宁愿牺牲性能,也不愿意动不动死锁,内存泄露,无止尽的Debug.

5:语言
=========================================
对于这方面,网上争执不断,甚至有不死不休架势.

其实c#,java语言方面没什么区别.他们的区别只在于运行环境.

6:开发的效率和复杂度
=====================================
C#有容易上手的优势,而且项目管理,团队合作相对简单.开发环境也比较好.

代码提示,msdn,等等做得都不错.网上的doc也多,出了问题解决方案也很多.

java也可以,但其帮助文档没有msdn好,编程环境更是和vs2008没有办法相比.

 

总结:
========================================
.net 和 java都适合开发大型项目,只要环境合适.
(他们之间的竞争就是:unix(linux) 和windows的 竞争)

.net可以改进,比如,可以使用 精简的WinServer系统提高稳定性(我个人看法,不要盲从)

如果学.net的朋友,也不要灰心.我只是就事论事.没什么主观看法.

-------------------------------------------------------------------------------------------
Windows server 2008已经有Core版(精简版) 连GUI都没有,和linux差不多的说.
微软的作战方针竟然被我猜中了,难得...

 

补充:欢迎拍砖,我对.Net和Java了解也是很肤浅的.

回复都很经典,有矛盾才会进步.谢谢.

posted on 2009-01-17 16:43  甘蔗皮  阅读(6523)  评论(68编辑  收藏  举报

导航