随便说几句

这两天忙。

昨天那篇闲扯的技术文章其实是前几天写的,昨天改了改,加了点内容重发的。因为我毕竟没有实际使用过EOS,也没有看到普元方面提供的更具体的技术资料,所以在很大程度上,我所谈论的EOS只是我认为的EOS,也许与实际情况有出入。这也是为什么我希望普元能够提供更为翔实的技术文章来说明的原因。

基本上我对EOS的理解比较接近于这个帖子《新近接触的一个企业应用协作平台》所说的情况。

另外,这个帖子《看了《程序员》的文章,研究了一下普元的所谓构件》对普元EOS的讨论更为实际一些,这些参与讨论的才是真正的JAVA牛人。

偶就不继续扯了,刚改完一个报表,又要忙另一个程序去了。

TMD最倒霉的是电脑还偏跟我过不去,大概是硬盘有点问题了,动不动就崩溃,今天已经发生三次了。

郁闷。

[技术帖]闲扯普元EOS

前几天,小错那篇EOS的文章招来了两位为普元说话的人,我很赞同小错后来这篇POST里的观点。先不说普元EOS在技术上的优劣,就拿他们最近在《程序员》的宣传来说,基本上都是属于高来高去的扯淡性质的东西,无非是反复在说EOS很好很好。但这是远远不够的,必须要能拿出清晰明了的技术说明才能让人信服并接受,比如像小错那篇《初窥EOS》这样的文章,把具体的技术细节拿出来接受检验——除非它在技术上的确有不便让人知道的不足之处。

再说来技术。普元的EOS其目标是想要实现“构件”级的可复用,正如恶魔在第六期的《程序员》中有一篇文章《质疑:从面向构件看软件复用》所指出的那样:所谓构件的粒度过大,注定不会有好的可复用性,并且他拿轻量容器PICO作比较说明,很有说服力。

而普元解决这个问题的办法似乎是通过用XML来作为构件间的接口,通过“弱”约束来改善大粒度构件的复用问题。当然,我相信普元的构件也是可以做小的,但是看上去构件似乎是一种重量对象,如果做成小粒度的,必然导致接口成本的大幅上升。这个矛盾目前看来是不可调和的。

回到XML的问题上来。我不想再说XML的性能问题,毕竟在复杂应用中,只要不滥用,这点性能损失通常还是可以接受的。我要谈的是“弱”约束的问题。

从目前已知的各方面来看,在EOS中XML似乎是被用作非强类型的数据接口定义,这就变得如令狐在他那个WebService实现中那样的做法了:客户端与服务端之间的调用约定是“弱”约束,双方必须自觉遵守,否则将在运行时出错。这也是小错指出的EOS的第三点别扭之处。

其实在令狐那个WebService中是可以用强类型数据的。只是麻烦:首先要为这些类型增加Serialize接口,然后在Web Service端要以wsdd形式配置并发布,客户端也要做一些处理……这一方面与DELPHI很类似,都是需要自己实现对非基本数据类型的序列化,然后注册,就可以在导出的WSDL中提供相应的约束(参见我的一篇关于用Delphi进行WebService开发的文章,其中用的还是默认的序列化方式,自定义序列化可以通过NativeToXS 和 XSToNative两个方法实现)。

但在普元EOS中,我没有看到这个方面。所以我认为,从这个角度上说,EOS甚至不如目前流行的SOA的概念。SOA作为一项基于WebService的技术,可以充分利用WebService提供的这一套标准的处理机制,并且它是以整合既有系统为目标设计的。就算普元EOS的开发成本很低,对于存在既有应用系统的情况,重新开发的成本总是会比整合既有系统要高的。当然,如果没有历史包袱的话,EOS也还是有优势的。

我之所以比较不喜欢这种“弱”约束,原因就在于前面所说的一点:它只会在运行时出错。而对应的强约束则可以在编译时得到检查。它等于在一个方面减少工作量的同时,在另一个方面增加了工作量——把本来应该由编辑器处理的问题交给程序员来做。至少需要增加不少本来不必要的单元测试工作。

不过这倒让我想到,如果是动态语言的话,可能会在粒度和接口复杂度之间取得比较好的平衡。

