java开发真的需要那么复杂吗?

看了一些java开源框架,感觉都太复杂了,特别是想把什么都写进XML文件的做法让人很不适应,为什么不能用Java来搞定一切呢?我的做法是将一切复杂的东西封装在对象底层,看我的框架实现数据增、删、改、通用查询、排序、打印、错误数据校验的代码:
public class ZzjgBean extends ComplexTableDsBean {
DataStore dsMain; // // 数据访问对象
public void onInit() {
setTitle("组织机构"); // 窗口标题
setCan("xtwh"); // 权限控制
dsMain = new DataStore("dsMain", "select code, note, jc, zzjgcc from zzjg order by code", getConnItem()); // 数据来源
dsMain.setColLabel("编码,原文,简称,组织机构层次,组织机构类别"); // 数据表列标题
dsMain.setColCodeTable("zzjgcc", "select code, note from zzjgcc order by code"); // 组织机构层次代码表
regDs(dsMain); // 数据访问对象注册
}
}

通过http://127.0.0.1:8080/com.coyizz.pfc.ZzjgBean.class就可运行程序

>java开发真的需要那么复杂吗?
"计划没有变化快"这个基本因素导致.

如果一个软件在运行时,碰到用户需求变化或者原来功能不能正常运行,你的方式是:
需求反馈到该程序设计程序员,程序员修改代码,再进行测试,可能测试不通过,影响其他功能了,再测试,折腾很长时间,最后编译打包,交付客户.

如果使用XML和Java分离方式:
水平较低的维修人员赶到现场,修改一下配置XML,无须编译Java代码,测试,马上解决问题.

很明显哪个更快呢?

所以,开发软件不能只顾自己开发时方便,还要考虑到运行维护时是否方便,软件不象冰箱,制作好交给用户,很坚固,很稳定,用户也不会提出什么修改意见,当然海尔的定制化冰箱有这个意思,但是这种水平不是一般厂商水平能够做出来的.

XML优于Java实现的原因就在于XML比较容易维护,而java代码还需要修改,编译,测试等,性能是比XML高,但付出的机会成本太大了...

ps:
个人觉得ROR中的约定优于配置这观念Java的框架要借鉴一下,
在前期把问题都解决了总比到了维护实施后期左找右改XML要强吧,
牺牲了灵活性得到的却是可靠和稳定,

不知道我说得对不对..

假设客户在我前面举的例子的基础上,要求增加"组织机构人数"一列,我直接将程序改两行:dsMain = new DataStore("dsMain", "select code, note, jc, zzjgcc,zzjgrs from zzjg order by code", getConnItem()); dsMain.setColLabel("编码,原文,简称,组织机构层次,组织机构类别,组织机构人数"); 编译后用ftp传给客户即可,我的项目是不打包的,我一人维护4个省级行业应用十分轻松。请问XML的支持者门如何应付这个客户需求变化,我看既要修改xml,又要修改java程序吧!我的java程序写错了,有编译器帮助检查,我可以做大范围修改而不过分担心,你的xml写错了,用什么来检查?你有把握进行大范围修改吗?

天哪,注意你自己的文字
你需要编译以后再传给用户
XML有限制的叫DTD&SCHEME你不知道吗?
在标准的DTD还有SCHEME限制下,你压根就不能随便乱写
要写也先改了SCHEME再说
JAVA运行中的异常不胜枚举,很多是编译器根本发现不了的
就你所说的SELECT语句为例,根本不用写代码,多少有点吃饱了撑着
如果你对现行的规范熟悉的话,很多东西都可以直接用的
有个术语叫做反射,还有个东东叫ORM
理想状态下写到XML中去就可以了,将来要改,改XML语句就可以了
重编译再传送再部署可以说是最低效最没脑子的一种做法
因为谁都会做,任何语言也都可以这样做
可以说XML就是用来规范你的数据用的
你以为XML是干什么用的?
就你发布的这段代码
code, note, jc, zzjgcc,zzjgrs
这都是什么东西?估计没看你代码前也只有你自己知道这些是:
编码,原文,简称,组织机构层次,组织机构类别,组织机构人数
不懂的人还以为zzjgcc=zerg java pig garbage collection呢
而在SCHEME中你就可以对这个数据做相应的解释,说明并加以限制
你的项目是不打包的,亏你也说得出口,简直是没有做过项目
一个人维护4个省级行业应用算什么,我一个人可以维护华南地区所有代理
问题是你一个人再牛能力也是有限的啊,如果你不明白如何规范统一自己的代码
那么你写得再多也都是空的,你死了你的代码也就死了,没有人会去理解你的代码
因为去理解你的代码的时间还不如重新写一个类似的系统出来

