80. 投奔怒海——一个Domino老程序员眼里的Java开发

这是一个以键盘鼠标为谋生工具已十多年的人初次进行专门的Java开发的体验和感受,对于Java程序员,这些也许早就习以为常,那就把这当成从一个来自不同世界的新人眼里看看他们自己的工作;对于我的Domino同行,这些体验或许将来有更多共鸣的可能。

在加入到这个Java产品开发团队之前,我的Java开发经验如下:十几年前跟着一本Java入门书做练习写的几个Applet,Domino项目开发中写的几个读写数据库和外部邮件的代理,XPages开发中的少量Java Beans和一个流程库。除此之外就只剩下对用Java做web开发涉及到的繁多的名词Struts、Hibernate、Spring……耳熟而已。

我的工作是给一个大型Java产品增添功能,面对的环境如下:

Linux操作系统,意味着Shell命令和脚本、SSH连接和PuTTy客户端。

JBoss应用服务器

MySQL数据库

Eclipse+Maven+GitHub的开发环境

采用Apache CXF的Web Service开发,随之而来的就是WSDL、SOAP、XML Schema、JAXB……

我的感觉就像从一间熟悉的暗屋走出,霎时被强烈的阳光照得睁不开眼。撇开我专栏文章一直在讨论的Domino在技术架构和开发上的独特性,这样的个人感受恰恰反映了一个封闭的适用于专门领域的开发平台与一种通用的(Versatile)开放的编程语言和环境之间的巨大和根本的差异。

Domino环境下的快速开发是建立在现成的封闭不透明的基础架构之上的,在传统的客户端应用程序开发里,用户管理、权限管理、登录过程、应用程序界面、与邮件的集成以及视图等等都是系统自带的功能。这一方面极大地省去了开发者的时间和精力,保证了应用程序的基本框架上的可靠性,另一方面这些“黑盒”一样的功能基本没有代码接口,无法定制、调整和优化。在设计应用程序的这些部分时,程序员与其说是在开发,更像是一个软件用户。

Java等通用语言的开发则完全不同。一切都是建立在可查询的代码基础上的。没有现成的功能,同时也没有天然的限制。各种框架和工具类库应需而生。

如果说Domino程序员时常遇上的问题是没有足够的资料和文档,Java同行则只可能抱怨“信息”太多,规格说明(Specification)、标准、API文档、汗牛充栋的教材和随处可寻的参考资料、当然数量最多的是不断衍生和更新的技术、框架、类库和工具的资料。我曾经和朋友说过,一个入行五年的Domino程序员和只有一两年经验的新手在知识和能力上有较大差别,但是再干上五年,改变就不大了。这样的论断对Java程序员大概不适用,即使有十年经验的程序员,仍然会面临不断涌现的新知识和技术。记得我刚开始学习LotusScript类的文档时,觉得它们的功能范围和数量都有限,偶尔要用到Java和.Net时对包罗万象的类库很有兴趣。现在由于记忆力和求知欲的下降,在做Java开发时每每需要查询API文档和技术资料,就像读一篇文章不断遇上生字要查字典一样,有些不堪其苦了。对比今昔,如同一个嫌游泳池里没有风浪过于平静的人突然被扔进太平洋,刚从一个浪里钻出,又被一个巨浪拍下。

转到这个新环境下开发,给我印象最深的还是三点:

一是开源环境下Java积累的代码如此之多。使用Maven,轻松地往项目里添加几个依赖的jar,Maven自动计算和下载的依赖项之多可能会让你大吃一惊。互联网上大量的Repository构建了一个代码重用和共享的海洋,在这里你才会意识到全球Java程序员工作在一个无差别的环境里,无数大脑日积月累的集体成果。每个人的贡献就像水滴一样汇入大海。Java自带的庞大类库在可以依赖使用的资源面前也显得小巫见大巫。可使用的代码之丰富和便利,也使得一个项目或产品迅速被公共代码胀大。我目前开发的产品的war文件总体积已达到五百多兆。

二是体验到Java的惊人内存需求。一个应用服务器动辄消耗上G的内存,各种开发工具也张开血盆大口,以百兆为单位吞噬着内存。反观运行本机码的Domino服务器和传统的客户端,空闲时每个进程只占用区区几兆内存,整个Domino服务器加起来也不过几十兆。Java的跨平台特性和开发高效从这个角度便可以用“以空间换时间”来概括了。可以这种海量相提并论的就是日志的数量,几分钟的部署若干个war的时间里,屏幕疯狂地刷动。一天下来,鼠标没点几次,应用产生的日志就已数十兆。

第三点与Java语言的特性相关。因为不像在Domino那样的环境里有许多现成且却无法改动的功能,所有feature都要依靠代码实现,并且Java的语法本身有些冗赘(即是需要大量的所谓Scaffold),导致代码的数量随项目的成长迅速增多。Domino中的项目受制于平台限制,得益于现成功能,规模都不大。典型的各种文档管理、流程应用数据库,都可以一人开发和维护,即使是复杂的一整套OA和企业的业务系统,代码的总量也不很大,一个人完全可以掌握所有的细节。与此相对地,一个复杂的Java产品代码上十万行,每个开发人员都只可能熟悉其中部分,对产品的整体则仅有结构上的理解。

80. 投奔怒海——一个Domino老程序员眼里的Java开发

时间: 2024-10-14 16:18:14

80. 投奔怒海——一个Domino老程序员眼里的Java开发的相关文章