BTW:看到小错那篇后面又多了不少回复。牛者恒牛说:EOS降低了J2EE的门槛,提高了开发效率(大意)。这可能是事实,但是我不能同意这一句:我用你一半的时间完成你相同的工作,完成的系统更稳定更易维护。

稳定性我不好评价它,毕竟没有用过。但是从RAD这十多年来大大改进了开发效率,但是在易维护性上不但没有改进,反而有所退步这一方面来看,EOS的易维护性比较可疑。

降低技术门槛很容易诱使技术一般的开发人员使用最易开发的方式进行开发工作——比如在RAD里直接在事件响应里处理业务逻辑,这几乎是必然导致未来的维护工作大大增加——当然,EOS可能与此不同,不过它毕竟出来的时间不长,随着时间的推移,维护问题将逐渐显现。

而提高效率的同时,隐藏了过多的技术细节。如ARI所说:这是很危险的。任何事物都有两面性,构件带来方便的同时,必然带来局限。如果在未来维护时需要涉及细节上的变动,就可能受到很多的制约,增加维护成本。

当然,如令狐所说:一个产品被研发出来,总有它的市场和应用。但是普元目前的宣传方式并不能消除上述的这些疑虑。所以我还是认为,如果普元的EOS真是如他们所说的那么好,最好还是尽量多地发一些技术文章来证明,而不是扯淡。

再小8一下365kit

虽然我前几天刚在《我也来谈谈365kit》里谈了一些个人看法,不过看了吕欣欣的一篇《我为什么用365kit》不由得又想多说几句。

我对365kit的理解跟他差不多:就是一个Online的通讯录。

因此我一直不太同意一些建议:比如把365kit做成P2P的实现——这样的话应用的重心就从Online转向客户端,我觉得这就没必要了,这种建议可能对像“友情强档”一类的软件比较合适。

另外,吕欣欣对稳定性的看法,我也很赞同。Online的服务,稳定是很重要的事。

不过在对于隐私的看法上,我有不同意见。如果大家都是好人,那么他的看法是没有错。但是我们必须以最坏的恶意来猜测少数人,比如垃圾邮件发送者,练功分子,电话直销,卖保险的……只要有少数这样的人在用户群中,必然可能骚扰到大多数用户的正常生活。这一点不可不考虑。

你为谁而8?

本来我已经不想再谈这事了,上次那篇《我谋杀了一个BLOG?!》也是纯粹为了澄清事实。

不过今天老方的BLOG真的关掉了,所有的文章都已经被删除(或是隐藏),具体原因不明。

因为最近以来,除了我那篇以外,就只有彩妃(《看了又看》和《冬瓜窜到茄门里》)和小美丽(《小心思》)曾经在BLOG上提到过老方。于是我们三个在MSN上研究:

到底是谁下了致命的一手呢?

结论是:我们也不知道。于是让彩妃背了黑锅(《谁是真凶?》)。-_-|||

不过我们都是很内疚滴,小美丽还特地写了一篇《方志远方大哥你快回来》(已经隐藏,未经许可,故不转贴)。

其实我还是觉得老方大可不必因为我们说了什么而把BLOG关掉。连别人几句议论都受不了,难道你是为别人而写的BLOG吗?你在BLOG里用一杆子打翻一船人的手法批过多少BLOGGER?我好像没有看到有哪一位因此而受不了关门的。如果你明知道自己会受不了,难道当初批别人的时候就没有想到过自己也会有这么一天的吗?

当然,还有一种更可理解的解释。那就是老方已经江郎才尽,写不出什么东西来了——最近几天几乎天天都在写超女——所以借着这个机会下台阶。

这个方法不错,改天我要关门时也可以试试。^O^

[技术帖]闲扯Annotation

首先批评一下Blogdriver的RSS,好像自从被BC收购以后,就开始越来越滞后,常常要过好几天才能看到它更新一次RSS,所以偶错过了很多gigix的新文章,874之。

上午跟令狐谈了一下现在gigix的RSS里“最新”(已经快半个月了-_-|||)的一篇《Annotation Sucks?!》,gigix和robbin显然都是反对annotation的。robbin认为这破坏了JAVA的纯洁性,gigix认为这不如XML的灵活性。

这个JAVA新增的feature很显然是跟.net的Attribute学的。但我和令狐倒觉得这个feature很好。

