国产一区二区精品久久_蜜桃狠狠狠狠狠狠狠狠狠_午夜视频精品_激情都市一区二区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 采訪Apache Camel項目主要維護者之一 jnn (十)

采訪Apache Camel項目主要維護者之一 jnn (十)
2010-01-14 23:26:04  作者:  來源:
Apache Camel 是一個非常優秀的開源項目,這是一個非常強大的基于規則的路由以及媒介引擎,該引擎提供了一個基于POJO的 企業應用模式(Enterprise Integration Patterns)的實現,你可以采用其異常強大且十分易用的API 來配置其路由或者中介的規則。

Apache Camel 采用URI來描述各種組件,這樣你可以很方便地與各種傳輸或者消息模塊進行交互,其中包含的模塊有  HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 這些模塊是采用可插拔的方式進行工作的。Apache Camel的核心十分小巧你可以很容易地將其集成在各種Java應用中。

JavaEye的資深會員jnn (Willem Jiang,姜寧) 是Apache Camel項目主要維護者之一,他是一位非常優秀的開源項目開發者和支持者,JavaEye非常榮幸的采訪了他。

jnn 博客:http://jnn.javaeye.com/

Apache Camel  http://camel.apache.org/
FuseSource    http://fusesource.com/
CXF 中文郵件組  http://groups.google.com/group/cxf-zh?hl=zh-CN

歡迎大家推薦更多開源項目給我們,支持中國的開源項目發展,發站內短信給JavaEye管理員或者發信到webmaster@javaeye.com,謝謝。

采訪Apache Camel項目主要維護者之一 jnn Top

JavaEye:1.Hi,jnn,非常榮幸能夠采訪你,你可以介紹一下自己為什么要加入Apache Camel項目嗎?

jnn:這個說起來有點話長,在加入Apache Camel之前, 我做有關Apache CXF的開發快一年的時間了。當時Camel需要和CXF進行集成,于是我就自告奮勇接受了這個任務,參與了Apache Camel的開發。(具體的過程可以參考我的一篇blog:
開源兩事記)

JavaEye:2.能介紹一下Apache Camel項目嗎? 它的特點,使用的范圍,和同類項目比如Mule相比較的優勢?

jnn:對于企業應用來說,由于歷史或者多廠商等原因造成了其系統之間的通訊協議多樣化,而由于企業業務發展,這些應用系統之間交互需求日益增多。Apache Camel可以幫助大家通過定義簡單的路由規則來實現不同企業應用之間的互聯互通。Apache Camel 把不同的企業應用抽象成為Endpoint, 通過URI來對這些Endpoint 進行描述,由于Apache Camel提供了一個基于POJO的企業應用模式(Enterprise Integration Patterns)的實現,同時Camel提供了60多個組件來負責具體的傳輸協 議,這樣用戶可以通過簡單的消息路由規則定義,就可以實現各應用系統之間交互。