一个BAT老程序员的忠告!

一.在中国,你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你更不要认为那些从事市场.运营的人,没有前途. 不清楚你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑. 更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他

《程序员的呐喊》:一个熟悉多种语言的老程序员对编程语言、开发流程、google的战略等的思考,比较有趣。 五星推荐

作者熟悉二三十种编程语言,写了20多年代码.本书是作者对编程语言.开发流程.google的战略等的思考.比较有趣. 前面部分是作者对编程语言的一些思考.作者鄙视C++, Java,面向对象.比较有趣的是作者把编程语言和思想划分为自由和保守两大阵营.自由派希望快速发布,容忍bug和安全上的缺陷,保守派则重视安全和稳健 作者认为,设计优秀的弱类型系统比同样优秀的强类型系统更有竞争力. 作者推崇精简,认为代码最大的敌人是体格,也就是代码的行数. 作者认为Perl和Python两种语言的出现时间差不多,

漫谈程序员系列:一个老程序员的2014年终总结

人生天地之间,若白驹过隙,忽然而已.蓦然回首,头上似霜雪,脸上似山川.我的 2014 啊,你就这么毫无眷恋地离我而去了.既然往事已不可追,未来尚未到来,在这年末岁首的间隙,就让我来回忆一下余烟尚存的 2014 吧. 2014 年,对我而言,发生了很多事,不管怎样,我还是一个程序员,这是工作.生活,以及我自己,给我的标签.也许很快这个标签会泛黄.蝶化.零落成泥碾作尘,不过不论怎样,它是我青春的纪念,它仍将伴随着我继续前行. 坚持技术博客写作 看到这里,也许你笑了. 是啊,这一年我不务正业,虽然每周

一个老程序员的回忆录--近几年中国软件的发展【转】

有一次出差途中,幸遇一位程序员.初观其貌,约30有余,姑且称其为“老”程序员.这位老兄初看不善言辞,但同他侃起他软件开发的经历时,其人滔滔不绝.我虽非干这个行当的,但据我的社会经验他绝不是在夸夸其谈,借机吹嘘自己.所以照其原话一字不差,摘录下来,供有兴趣的人们读一读解闷:     “从1989年进入大学开始,到而今攻读博士学位已经有12年有余.虽然我的专业一直都是软件,但并非一进入这个专业便可以算作从事了这个专业.假如认为大学期间幼稚有余,从硕士真正算是进入了软件开发领域,至今也有9年之多.然而

一个老程序员的心理话,句句戳心(转)

一个老程序员的心理话,句句戳心 码易-猿猿-yuan 2015-11-04 12:22:45 中国的程序员是世界上最好的程序员.他们不计报酬,没日没夜地工作.没有女朋友,没有节假日,可能几年后他们一无所有.他们仍在加班. 一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着中国,把我们的后继军训练成软件蓝领――――胸无大志,目光短浅,稍有点成绩就自 满就自高自大的人,浑不知天外有天,外国正在虎视眈眈盯着中国的庞大市场. 由于软件蓝领的呼声人们不再致力于培养大批的高精尖人才,掌握国

10年IT人生酸甜苦辣的经历!一个老程序员的心理话

10年IT人生酸甜苦辣的经历!一个老程序员的心理话 我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶.我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心.而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑.C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”.96,97级的不少大学生都去做Web 了.当然我没有任

一个初中生到程序员的辛酸经历

一个初中生到程序员的辛酸经历 转自木板 前言:我将写下一个穷苦家庭的农村孩子的经历.我念书不多,文笔不好,基本上是流水式的叙述,大家多多见谅.如果你现在年轻或迷惘,那你看下这篇文章或许有帮助.如果你想了解社会的底层,也可以看看本文.在这篇文章里我会写一些我对人生的看法,希望可以给各位参考参考. 我今年二十八岁,个子不高,长得还算端正.在学校受的教育不高,就读到初中二年级下学期.   我干过很多行业,学过厨师,学过装修,做过酒店服务员,送过报纸.可以说在在社会底层的经历十分的丰富.后来参加自考拿了

老程序员应该记住的 5 件事

如果你甘于现状,并且已经在计划着怎么用退休金了,那么你不是这个帖子的主角.当然还是要恭喜你,已经快熬出头了.但是,如果你同我一样,尽管发现自己在变老,但却依然无法抵挡编码和构建东西的欲望,那么请继续往下看.我曾是一个系统软件工程师,但在我快40岁的时候,我被创业撞了一下腰.我认为创建自己的公司是一件很酷的事情.我建立了风险投资,在一些非常小的饥饿创业公司得到了一些花哨的头衔.我很自信我会成为一个好的CEO,一个不算坏的管理者,而且即便我不再编码,我也可以聘请一些优秀的程序员和管理人员——以求高品

老程序员应该记住的5件事

英文原文:Five Things Old Programmers Should Remember 如果你甘于现状,并且已经在计划着怎么用退休金了,那么你不是这个帖子的主角.当然还是要恭喜你,已经快熬出头了.但是,如果你同我一样,尽管发现自己在变老,但却依然无法抵挡编码和构建东西的欲望,那么请继续往下看. 我曾是一个系统软件工程师,但在我快 40 岁的时候,我被创业撞了一下腰.我认为创建自己的公司是一件很酷的事情.我建立了风险投资,在一些非常小的饥饿创业公司得到了一些花哨的头衔.我很自信我会成为一