令狐说:我本来是很欣赏的,觉得把该表达的东西都放到代码中,不会产生“多处修改”而造成代码不同步的隐患。也比较清晰明了。但是gigix这种说法貌似也有道理。差不多就是attribute那个意思。不过感觉attribute大概因为遗留包袱少,更加激进。

我觉得从性能角度上说,annotation还是好的。毕竟需要用到annotation的方面都是很少改变的方面。而且如果它要改变通常源码也需要相应的改变。

令狐还转了一个在javaeye看到的说法:基本上不存在只要修改xml而不要修改代码的情形。

我之所以会关注这个问题,是因为我在用DELPHI实现动态代理来开发一个WEB框架时,业务逻辑是用BPL实现,二者之间打算通过AOP方式插入关于登录验证的部分。可是困难在于,并不是所有的页面调用都需要验证,那么如何区分呢?

当然,如gigix所说,可以通过外部XML来描述。但是如果有Attribute/Annotation这样的MetaData,我觉得是一个更好的解决方案。毕竟是否需要验证本身也是业务逻辑的一部分,与业务代码有密切的关系,分离到外部的XML中不但带来性能问题,还存在着潜在的不一致风险,而且这种灵活性又是不必要的。

所以还是觉得Attribute/Annotation是不错的东东。DELPHI里没有这个东东,看来我只好在方法名上做点文章了,虽然难看但总算可以实现吧。

还要继续产业化吗?

上周有一则新闻说:国务院研究机构最新报告称我国医改不成功。嗯,很好,终于肯承认错误了。

那么还有一个教育产业化呢?

前几天一个13岁的小女孩秀秀的死引起了一些关注。然而只是一些关注而已,世界一流大学是怎样扶贫助困的与我们无关。我们的高校还是要产业化的,所以终归还是忙着赚钱要紧。

农民老父来信:儿子在大学里怎么没学到良心。问题在于不止是良心,偏激一点说就是,除了泡妞和玩游戏,基本上什么也没学到。

钱是越赚越多,事却越干越差。如丘成桐炮轰清华北大所说的那样。其实这些大家也都知道:

清华为何比不上美国二流大学
复旦汉语大赛,中国学生队竟输给留学生队!

其实在整个教育产业化的大背景下,高校都一样,只是名牌大学处于那种出头鸟的位置,更经常被枪打罢了。

有消息说:哈尔滨三中一女生被保送上北大 笔记卖到5500元。为什么别的家长愿意出这么高的价钱来买呢?

前几天偶然买了一本《博弈游戏》,属于博弈论的通俗读物一类的,写的还可以。昨天一口气看了半本,一不小心那种“手里有把锤子,看什么都是钉子”的毛病就又犯了。

那些家长之所以愿意买人家的笔记,就在于现行的教育考试制度就是这样选拔人才的,既然人家能被保送上北大,那么这个笔记自然是有价值的,买来往自己孩子脑袋塞总是有好处的。

插一句:难怪《博弈游戏》的作者说:信邪教的官员、学者、大学生,他们的知识、信仰为什么不能保护他?就因为这些东西是别人”塞“给他的,他也习惯了被塞,既然你能寒给他知识,别人也能塞给他邪教。其实就是这么回事。

这些家长就是陷入了一种“囚徒困境”。如果哪个家长不给自己的孩子塞这些,而别的家长塞了,那自己的孩子就会在现行制度下处于竞争劣势。所以高价买笔记这样的事就成了他们在困境中的相对优势策略。

那些在学校泡妞玩游戏花家里钱的学生也是一样处于一种困境。只有两个选择:花钱,融入同学中;或是省钱,脱离同学。考虑到在学校的时间远比在家的时间多,所以花钱的策略就占了优势。

其实国家也一样。文革结束后相当一段时间里,正如《东方红时空》所说的那样,在那样无聊的时代,人们在“这样的夜晚除了创造人类我们还有什么追求”。于是有了人口生育高峰。二十年后,自然就是就业高峰,虽然中国经济持续增长,但是肯定也是无法承受这样的就业压力。所以“教育产业化”适时出台,以解燃眉之急。

不过这毕竟是一种应急措施,几年时间过去,这个问题还是一样要面对。

差不多也该出个报告承认我们的教育改革不成功了。