簡單來說如果你有一個應用只提供一個JMS接口, 而你的另一個應用提供 WebServices接口,那你的路由規則可以這么定義:
from("jms://xxxx").to("cxf://xxxx)
【注】Camel通過CXF提供了對WebService的支持。
當然你有可能需要對JMS接口過來的消息做一些處理在轉發給WebService應用。
那你只需在兩個節點之間要加入一個processor來實現你需要做的處理就行了
from("jms://xxxx").processor(new MyProcessor()).to("cxf://xxxx")

由上面的例子可以看到Camel的路由規則很直觀簡單,你可以像寫Java代碼一樣定義路由規則。這得益于Camel的創建者 James Strachan(他也是Groovy的創建者)的貢獻。

當然Camel還提供了其他方式來描述路由規則, 例如Spring 配置文件, Scala等。

目前市面上有不少的同類開源產品, 例如 Spring Integration, Mule等。

Camel與他們相比有最大的不同就是它十分小巧,而且不會讓程序員失去對代碼的控制。你可以把它當作一個小的應用庫,而不是一個大的運行容器。 這樣你可以很輕松 地將其集成到你的Web容器,JBI容器, 或者OSGi容器中。你可以像寫Java代碼到方式編輯你的路由規則,IDE可以取保你在短時間寫出正確 的規則。

還有Camel和Apache ActiveMQ,CXF,ServiceMix有很好的集成,而這些項目都是 企業應用開發經常會接觸到的。

JavaEye:3.現在大概有多少用戶使用Apache Camel項目。

jnn:這個問題比較難直接回答, 因為 Apache Camel是開源項目,大家可以在不通知我 們的情況下,直接使用, 所以我們沒有直接的數據來回答這個問題。現在 camel.apache.org 每天有1~2K的獨立IP訪問,還有 Apache Camel 的郵件 列表的活躍程度很高,目前排在Apache項目中的第七位http://www.nabble.com/Apache-f90.html

JavaEye:4.Apache Camel 2.0 M3版本剛剛于7月25日發布,2.0正式最終版將在什么什么發布? 2.0版本相比之前的版本有哪些重大改進。

jnn:Apache的Release風格是沒有一個具體的時間的, 如果開發者覺得差不多了,就可 以發布。 目前Camel 2.0的開發基本就緒,目前我們正在修復 2.0 M3發布之后發 現的bug,如果順利的話,2.0版本應該在下個月就能發布了。

Camel2.0 和 Camel 1.x相比我們簡化了API的設計,添加了很多新的組件,同時提 供了對OSGi的集成支持, 具體大家可以參考這個鏈接:http://camel.apache.org/camel-200-release.html

JavaEye:5.Apache Camel項目的roadmap是什么?近期遠期的開發計劃是什么?

jnn:Apache 項目開發是通過郵件來驅動的,我們沒有項目經理來給我們指定具體的 roadmap。很多Feature都是在和用戶的郵件討論中形成的。目前我們規劃的還是Camel 2.0部 分的內容http://camel.apache.org/camel-20-design.html,歡迎大家加入Camel需求討論中來http://www.nabble.com/Camel---Users-f36428.htmlz

JavaEye:6.能否請你介紹一下Apache Camel的支持組件,以及開源產品和Fuse這樣商業產品之間的區別嗎?

jnn:Camel 支持的組件有ActiveMQ,AMQP,Atom,Bean,Browse,Cometd,CXF 等,所有詳細支持的組件請看這個頁面: http://camel.apache.org/components.html,這里面還有一些Camel基本概念的介紹 http://jnn.javaeye.com/category/27938。我簡單給你說一下開源產品和Fuse這樣商業產品兩者的區別吧:開源軟件如果出現問題了,很難得到及時的修正, 因為你很難去推動開發人員去完成你的需求,如果是商業產品, 有一個契約關系, 這樣可以保證你的問題能夠及時被修正。還有商業產品有一整套的測試發布管理機制,來保證產品質量。 而且我們的Fuse套件是集成了Apache Servicemix, ActiveMQ, CXF , Camel, 它們之間的版本關系是一致的。 而且目前Fuse套件會每個月做一次Release, 比起apache 的release要快很多。還有就是Fuse套件在Apache項目之上還提供了一些擴展的支持, 例如Fuse MR就提供了支持一些商業產品的支持,例如MS Queue, Progress Actiional 等。有Fuse套件本身也是開源的,只是使用的軟件許可和Apache的軟件許可不同。Apache的軟件許可允許你將Apache軟件打包到你的商業產品中,你不需要為此付任何費用。Fuse套件不允許你將Fuse套件打包到你的商業產品中, 當然這是出于保護商業利益的角度上來說的。目前Fuse的測試是運行在6個操作系統平臺上, 除了包含常規的Unit test, 和Integration Test, 還包含CPI test。這是一般開源軟件項目不具備的。還有Fuse套件有專門的CS 支持隊伍。

JavaEye:7.請問,你加入Apache Camel項目大概有多長時間了?你主要負責哪部分的開發?

jnn:我是在2007年7月的時候加入 Apache Camel項目開發的, 到現在也有2年的時間了。Apache開源項目的開發比較松散,你可以選擇你自己感興趣的內容工作,很難說哪塊代碼是由你負責開發的(誰都可以過來修改你的代碼  ), 就目前的情況來 說 camel-cxf,camel-osgi 組件的開發和維護的主要工作由我來完成。

JavaEye:8.請問,你平均一周花多長時間在apache camel項目上?你覺得參與這個項目,最大的收獲是什么?

jnn:由于我是全職做Apache Camel商業版本的Fuse MR的開發,所以基本上每周要花 20~30小時做與Apache Camel相關的工作,其他時間,我有可能會去做與Fuse相關 的開發支持工作。

參與這個項目的最大收獲就是接觸到了世界級的開發者,打開了我的眼界,當然也從他們身上學到了不少的東西。

JavaEye:9.你對國內的開發人員參與開源項目的現狀有什么評價?你能對希望加入國際開源項目的開發者提一些建議嗎?

jnn:去年年底的時候,我參加過Apache在北京組織的一次meet up,就Apache項目的參 與者來說在中國的開發者很少,好像只有我們之外就是Intel參與的Harmony項目的 成員。我曾經寫過一篇blog提到國內的開源現狀我覺得如果大家想參與國際開源項目的開發,需要轉變一個觀念,就是我們要真正融入到開源社區中來。

開源的最大好處就是沒有代碼壁壘, 但是光有免費的代碼是不夠的, 如果你想用好開源軟件,你需要真正融入到開源社區中來, 你可以在這里問問題, 提交 bug,或者補丁, 文檔。 其實只要你愿意,就可以加入到國際開源項目開發。

對于在校大學生來說,還有一個途徑可以幫助你加入到國際開源項目的開發,就是參加Google舉辦的Summer of Code。目前Google和各大開源組織都有聯系,每年資助幾千名世界各地的學生參與開源項目的開發。今年夏天在Apache參加GSoC的中國學生大概有12個人,大概占今年Apache GSoC整個項目人數的三分之一。

JavaEye:10.能介紹Apache Camel的開發團隊嗎?您目前是通過SOHO的方式工作嗎?這種工作方式感覺如何?

jnn:整個團隊有4,5個人,查看團隊介紹:http://fusesource.com/community/apache-committers-and-fuse/。我們這比較特殊一點, 單位里同事很分散,在不同的地區,大家都在家辦公。每個星期有電話會議,通過語音,郵件和其他方式交流。經常在家工作會雖然有孤單感,這是優點也是缺點,還有就是我們和國外的同事有時差, 有時候晚上也得干活, 所以干活和平時的生活分得不是很清楚。不過,現在我家女兒剛3個月, 我很享受在家工作的時間。另外,我們這邊同事(前同事)聯系還是比較緊密的, 基本上每個禮拜都會聚會一下。

JavaEye:11.你平時和國外的同事都是用英文交流嗎?很多程序員技術很好,但是覺得英文太難,你有什么建議嗎?

jnn:是的,和國外同事交流幾乎是全英文環境。這個就是要多寫多練。 其實我們的讀寫能力還是可以的,就是很少有機會直接和老外面對面的溝通。我剛開始的時候寫Email也很痛苦, 一封信得花2個小時左右, 現在寫得多了就好很多。目前直接和老外對話到機會還不多, 平時都是使用IRC, 和Email。 所以一定得多練習,當然開始到過程比較困難,只要你能堅持持續的使用,練習英文,練習口語,堅持半年以上,就挺過來,你的英文水平就能有很大的進步。關鍵要堅持。

JavaEye:12.作為一個JavaEye老會員,你對JavaEye網站有什么建議和意見嗎?

jnn:JavaEye目前的受眾很大,在業界的影響力也很大。我發現現在的JavaEye除了論壇也開始涉足媒體了,希望網站能夠繼續保持這個勢頭,繼續成為開發者心目中的最棒的軟件開發交流社區。
 

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