演講人:浙大高分子物理鄭強教授
地點: 浙江圖書館報告廳
精彩語錄節(jié)選:
“在中國這個發(fā)展中國家,你能建10所世界一流大學(xué),那美國有多少所?日本有多少所?現(xiàn)在的實際狀況是:世界上前200所大學(xué),中國一所都排不進!在亞洲能排出幾所?我到國外去看了以后,感到要將浙大建成世界一流大學(xué)就像共產(chǎn)主義理想.“
“以前說“無知無畏“,現(xiàn)在卻是“無知才無畏“,許多企業(yè)把浙江省技術(shù)監(jiān)督局、科委的人請來吃一頓飯,喝一點酒,他就給你簽個字,再把我們這些教授脅迫到那里去,給你蓋個章,然后就是“填補國內(nèi)外空白“、“國際先進水平“,寫論文則是“國際領(lǐng)先水平的研究成果“、“首次科學(xué)發(fā)現(xiàn)“等等,這都是目前非常嚴重的問題!作為一個大學(xué)教授,我深深地為此擔(dān)憂!這不是我們的責(zé)任,是我們的領(lǐng)導(dǎo)無知,是他們倡導(dǎo)了這個主流.我知道在座的處長或老總?cè)兆雍茈y過,因為你們不寫這樣的報表,就拿不到錢,項目就得不到批準(zhǔn).教授也同樣如此,天天寫報告,而不是在實驗室靜下心來好好搞研究,這是很嚴重的!“
“我們國家的現(xiàn)實和發(fā)展就是這樣:凡是依賴不成的,我們自己都能搞得像模像樣,比如二彈一星;凡是能夠引進的,就都搞不成.......現(xiàn)在很多合資企業(yè)就這樣,賣點東西,而沒有去考慮這些深層次的東西.殊不知,這就是社會的惡性循環(huán)!“
“我認為:語言、計算機就是工具.中國的外語教授講英語還不如美國賣菜的農(nóng)民!怎么看待這個問題?日本博士、德國教授說不出英語的多得是!我們怎么能說一個人不會說英語就是文盲呢?語言就是一個工具!你沒有那個環(huán)境,他怎么能講這個語言呢?......如果我是教育部長,我要改革二件事:第一,取消六級考試,你一個研究生連中文一級都不及格,你英文考六級干什么呢?看看研究生寫得論文,自己的民族文化都沒有學(xué)好,天天考英語──打勾:托福打勾,GRE打勾,英文考出很高的分,可哪個寫的英文論文在我面前過得了關(guān)呢?過不了關(guān)!這樣培養(yǎng)出來的人能干什么?自己搞的專業(yè)一點都沒學(xué)好!......說不會計算機就是文盲,這又是一個誤區(qū)!我現(xiàn)在是教授,我顧不上搞計算機!“
“你看我,從高中開始學(xué)英語,大學(xué)學(xué),碩士學(xué),博士學(xué),花了我多少精力!你說中國人怎么做得出高科技的研究成果?我這幾天就教訓(xùn)我手下的幾位女學(xué)生,問她們在干什么,看不到人影,一天到晚考這樣、考那樣的,到美國去干什么?在國內(nèi)要干的事多著呢!你整天考英語,美國人連報個名都要收你們的錢,日本人也是如此,中國學(xué)生到日本去要交手續(xù)費,到日本留學(xué)是為日本人打工,好不容易掙點錢交了學(xué)費,讀完博士在日本的公司就職,當(dāng)勞動力,掙了一筆錢后要回國了就買了家電,把錢全給了日本人.你們都沒有注意這件事,這里面都是經(jīng)濟問題.這就是素質(zhì)教育到底是什么.“
“中小學(xué)的教育就是聽話,老師管干部,干部管同學(xué),孩子們都學(xué)會了成年化的處世方式,這是害人啊!這樣強迫性地做了一些好事后,沒有把做好事與做人準(zhǔn)則結(jié)合起來去培養(yǎng),而只學(xué)會了拍馬屁、討老師喜歡、說成人話.上次電視上就曾經(jīng)播出,一個小孩得了個獎,主詩人問他最愿意說什么,他說:“我最愿意跟江爺爺說:我向你報告!““江爺爺“是誰?還不是老師教的!孩子們在中小學(xué)活得很累,到了大學(xué)就沒人管了,所以就要玩、就要談戀愛.
“我們有很多同學(xué)成績好,卻什么都做不了.在我們大學(xué)像我這種程度的人,招博士生是從來不看成績的,成績算什么!現(xiàn)在我從事的這個領(lǐng)域在中國有叁個杰出的人才,當(dāng)初在讀研究生時都補考過,而成績考得好的幾個人卻都跑到美國去賣中藥了,這說明了什么問題?作老板的可不能這樣啊!......人才的梯隊一定要合理,而不要認為教授就是萬能的、博士就是萬能的.中國的教育體系就是讓每一個老百姓都充滿希望和理想,教育孩子們要樹立遠大的理想.實際上,人的能力是不一樣的,掃地能掃好,也應(yīng)該受到尊重;打掃廁所能打掃干凈,也應(yīng)該受到尊重,不能動不動就要高學(xué)歷.我要提醒的是:在國外可不是這樣,美國、日本的博士就很難找到工作,為什么?因為老板心疼錢,招了博士要給他高工資,而他能做什么用呢?這是個具體問題.“
“科技到底該干什么?高科技到底該干什么?如果我是科技部長,該玩的就玩,就像陳景潤,他就是玩!陳景潤如果是處在今天的中國,他絕對是要去討飯的,因為他不會去搞產(chǎn)業(yè)化,他的英語也不好,他說話都不流利,中文都講不好,按現(xiàn)在“標(biāo)準(zhǔn)“,他是個文盲,還談什么教授!日本人就是喜歡美國人,我跟日本人說:你們這個民族愛誰,誰就要向你們?nèi)釉訌?日本人就是喜歡黑人也不喜歡中國人.......我特別對我們的女教授、女同學(xué)說:在日本人面前一句日文都不要講,會也不要講;日本人一聽說你講英文,特別是看到中國女孩講英文,腿都要發(fā)軟,這是真的!“
“中國人為什么這些年都往外跑,最重要的是要讓國民自己愛自己國家.......如果我是杭州的市長,我絕對不是狹隘的民族自尊心──如果杭州有什么災(zāi)難,我就首先把杭州的老百姓安排在香格里拉,讓外國人在外面排隊!(掌聲!)這樣,你才會讓你的國民愛自己的國家!一個日本的農(nóng)民跑到峨嵋山去玩,骨頭摔斷了,你就用中國空軍的直升飛機去救他,而在日本大學(xué)一名中國留學(xué)生在宿舍里死了7天才被發(fā)現(xiàn);名古屋大學(xué)的一對中國博士夫婦和孩子誤食有毒磨菇,孩子和母親死了,父親則是重癥肝炎,在名古屋大學(xué)醫(yī)學(xué)院的門診室等了12個小時,也沒有一個日本教授來看望!而你們?yōu)槭裁催€要這么友好,以為自己很大度,實際上是被人家恥笑,笑你的無知!你們這個民族*!我們不能這樣!我們的領(lǐng)導(dǎo)人跑到國外去訪問,看到有幾個人在歡迎他們,就感到挺有面子;而外國來了個什么人物,都是警車開道,這究竟是怎么回事?這讓我們中國人感到是自豪還是悲哀?所有這些,對教育工作來講,都是深層次的問題.所以我經(jīng)常講,我作為一位自然科學(xué)工作者,我教育我的學(xué)生,首先是學(xué)會做人,沒有這些,你學(xué)了高分子,外語都是花架子,你不是一個完整的人!“
“一個觀念或是一個問題:是不是技術(shù)越新越好?今天談的就都是提醒大家的......技術(shù)并不是越新越好,技術(shù)要有儲備.日本的企業(yè)現(xiàn)在賣的東西大都是10年或15年前的技術(shù),好東西他不拿出來,他要等到現(xiàn)有的技術(shù)把成本收回并獲得盡可能高額的利潤以后才會拿出來.其次,我的對手什么時候推出新東西時,我才會出手.不要以為你今天好不容易搞了生產(chǎn)線,明天又有新的了,你的錢還沒賺到就換新的,有什么用?我這次到日本剛好談到懸浮列車──即使何先生在我也要說,這是中國人又在玩高新科技.懸浮列車目前在理論上都還不成熟.日本現(xiàn)在最完善,最經(jīng)濟的就是新干線!
從經(jīng)濟和市場的概念來講,越先進的東西,風(fēng)險越大,有可能得到的回報就越少!"
?
posted @
2006-05-19 14:23 崛起的程序員 閱讀(150) |
評論 (0) |
編輯 收藏
java.lang.NoSuchFieldError: tokenTypeToASTClassMap
??????? at org.hibernate.hql.antlr.HqlBaseParser.buildTokenTypeASTClassMap(HqlBaseParser.java:4224)
??????? at org.hibernate.hql.antlr.HqlBaseParser.<init>(HqlBaseParser.java:107)
??????? at org.hibernate.hql.antlr.HqlBaseParser.<init>(HqlBaseParser.java:112)
??????? at org.hibernate.hql.ast.HqlParser.<init>(HqlParser.java:47)
??????? at org.hibernate.hql.ast.HqlParser.getInstance(HqlParser.java:42)
??????? at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:203)
??????? at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
??????? at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
??????? at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:422)
??????? at org.hibernate.impl.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:383)
??????? at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:286)
很簡單:查看antlr.jar這個包,把它替換成與當(dāng)前版本hibernate統(tǒng)一的antlr包,其實也就包的版本不同一所造成的。
posted @
2006-05-18 20:07 崛起的程序員 閱讀(841) |
評論 (0) |
編輯 收藏
1、新建一個啟動畫面Window類
2、調(diào)用prepareSplash()函數(shù),初始化啟動界面
- ????private?void?prepareSplash()
- ????{
- ????????Toolkit?toolkit?=?Toolkit.getDefaultToolkit();
- ????????windowSplash?=?new?Window(?this?);
- ????????Image?image?=?toolkit.getImage(?"images"?+?File.separator?+?"splash.gif"?);
- ????????ImageCanvas?canvas?=?new?ImageCanvas(?image?);
- ????????windowSplash.add(?canvas,?"Center"?);
- ????????Dimension?scmSize?=?toolkit.getScreenSize();
- ????????int?imgWidth?=?image.getWidth(?this?);
- ????????int?imgHeight?=?image.getHeight(?this?);
- ????????windowSplash.setLocation(?scmSize.width2?-?(imgWidth2),?scmSize.height2?-?(imgHeight2)?);
- ????????windowSplash.setSize(?imgWidth,?imgHeight?);
- ????}
3、在Application的JFrame類(主界面)中調(diào)用startSplash(),顯示啟動界面,然后初試
化JFrame的各個可視化組件,初始化后臺數(shù)據(jù)庫等(如數(shù)據(jù)庫的連接)
- ????private?void?startSplash()
- ????{
- ????????windowSplash.setVisible(?true?);
- ????????windowSplash.toFront();
- ????}
4、在所有的初始化工作完成之后,調(diào)用stopSplash()函數(shù),停止顯示啟動畫面
- ????private?void?stopSplash()?{
- ????????windowSplash.dispose();
- ????}
posted @
2006-05-18 13:11 崛起的程序員 閱讀(276) |
評論 (0) |
編輯 收藏
作者:金蝶中間件公司CTO袁紅崗
不知不覺做軟件已經(jīng)做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱自己是高手,因為和我心目中真正的高手們比起來,還差的太遠。世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
1. 扎實的基礎(chǔ)。數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、編譯原理,這些是所有計算機科學(xué)的基礎(chǔ),如果不掌握他們,很難寫出高水平的程序。據(jù)我的觀察,學(xué)計算機專業(yè)的人比學(xué)其他專業(yè)的人更能寫出高質(zhì)量的軟件。程序人人都會寫,但當(dāng)你發(fā)現(xiàn)寫到一定程度很難再提高的時候,就應(yīng)該想想是不是要回過頭來學(xué)學(xué)這些最基本的理論。不要一開始就去學(xué)OOP,即使你再精通OOP,遇到一些基本算法的時候可能也會束手無策。
2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想象力是建立在豐富的知識的基礎(chǔ)上,除計算機以外,多涉獵其他的學(xué)科,比如天文、物理、數(shù)學(xué)等等。另外,多看科幻電影也是一個很好的途徑。
3. 最簡單的是最好的。這也許是所有科學(xué)都遵循的一條準(zhǔn)則,如此復(fù)雜的質(zhì)能互換原理在愛因斯坦眼里不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現(xiàn),也更容易維護。遇到問題時要優(yōu)先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復(fù)雜的方案。
4. 不鉆牛角尖。當(dāng)你遇到障礙的時候,不妨?xí)簳r遠離電腦,看看窗外的風(fēng)景,聽聽輕音樂,和朋友聊聊天。當(dāng)我遇到難題的時候會去玩游戲,而且是那種極暴力的打斗類游戲,當(dāng)負責(zé)游戲的那部分大腦細胞極度亢奮的時候,負責(zé)編程的那部分大腦細胞就得到了充分的休息。當(dāng)重新開始工作的時候,我會發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
5. 對答案的渴求。人類自然科學(xué)的發(fā)展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們?nèi)ジ冻觥V灰銏远ㄐ拍睿欢ㄒ业絾栴}的答案,你才會付出精力去探索,即使最后沒有得到答案,在過程中你也會學(xué)到很多東西。
6. 多與別人交流。三人行必有我?guī)煟苍S在一次和別人不經(jīng)意的談話中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對同一問題的看法,會給你很大的啟發(fā)。
7. 良好的編程風(fēng)格。注意養(yǎng)成良好的習(xí)慣,代碼的縮進編排,變量的命名規(guī)則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8. 韌性和毅力。這也許是"高手"和一般程序員最大的區(qū)別。A good programming is 99 weat and 1ffee。高手們并不是天才,他們是在無數(shù)個日日夜夜中磨練出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個 10000以內(nèi)的素數(shù)表,把它們?nèi)汲聛恚缓笤贆z查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
這些是我這幾年程序員生涯的一點體會,希望能夠給大家有所幫助
posted @
2006-05-16 14:35 崛起的程序員 閱讀(301) |
評論 (0) |
編輯 收藏
創(chuàng)業(yè)者要遵循的5個基本做事方法
|
|
對于想創(chuàng)業(yè)的人,我對他們的提醒是:不要被成功企業(yè)所編寫的創(chuàng)業(yè)故事所迷惑,因為那里講的都是一個企業(yè)成長過程中過五關(guān)斬六將的最精彩的部分。作為創(chuàng)業(yè)者,有5個很基本的做事方法你必須遵循。
我鼓勵大家創(chuàng)業(yè),但鼓勵大家創(chuàng)業(yè)不等于盲目創(chuàng)業(yè)。對于想創(chuàng)業(yè)的人,我對他們的提醒是:不要被成功企業(yè)所編寫的創(chuàng)業(yè)故事所迷惑,因為那里講的都是一個企業(yè)成長過程中過五關(guān)斬六將的最精彩的部分。你要用自己的頭腦去思考,去學(xué)習(xí)。作為創(chuàng)業(yè)者,有5個很基本的做事方法必須遵循:
第一,一定要有激情和理念,你才能感染自己和其他人。在最困難的時候,在所有人絕望的時候,你要感染你的客戶,感染你的員工,感染你的合作伙伴……你要感染所有人!
第二,要專注。別說小公司,大公司多元化也有失敗的例子,小公司更應(yīng)該抓準(zhǔn)一個點把它做深、做透。這樣才能積累所有的資源。小公司到處試驗,會讓你的企業(yè)耗盡很多資源。專注就是有所不為才能有所為,這點非常重要。
3721堅持了6年,一直堅持做中文上網(wǎng)、中文搜索,我就做這一件事情;Google也是很專注,有了一定的積累以后才能橫向擴展。很多創(chuàng)業(yè)者都栽在不夠?qū)W⑸希且驗樗约耗X子里面沒有想清楚,今天在這兒打一口井,明天在那兒打一口井,最后哪兒也沒有挖出水,地面上只是留下了許多坑而已。你5個指頭都叉開和一個拳頭是不一樣的,專注就是你把所有的資源都凝聚在一個點上。
第三是執(zhí)行力,很多創(chuàng)業(yè)者很容易在這里摔跟頭。我見過很多人夸夸其談,估計他們創(chuàng)業(yè),至少第一次肯定都不會成功,因為我覺得真正的創(chuàng)業(yè)者要少說多做,要把自己美妙的想法努力轉(zhuǎn)化成結(jié)果。
創(chuàng)業(yè)者做事情著眼點要低,要現(xiàn)實。很多創(chuàng)業(yè)者去見風(fēng)險投資人的時候,說起自己的事業(yè)都說得云山霧罩的,其實這樣會讓風(fēng)險投資人根本不明白你在說什么。你只要踏踏實實地說你想做什么,這個東西能解決什么問題就可以了。
想法只是一個開頭的方式,是不值錢的。我們坐在這兒,一個小時可以天馬行空,弄出幾十個想法來,腦子稍微一轉(zhuǎn),你的思想已經(jīng)在宇宙走了好幾個來回了—- 行動的成本才是最高的,對創(chuàng)業(yè)者來講要看自己是不是有這種經(jīng)驗和執(zhí)行力。同樣的想法兩個人同樣做,誰的執(zhí)行力更強,誰的經(jīng)驗更豐富,誰就更容易成功。
第四,創(chuàng)業(yè)者還要有一種胸懷,就是所謂與時俱進的學(xué)習(xí)能力。我看到很多人創(chuàng)業(yè)不成功就是因為他們太自負,不能從成功人士那里學(xué)到一些優(yōu)點,聽不進好的建議。很多創(chuàng)業(yè)者沒有經(jīng)驗,沒有經(jīng)驗不可怕,問題是你有沒有謙虛、開放學(xué)習(xí)的心態(tài),使你不能與時俱進。很多創(chuàng)業(yè)者會陷入一個死循環(huán),他們通常認為自己看得準(zhǔn),才是出手的前提;積累經(jīng)驗越多,才能越看越準(zhǔn)。但你沒經(jīng)驗,又怎么可能看準(zhǔn)?
解決這個問題有辦法,時機不成熟,就不創(chuàng)業(yè),先給別人打工。把公司讓我做的事情做好,提高自己的能力,逐步就知道創(chuàng)業(yè)的方向了。我不贊成年輕人剛畢業(yè)就創(chuàng)業(yè),我認為他們還是應(yīng)該在公司里踏踏實實干五六年,雖然是打工,實際上是公司在給你“繳”學(xué)費,你在不同的平臺通過積累經(jīng)驗,這是任何老板剝奪不走的,只有積累這種經(jīng)驗,你的創(chuàng)業(yè)能力才更高,才更有把握。我在方正工作時,從來沒有覺得自己是打工,我一直認為自己是在創(chuàng)業(yè),因為我覺得是在積累自己的能力,積累自己的資源。客觀上,我對方正還是作了很多貢獻。我到雅虎還是一種創(chuàng)業(yè)的心態(tài),我把雅虎的文化改成創(chuàng)業(yè)的文化,因此雅虎中國在2004年取得了很好的業(yè)績。保持良好的心態(tài),這是你創(chuàng)業(yè)成功的前提。
第五,不要盲目去模仿和抄襲大公司的做法。比如,很多人在新浪、搜狐做過,他出來就會不自覺按照大公司的做法建立一些規(guī)范制度等,但大公司為了穩(wěn)妥,一般都比較慢。大公司為這個“慢”付得起代價,小公司不能用大公司的這種做事方法。我講過大象和兔子的故事:大象和駱駝3天不吃也沒事,但是新創(chuàng)業(yè)的公司像小兔子一樣,每一步都要跑得快,要到處找食。本來就是個兔子,卻以為自己是個大象,用大象的心態(tài)做事,在狼面前慢慢踱步,最后就會被狼吃掉。創(chuàng)業(yè)意味著你要有創(chuàng)業(yè)的做事方式。
如果你跟大公司做一樣的事,他的實力很強,跟他比是沒有優(yōu)勢的。因此,如果把整個產(chǎn)業(yè)畫成一張地圖,你可以看哪些領(lǐng)域被誰占了,誰有什么優(yōu)勢。你應(yīng)該找一個不在這張地圖上的事情去做。比如說,前幾年大家都不重視的搜索,現(xiàn)在就做起來了。創(chuàng)業(yè)公司應(yīng)該踏踏實實把自己的事做好,不要在自己很小的時候就想要通吃,要顛覆,要滅掉誰,這是沒有意義的。小公司要學(xué)會跟大公司合作,要學(xué)會廣交朋友,在這個產(chǎn)業(yè)鏈跟別人合作,會使自己成功得更快一些。
周鴻祎:1970年10月生于湖北,1995年畢業(yè)于西安交大管理學(xué)院系統(tǒng)工程系,獲碩士學(xué)位。曾就職方正集團,先后任研發(fā)中心副主任、事業(yè)部總經(jīng)理等職。1998年10月,創(chuàng)建3721公司。2003年3721被雅虎收購,2004年3月出任雅虎中國總裁。2005年7月6日,宣布將于8月31日正式辭去雅虎中國總裁一職。9月1日,他將以投資合伙人的身份正式加盟IDGVC(國際數(shù)據(jù)集團風(fēng)險投資基金)。
|
posted @
2006-05-16 10:53 崛起的程序員 閱讀(228) |
評論 (0) |
編輯 收藏
Eclipse Communication Framework (ECF)? 是一個新的ECLIPSE項目,目的是為了提供一個開源的通訊框架,讓開發(fā)者可以更容易開發(fā)出通訊相關(guān)的項目。
IBM的文章Getting started with the Eclipse Communication Framework 介紹了ECF,同時告訴我們?nèi)绾伍_始使用ECF,同時還提供了一個基于Yahoo IM 的例子。
Getting started with the Eclipse Communication Framework
http://www.ibm.com/developerworks/opensource/library/os-ecl-commfwk/?ca=dgr-jw22ECF
下載地址
http://www.eclipse.org/ecf/downloads.html
引用頁 http://www.eclipse.org/downloads/download.php?file=/technology/ecf/org.eclipse.ecf.sdk-0.8.0.S20060507.zip
安裝完畢插件后,起服務(wù)目錄在
$:\eclipse\features\org.eclipse.ecf.serverfeature_0.8.0\bin
startserver.cmd
然后打開eclipse 菜單ECF鏈接選擇協(xié)議ecf generic 后設(shè)置服務(wù)器url例如http://localhost:3282/server,輸入別名
進入強大的聊天室.讓我們一起XP?編程吧
posted @
2006-05-12 17:41 崛起的程序員 閱讀(1059) |
評論 (0) |
編輯 收藏
posted @
2006-04-30 09:36 崛起的程序員 閱讀(431) |
評論 (0) |
編輯 收藏
web2.0定義是什么?
web2.0定義是什么?這是一個簡單直接但又是最核心的問題,討論web2.0的文章層出不窮,內(nèi)容包括如何實現(xiàn)web2.0, web2.0如何盈利, web2.0如何擊敗web1.0等。但沒有多少人愿意討論web2.0的定義,也沒有多少人討論web2.0已有的定義存在什么問題。沒有清晰理性的定義,我們的討論就像唐吉珂德騎著毛驢沖向他心目中的怪獸-大風(fēng)車一樣。可笑而又毫無意義。
翻閱搜索引擎帶給我們關(guān)于web2.0的海量資料,找到了Blogger Don的“WEB2.0概念詮釋”,他寫道“Web2.0是以 Flickr、Craigslist、Linkedin、Tribes、Ryze、Friendster、Del.icio.us、43Things.com等網(wǎng)站為代表,以Blog、TAG、SNS、RSS、wiki等社會軟件的應(yīng)用為核心,依據(jù)六度分隔、xml、ajax等新理論和技術(shù)實現(xiàn)的互聯(lián)網(wǎng)新一代模式。” 這個定義把一些讓人眼花繚亂的前衛(wèi)名詞和計算機專用術(shù)語堆砌在一起作為WEB2.0概念詮釋,。把應(yīng)用,協(xié)議,語言格式混雜在一起來描述WEB2.0概念。定義者要么對計算機知識一知半解,要么是企圖讓人們的感到神秘從而對其頂禮膜拜。按照其定義的方式對“國家”這個概念進行詮釋,那國家就是“以中國,法國,美國,俄羅斯,土耳其等集合體為代表,以軍隊,警察,文官系統(tǒng),議會等社會團體的應(yīng)用為核心,依照量子力學(xué),馬斯絡(luò)需求層次理論,混沌學(xué)等新理論和技術(shù)實現(xiàn)人類社會的聚集模式。“,多么荒唐的的定義
一個新概念或新理論不可能從石頭里蹦出來,也不會超越我們的時代憑空想象。他必然有自己的歷史傳承。理解WEB2.0,我們要了解WEB甚至是bbs的歷史。 World Wide Web,簡稱WWW,由英國人TimBerners-Lee 1989年發(fā)明。通過WEB把互聯(lián)網(wǎng)上的資源在一個網(wǎng)頁里直觀的表示出來并通過網(wǎng)頁相互連接。在web之前,互聯(lián)網(wǎng)相當(dāng)數(shù)量的文檔資源是存放在bbs上。通過對bbs發(fā)展歷史的研究,我們發(fā)現(xiàn)web時代的內(nèi)容服務(wù)網(wǎng)站主要是從bbs的功能中演化而成。
BBS誕生于70年代末,那時還沒有瀏覽器,搜索引擎,甚至沒有個人網(wǎng)站。我們在BBS上可以做四件事1。發(fā)布新聞 2。發(fā)布交易信息 3。發(fā)布個人感想,心情描述4。互動式問答 前三個功能逐漸從bbs中分離出去,發(fā)展成三個方向的網(wǎng)站----新聞類,電子商務(wù)類和博客類,這三類網(wǎng)站經(jīng)過整合逐漸成為各自的門戶。如新浪,易趣,博客中國。第四個功能互動式問答正在分離,但還沒有出現(xiàn)該領(lǐng)域的門戶網(wǎng)站。如www.ideacool.net ,新浪的愛問,小i等網(wǎng)站。我們可以把這一類網(wǎng)站模式稱之為威客模式,英文名witkey。
我們應(yīng)該已注意到1。新聞類網(wǎng)站。2.電子商務(wù)類網(wǎng)站 與3。博客類 4。威客類網(wǎng)站的功能和形式上有一個明顯的鴻溝。這個鴻溝就應(yīng)該是web1.0 與web2.0的劃分界線。 新聞類網(wǎng)站和電子商務(wù)類網(wǎng)站為代表的web1.0時代是以信息接收者為中心,免費分享信息的時代。博客類和威客類網(wǎng)站為代表的web2.0時代是以信息提供者為中心。互聯(lián)網(wǎng)用戶能夠管理個人的資料和信息。通過各種途徑讓自己的智慧,知識,經(jīng)驗,技能體現(xiàn)價值。簡而言之,web2.0的定義就是提供一種平臺讓個人的智慧,知識,技能體現(xiàn)價值的一種互聯(lián)網(wǎng)新模式。這種模式的表現(xiàn)形式主要為博客類,和威客類兩種。實現(xiàn)的支撐包括互聯(lián)網(wǎng)技術(shù),信用制度,支付制度等。
--------------------------------------------------------------------------------
Web2.0的盈利點
?
主要集中在威客模式上:?
1. 威客模式面向的對象主要是有專業(yè)專長的用戶如科學(xué)家,工程師,醫(yī)生等,博客面向的是善于表達個人觀點和思想的用戶如記者,娛樂明星,專欄作家等等。
2。個人的知識,技能,智慧可以體現(xiàn)價值。其中“體現(xiàn)價值”不一定指獲得經(jīng)濟利益,獲得受幫助者的贊揚,獲得公眾的認可也是體現(xiàn)價值的方式之一。但讓參與者獲得經(jīng)濟利益是威客模式的重要特點。
3。個人的知識,技能,智慧可以體現(xiàn)價值,但不代表參與者一定能夠獲得收益,這要取決于其知識,技能的含金量,可以說,能力越大,收益越大。
4。威客模式的建立需要實踐該模式的平臺建立信用制度,支付制度,例外處理制度等等。這些制度是否完善是該平臺能否持續(xù)發(fā)展的決定性因素。
5。威客模式也是人類大腦通過互聯(lián)網(wǎng)協(xié)同工作的一種模式。
6.為威客提供服務(wù)的平臺通過分享威客交易知識的收益獲取利潤。
posted @
2006-04-30 09:30 崛起的程序員 閱讀(218) |
評論 (0) |
編輯 收藏
????進入2004年,伴隨著各種機遇和挑戰(zhàn),中國的軟件開發(fā)仍然在摸索中前進,程序員也在不斷的學(xué)習(xí)和工作中探尋自己的未來。在這個過程中,當(dāng)然少不了各種技術(shù)和公司對他們施加的影響。跟隨誰,選擇什么路線永遠是一種充滿未知數(shù)的挑戰(zhàn)。
談到影響,可能以微軟為首的軟件巨頭更容易被提及,畢竟開發(fā)人員所直接應(yīng)用的操作系統(tǒng)、語言、開發(fā)工具等各種技術(shù)都掌握在這些公司手中。然而,這并不能抹殺和妨礙提起國內(nèi)一些企業(yè)和人士對中國軟件開發(fā)各方面產(chǎn)生的影響。
站在這個角度,本刊在國內(nèi)的軟件企業(yè)和個人中評選出了如下20位人士,他們對近期軟件開發(fā)產(chǎn)生了一定程度的影響。選出這些人,也是為了拋磚引玉,讓國內(nèi)的開發(fā)者更了解自己正在經(jīng)歷的變化和面臨的挑戰(zhàn)。
在這些人員中,有些屬于早一代的程序員,他們創(chuàng)造的業(yè)績激勵了很多程序員進入軟件開發(fā)。鮑岳橋就是一個,盡管現(xiàn)在他已經(jīng)成為了聯(lián)眾的總裁,但之前從UCDOS步入輝煌,Windows時代一度面臨困境,最終憑借網(wǎng)
絡(luò)游戲
成功
轉(zhuǎn)型
,這種以技術(shù)創(chuàng)業(yè)成功的例子對中國的程序員來說就是巨大的誘惑。
與此同時,很多人從軟件教育方向在逐漸改變整個軟件行業(yè)的人才結(jié)構(gòu),這一說法毫不夸張。青鳥APTECH就是將印度軟件教育模式帶到中國來的典型,尤其是在中國軟件人才結(jié)構(gòu)并不合理的情況下,他們所做的工作也是有益的嘗試。
而且,面向未來的眼光也必不可少,很多人所做的工作帶來的變化現(xiàn)在還不顯著,但對未來可能會產(chǎn)生相當(dāng)?shù)挠绊憽1热纾袊浖瞬诺呐囵B(yǎng)結(jié)構(gòu)在逐漸向國際化靠攏,軟件學(xué)院功不可沒。更為超前的是,為了探索未來中國軟件在底層技術(shù)上的引導(dǎo)性,有很多人在做努力,從Linux在中國的推廣,到科泰世紀(jì)打造自己的操作系統(tǒng)和開發(fā)平臺,盡管這些嘗試可能會失敗,但帶給我們的是經(jīng)驗和深入的思考。
現(xiàn)在,有人說程序員面對著太多的頭緒,已經(jīng)迷失了方向。的確,是有一些人迷失了方向,但這里的20位人士能夠讓我們以更清醒的眼光看待中國的軟件開發(fā),了解我們?nèi)〉玫某煽兒兔媾R的挑戰(zhàn)。
開國元勛
嚴援朝
所屬公司:新浪網(wǎng)
入選理由:開發(fā)第一個中文操作系統(tǒng)CCDOS,參與創(chuàng)辦四通利方,掌控最大的中文網(wǎng)站新浪網(wǎng)技術(shù)總架構(gòu)。
“做軟件就是在不斷地明確目標(biāo),就是搞清楚你的GO 是什么,所有的軟件都逃不出那三句話——IF、THEN、 ELSE。棒的程序員很快能夠知道自己的GO是什么,沒長進的程序員老也弄不清楚自己到底要干嘛,所以永遠處在 學(xué)習(xí)過程中,手里永遠拿著一本書,永遠在學(xué),永遠也學(xué)不會。”這是嚴援朝很經(jīng)典的一句話,甚至有程序員把這作為自己的座右銘。作為中國第一代程序員的象征,他如今依然負責(zé)在新浪網(wǎng)的整體技術(shù)架構(gòu)上。不知是不是嚴援朝怕別人忘記自己,不久前,從新浪網(wǎng)炮制出了兩篇文章,大談自己的一些深奧看法。其實如果單純是這種原因,應(yīng)該大可不必,因為嚴援朝在中國軟件開發(fā)史上奠定的地位無人可撼。
求伯君
所屬公司:金山軟件
入選理由:軟件領(lǐng)域的常青樹,以榜樣的力量激勵眾多程序員。
每一個聽到這個名字的程序員,都會有一種莫名的激動和敬仰。從金山成立的那一天起,公司的招聘廣告上就把求伯君作為吸引程序員加入的重要宣傳詞,由此可見求伯君在程序員中的影響力。
不久前,我們準(zhǔn)備做“程序員的一天”的欄目,找到求伯君。他說:“做是可以,不過現(xiàn)在這些天不太適合,整天要陪著很多官員應(yīng)酬。”看來,作為董事長的求伯君也僅僅能在精神上鼓舞程序員了。據(jù)說,金山正在籌拍一部
《劍俠情緣》
的電視劇,求伯君還可能在其中飾演一位方丈。到時候,我們或許可以欣賞求伯君的影視風(fēng)采了。
王江民
所屬公司:
江民科技
入選理由:38歲開始編程,挖掘了殺毒軟件的巨大市場潛力
“38歲開始學(xué)習(xí)計算機,兩三年之內(nèi)成為中國最出色的反病毒專家之一;45歲只身一人獨闖中關(guān)村辦公司,產(chǎn)品很快占據(jù)反病毒市場的80%以上。”這些事實已經(jīng)讓我們無法忽視王江民對中國軟件開發(fā)帶來的影響力,在業(yè)內(nèi)被尊稱為老師的王江民,憑借堅持而開拓出了殺毒軟件市場,這也成為中國軟件產(chǎn)業(yè)所僅有的幾個亮點之一。盡管現(xiàn)在KV系列產(chǎn)品中早已沒有了一行他的代碼,而且在市場中的表現(xiàn)也差強人意。但毋庸置疑,KV系列讓眾多的程序員知道了王江民,而他身殘志堅的毅力和品質(zhì)也讓很多程序員面對困難和挫折時,從中得到鼓舞。
鮑岳橋
所屬公司:聯(lián)眾公司
入選理由:在DOS和Windows平臺、網(wǎng)絡(luò)時代下都獲得成功的典型
從UCDOS流行的那一天起,鮑岳橋也成為了中國無數(shù)程序員的偶像。然而,和很多程序員一樣,他也并沒有從UCDOS的成功中得到多少具體的物質(zhì)利益。接下來,Windows平臺開發(fā)的巨大沖擊到來了,網(wǎng)絡(luò)的沖擊到來了,有誰能同時抓住兩個機會?鮑岳橋無疑做了最好的注釋。鮑岳橋認為,是否掌握某項技術(shù)不是關(guān)鍵,技術(shù)這個東西完全是觸類旁通的,當(dāng)今計算機的發(fā)展如此迅速,一個人不可能掌握所有的新技術(shù),一個有經(jīng)驗的程序員應(yīng)該能夠利用自己原有的知識和經(jīng)驗,很快地掌握新技術(shù)和新知識。他與簡晶、王建華的合作也是聯(lián)眾成長中的精彩經(jīng)歷,盡管現(xiàn)在他容登總裁寶座,而簡晶和王建華離去創(chuàng)業(yè),但他們當(dāng)初的合作還讓現(xiàn)在的眾多程序員看到了初期團隊合作的成功例子。
宮敏
所屬公司:凝思科技
入選理由:最早將自由軟件引入中國
宮敏,對很多人來說,這是一個陌生的名字。但正是宮敏博士,在芬蘭參與了LINUX操作系統(tǒng)的開發(fā)與研究。后來,他用磁帶背回了20GB容量的自由軟件,形成了中國第一個自由軟件庫,被稱為是中國自由軟件界元老。
然而,就在國內(nèi)自由軟件運動掀起狂潮時他卻全身而退,埋頭于開發(fā)和做實事去了。2000年,宮敏回國創(chuàng)辦北京凝思科技有限公司,目標(biāo)是在較短時間內(nèi)為國家相關(guān)部門提供具有完全自主知識產(chǎn)權(quán)的高性能、高安全的國產(chǎn)信息安全
高技術(shù)
產(chǎn)品。宮敏認為,自由軟件首先要重視教育,培養(yǎng)出一批有良好心態(tài)和真才實學(xué)的人。
????????教育先導(dǎo)
譚浩強
入選理由:計算機基礎(chǔ)教育
雷軍曾經(jīng)說過:“是譚浩強讓程序員感到了寫程序就是自己的生命。”這可能是早一代程序員的感覺吧。在計算機基礎(chǔ)教育方面,譚浩強無疑擁有極高的聲望和經(jīng)驗。不過,現(xiàn)在社會已經(jīng)進入新的階段,盡管譚浩強已經(jīng)成立了工作室,并不斷出版了一系列的書籍,但真正如《Basic 語言》這樣風(fēng)行的書籍并沒有再次出現(xiàn)。
譚浩強的書集中體現(xiàn)了中國計算機教育的特點,淺顯,作為入門級的書籍非常不錯,但一旦真正要深入下去,可能就要選擇國外那些大師級人物所寫的書籍了。這也是國內(nèi)很多程序員對譚浩強某些書籍頗有微詞的原因所在。
然而,不管如何,時代和機遇都造就了譚浩強在中國計算機史上的地位,這一點無法抹殺。
李開復(fù)
所屬公司:微軟
入選理由:創(chuàng)辦微軟亞洲研究院,在學(xué)生中影響巨大
有人說微軟亞洲研究院現(xiàn)在很會作秀,大事小事總要通報一番,而且不時出來組織一些成果演示,或許這繼承了李開復(fù)的風(fēng)格。做過研究又在企業(yè)中多年鍛煉的經(jīng)歷使得李開復(fù)把亞洲研究院當(dāng)作企業(yè)一樣的來運作,《追隨智慧》等書籍的出版更將這種宣傳推上了頂點。但從另外一方面來看,李開復(fù)的確給國內(nèi)的計算機科學(xué)研究帶來了新的氣象,亞洲研究院的一些技術(shù)成果也對IT產(chǎn)業(yè)有著深遠的影響。同時,微軟亞洲研究院在大學(xué)中深入的各種活動使得李開復(fù)在學(xué)生中的影響力頗高。而最近《給中國學(xué)生的一封信》和《給中國學(xué)生的第二封信》都言辭懇切,引起了巨大反響。微軟給中國印象最好的地方是亞洲研究院,這也算是李開復(fù)的高明之處吧。
陳鐘
所屬院校:北京大學(xué)軟件學(xué)院院長
入選理由:軟件學(xué)院的積極倡導(dǎo)和實踐者
其實選擇陳鐘,不如說選擇了軟件學(xué)院更為恰當(dāng)。畢竟從國家重視軟件學(xué)院開始,有幾十家高等院校開始了這方面的探索。而32歲就成為博導(dǎo)的陳鐘作為北京大學(xué)軟件學(xué)院的院長,在大興開拓了新的天地,并取得了不錯的成績。
最近,有朋友說:“以前,計算機系的學(xué)生對軟件學(xué)院很不屑一顧,認為就是一群雜牌軍。但現(xiàn)在,他們笑不起來了,軟件學(xué)院的課程配置和教學(xué)完全是按照市場的要求去進行的,他們已經(jīng)得到了市場的認可。” 當(dāng)然在這些探索中,有的學(xué)院做的并不好,但作為國家希望改變現(xiàn)在計算機人才培養(yǎng)的方式而設(shè)的試點,我們有理由期待軟件學(xué)院帶來的改變。而陳鐘將繼續(xù)在這個過程中施展自己的才華。
楊明
所屬公司:北大青鳥APTECH
入選理由:將印度軟件人才培養(yǎng)模式引進中國
印度發(fā)展軟件產(chǎn)業(yè)的成功被大肆宣揚后,吸收印度經(jīng)驗的探討逐漸風(fēng)行起來。但真正實施借鑒印度經(jīng)驗就是北大青鳥APTECH了。作為總經(jīng)理的楊明,力圖將這種模式和中國的實際情況相結(jié)合,打造出一種獨特的軟件從業(yè)人員的培訓(xùn)渠道。楊明并不喜歡別人稱他培養(yǎng)出來的是“軟件藍領(lǐng)”,因為,在他看來,通過APTECH模式培養(yǎng)的人才是幫助很多人進入IT領(lǐng)域的“金光大道”。而且,采取特許經(jīng)營這套模式也被巨額資金打造的產(chǎn)業(yè)鏈證明是可行的,因為目前已在全國建立和發(fā)展了近100家授權(quán)培訓(xùn)中心。據(jù)說,北大青鳥還將繼續(xù)投資幾個億用來擴張,無論如何,教育模式方面,楊明帶領(lǐng)的北大青鳥APTECH將會給國內(nèi)軟件業(yè)人才市場帶來相當(dāng)?shù)挠绊憽?/p>
侯捷
入選理由:技術(shù)寫作創(chuàng)造品牌
侯捷深入淺出的寫作手法,給國內(nèi)枯燥的技術(shù)書籍寫作注入了一針強心劑。而且,國內(nèi)的出版公司也從侯捷身上看到了一個優(yōu)秀技術(shù)作者的市場潛力,因此將挖掘國內(nèi)優(yōu)秀作者作為重要的工作內(nèi)容。
同時,在侯捷直接和間接的影響下,國內(nèi)一批軟件開發(fā)者看到了技術(shù)寫作的價值,開始出版技術(shù)書籍。現(xiàn)在,程序員發(fā)現(xiàn)了另外的一條可供選擇的方向:技術(shù)寫作。隨著更多的開發(fā)者參與到其中,對提升國內(nèi)開發(fā)者交流、共享技術(shù)起到了很好的促進作用。
侯捷并不掩飾自己對財富的追求,他說:“好的作者就應(yīng)該得到好的報酬,這樣才能保證他能夠靜心研究技術(shù),再寫出更好的書來。”當(dāng)網(wǎng)上攻擊自己的帖子越來越多的時候,侯捷選擇了自己的方式,他以老師的口吻試圖來解釋自己所倡導(dǎo)的這一切。然而,他的回應(yīng)和解釋并不能排解一些人的繼續(xù)攻擊,因為網(wǎng)絡(luò)就是網(wǎng)絡(luò)。
???創(chuàng)新者
王志東
現(xiàn)屬公司:點擊科技
入選理由:在網(wǎng)絡(luò)上取得成功后仍然鐘情軟件,投巨資做面向未來的協(xié)同軟件
不了解王志東的人覺得他放棄了軟件,而后又被網(wǎng)絡(luò)所拋棄;但了解王志東的都知道他最鐘愛的還是軟件,而且現(xiàn)在他同時擁有了網(wǎng)絡(luò)。
自從離開新浪之后,王志東的消息就逐漸從網(wǎng)絡(luò)上減少了。應(yīng)該說,王志東帶給我們的消息更多是互聯(lián)網(wǎng)所帶來的影響力。
對于王志東正在做的協(xié)同軟件,很多人到現(xiàn)在也沒有完全明白。盡管國外的一些廠商正在投巨資開發(fā)協(xié)同軟件,但在國內(nèi),推廣起來還存在很多的問題。但無論如何,王志東能夠在功成名就后仍然投入資金來開發(fā)一個仍屬未知數(shù)的軟件領(lǐng)域,這種對軟件的癡情不正彪顯了開發(fā)者執(zhí)著的特質(zhì)嗎。
周奕
入選理由:倡導(dǎo)走向國際市場,以共享軟件掙美元的先行者。
2001年的10月份,周奕從美國打來一個長途電話,對共享軟件在國外尋求注冊談了很多他的想法,當(dāng)時的他充滿著發(fā)現(xiàn)新大陸的喜悅,也迫切希望與國內(nèi)的程序員共同分享。隨著媒體的宣傳,“寶馬車”給程序員帶來了極大的吸引,一大批程序員、沒有畢業(yè)的學(xué)生、甚至包括剛剛學(xué)習(xí)VB兩三天的小孩子也都做起了美元夢。不過,周奕在國際上面臨的壓力也不小,一大批類似MP3 to CD的軟件不斷出現(xiàn),其中不乏其他中國程序員的作品。盡管周奕的軟件銷售量下滑,但他從來沒有后悔過這樣做。
現(xiàn)在國際市場上有數(shù)量眾多的共享軟件,其中中國、俄羅斯和美國占據(jù)了最大的份額,一大批共享軟件作者通過這種途徑換來了豐足的生活,當(dāng)然也有另外一批人并沒有帶來所企盼的收獲。但無論如何,周奕作為“共享軟件走向國際市場”創(chuàng)始人被眾多的程序員稱為“老大”,這種影響力在中國的軟件開發(fā)史值得一書。
陳天橋
所屬公司:上海盛大
入選理由:用市場的成功加速了網(wǎng)絡(luò)游戲開發(fā)的進程
陳天橋的入選可能爭議很大,之所以堅持把他列入,完全是基于他給網(wǎng)絡(luò)游戲市場帶來的巨大沖擊。掰開手指數(shù)數(shù),中國有幾個軟件行業(yè)被如此追捧過,除財務(wù)管理軟件和殺毒軟件之外,還沒有那個軟件行業(yè)被瘋狂的關(guān)注。正是基于上海盛大為代表的公司在網(wǎng)絡(luò)游戲市場上取得的成績,才使人把目光放在了網(wǎng)絡(luò)游戲上。而且,正是盛大和韓國游戲開發(fā)商產(chǎn)生的沖突才使得自己和其他的運營商意識到了國產(chǎn)網(wǎng)絡(luò)游戲研發(fā)的重要性。網(wǎng)絡(luò)游戲程序員一時物以稀為貴,很多培訓(xùn)結(jié)構(gòu)和高校都開設(shè)了相關(guān)專業(yè),國家在這方面的政策也有了調(diào)整。以一己之力影響了網(wǎng)絡(luò)游戲開發(fā)的產(chǎn)業(yè)進程,陳天橋帶領(lǐng)盛大產(chǎn)生的影響力不可忽略。
陳榕
所屬公司:科泰世紀(jì)
入選理由:打造新一代操作系統(tǒng)
陳榕的身上散發(fā)著一股銳氣,有人說他是個天生的演講家。不過當(dāng)陳榕剛到國內(nèi)推廣其思想的時候,很多人不理解,他的情緒也會很激動。有人說他對技術(shù)研究的太深刻了,雖然提出的思想很對,但這種事情不應(yīng)該在國內(nèi)做,因為中國沒有這樣的環(huán)境。不知道陳榕如何看待這個問題。
現(xiàn)在,美國的風(fēng)險投資已經(jīng)不易獲得,而政府對這方面的支持使陳榕找到了一個機會。能否取得市場成功盡管是陳榕所關(guān)注的,但他可能更在意將多年以來在微軟無法實現(xiàn)的一個夢在這里實現(xiàn)吧。
然而,在微軟的.NET已經(jīng)推出,多種嵌入式操作系統(tǒng)相互爭奪的市場上,科泰世紀(jì)的操作系統(tǒng)要取得成功還面臨嚴峻的挑戰(zhàn)。不過陳榕很有信心,他用一個例子來證明:微軟很多的產(chǎn)品在1.0和2.0版本的時候都不被人看好,都是到3.0才成熟并得到市場認可的。我們也期望那一天早些到來。
吳濤
入選理由:易語言創(chuàng)始人
如果說在中文語言編程上,中國有為數(shù)不多的開發(fā)者還寄托希望的話,那身處湖北省枝江市鑫源村的吳濤無疑是其中之一。這位數(shù)年前就開始做易語言的程序員遠離了喧囂的北京,毅然回家做起了中文可視化編程環(huán)境。
在最近的版本中,吳濤建立了完全的易程序編譯器系統(tǒng),支持全編譯,可以直接將程序編譯為CPU指令碼運行,從而突破了長期以來的速度瓶頸。同時,他的商業(yè)推廣也做的不錯,從易語言支持論壇的火爆中就可以看出這點。而吳濤一直執(zhí)著在語言研究和底層編程工具的態(tài)度也是很多程序員需要學(xué)習(xí)的。盡管吳濤所做的工作不會撼動整個軟件開發(fā)的大局,但有人執(zhí)著于這樣的工作也應(yīng)該得到我們的尊敬。想一想,同樣是基于中文的出發(fā)點,為什么WPS會得到推崇,而不能容忍易語言的存在呢。
???個人典范
雷軍
現(xiàn)屬公司:金山軟件
入選理由:從程序員向管理者成功轉(zhuǎn)型的代表
2003年初,當(dāng)雷軍在亞運村的一個并不為人所知的酒吧中聊天,探討程序員成長和轉(zhuǎn)型的時候,雷軍曾說:“我現(xiàn)在認識到,CEO也是一種職業(yè),這個職業(yè)對我更有吸引力。對公司未來的幾年發(fā)展,我心中已經(jīng)有了一個方向,關(guān)鍵就是如何去實施和時間快慢的問題而已。”
應(yīng)該說,媒體已經(jīng)將雷軍塑造成為了一個從程序員到管理者轉(zhuǎn)型的典型例子。然而,在這種轉(zhuǎn)變中,有誰能夠了解到雷軍當(dāng)時所面臨的壓力和風(fēng)險,如果失敗了呢?沒有人會問這個問題,也沒有人會回答它。雷軍帶領(lǐng)金山發(fā)動的紅色風(fēng)暴也將通用軟件的價格拉了下來,這也給程序員一次重新審視自己的機會。記得當(dāng)時有報道談到銘泰的程序員看到自己開發(fā)的軟件不得不以幾十元的低價銷售時,甚至哭了起來。這算不算的雷軍帶給程序員的另外一種影響呢?
不過,現(xiàn)在雷軍作為管理者,同樣面臨著多種問題,當(dāng)網(wǎng)絡(luò)游戲火爆之后,雷軍將賭注放在了劍俠情緣網(wǎng)絡(luò)版上,有人還說雷軍精于戰(zhàn)術(shù),但戰(zhàn)略還有欠缺,這次的寶押對了嗎?不管怎樣,如果雷軍成功了,這是管理者的成功,如果他失敗了,也不過是管理者的失敗案例之一。但雷軍曾經(jīng)有過的程序員身份將永遠讓我們關(guān)注他的人生。
丁磊
所屬公司:網(wǎng)易
入選理由:技術(shù)眼光抓住網(wǎng)絡(luò)時代機遇的典范
如果告訴你中國的首富也在看《程序員》雜志,你是否相信?這可能很難想像,但事實的確如此。
如果說網(wǎng)絡(luò)給了很多人一個機遇,包括軟件開發(fā)人員,但并不是所有人都能抓住了這個機遇,即便抓住,又很難有人把這個機遇發(fā)揮到像丁磊這樣極至。
有人說丁磊不是一個技術(shù)人員,因為并沒有開發(fā)過哪個令其揚名的產(chǎn)品,但丁磊所具有獨到的技術(shù)眼光在轉(zhuǎn)向網(wǎng)絡(luò)服務(wù)和網(wǎng)絡(luò)游戲時都起到了重要作用,說丁磊屬于那種“玩技術(shù)”的更為合適。開發(fā)者如何利用各種技術(shù)挖掘到更為廣闊的商業(yè)價值,這可能就是丁磊帶給我們的啟示吧。
張小龍
所屬公司:博大
入選理由:開發(fā)Foxmail和微軟的OutLook抗衡,以免費軟件一夜成名
一個普通的程序員開發(fā)的軟件能和微軟的產(chǎn)品相抗衡,這很少見,而產(chǎn)品被巨資收購就更加是傳奇,創(chuàng)造這個傳奇的人就是張小龍。如果說互聯(lián)網(wǎng)時代的軟件只有幾個算上成功的話,F(xiàn)oxmail肯定會名列其中。
依靠這兩點,張小龍對很多程序員產(chǎn)生的激勵就不可小視。當(dāng)然,這也是在當(dāng)時的背景下發(fā)生的傳奇,現(xiàn)在這樣的故事可能不會再次發(fā)生了。
張小龍加盟博大任副總裁和CTO后,他現(xiàn)在的工作首先是管理和組織各個產(chǎn)品和項目開發(fā)組,其次是規(guī)劃公司的產(chǎn)品結(jié)構(gòu),公司現(xiàn)在有很多的產(chǎn)品和項目都要由他來統(tǒng)籌。這一次,團隊合作的力量將成為他再次成功的基礎(chǔ)。
廖恒毅
現(xiàn)屬公司:佳軟公司
入選理由:十多年從事一線軟件開發(fā)的代表,正打造基于.NET的企業(yè)級開發(fā)平臺
廖恒毅從不掩飾自己對微軟的喜愛。從中文之星2.0到開發(fā)基于.NET的大型企業(yè)管理軟件,他與微軟的關(guān)系密不可分。而之前曾經(jīng)在杜家濱領(lǐng)導(dǎo)下的微軟中國公司擔(dān)任開發(fā)合作部經(jīng)理的經(jīng)歷,更給他身上打下了深深的微軟烙印。盡管廖恒毅很坦率的談到,他當(dāng)時所做的工作不如現(xiàn)在的負責(zé)人,但作為一個純粹的程序員,他利用微軟技術(shù)創(chuàng)造的價值卻無人可及。從中文之星2.0的熱賣,到創(chuàng)造的拼音加加輸入法帶動了輸入法技術(shù)的創(chuàng)新都是證明,而現(xiàn)在,他用.NET構(gòu)架了佳軟公司未來超速發(fā)展的動力,他說:“今天我更關(guān)注我的技術(shù)能否給社會而不僅僅是個人帶來的價值。”
如果有人說,微軟的技術(shù)能做什么樣的系統(tǒng)呢?廖恒毅一定會毫不遲疑的拿自己的系統(tǒng)舉例,利用創(chuàng)建的軟件平臺,一個人可以在10多天的時間中打造出一個完整的企業(yè)管理系統(tǒng),這是類似SAP和Sibel的平臺,只是現(xiàn)在中國的軟件環(huán)境并不適合其拿出來做公開的標(biāo)準(zhǔn),公司更愿意使用這套系統(tǒng)來面向最終客戶。未來,廖恒毅所創(chuàng)造的這一軟件架構(gòu)給中國企業(yè)軟件開發(fā)帶來沖擊也并非不可能。當(dāng)然,技術(shù)的領(lǐng)先并不代表市場的領(lǐng)先,這一點他也很清楚。
廖恒毅并不習(xí)慣去公司分配給他的辦公室去辦公,他更喜歡扎在公司程序員的房子里面和大家一起工作。有次,聊程序員能做到什么時間,廖恒毅笑著說:“做了程序員,只要活著,就要一直寫程序了。”
袁紅崗
所屬公司:金蝶中間件公司
入選理由:最早開發(fā)Windows上的企業(yè)應(yīng)用軟件,打造獨立知識產(chǎn)權(quán)的EJB服務(wù)器
很多JAVA程序員對袁紅崗極其佩服,源于他做了很多人不敢想更不敢做的事情,這就是他打造了國產(chǎn)的EJB服務(wù)器,很快,金蝶將在國內(nèi)推出自主產(chǎn)權(quán)EJB服務(wù)器的3.0版本。
同時,袁紅崗還是在Windows平臺上開發(fā)企業(yè)應(yīng)用軟件的最早的一批程序員,當(dāng)時寫出的適合小型企業(yè)使用的財務(wù)購銷存一體化軟件KINGDEE 2.7,令I(lǐng)T行業(yè)對金蝶刮目相看,使金蝶一舉成名,正是這些人才奠定了中國的管理軟件的基礎(chǔ)。
袁紅崗將自己多年的經(jīng)驗以一種樸實的風(fēng)格寫出來,這些帖子在網(wǎng)上也影響深遠。
后記:
我們選擇了20位對中國軟件開發(fā)最具影響力的人,從側(cè)面也展示了中國軟件開發(fā)的脈絡(luò)。其中我們可以看到中國的軟件開發(fā)大部分以國內(nèi)市場為主,很多過去的那些軟件英雄都與中文、漢化有著千絲萬縷的聯(lián)系。正是在這種情況下,這些人取得了成功,但同時也讓國內(nèi)的開發(fā)人員將目光局限在了國內(nèi)市場上。而國內(nèi)市場的不成熟以及其他一系列原因又導(dǎo)致了無法支撐起語言和底層開發(fā)工具技術(shù)廠商的存活。
正因為如此,我們也有一些無奈,這些人大部分都是在心理上給程序員施以影響的人,而在技術(shù)層面上能夠?qū)浖_發(fā)方向產(chǎn)生影響的很少,即便是有影響力,其影響范圍也很小。
軟件設(shè)計方面,國內(nèi)沒有一個企業(yè)或者個人引領(lǐng)某種規(guī)范使得大家可以靠過來。在全球技術(shù)統(tǒng)一化的今天,能否開發(fā)出面向全球市場的軟件技術(shù),這是需要重視的問題。我們的軟件公司和程序員能否向這個方向努力呢?
posted @
2006-04-30 09:11 崛起的程序員 閱讀(224) |
評論 (0) |
編輯 收藏
摘要
Hibernate和struts是當(dāng)前市面上幾個最流行的開源的庫之一。它們很有效率,是程序員在開發(fā)Java企業(yè)應(yīng)用,挑選幾個競爭的庫的首選。雖然它們經(jīng)常被一起應(yīng)用,但是Hibernate的設(shè)計目標(biāo)并不是和Struts一起使用,而Struts在Hibernate誕生好多年之前就發(fā)布了。為了讓它們在一起工作,仍然有很多挑戰(zhàn)。這篇文章點明了Struts和Hibernate之間的一些鴻溝,尤其關(guān)系到面向?qū)ο蠼7矫妗N恼乱裁枋隽巳绾卧趦烧唛g搭起橋梁,給出了一個基于擴展Struts的解決方案。所有的基于Struts和Hibernate構(gòu)建的Web應(yīng)用都能從這個通用的擴展中獲益。
在Hibernate in Action(Manning,2004十月)這本書里,作者Christian Bauer和Gavin King揭示了面向?qū)ο笫澜绲哪P秃完P(guān)系數(shù)據(jù)模型,兩個世界的范例是不一致的。Hibernate非常成功地在存儲層(persistence Layer)將兩者粘合在一起。但是領(lǐng)域模型(domain model)(也就是Model-View-Controller的model layer)和HTML頁面(MVC的View Layer)仍然存在不一致。在這篇文章中,我們將檢查這種不一致,并且探索解決的方案。
范例不一致的再發(fā)現(xiàn)
讓我們先看一個經(jīng)典的parent-child關(guān)系例子(看下面的代碼):product和category。Category類定義了一個類型為long的標(biāo)示符id和一個類型為String的屬性name。Product類也有一個類型為long的標(biāo)示符id和一個類型為Category的屬性category,表示了多對一的關(guān)系(也就是說很多product可以屬于一個Category)
/**
* @hibernate.class table="CATEGORY"
*/
public class Category {
?? private Long id;
?? private String name;
?? /**
????* @hibernate.id generator-class="native" column="CATEGORY_ID"
????*/
?? public Long getId() {
??????return id;
?? }
?? public void setId(Long id) {
??????this.id = id;
?? }
?? /**
????* @hibernate.property column="NAME"
????*/
?? public String getName() {
??????return name;
?? }
?? public void setName(Long name) {
??????this.name = name;
?? }
}
/**
* @hibernate.class table="PRODUCT"
*/
public class Product {
?? private Long id;
?? private Category category;
?? /**
????* @hibernate.id generator-class="native" column="PRODUCT_ID"
????*/
?? public Long getId() {
??????return id;
?? }
?? public void setId(Long id) {
??????this.id = id;
?? }
?? /**
????* @hibernate.many-to-one
????* column="CATEGORY_ID"
????* class="Category"
????* cascade="none"
????* not-null="false"
????*/
?? public Category getCategory() {
??????return category;
?? }
?? public void setCategory(Category category) {
??????this.category = category;
?? }
}
我們希望一個product可以被更改category,所以我們的HTML提供了一個下拉框列出所有Category。
<select name="categoryId">
?? <option value="">No Category</option>
?? <option value="1">Category 1</option>
?? <option value="2">Category 2</option>
?? <option value="3">Category 3</option>
</select>
這里我們看出了兩者的不一致:在Product領(lǐng)域?qū)ο罄铮琧ategory屬性是Category類型,但是ProductForm只有一個類型為long的categoryId。這種不匹配不但增加了不一致,而且導(dǎo)致了不必要的代碼進行primitive type的標(biāo)示符和對應(yīng)的對象之間的轉(zhuǎn)換。
這種不一致部分是由于HTML Form自己引起的:它只代表了一種關(guān)系模型,不能代表面向?qū)ο蟮哪P汀C嫦驅(qū)ο蠛完P(guān)系模型的不一致在存儲層由對象關(guān)系映射(O/RM)解決。但是類似的問題在表示層(view layer)仍然存在。解決的關(guān)鍵是讓他們一起無縫地工作。
Struts的功能和局限
幸運的是,Struts能夠生成和解釋內(nèi)嵌的對象屬性。Category下拉框可以用Struts page-construction(html) tag library:
<html:select property="category.id">
?? <option value="">No Category</option>
?? <html:options collection="categories" property="id" labelProperty="name"/>
</html:select>
我們假設(shè)categories是Category對象的一個list。所以現(xiàn)在我們要修改ProductForm,讓它變得更加“面向?qū)ο蟆保覀円薷腜roductForm的categoryId,改成類型為Category的category。這種改變會導(dǎo)致在Product和ProductForm之間復(fù)制屬性的工作更加繁瑣,因為兩者有相同的屬性。
public class ProductForm extends ActionForm {
???? private Long id;
???? private Category category;
???? ...
}
當(dāng)我們完成剩余的Struts Action, configuration, validator, jsp, hibernate層后,開始測試,我們馬上在訪問ProductForm.category.id時遇到了NullPointerException。這是預(yù)料中的!因為ProductForm.category還沒有被設(shè)置,同時,Hibernate也會將多對一所聯(lián)系的對象引用設(shè)為空(如果database field為空指)(譯者:這里指Hiberate將product.category為Null,如果該Product沒有聯(lián)系到任何category)。Struts要求所有的對象在顯示(生成HTML Form)和傳播(提交HTML FORM)之前被建立。
讓我們看看如何用ActionForm.reset()來架起橋梁。
(并非如此)臭名昭著的Struts ActionForm
在我第一個星期接觸Struts的時候,我最大的一個疑問就是:為什么我必須為Properties, getter方法, setter方法保持幾乎完全相同的兩份copy, 一份在ActionForm Bean, 一份在DomainObject。這個繁瑣的步驟成了Struts社區(qū)最主要的抱怨之一。
以我的觀點,ActionForm存在有原因的。首先,它們可以區(qū)別于Domain Object因為他們但當(dāng)了不同的角色。在MVC模式下,Domain Object是Model層的一個部分,ActionForm是View層的。因為Webpage的Field和Database的Field可能不一樣,某些特制的轉(zhuǎn)換是常見的。第二,ActionForm.validate()方法可以定義非常好用的驗證規(guī)則。第三,可能有其他的,特定的View行為,但是又不想在domain layer實現(xiàn),特別當(dāng)persistence framework來管理domain object的時候。
提交Form
讓我們來用ActionForm內(nèi)有的方法-reset()-來解決view和model之間的不一致。這個reset()方法是在ActionForm在被Struts Controller Servlet處理request時候復(fù)制ActionForm屬性之前調(diào)用的。這個方法最常見的使用是:checkbox必須被顯式地設(shè)為false,讓沒有被選中的checkbox被正確識別。Reset()也是一個初始化用于view rending對象的合適地方。代碼看起來是這樣的:
public class ProductForm extends ActionForm {
???? private Long id;
???? private Category category;
???? ...
???? public void reset(ActionMapping mapping, HttpServletRequest request)
???? {
????????super.reset( mapping, request );
????????if ( category == null ) { category = new Category(); }
???? }
}
Struts在使用用戶提交的值填寫ProductForm之前,Struts會調(diào)用reset(),這樣category屬性將會被初始化。請注意,你必須檢查category看它是不是null,后面我們會討論這個。
編輯Form
到目前為止,我們已經(jīng)解決了form提交時候的問題。但是當(dāng)我們在生成form頁面的時候呢?Html:select tag也希望有一個非空的引用,所以我們將在form生成頁面之前調(diào)用reset()。我們在action類里加入了一行:
public class EditProductAction extends Action {
???? public final ActionForward execute( ActionMapping mapping, ActionForm form,
????????HttpServletRequest request, HttpServletResponse response ) throws Exception
???? {
????????...
????????Product product = createOrLoadProduct();
????????ProductForm productForm = (ProductForm)form;
????????PropertyUtils.copyProperties( productForm, product );
????????productForm.reset( mapping, request );
????????...
???? }
}
我假設(shè)讀者已經(jīng)對action類和Jakarta commons Beanutils包非常熟悉了。CreateOrLoadProduct()建立了一個新的Product實例或者從數(shù)據(jù)庫里載入一個已有的實例,具體取決于這個action是建立或者修改Product的。ProductForm被賦值后(譯者:也就是調(diào)用PropertyUtils.copyProperties后),productForm.category已經(jīng)從Product.category復(fù)制過來了(譯者:實際上只是復(fù)制了category對象引用,并沒有開銷),然后,ProductForm就能用來生成頁面了。我們同時也必須保證:不覆蓋已經(jīng)被Hibernate載入的對象,所以我們必須檢查(category)是不是為null。
因為reset()方法是在ActionForm中定義的,我們可以把上述代碼放入一個superclass,比如CommonEditAction,來處理這些事情:
????
??????Product product = createOrLoadProduct();
????????PropertyUtils.copyProperties( form, product );
????????form.reset( mapping, request );
如果你需要一個只讀的Form, 你有兩個選擇: 第一檢查所聯(lián)系的jsp對象是不是null, 第二復(fù)制domain對象到ActionForm之后調(diào)用Reset()
保存domain對象
我們解決了提交Form和生成Form頁面的問題, 所以Struts可以滿足了。但是Hibernate呢?當(dāng)用戶選擇了一個null ID option – 在我們的例子中“no category”option- 并且提交form, productForm.category指向一個新建立的hibernate對象,id為null。當(dāng)category屬性從ProductForm復(fù)制到Hibernate控制的Product對象并且存儲時,Hibernate會抱怨product.category是一個臨時對象,需要在Product存儲前先被存儲。當(dāng)然,我們知道它是Null,并且不需要被存儲。所以我們需要將product.category置為Null,然后Hibernate就能存儲Product了(譯者:在這種情況下,數(shù)據(jù)庫product.category被設(shè)成空值)。我們也不希望改變Hibernate的工作方式,所以我們選擇在復(fù)制到Domain對象之前清理這些臨時對象,我們在ProductForm中加了一個方法:
public class ProductForm extends ActionForm {
???? private Long id;
???? private Category category;
???? ...
???? public void reset(ActionMapping mapping, HttpServletRequest request) {
????????super.reset( mapping, request );
????????if ( category == null ) { category = new Category(); }
???? }
???? public void cleanupEmptyObjects() {
????????if ( category.getId() == null ) { category = null; }
???? }
}
我們在copyProperties之前清理掉這些臨時對象,所以如果ProductForm.category只是用來放Null的,則將ProductForm.category置為Null。然后Domain對象的category也會被設(shè)成null:
public class SaveProductAction extends Action {
???? public final ActionForward execute( ActionMapping mapping, ActionForm form,
????????HttpServletRequest request, HttpServletResponse response ) throws Exception
???? {
????????...
????????Product product = new Product();
????????((ProductForm)form).cleanupEmptyObjects();
????????PropertyUtils.copyProperties( product, form );
????????SaveProduct( product );
????????...
???? }
}
一對多關(guān)系
我還沒有解決Category到Product的一對多關(guān)系。我們把它加入到Category的Metadata中:
public class Category {
???? ...
???? private Set products;
???? ...
???? /**
??????* @hibernate.set
??????* table="PRODUCT"
??????* lazy="true"
??????* outer-join="auto"
??????* inverse="true"
??????* cascade="all-delete-orphan"
??????*
??????* @hibernate.collection-key
??????* column="CATEGORY_ID"
??????*
??????* @hibernate.collection-one-to-many
??????* class="Product"
??????*/
???? public Set getProducts() {
????????return products;
???? }
???? public void setProducts(Set products) {
????????this.products = products;
???? }
}
注意:Hibernate的cascade屬性為all-delete-orphan表明:Hibernate需要在存儲包含的Category對象時候,自動存儲Product對象。和parent對象一起存儲child對象的情況并不常見,常見的是:分別控制child的存儲和parent的存儲。在我們的例子中,我們可以容易地做到這一點,如果我們允許用戶在同一個html page編輯Category和ProductS。用set表示Products是非常直觀的:
public class CategoryForm extends ActionForm {
???? private Set productForms;
???? ...
???? public void reset(ActionMapping mapping, HttpServletRequest request) {
????????super.reset( mapping, request );
????????for ( int i = 0; i < MAX_PRODUCT_NUM_ON_PAGE; i++ ) {
?????????? ProductForm productForm = new ProductForm();
?????????? productForm.reset( mapping, request );
?????????? productForms.add( productForm );
????????}
???? }
???? public void cleanupEmptyObjects() {
????????for ( Iterator i = productForms.iterator(); i.hasNext(); ) {
?????????? ProductForm productForm = (ProductForm) i.next();
?????????? productForm.cleanupEmptyObjects();
????????}
???? }
}
更進一步
我們已經(jīng)可以察看,編輯,提交forms,并且存儲相關(guān)的objects,但是為所有的ActionForm類定義CleanupEmptyObjects()和reset()方法是個累贅。我們將用一個抽象的ActionForm來完成協(xié)助完成這些工作。
作為通用的實現(xiàn),我們必須遍歷所有的Hibernate管理的domain對象,發(fā)現(xiàn)他們的identifier,并且測試id值。幸運的是:org.hibernate.metadata包已經(jīng)有兩個Utility類能取出domain對象的元數(shù)據(jù)。我們用ClassMetadata類檢查這個object是不是Hibernate管理的。如果是:我們把它們的id Value取出來。我們用了Jakarta Commons Beanutils包來協(xié)助JavaBean元數(shù)據(jù)的操作。
import java.beans.PropertyDescriptor;
import org.apache.commons.beanutils.PropertyUtils;
import org.hibernate.metadata.ClassMetadata;
public abstract class AbstractForm extends ActionForm {
?? public void reset(ActionMapping mapping, HttpServletRequest request) {
??????super.reset( mapping, request );
??????// Get PropertyDescriptor of all bean properties
??????PropertyDescriptor descriptors[] =
???????? PropertyUtils.getPropertyDescriptors( this );
??????for ( int i = 0; i < descriptors.length; i++ ) {
???????? Class propClass = descriptors[i].getPropertyType();
???????? ClassMetadata classMetadata = HibernateUtil.getSessionFactory()
????????????.getClassMetadata( propClass );
???????? if ( classMetadata != null ) {?? // This is a Hibernate object
????????????String propName = descriptors[i].getName();
????????????Object propValue = PropertyUtils.getProperty( this, propName );
????????????// Evaluate property, create new instance if it is null
????????????if ( propValue == null ) {
?????????????? PropertyUtils.setProperty( this, propName, propClass.newInstance() );
????????????}
???????? }
??????}
?? }
?? public void cleanupEmptyObjects() {
??????// Get PropertyDescriptor of all bean properties
??????PropertyDescriptor descriptors[] =
??????PropertyUtils.getPropertyDescriptors( this );
??????for ( int i = 0; i < descriptors.length; i++ ) {
???????? Class propClass = descriptors[i].getPropertyType();
???????? ClassMetadata classMetadata = HibernateUtil.getSessionFactory()
????????????.getClassMetadata( propClass );
???????? if ( classMetadata != null ) {?? // This is a Hibernate object
????????????Serializable id = classMetadata.getIdentifier( this, EntityMode.POJO );
????????????// If the object id has not been set, release the object.
????????????// Define application specific rules of not-set id here,
????????????// e.g. id == null, id == 0, etc.
????????????if ( id == null ) {
?????????????? String propName = descriptors[i].getName();
?????????????? PropertyUtils.setProperty( this, propName, null );
????????????}
???????? }
??????}
?? }
}
為了讓代碼可讀,我們省略了Exception的處理代碼。
我們的新AbstractForm類從Struts的ActionForm類繼承,并且提供了通用行為:reset和cleanup多對一關(guān)聯(lián)對象。當(dāng)這個關(guān)系是相反的話(也就是一對多關(guān)系),那么每個例子將會有所不同,類似在Abstract類里實現(xiàn)是比較好的辦法。
總結(jié)
Struts和Hibernate是非常流行和強大的框架,他們可以有效地相互合作,并且彌補domain模型和MVC視圖(view)之間的差別。這篇文章討論一個解決Struts/Hibernate Project的通用的方案,并且不需要大量修改已經(jīng)有的代碼。
posted @
2006-04-30 09:01 崛起的程序員 閱讀(283) |
評論 (0) |
編輯 收藏