主题:【原创】我看:JAVA和.net孰优孰劣?这是个问题。 -- 睡虫
嘻嘻,第一块砖头砸得有点偏了,没错鲍鱼和鲈鱼的口味不能比,但可以比比别的,例如蛋白质含量,脂肪比例,胆固醇高低。
JAVA和.net孰优孰劣?愚以为可以定两条标准,其一是相同项目,源码较少的为优,其二是成品性能较佳者为上。
性能的比较,小弟有个想法,给出相同的预算,各自准备好自己的平台,然后用相同的测试工具来测。预算也可以分级别,10万,50万 100万等等。
至于开发速度,取决于太多因素,例如开发前的业务分析,项目管理,程序员素质,测试等等,太难比较了。
不知有无这方面的对比?
如果是企业开发,最重要的评价应该是可维护性,可扩展性和平台无关性。性能不一定是最重要的,代码行数更无所谓。俺认为懒厨子明显偏心,不服啊不服!
其实我一直认为中小企业开发,点NET的优势还是明显的。
但小弟也有小弟的理由,问题在于如何量化。例如,您说该如何对比可维护性呢?这可维护性很大程度取决于设计,而设计的好坏,又与开发工具无关。
代码行数至少还比较直观,一般而言,相同的设计,同级的程序员,行数较少的,较易维护,虽然,我不认为Java和C#的差别会很大。
至于性能的比较,也是因为可以量化,才提起的。
我对你的景仰之情就如黄河之水滔滔不绝啊。。。。
写得真好。连我都大部分看懂了。呵呵。
早把你钓到西西河就好了,我的科普战斗力会因此还提高一点。
看懂这个,是小意思。
我还记得,你只是被那个“将动未动,未动将动”搞晕了,要不然,理工科就又多一个好学生,呵呵。
提起这个,我首先想到的是两个EJB3.0里的细节:
1)终于可以不写空的回调函数,并在容器外调试
凭借注释机制给EJB加标签,原来困扰程序员的不易部署、难于调试的问题,大大改观。这使得原来大家公认的J2EE中唯一没有兑现“简洁”诺言的EJB风格与其他部分统一。
不过我有点担心最后的标识会不会太庞杂?但无论如何,这一点是很大进步。
2)EJB3.0增强了查询能力
以前的系统,通常用EJB实现增、删、改,查询都用其他方式实现。这次EJB3.0的QL,对查询的复杂性支持提高了一个数量级,而且提供分页功能,其投影(projection)特性允许程序员只取出对自己有用的字段,查询功能不仅比原来的EJB2.x提高,比我们原来自己开发的分页器查询性能,估计也会有很大提高。
投影(projection)特性,hibrnate和JDO都是这么做的。EJB3.0一出来,JDO都要面临被弃置了。呵呵。
我没有这两方面的对比数据。
性能方面,highway的文章已经分析得很精到。对你的问题,我认为:同等预算下,Java不输给.net,甚至还可能超出。
毕竟Java有很多开源项目支撑,节省费用。而到了高端,比如500万预算那种,.net又拿什么来和RS/600,AIX之类的组合比拼呢?
关于代码少的占优,歧义比较多,我不赞成这么比的。
1)实现同一个功能的代码,有些代码短的,会比较难度,不易维护
2)自动生成的代码,计不计入在内?
基于以上两个原因,这个比法我觉得不科学。
较真一下,要严格的量化比较,就要同样的需求、同样的设计,同一个程序员用Java和.net分别编码,再比较代码结果。这个,有没有可能?从设计就会有不同,就算是同一个程序员,对Java和.net的掌握程度肯定不同,前提不严格,出来的结果就不能算是严格论证。(忽然觉得,这样的试验,有点像经济学的一些研究,无法准确验证。)
概言之,可维护性还是可以度量的,用项目完成后一定时间的维护成本。
这个问题,又是个头疼问题,呵呵。
确实,要客观的比较,是很难的。
但小弟还想再较真一次
您的第一点,似乎可以用Design Pattern来解决,用相同的Pattern来比较,可能足够客观。
第二点,可以用双方的SDK,不算自动生成的代码。自动生成的代码算是用在工具上的工具了。
至于程序员的挑选,异想天开一下,我会这么做,从相同行业里挑,有四年经验以上的,(为什么四年,记得盖茨说过,要是四年之内不能成为一个好的程序员,大概就不会成为一个好的程序员了),IQ相近的。
我个人的看法是,Java和.net是同级的开发工具,要是让我来挑,我会看预算来决定。
其实说到底,一个是钱的问题,一个是人的问题,工具反而是次要的。
越聊越离题了,惭愧
还有一个问题,时间问题,对项目也是至关重要的。虽然这一点上,Java明显弱。
我前段时间有点偏爱C#。
最近因为需要做一个较大的计算,PC上搞不了了,只好登录到SUSE上面去做。可用的语言好像有c++、F77和Java。自然选择Java了,因为我对于这三种语言只会用Java做出一个GUI。
运行Java的时候使用默认的设置出现内存不够而退出。使用
java -Xmx 的设置,在Java1.4.0下不成功,在Java1.5.0下成功了,我竟然可以开到100G以上的内存!比我PC上的硬盘还大。
你们在Linux下用什么Java IDE啊?我现在只会用命令行。
要么就是把在PC上编译好的claa直接拿到SUSE生运行,这也是Java的原始好处。
我在WINDOWS下LINUX下都用ECLIPSE。
你可以到
http://download.eclipse.org/eclipse/downloads/drops/R-3.1.2-200601181600/index.php
下载。
我觉得这是一个很好的开发调试环境。
可惜我不是管理员啊。
什么是记事本对应的程序啊?VI我不会用,用office又牛刀太笨重,我现在只好每次在pc上做好一个东西上传。
装ECLIPSE需要系统员特权吗?好像不要吧?展开后不就是一个JAR文件吗?把CLASSPATH设置好了就可以了吧?
我没有用过SUSE,LINUX我一直都是用REDHAT/ FEDORA的,用GNOME界面。这样的话,你可以用GEDIT,那是和NOTEPAD完全对应的东西。
不过我建议你学几条VI命令。对UNIX/LINUX系统而言,VI的好处就像JAVA一样,只要你会了十几条命令,上哪里都好用。我一直不是VI高手,但是足够用了。最有用的无非就是插入,删除,拷贝,翻页这些玩意,背十几条命令就够了。从我刚开始学学计算机那会儿的68000系统,以后用过的AT&T,SUN,TOSHIBA,HP, IBM等等,那三板斧无往而不利!
有了VI, 就像士兵有了步枪一样,有了起码的装备。如果装了ECLIPSE,那就是有了机枪了,火力凶猛阿!
今天看了一下vi的用法,基本上还可以用了。
送花一朵。
http://www.cs.umanitoba.ca/~eclipse/1-Install.pdf
不过是老版本的,但是是用SUSE的。
我估计你要有问题的话,多半是在LIBRARY PATH, CLASS PATH等的设置上