java的应用在于协作
在于团队作业,而不是单枪匹马地单干
那样你还是去写台主机出来吧
单机效率肯定非常高

任何一个看过JAVA片段和XML片段的人都知道
XML是目前为止最工整结构最严谨的语言
读XML远比读其它语言写的那驼东西来得简单,直接,明了
想想看为什么部署文件有了.properties还是要搞一个.xml出来
数据库也要利用xml来组织,表示层也迫不及待地整xml的网页出来
WS也要借助XML...人家都是傻子,就你最聪明?
你以为你是上帝啊?能够给世界上所有的人制定规则?
连这个常识都不知道,就不要出来丢人现眼了

看把你急的,一下就冒出了这么多名词。这些名词我都懂,但我不以为然。看来在一个“以复杂性为生”的人云亦云的行道里,连回复的贴子也是这么复杂,好象只有“复杂”才能体现项目价值,才能糊弄客户以赚取更多的利润,所以容不得一点“简化”的声音的。说那么多有什么用,只说当一个数据表增加两个字段后,你的增删改功能要改几个文件,几行代码。

coyizz1 不要介意,欢迎提出自己的想法.下面我是泛泛而谈,不针对哪个个人:

你试图简化的想法很好,关键如何执行简化,这里存在分歧.

简化其实是互动的,有两个角色:技术和程序员,就象翘翘板,存在这样几种情况:技术很高级,程序员无需学习;技术一般,程序员需要学习一些;技术很简单;程序员需要学习很多东西.

无疑,第一种是理想的,对于程序员来说,如果少学习太细节知识,直接讲技术解决问题,无疑是终极简化:就是业务人员直接用对象概念表达业务,软件就出来,这些是MDA在做,将来会成熟;

另外一个简化比较折中和实际,鉴于现在技术没有那么先进,做不到那么酷,那么程序员别什么都不学,也要学点,学什么呢?学面向对象OO概念.那么有人说了,我有几年数据库编程经验,算算已经学了点呢?当然,不能算学,这里的学是指OO,非OO设计学得再多,也无法和现在OO技术匹配啊,那就只能出现上面最后一种情况了.这也是很多程序员在使用java技术却觉得没有简化,还需要学习很多一个原因.

现在Java 5.0出现元注释这样新语法,替代XML,但是想想,修改元注释还是需要重新编译的,这和修改源码没有两样,使用RoR这样解释语言是不需要编译了,但是如果没有单元测试这一人工工程管理跟上,程序一上线正式运行,因为粗心等各种琐碎问题全部爆发,更是可怕.

另外,想说的是:约定优于配置(Convention Over Configuration )不是ROR首先提出来,我在2004年底开发的JdonFramework就是遵循约定优于配置,默认简单,容易上手,需要细节还是可以使用XML配置。总之,约定优于配置是基于XML基础上的改进。

当然,我不反对探索简化,但是目前探索结果还是发现,XML比较稳定,符合分离OO思想,能够健壮地对付扩展和维护.

以上是个人观点.


[该贴被banq于2007年05月09日 18:20修改过]

顶,banq说得很好.!!OO思想很重要.有了OO思想,相关的技术就游刃而解了!

>软件不象冰箱,制作好交给用户,很坚固,很稳定
生命如此脆弱,居然经不起几个小小的爱滋病毒,软件也是如此啊

