Topic: Java不足之我见 |
Print this page |
1.Java不足之我见 | Copy to clipboard |
Posted by: acelee Posted on: 2002-07-26 18:18 Java不足之我见 作者:不知道 许多人都在使用Java开发程序,本人也是其中之一,作为一名 有一定软件工作经历的开发人员,我想也有必要将目前的Java开发 的不足之处作一比较客观的表述,以引起业界人士对Java的优劣之 处有一比较客观的认识,而避免奉之过高。 Java的许多优点,以及一些细节上的缺点在许多书上,以及网 上评价上都有较多的描述,可是对于Java从总体上的面向对象的编 程思想(其庞大的AWT和SWING类库)的缺点却少见贬词,且不说AWT 和SWING的技术在许多地方互为矛盾(同时使用易出错)、互为重复 (功能有互为重复之处),难道业界不觉得这套编程思想过于复杂吗? 太复杂,以至于: 1. 学习、掌握Java的多级复杂类库有一定的难度,大量掌握需 要很多时间,而且掌握之后,一旦该编程人员不使用Java编程,那么 掌握的类库对于其它编程语言基本无用; 而且,对于本身不是很通俗 易懂,而是比较令人费解的程序,即便是开发人员已经掌握,而一旦 稍长时间不接触,此种编程的许多技巧就会被忘记,除非留有带着非 常详细注释的原代码。 2. 编程易于或可能进入复杂的涉及多级类结构的耗时编程及调 试的状态,象陷入乱麻之中一样; 3. 如此复杂的程序,其他开发人员难以接手,书面详细设计方 案上也很难表述这种立体式的复杂结构,以及上下互相之间的复杂关 系(包括方法调用、接口的隐式调用(接口可能被自动调用)、某个方 法是重载还是不重载(如果对上面各级类库的方法种类不是很清楚, 从代码貌看上去,怎么知道是否是重载的呢)),等等。 也许有人会说,你没有全部掌握,当然会有很多困难,可是Java 庞大类库中很多都是与界面设计有关的类库,而纯粹的界面设计技术 在应用系统之中,往往不是系统功能的核心部分,为了开发这种不是 核心部分的界面程序,需要投入那么多的时间、精力,从这一点上来 说,难道这种开发方式具有很大的实用意义吗? 也许有人会认为,开发人员或许没有资格这样评价用于开发的语 言或工具,可是:用户就是上帝,这句话永远是有道理的,既然客户 可以评价我们开发的应用产品,我们就可以评价用于开发的语言或工 具。 也许有人会认为,评价的人本身也不太懂,可是,如果评价的人 什么都懂,那他也不是Java编程人员了,那他也快要成为设计Java本 身的技术人员了,难道Java的原创的目的就是为了让使用Java编程的 人员都变成设计Java的人员吗?而不是为了让大家用起来都比较简单, 从而创作出许多有用的成果吗? 最后,作为抛砖引玉的一些结论: 1.面向对象的编程思想,应该更多地融合或融化到可视化的开发 环境中去,而不是仍然较多地使用语句或语言本身来描述,后者会很 复杂,因为本来立体式的类结构,使用平面化的语句来表述,这本身 就是很复杂,而且是勉为其难的事情;对象使用可视化的开发环境表 示之后,编程代码(语句)应该尽可能简单易懂。 2.庞大而且复杂的类库结构,这并不能代表着设计者的水平,对 于使用者来说,设计者将原先复杂、庞大的东西,变得让使用者觉得 简单而且合理,才是真正有水平的。 在上面两点上,PowerBuilder开发工具在过去几年当中,而且直 到现在,都是做得最好的,当然PB的PFC类库也不实用(其代码量、复 杂度,与其实现的功能相比,显得太重,本文作者曾经重新设计PB的 类库,功能比PFC类库强大,但使用简单,因而相对实用)。 PB的程序封装也比Java好,PB程序封装在统一的PBL文件中,不象 其它语言或开发工具形成多种文件,如使用JB编写的Java程序就包括 扩展名为:jpr、html、java的文件,封装不好,程序员管理自己的代 码就比较麻烦。 3.面向对象的编程方式,不管采取哪一种方式,作为应用编程人 员,在编程过程中,牵扯到类的继承级数不能太多(指系统提供的,而 且编程过程中经常需要查阅的上级类库,加上编程人员自己设计的类), 否则所编的程序的结构会很复杂,立体式的很复杂,会导致一些难以 遇见的隐式错误,而且很难被发现、排除。 4.Java在字符串类型、整数类型等细节方面也使用类的编程方式, 这是将面向对象编程思想走向极端化的表现,实际上,使用'类'这种 表示事物的方式,一般是在比较宏观的事物中,才显得比较方便,而 在字符串类型、整数类型等细节微观方面,使用'类'的定义,并不方 便,因为这不符合一般人的思维习惯,在细节微观方面,其实只要使 用传统的非面向对象编程思想就可以了。而且,Java对于整数类型, 既有'类'的表示方式,又有不是'类'的表示方式,以及字符串类型的 '类'的表示方式,这几种方式之间,牵涉到的方法名称以及使用方式 上面互相之间都不统一,让人觉得:Java为什么要这样,这么麻烦, 又有什么好? Java编程全是高一脚、低一脚的走路方式,为什么要这 样,难道Java的设计者有病,为什么走路不能坦坦荡荡一些呢? 5.正是因为上述的这些缺点,使得现在Java面向对象的编程方式, 很难取代某些传统的编程方式,比如UNIX系统上的C编程,后者不存在 前者的上述缺点。 大凡伟大的创见,其在哲学上面,必然有强有力的依据,可是Java 的上述缺点,其在哲学上面,又有什么可觉得可以说得通的呢...... 此文未及进一步整理,见谅。 |
2.回复: Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: jmd7 Posted on: 2002-07-27 14:16 任何事物都不可能在所有方面领先,只适合于一部分领域,这篇文章的作者似乎有些先入为主了。 不少人攻击java攻击得不得要领,反而徒添笑料。比如csdn上面登过的一篇从哪个cobol网站上转来的什么java已死。从那之后我再也不去csdn了,一个充满了对c++和houjie等人盲目的谄媚的网站,我的个人感觉。 |
3.回复: Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: 烂泥 Posted on: 2002-07-27 14:27 什么东西都是发展而来的! |
4.回复: 回复: Java不足之我见 [Re: jmd7] | Copy to clipboard |
Posted by: hht Posted on: 2002-07-27 19:04 jmd7 wrote: 呵呵,同感同感,本来想发帖反驳一下,不过这里是java论坛,所谓清者自清,哈 |
5.回复: Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: C Posted on: 2002-07-28 04:41 感觉java的类库虽然复杂,但是逻辑上很有条理,不像MFC那样混乱。 |
6.回复: Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: cm Posted on: 2002-07-29 09:43 用java写UI程序,不是java的强项 |
7.回复: Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: wishmaster Posted on: 2002-07-31 04:49 once you decide to have the benefits of univeral deployment of your enterprise apps, you basically have to sacrifice something else...enterprise applications baiscally are backend based...java-based UI is not necessarily the only component you have...you can always pick the one that fits best to your needs...therefore, it is way too pointless to compare something without identical background and criteria...I am taking means-to-end approach...even I like the way that Java is being independent, that doesn't mean it performs best...but offers incredible flexibility over windows platform. |
8.回复: 回复: Java不足之我见 [Re: cm] | Copy to clipboard |
Posted by: Biubiu Posted on: 2002-08-01 12:42 cm wrote: Java可以写出很棒的UI。所谓,会者不难,难者不会。 |
9.Re:Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: littledeer1974 Posted on: 2004-11-14 17:12 不知道到了今天,所谓的劣势还依然存在呢(挖贴行动中) |
10.Re:Java不足之我见 [Re: acelee] | Copy to clipboard |
Posted by: 鸡肋男 Posted on: 2004-11-16 09:13 无聊之说,Java用来干吗的?目的不清楚,就不要乱议论。如果你用Java来开发桌面游戏一定会累死,你能怪java吗?只能怪自己而已。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |