原文(netwiser于2001/01/19 11:31粘贴)
发生于某日的激烈辩论(上)
--------------------------------------------------------------------------------
S:CORBA学习的如何?
我已经掌握了用C++实现CORBA SERVER,用JAVA实现CORBA
CLIENT。 完美的高级企业分布式解决方案。
J:用Java EJB也一样可以实现Corba,何必用C++?
为了速度和灵活性,速度可以提高200%,稳定性,安全性完全由于EJB,而且EJB比较简单。
不好玩。
S:如果利用JAVA的RMI,很慢。用EJB的IIOP,没有静态存根,所以不是很灵活,速度也不好。所以用C++实现CORBA是分布式计算的最高境界。
J:你认为EJB简单?能否就J2EE发表一下你的见解?EJB是一个非常复杂的技术,能成为现在技术的主流,本身就说明了他的很多特性。C++相对Java来说,存在着很多缺点。
S:EJB的复杂可能是因为她的类库结构。我认为当你掌握了J2EE的全部类结构和OOP的哲学后,EJB非常容易掌握。我掌握EJB用了3个星期。
J:呵呵,你只掌握了EJb的一小部分,EJB的精髓在于ooa/ood
S:很多人都说C++对于JAVA的缺点很大,不过JAVA的成功大部分是由于他较短的开发周期和较容易掌握的特性,而且我在OOP,OOA,OOD的理解上非常透彻,觉得JAVA容易被商家接受的特性是不错,但作为一个职业软件人是不必盲目崇拜JAVA,单纯从技术上分析,C#要由于JAVA很多,所以JAVA的成功有一定的商业特点
J:你说的也有道理,毕竟这是一个开放的技术平台;实现CORBA首先需要解决平台问题,用C++会存在很多reusable的问题,现在有了一种新技术peer
to peer,那C在上面能发挥的作用就相对小了很多
S:我认为,好的软件并不是单纯局限与企业数据库解决方案方面,还有很多的领域与课题,学习JAVA是为了顺应市场的需求,单纯从技术上来说,JAVA不是最出色的,你可以参考网上著名的论坛WWW.CODEGURU.COM,学习C++完全可以使人成为OOP,OOA,OOD的高手,但学习JAVA并不一定可以使人成为OOP,OOA,OOD的高手,我现在用Ratioanl
Rose设计C++ CORBA,感觉比设计JAVA EJB好的多。
J:再说呢,我们讨论的出发点不同,我从系统结构方面出发,追求性能、开发效率、实现周期、可携带性及易于维护,而你可能是追求高性能,更底层的特点。
S:我看待问题的观点是将软件看成服务,以后所有的网络实现宽带以后,所有的客户端会越来越瘦,所有的软件会作为服务放在网络上,所有的移动通信设备,包括PDA,手机都可以访问网上的服务,向CORBA这种高速的C++
SERVER服务可以有不同的客户端,由于他是基于IDL技术,所以可以实现“跨语言开发“,这样就实现了极大的灵活性。
用C++在CORBA SERVER端实现高速代码,用任何一种将来可能流行的语言,如JAVA,C#等等实现CLIENT端,这样非常COOL!
J:相比之下,JAVA 2的性能一点也不比C++逊色。
S:你做过具体的测试吗? 我做过的。
=====
原文(netwiser于2001/01/19 11:36粘贴)
发生于某日的激烈辩论(下)
--------------------------------------------------------------------------------
J:没有,没有具体的测试。我认为,性能的瓶颈在于流量方面,网络上的应用多几毫秒的反应时间根本就无法觉察
S:代码运行速度不仅包括代码运行速度,还包括变量压栈速度,函数调用速度,各种数据类型的CPU时间片运行速度,远程对象调用速度,RPC协议实现的程度,数据库访问速度(JDBC与ORACLE的PRO-C比较),系统资源消耗速度,进程调度速度等等,我全部做过详细的测试。J2EE实现RMI,IIOP单纯在系统的资源分配上落后很多!
不要相信书上不负责任的描述。
J:你的测试依据是什么?
S:在单位时间内观察LINUX的系统资源变化LOG
J:这样的测试是不准的。 再说,相对而言,JAVA现在需要
VM,而c++不用,这点肯定是C++占优,但不久的将来,情况就不好说了
S:看来我们对于软件工程所注入的激情有区别。
J:任何一种东西,为了安全性,总得牺牲一些性能,
Java 的 garbage collector 工作的非常好,那这部门的性能和系统资源可定得占用的。但他提供了程序员一个安全、省心的工作环境,这一点,我很看重,毕竟,软件开发是一种team
work,不是个人行为。
S:个人行为?
我从来没有这样认为软件工程,我认为JAVA流行的还有一个原因是由于掌握C++的人比掌握JAVA的人少,C++的指针现在仿佛成了C++的罪魁祸首,但如果要用JAVA实现一个微积分运算或是密码运算,结果会如何那?
用JAVA实现复杂数据结构呢?
所以软件工程的领域很广,单纯访问数据库方面来说,我觉得VB很好,但这并不是软件工程的全部,对于JAVA也是一样的。
J:你不能把企业应用简单的堪称为是数据库访问,诚然,编一个微积分运算,最快的可能是汇编,不是C,eJB的目的是针对企业运算,构建企业的应用平台,相对来说,开发的精力更多的放在业务逻辑上,而不是具体技术细节上,如何把企业的业务逻辑,以某种技术手段抽取,封装并可重用,可维护,EJB提供这方面的优秀特性,充分发挥了JAVA的特性。假如,你跟美军说用JAva开发航空应用,那肯定是笑掉大牙了