我是菜鸟,发表一点自己的关键,coyizz说:java开源框架,感觉都太复杂了。我想知道的是你说的是开发框架难,还是使用框架开发难?框架只是一个工具而已,使用他的人只需要学习如何使用这个框架工具,而不需要去考虑框架底层的实现,城然,框架本身在开发的时候需要考虑到通用性,可能会导致使用框架开发的开发人员在配置和使用的时候繁琐一些,复杂一些,但是对于一个开发团队来说,使用框架开发是最佳选择,因为这样具有代码的通读性,人员变动时不致于断链。另外前几天看了banq的关于那篇普通的jsp无法满足100个人同时在线的那个文章,我也认为不对,使用框架并不能解决网站的性能问题,你能保证jdon一定提供了一个非常好的性能解决方案吗,框架或许提供了一套优秀的性能解决方案,但是我想你能保证吗?具体的还是要从网站的业务来分析,什么地方采用生成静态页面,什么地方采用动态的交互,我觉得是根据实际的业务、服务器的性能,User用户的数量来衡量,寻找到一个最佳的解决方案。我曾经见过一个大型的网站,没有采用任何框架,全部是普通的 jsp,每天的pv大概150,000,000。另外我认为对于负载大的网站可以采用负载均衡的集群的方式,框架能解决一切吗?如果是,请告诉我,网易(163.com)用的是什么框架? 搞不明白了。。。。。,本来不想说的,不说不快!

netandy谈得非常好,你主要一个疑问是框架是否可以解决性能问题,这个问题有些偏题,如果想继续探讨可以另外开帖子,我的回答是肯定的,简单说EJB是一个分布式框架,通过集群提供了性能上的可伸缩性;Jdon框架通过将模型缓存和提供POOL,无疑也是提高性能一种。

所以框架既可以提高软件设计质量,也能保证软件运行质量,这样的框架又不能让使用者感到复杂,遵循约定大于配置是一个切实方向,例如:Spring的Cache和POOL需要很多配置,而JdonFramework的Cache则只需要继承一个接口就可以(或使用元注释)。

netandy提出使用框架必须简单这个切入点非常好,很多人总是遵循过去细化向下看的思维模型,拿过来一个软件首先研究它,不研究不敢用,框架内部何其复杂,看框架代码就如看汇编语言,完全浪费时间,所以,拿到java框架,要遵循使用设计模式的含义,重点学会掌握如何使用框架,因为Java框架都是遵循OO设计,所以,使用框架之前还是必须学习OO设计概念,就象使用电视机之前,必须了解通用电视机概念和它的优缺点。

还是那句话,如果你不学习电视机通用模式和使用方法,反而去花四年时间学习高等数学、模拟点子、数字电路,虽然你学会设计制造电视机基础知识,但是不代表你会使用电视机。

OO框架也是这样,你学会数据库 算法这些框架的底层基础知识,但是不代表你就会使用框架,这完全是两个方面知识,所以我为什么强调初学者一开始可以不学习J2SE,可以不学习算法,但是必须学习OO和设计模式,这些都是叫你如何使用电视机。这些已经在“J2SE重要性”一文谈论,这里不再罗嗦:
http://www.jdon.com/article/31338.html


以上有些离题,主要说明外部是否复杂,取决于我们自身思维。

我直接将程序改两行:dsMain = new DataStore("dsMain", "select code, note, jc, zzjgcc,zzjgrs from zzjg order by code", getConnItem()); dsMain.setColLabel("编码,原文,简称,组织机构层次,组织机构类别,组织机构人数"); 编译后用ftp传给客户即可。我的项目是不打包的,我一人维护4个省级行业应用十分轻松。

通过你举的例子可以看出,兄台刚做程序员没几天。
你们的公司也没有正规的配置管理和版本控制。
还是去稍微有点规模的公司学习一段时间,了解一下软件开发的流程再谈谈体会吧

配置文件绝对需要
~~~
不然返工的话
对于开发团队是一个极大的亏损工作