小雨開源

          我也加入到了開源隊伍中了

          常用鏈接

          統計

          最新評論

          第三只眼看Jdon-一個讓很多人抓狂框架

          1、Jdon為什么會讓我們抓狂?

          平安夜的狂歡過后,Jdon已經三歲了,已經到了5.1版本,作為中國的第一個java開源框架,相比很多胎死腹中的畸形胎兒(比如G-Roller等),可以算是非常健康長壽了,值得所有熱愛并從事著開源的人們學習、反思。
          不知道為了什么?直到現在仍然還有人對他以及他的創始人抱有深深的偏見或者嫉恨。一個能讓這么多人抓狂的框架,如果你對他不了解,那真是一個遺憾。畢竟不是任何東西都能讓人抓狂的,而且是讓很多“牛”人們集體抓狂,更是不容易。是因為他確實太濫或者又他太優秀?是因為他侵犯了大家的利益還是他在給我們宣揚錯誤的思想及理念?或者都是,又或者又都不是,也許只有身在其中的人們才知道。
          通過兩天對Jdon框架的應用體驗及源碼分析,今天從第三方的角度來審視Jdon,根據我所了解的Jdon的框架,談談我的認識及感受,希望能讓你對Jdon有一個全新的認識,又或者能為Jdon的發展做出一些小小的貢獻。

          2、Jdon是什么
          Jdon是什么?回答這個問題可以直接借助他的創始人板橋寫在其官方網站上的介紹:Jdon Framework(簡稱JF)是一套適合開發中小型J2EE/JavaEE應用系統的輕量Web框架(Lightweight Java Web Framework)。JF誕生于2004年底,是國人獨立開發的中國人自己的框架產品,2005年入選全球SUN公司網站java.net正式企業應用目錄。經過多年發展和眾多用戶的使用及其完善,JF已經發展成為一套成熟的、面向對象的、基于構件(基于組件)的輕量快速開發框架。Jdon是嚴格堅持分層架構(表現層、業務層和持久層)下的快速開發。JF是快速性和靈活性綜合平衡的產物,它帶來了多快好省的簡單的解決之道(simplify the best):對于小項目,使用Jdon框架可以開發出高質量可擴展的好的系統;對于大項目,使用Jdon框架可以更快地開發出系統。

          也許現在看來這些特性都沒什么,但如果在當時,確是非常具有革命性的,用板橋的話:“顛覆對象使用之前必須創建的基本定律,正象無需關心對象銷毀一樣,您可以無需關心對象創建。”,“面向對象編程之父Grady Booch 說:對象最偉大處在于其可被替代。而Jdon框架偉大之處是幫助你替代這些對象,甚至包括Jdon框本身。”
          板橋一下強調:“Jdon框架不是面向數據庫的;而是面向模型分析設計(OOA/OOD)。”

          當然,孩子永遠是自家的好,我們不能只聽板橋說他如何我們就認為他怎樣?究竟這個框架是好還是差,耳聽為虛,眼見為實。既然都是開源項目,我們只需要下載他的源代碼看看,并跟同類的開源比較一下就知道。如果你跟我一樣,通過看他的文檔,閱讀他的代碼,你才會真正了解Jdon究竟是什么。

          一個IOC框架
          Jdon是一個IOC容器(板橋也算是最早把IOC的概念引入國內的少數牛人之一,并且能通過集成到jdon中向大家展示IoC的使用),這個IOC容器能實現自動按構造子注入組件所依賴的對象。這個Ioc需要配置的東西不多,比如:你只需要在一個類似jdonframework.xml的xml文件中寫類似下面的配置信息:
          <services>
          <pojoService name="testService" class="com.jdon.framework.test.service.TestServicePOJOImp"/>
             
          </services>

          你就能在你的Action中使用下面的代碼訪問這個testService
          TestService testService = (TestService) WebAppUtil.getService("testService ", request);
          testService.createUser(em);

          當然,你必須要搞清楚的是,Jdon的Ioc實現并不是從頭開始實現了一個IoC,他是通過在picocontainer基礎上進行封裝實現的。

          簡單的AOP及攔截器實現
          基于面向切面的編程,可以把面向對象的方法不能很好解決的問題很輕松的解決掉。Jdon在aopalliance定義的API基礎上,實現了一個非常簡單的AOP,其實就是幾個類,使用代理實現了對方法的環繞攔截。雖然沒有AspejctJ及Spring的AOP強大,但對于應用80%的AOP需求,已經足夠。
          Jdon立足中大型應用需求,充分發揮Java在企業應用開發中的優勢,考慮到性能等很多因素,Jdon框架還通過成功應用攔截器,實現了對象Cache、對象池等功能。你可以在一個像aspect.xml這樣的文件中配置你的攔截器,實現對一組一組的對象進行攔截:
          <interceptor name="cacheInterceptor"
          class
          ="com.jdon.aop.interceptor.CacheInterceptor"
          pointcut
          ="services" />

          JdonAOP攔截器目標對象組有三種:全部目標服務;EJB服務;POJO服務(EJB服務和POJO服務是在JdonFramework.xml中定義的ejbService和pojoService)

          針對訪問EJB業務組件的封裝
          Jdon充分考慮到在大型的分布式應用中,一些功能仍然必須依靠EJB這種重量級的業務組件來完成的現狀。相對于其它一些同類框架,從框架底層到最終應用都考慮到對EJB支持及簡化。比如針對EJB2的一個業務組件,可以直接配置成下面的形式:
          <ejbService name="testService" >
                
          <jndi name="TestEJB" />
                
          <ejbHomeObject class="com.jdon.framework.test.ejb.TestEJBHome"/>
                
          <ejbRemoteObject class="com.jdon.framework.test.ejb.TestEJBRemote"/>
                
          <interface class="com.jdon.framework.test.service.TestService" />
              
          </ejbService>

          而在Action中使用的時候,還是像使用普通的pojoService一樣,WebAppUtil.getService方法即可獲得。

          持久層數據訪問封裝
          企業級應用80%都會涉及到數據庫的持久化。因此,Jdon提供了對持久層數據訪問的簡單封裝,提供了一個JdbcTemp類來執行數據庫操作,另外還提供了數據訪問層的DaoCRUD接口,以及一個Hibernate的實現,訪問我們使用Hibernate來進行對象持久化。
          如下面的代碼使用Jdon中提供的jdbc模板類來操作數據庫:
            //適合查詢返回結果是單個字段,如:
            
          // select name from user where id=?
            public Object querySingleObject(Collection queryParams, String sqlquery)  throws Exception {
          return jdbcTemp.querySingleObject(queryParams, sqlquery);
          }


          Struts1.x工具集合
          Jdon在我看來有一點感覺是為使用Struts1.x開的人用的,因為他誕生的時候,struts1.x正處于鼎盛時期。因此,框架內部集成了很多開發struts1.x應用的實用工具,全部放在strutsutil及下面的包中,包含基于Struts1.x的通用業務處理如ModelDispAction、ModelListActionAction等,文件上傳封裝,基于Struts1.x的樹形組件以及自定義的分頁標簽等。如下圖所示:


          一個圍繞Struts1.x+POJO(EJB) Service+Hibernate的快速開發框架
          說到快速開發框架,我想大家都不陌生,JavaEE領由于涉及到的技術及選擇性太多,導致現在的快速開發框架可以說是五化八門,國際上比較知名的有appfuse,國內比較有名的有springside及easyjf等。而jdon在做那么多基礎性功能的情況下,也實現了一個快速開發框架。也許他的核心及目標也就是這個快速開發框架,他是最終能讓這個框架立竿見影的重要部分。
          使用Jdon的快速開發框架,可以使用對象驅動的方式開發j2ee應用。Jdon框架中花了大量的精力及資源來解決模型CRUD的問題,整個框架中差不多一半的代碼都是為實現這個靈活、快速、基于對象驅動的快速框架而寫的。為了一個添刪改查,你只需要一個模型、一個業務組件、一個Form、兩個配置文件,就能實現一個非常簡單的添刪改查找應用。比如針對留言Message進行添刪改查,需要下面的內容:
          域模型
          public class Message extends Model {
            
          private String messageId;
            
          private String name;

            
          public String getName() {    return name;  }
            
          public void setName(String name) {    this.name = name;  }
          }
          業務邏輯層
          public interface MessageService {
              
          public void createMessage(EventModel em);
              
          public void updateMessage(EventModel em);
              
          public void deleteMessage(EventModel em);
              
          public Message getMessage(String messageId);
          }
          實現及DAO層的代碼這里省略。
          一個Form(Struts1.x的產物):
          public class MessageForm extends ModelForm {

              
          private String messageId;
              
          private String name;

          public String getName() {    return name;  }
            
          public void setName(String name) {    this.name = name;  }
          }


          業務層配置文件jdonframework.xml
          <models>
             
          <!-- 配置模型的類是Message,其主鍵是messageId -->
             
          <model key="messageId" class ="sample.model.Message">
                
          <!-- 下行是配置界面模型MessageForm -->
                
          <actionForm name="messageForm"/>
                
          <handler>
          <!-- 以下配置MessageService -->
                  
          <service ref="messageService">
                    
          <getMethod name="getMessage" />
                    
          <createMethod name="createMessage" />
                    
          <updateMethod name="updateMessage" />
                    
          <deleteMethod name="deleteMessage" />
                  
          </service>
                
          </handler>
              
          </model>
          </models>
          <services>
               
          <!-- 以下配置MessageService -->
              
          <pojoService name="messageService" class="sample.service.MessageServiceImp"/>
          </services>

          Struts-config.xml配置文件
          <struts-config>
            
          <form-beans>
              
          <form-bean name="messageForm" type="sample.web.MessageForm" />
               …… 
            
          </form-beans>
          …..
          <plug-in className="com.jdon.strutsutil.InitPlugIn">
              
          <set-property property="modelmapping-config"  value="jdonframework.xml" />
            
          </plug-in>
          <action name="messageForm" path="/messageAction" type="com.jdon.strutsutil.ModelViewAction"
                  scope
          ="request" validate="false">
                
          <forward name="create" path="/message.jsp" />
                
          <forward name="edit" path="/message.jsp" />
              
          </action>
          <action name="messageForm" path="/messageSaveAction" type="com.jdon.strutsutil.ModelSaveAction"
                  scope
          ="request" validate="true" input="/message.jsp">
                
          <forward name="success" path="/result.jsp" />
                
          <forward name="failure" path="/result.jsp" />
          </action>

          </struts-config>

          3、Jdon給了我們什么
          看了上面的功能介紹,也許確實沒給你帶來更多的驚喜。但是想想如果你是三年前的今天看到這么多的介紹會是怎樣?也許那時候你才開始學hibernate,或者剛使用struts沒多久,又或者還在為什么是model2的web應用而困惑,更別說什么是IoC或AOP了。如果那時你知道國人有這么一個框架,使用了這么多先進的理念、引入了很多先進的技術、并且可以讓我們開發Struts應用基本上不用寫太多的java代碼,你會是什么樣的感受?
          其實,也許就算你現在不用Jdon框架來做項目,作為一個開源愛好者,我仍然強烈推薦你去了解這個框架。因為他曾經帶給我們的是很多革命性的東西。而且,就算三年后的今天,也許你已經從一個java菜鳥變成了java小牛,但回頭了解Jdon框架中的很多東西,你會發現很多與你的代碼有著似曾相識的感覺。
          Jdon框架中大量應用了設計模式,這是面向對象編程人員必須掌握的一門內功。通過ServiceFactory、ServiceFacade、ContainerDirector、ComponentVisitor、HttpSessionProxyVisitor、CommonsPoolAdapter、CommonsPoolFactory、WebServiceDecorator這些名字,一個一個的去了解、挖掘,一定會非常受益。

          4、Jdon的代碼質量分析
          Jdon的代碼質量總的來說是非常高的,不管是命名規范、代碼注釋或者是代碼結構等。整個框架根據要實現的功能模塊分成aop、businessproxy、controller、container、model、strutsutil、persistence、security等大包,框架的核心部件如容器ContainerWrapper、ContainerBuilder、組件描述TargetMetaDef、動作事件 Event、模型ModelIF等都是針對接口編程,具有一定的可擴展性。另外整個設計中使用到大量的設計模式,可讀性也非常強,想進一步提高OO水平的java開發人員值得進一步學習研究。
          代碼的注釋有的是英文,有的是中文,這種中英文混合的方式有好處有壞處。好處是國人或老外都能看懂一點,壞處是不管對國人還是老外,都沒法讓他們徹底地搞懂。比如下面是ModelIF的代碼及注釋:
          /**
           * Base domain model it can be DTO or nested Model. it is the important message
           * between business layer and view layer. in view layer, it is created by form
           * object(such as ActionForm object);in business layer, it is created by
           * business components(such as session bean).
           *
           * thi class can be cached, and setModified is important, this method can be
           * used to refresh the cache.
           *
           * because setModified function ,so the class is designed for a class, but not a
           * interface.
          * the difference with setModified and setCacheable;
           * setCacheable to false, the model will never exist in the cache.
           * setModified to true, if the model exists in the cache, the client will not
           * get it from cache, it is same as being deleted from cache .
           * deleting the model from cache must have a condition that the deleting operator
           * can access the cache of the container, if it cann't access the container,
           * it cann't delete the model from cache. such it is EJB.
           * 
          @author banq
           
          */
          public interface ModelIF extends Cacheable, Cloneable, Serializable {
              
          /**
               * in the past version, this method name is isCacheble,
               * now change it after 1.3 !
               
          */
              
          public boolean isCacheable();
               
          /**
               * in the past version, this method name is setCacheble,
               * now change it  after 1.3 !
               
          */
              
          public void setCacheable(boolean cacheable);
              
          public boolean isModified();
              
          /**
               * set the property has been modified such as : setName(String name){
               * this.name = name; setModified(true); }
               *
               
          */
              
          public void setModified(boolean modified) ;
             
          }


          當然,既然是中國人,那么跟所有其它的中國人一樣,一個人寫這么多的代碼,難免也會出現一些小小的Bug及錯誤,特別是一些錯別字。比如說:ModelManager接口中的borrowtHandlerObject方法,又或者isCacheable寫成isCacheble,或者Jdbc操作模板類名稱叫JdbcTemp而不叫JdbcTemplate等;另外還有把test代碼沒有跟框架代碼分離,而是跟著框架核心代碼放在一起,比如ContainerDirectorTest等;還有很多核心的接口缺少注釋,比如ServiceAccessor等。
          如果不是為了雞蛋里面挑骨頭,但我想這些不是應該成為這個框架不好的原因,畢竟這些問題我想Jdon并不是無法改進。
          Jdon的代碼存放在sourceforge上面,使用cvs管理,任何人都可以從這個cvs上check out他的源代碼進行學習及改進。

          5、Jdon還缺哪些?
          前面已經說了很多Jdon的優點,但同樣是應用程序框架,Jdon為什么沒有能像Spring那樣火呢?為什么市場上關于Jdon的書基本上為零呢?為什么Jdon沒有得到企業的認可,并大量應用呢?
          因此,Jdon應該是缺少一些東西,或者說是關鍵的東西。為什么同樣是開源,spring能得到那么多用戶的反饋、并不斷改進,而針對jdon的bug建議、用戶反饋卻寥寥無幾呢?是技術不行還是市場推廣不行?Jdon雖然發布到了5.0,但除了前面的一兩個版本,后續的版本都沒有帶來什么變革性的東西,難道是后勁不足?其實這些問題都值得我們每一個開源愛好者思考。本文只談談我對技術上覺得現在Jdon的存在的不足,以供大家參考。
          設計上的問題
          技術的進步是永無止盡的。Jdon框架的設計仍然還存在著很多的問題。比如,要求用戶領域模型繼承Jdon的Model類或實現ModelIF接口,添刪改查的業務實現類中要包含類似createXxx(EventModel em)這樣的方法,導致整個框架對業務層的東西侵入性太嚴重,不符合實際應用。另外,過多與Struts1.x緊密綁定的設計也不可取。
          容器的改進
          picocontainer有很多局限性,最要命的是不支持setter方法注入,這個通過實踐證明是用得最多的。picocontainer的自動注入應該是按類型注入的,在實際應用中也存在很多限制。比如下面的EmailDefine這樣的構造子可閱讀性是非常差的,如果存在多個這樣的構造子,稍不注意就會搞錯:
          <component name="emailDefine"
                      
          class="com.jdon.jivejdon.service.imp.account.EmailDefine">
                      
          <constructor value="J道:用戶名和密碼"/>
                       
          <constructor value="您好:您索要的jdon.com網站登陸用戶和密碼如下:"/>
                       
          <constructor value="Jdon.com --- 解惑授道 專業的解決之道"/>              
                       
          <constructor value="Jdon.com"/>              
                       
          <constructor value="admin@jdon.com"/>
            
          </component>       
          public class EmailDefine{
              
          public EmailDefine(String s1, String s2, String s3, String s4,  String s5){
              }
          }

          因此,Jdon的IoC部份,需要增加針對setter方法注入的支持才行。

          統一業務組件 
          Jdon中的業務組件包括“普通類服務pojoService”、“普通類component”、“EJB服務ejbService”等,不同的業務組件配置的方法還不一致,有的使用<pojoService>、有的使用<component>、有的使用<ejbService>,其實既然是松耦合,就應該是一致的。在一個應用中,又如何能完全區分出誰該扮演component、誰該叫service呢?另外攔截器還要在單獨的配置文件中進行配置,這樣會增加了配置及處理的復雜程度。下面是當前jdon中的一些配置片斷:
          <pojoService name="testService" class="com.jdon.framework.test.service.TestServicePOJOImp"/>

          <component name="jdbcDAO" class="com.jdon.framework.test.dao.JdbcDAO">
               
          <constructor value="java:/TestDS"/>
          </ component >
          <context-param>
          <param-name>containerConfigure</param-name>
          <param-value>WEB-INF/mycontainer.xml</param-value>
          </context-param>
          ……
          <context-param>
          <param-name>aspectConfigure</param-name>
          <param-value>WEB-INF/myaspect.xml</param-value>
          </context-param>
          EJB服務
          <ejbService name="testService" >
                
          <jndi name="TestEJB" />
                
          <ejbLocalObject class="com.jdon.framework.test.ejb.TestEJBLocal"/>
              
          </ejbService>
          <ejbService name="calculator" >
                
          <jndi name="CalculatorEJB3" />
                
          <interface class="com.jdon.framework.test.service.Calculator" />
            
          </ejbService>


          Annonation支持
          EJB3、JPA以及整個JavaEE5都已經大量引入的java5的annonation來描述源數據,spring、struts2、hibernate以及國內的operamasks、easyjweb等框架也都大量引入了對annonation的支持,實踐證明annonation也是一個非常好的東西。而到上前為止,在這一方面jdon框架中還沒有看到有對annonation的支持。最好能把ejbService、pojoService及component等配置可以通過簡單的注解來實現,甚至cache、攔截器等也應該引入annonation的支持。

          其它Web框架支持
          雖然Struts1.x的市場仍然還是很大,但我們應該清醒地看到,今天已經有很多正在逐漸取代Struts1.x的Web框架出現,比如webwork(或struts2)、easyjweb、operamasks(jsf)、grails等。Jdon作為一個應用框架,要能獲得更多的應用支持,必須支持與這些框架進行集成,提供更多的支持,讓開發者有更多的選擇權。

          持久層JPA支持
          JPA不用質疑肯定是一個趨勢,spring、grails、appfuse、struts2、jsf等當前主流的框架都提供了對jpa全面的支持,并且把jpa作為java持久層的首選解決方法。另外, springside、easyjf等國內的開源組織,都已經在他們的框架中大量的使用到了jpa持久層技術。因此,Jdon也應該提供更多的對Jpa的支持。jdon現在所提供的對持久層的封裝顯得較單薄,很多時候無法滿足項目中需求。

          過分EJB不一定是好事
          EJB是一個好東西,但EJB3以后EJB從技術上來說應該就不算是什么東西了。三年前的Jdon考慮到當時對EJB的支持情況,過分考慮EJB的需求是對的。但都EJB都已經從重量變化輕量了,jdon框架中的很多為支持EJB而提供接口、方法等應該根據實現的情況作相應的調整、改進,不用再“過分EJB”。比如,下圖是Jdon中的TargetMetaDef組件定義核心接口的類結構圖:



          6、寫在最后
          也許真像就像我在《中國java開源界最可愛的人們》中說過的一樣,Jdon現在給人有點高處不勝寒的感覺。然而我更希望的是Jdon不要停止前進的步伐,同時也希望更多人一起來為Jdon以后的發展、為國人的開源做出力所能及的貢獻。擁抱開源肯定是不會錯的,能投身到開源的事業中當然就會讓我們的職業生涯更加有意義的。

          泡一杯清茶,細品Jdon中的代碼,他可以帶給你很多東西。程序是一種藝術,藝術不一定都實用,他能帶給我們藝術享受就已經足夠。
          也許我們永遠都用不到這框架,也許幾年以后,你會發現編程的技術又有翻天覆地的變化,如果你發現你為這種變化做出了一些貢獻,你會感到非常欣慰。從這一點來說,我認為板橋無論如何肯定都是應該是快樂的。

            版權聲明:本文版權由Blogjava小雨開源所有,受法律保護。歡迎轉載,轉載請保留作者版權聲明及連接。

          附:
          其它相關背景資料:
          1. 2005年Jdon框架入選SUN公司的Java.net企業應用目錄(與AppFuse同列)
          2. Jdon框架在全世界最大開源網站Sourceforge的項目網址
          3. 世界頂級Java網站TheServerSide有關Jdon框架 2004年新聞1 新聞2
          4. 2004年底Jdon框架剛推出時國內各種評論
          5. 時值2006年8月道友lhsail對Jdon框架的看法
          6. 一位Jdon框架用戶的感言
          7. 對話Jdon 一個開源人的孤獨告白.
          8. 更多關于JdonFramework討論系列1 以及 討論系列2



          posted on 2007-12-25 19:54 小雨開源 閱讀(18026) 評論(52)  編輯  收藏

          評論

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2007-12-25 20:21 xxx

          這不是廣告嗎?
          我覺得這樣的吹捧過時了!!!!!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-25 20:24 明白人

          是呀,JDON什么時候變得這么強了!
          我發現作者比較適合當托兒!開源的托!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-25 21:27 beans

          畢竟不是任何東西都能讓人抓狂的,而且是讓很多“牛”人們集體抓狂,更是不容易。是因為他確實太濫或者又他太優秀?是因為他侵犯了大家的利益還是他在給我們宣揚錯誤的思想及理念?或者都是,又或者又都不是,也許只有身在其中的人們才知道。
          ---------------------------------------
          這幾句寫得很好,佩服。看完再說!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2007-12-25 21:58 xiaoxiao

          中國就缺少樓主這樣的國人開源的項目的介紹
          支持樓主繼續下去!!~  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-25 22:26 Scorpioer

          記得曾經看來Benq的《一個開源人的獨白》,也表現出了一個國內的開源人的無奈,看了上面的幾個回復:
          ----------------------------------------------------
          這不是廣告嗎?
          我覺得這樣的吹捧過時了!!!!!
          ----------------------------------------------------
          是呀,JDON什么時候變得這么強了!
          我發現作者比較適合當托兒!開源的托!
          ----------------------------------------------------
          所表現出來的,也只能是無奈!!!
          先不去說JDon是否真的很優秀,是否可以和Spring相比美,但Benq的那份開源的精神,不畏列強,是得首先值得尊敬的。但很多人骨子里就是看不起國人自己的東西,好像根本就不屑于與國外的開源框架相比。
          JDon一直就處在一個被人輕視的地方,沒有良好的環境,根本就得不到很好的發展。
            回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-25 22:33 beans

          @Scorpioer
          ---------------

          但同樣是應用程序框架,Jdon為什么沒有能像Spring那樣火呢?為什么市場上關于Jdon的書基本上為零呢?為什么Jdon沒有得到企業的認可,并大量應用呢?
          因此,Jdon應該是缺少一些東西,或者說是關鍵的東西。為什么同樣是開源,spring能得到那么多用戶的反饋、并不斷改進,而針對jdon的bug建議、用戶反饋卻寥寥無幾呢?是技術不行還是市場推廣不行?Jdon雖然發布到了5.0,但除了前面的一兩個版本,后續的版本都沒有帶來什么變革性的東西,難道是后勁不足?
          ----------
          我也在思考這個問題,樓主文中所提的問題,似乎找到了一點答案。其實通篇讀完,看出來還是很客觀的。為什么有的人會覺得這是托呢?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2007-12-26 08:48 dennis

          一句話,樓主做技術人員純屬浪費,適合做營銷  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 09:05 gan

          托也要托的有水平好不好,你再回去練練  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 09:08 gan

          lz要托去theserverside去托,貌似jdon最初發布的時候在theserverside被人罵的要死  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:03 小雨開源

          @gan

          拜托,如何托了?你丫好好把文章看完,再發表意見好嗎?如果真像你說的被罵死了,人家還不一樣好好的活到今天!你不會就是那些因為jdon而抓狂的人中的一員吧。悲哀.....  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:04 小雨開源

          @dennis

          要留言就請有點技術含量,OK?如果我文中有什么不足,請你點出來,好嗎?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:04 小雨開源

          @Scorpioer

          我也有同感。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2007-12-26 10:11 Mike

          樓主不會就是彭胖吧,動輒就來“偉大“二字,張口閉口開源(敢問你哪怕通篇讀完一個類似開源協議么?)。感謝彭胖出的那本爛書,讓我認識了你的文風,敢情是換了個馬甲,假裝成第3者來自己吹自己啊!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:12 小雨開源

          @Mike
          又敢請問樓上的是何方牛鬼蛇神?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:17 范德薩

          @gan
          我可以很嚴肅的告訴你
          你是個 傻# #比  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:42 我來也

          發現樓主的文章除了托還是托,很適合搞娛樂,我看好你!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-26 10:49 我想說兩句

          終于看完了,發現小雨是非常細心,值得大家仔細看,特別是后面部分的文字很感人,幫你頂一個。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2007-12-26 13:51 xiaoxiao

          確實小雨非常細心,文采非常不錯
          有點像女生的味道
            回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-27 17:10 hansy

          @小雨開源

          看4、Jdon的代碼質量分析
          里面接口ModelIF 的注釋是怎么寫的?
          英語語法一竅不通。

          你告訴我這個質量和優秀是怎么來的?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-27 17:27 小雨開源

          @hansy
          代碼質量不是通過英語語法體現出來的,相信大家都能看得懂。

          當然,你可以通過注釋前面的話看出來我要表達的意思:

          “代碼的注釋有的是英文,有的是中文,這種中英文混合的方式有好處有壞處。好處是國人或老外都能看懂一點,壞處是不管對國人還是老外,都沒法讓他們徹底地搞懂。比如下面是ModelIF的代碼及注釋:”  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 10:50 hansy

          如果英語水準就是這樣,他的方法命名,代碼注釋能寫到什么水準?

          對于一個優秀的工程師,優秀的框架,我覺得就是要在每個方面都要做到嚴謹,像這樣所謂的“中英結合”只不過是給自己找的借口而已
          jdon代碼我看過,的確可以,但這方面就是一個硬傷
          說好可以,但沒那么好,更不能胡說

          像這樣隨隨便便就把這樣的注釋拿出來給人家看,我覺得是作為一個程序員的恥辱。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 10:53 hansy

          而且,補充一點。

          這樣的英語水準我理解為不是差,是很差。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 14:48 小雨開源

          @hansy
            “像這樣隨隨便便就把這樣的注釋拿出來給人家看,我覺得是作為一個程序員的恥辱。 ”

            這話說得也太難聽了吧,怎么你就覺得是恥辱了,你讓老外寫程序全部用中文寫注釋看看。我覺得敢于把代碼開放就是一件很光榮的事情,敢問老兄你又有幾行代碼開放給大家學習了呢?不要告訴我你只會為別人的注釋寫得不好而總覺得恥辱吧。而且你可以幫他把注釋改好,一切不就OK了嗎?開源講究的應該是參與吧?
            呵呵,既然你都承認他的代碼好,這就OK了。我們是看代碼,程序的藝術是靠代碼表現出來,不是靠寫注釋表現出來。
            另外,對于jdon代碼的注釋方中英文結合的方式,是否可取我很婉轉地保留了我的意見。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 15:40 hansy

          1. 注釋,命名有問題,就是有問題,和我是否opensource是兩個話題,我只有opensource 才能說jdon好壞么?。
          2. 英語在寫程序時就是通用語言。漢語不是
          3. 我沒有說一定要JDON注釋寫的如何好。但不能寫的不好還狂吹
          4. JDON代碼我說的好是略微above average。沒有非常好
          5.我們對代碼質量理解有很大分歧,我也不想交流了
          6. “注釋方中英文結合的方式,是否可取我很婉轉地保留了我的意見”, 我只能說現實生活中我的同事說要這樣做的話,我會斬釘截鐵的說“NO”,況且我身邊絕對不會有人說出這種話

          7. JDON我今后不參與任何討論  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 16:03 小雨開源

          @hansy
          呵呵,不討論JDON了,下周小雨開源將把第三之眼轉向huihoo,歡迎捧場。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-28 16:12 Justlive

          俺剛進入java, 準備讀jive源碼, 順便看到這個帖子, 不知jf如何好, 或者如何壞, 但是覺得前面反對者們一味反對,卻沒有確鑿根據, 很是悲哀。

          無論如何, 覺得人家把一個開源的東西一直堅持做是件讓人敬佩的事,我無法鑒別這篇文章的真偽(個人覺得還是不錯),但是覺得jdon的開發者值得尊敬。

          另外發現國人太愿意攻擊了,而且沒有根據,經常粗話連篇。這不是丟人嘛?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2007-12-29 17:02 mingj

          Benq還是一個很值得尊重的人
          只可惜出現的時機太早了  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-01-16 15:17 夸父逐日

          感覺jdon是一個人寫的框架,大部分國人沒有很好的英文水平,這也是我們在高水平開發領域落后的一個原因,其實國人的智慧并不比老外差,另外,一個人完成這么復雜的工作,實在很困難,象是夸父逐日,永遠也追不上,開始時基于一套先進的思想,也可以很快建一個簡單的原型,但豐富過程是漫長的,完成時也就落后了。
          看上面介紹,jdon很象側重解決的是快速模型驅動實現增刪改查,并增加一些設置使基于增刪改查的擴展完成企業應用,是不是?這與其它的框架出發點不同,似乎與很多公司在做的:基于開源框架加上面向某種業務的擴展--實現進一步的智能化傻瓜化開發大概是一個思路吧。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-01-31 07:33 tehids

          感慨啊,抓緊時間學習吧,哪天水平高了去開源, 外國人的東西有啥子JB了不起嘛,抽時間干掉它!!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-02-18 13:18 ddtred

          支持jdon  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-06-19 16:44 leftmouse

          真搞不明白,為什么別人搞個東西出來,這么多人反對?
          開源的東西,你要覺得不好,你可以修改呀,罵什么?有本事寫個出讓別人看看,我覺得太不和常理了。應該多多參于才對呀!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-07-19 15:27

          支持JDON,  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-07-20 21:02 CrazySong

          @leftmouse
          你說得很有道理,既然是開源的東西。有什么不足大家都可以說出來聽聽、寫出來看看,為什么要一味的批評呢!何不花點時間研究一下如何改善才是最佳的解決方案。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-07-20 21:04 CrazySong

          看來還是有人不明白開源到底是什么意思。
          開源!!??  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2008-08-28 03:24 lb

          不要把很多有能耐人的想法,歸類為嫉妒,去jdon那里看看,看看這個banq就跟一個偏執狂一樣,瘋狂的下定義,而且,從theserverside那篇文章,翻譯之后就當成寶,誰有不同意見就拿相關文章來舉例,theserverside是什么權威學術機構么?當然不是,那里的文章能用來下定義么,太開玩笑了,不管是學術界,還是工程類都沒有這么做的。

          我舉個例子,她認為,所有的數據庫的東西都可以被抽去,分離(按他原話),然后進行緩存,就可以解決很多企業及的性能問題,或者是邏輯問題,OO是方法,object是表現數據的一種形式,OO方法也有缺陷,object的表現形式,但是索引和存儲還是需要數據庫。

          有機會的人可以去看看,這個人多瘋狂!我到現在也沒看見J2EE的制定者們,下過如此定義。太恐怖了。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-08 09:31 鬼狗

          今天找資料,碰巧看到,順便說說,呵呵,首先要表示感謝,你的文章讓俺看到了jdon的進化,jdon今天終于進化到他一開始就極力反對的模式了,這點是jdon當初讓很多人抓狂的核心。

          你可能并不清楚當年很多人和benq的紛爭,其核心并不在于中國人自己做開源好不好,核心還是在于一個技術發展方向,和在此之上技術人員的職業道德操守。
          實際上不少開源項目還是得到了國內一些人的認識, 比如springside,在javaeye上人氣就很旺,同樣是javaeye,各位牛人對benq就是一邊倒的態度

          1. jdon的概念并不新,三四年前也不新。 當年在ejb的失敗已經成為定局的時候,benq還在極力鼓吹設計一個基于ejb應用的框架,而且層次結構劃分及其復雜,這是他讓很多人抓狂的最初原因,但是他更進一步讓人抓狂的原因是他的固執。 你可以找找看,他現在基本只在jdon發言,而且jdon并不允許任何有反對他的意見。
          如果你有留心的話你會發現,5年前左右,ejb將死未死之時,真是大量此類框架涌現的時候。 另外, naning這個優秀的開源lib也是中國人做的,并得到了當時國外社區的認可。

          2. jdon現在已經進化了, 基本上是copy spring的路子,而最初包括現在benq都是極力反spring的。 這基本是商業利益的問題, 就想當初他極力鼓吹ejb一樣,因為這是他的謀生手段。
          jdon的核心和spring現在已經沒有本質區別,差別在于benq一個人無力完成類似spring這樣的大作,所以他只能再找一些開源的東西進行包裝。這注定他只能是一個追隨者,當然,他身后很多追隨的菜鳥也可以保證他的飯碗。

          其實這樣一個級別的框架,是基本不可能靠一個人來開發維護的,benq的偏執又缺乏足夠的天賦,注定了jdon的悲劇。

          3. jdon上曾經有一個程序員向benq請教如何保證自己的代碼不被有效反編譯,對這個問題的一般做法是使用混淆工具, 或者進一步在設計中加入陷進和偽裝類。 但是benq當時的回答是, 一個優秀程序員做出來的設計, 應該是讓人在沒有文檔的情況下,無法看懂源代碼,諸如jpetstore,tomcat都是這樣的。 如果這確實是benq的本意的話,你可以明白,他個人是更傾向于用復雜化的東西來表現簡單食物的,這是jdon最初的版本被人狂踩的一個原因。

          另外ps一下,我認識的大部分程序員都具備在不用文檔的情況下讀懂jpetstore源代碼的能力,由此真是懷疑某人的iq。

          4. benq本身對模式有很好的研究, 這也是早期他得到眾多網友賞識,并由此建立自己江湖地位的原因。但是任何事一旦走向過就莫名其妙了。從模式走向過度模式,到反模式,就比較悲哀了。
          你也提到benq在模式的理解上,在代碼質量上,都超過一般的程序員,他這個人水平還是有一些的,但是大部分人不喜歡的是他的人品。

          5 有件事可以說明benq的固執, 某次他和人爭執,在無法以理服人的情況下,他拿出自己用鼠標繪制的山水畫,意思是一個能有如此雅興和修養的人,道德品質肯定是高尚的,以此證明對方是錯誤的。到了3,4年前,他基本上已經拒絕和任何對他有不同意見的人進行辯論了。 有不同意見者刪帖,呵呵。

          我大概認識benq8年了,呵呵。

            回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-15 13:41 xiaohufeilong

          @鬼狗
          那你是說你人品很好了??我為什么要聽你胡言亂語.....在背后說別人壞話的人~人品本來就很差,所以說的話也沒有必要相信。話說回來就算benq真的象你說的那樣,而你就因為這樣就說他什么都不是,我想你的思想還停留在石器時代,這么些年的書是白讀了。取其精華,棄其糟粕,這句話都不懂??我想jdon框架之所以不象SPRING那樣快速被應用,是因為它要端掉一些所謂“牛人”的那點冠冕堂皇的外套,又由于能力有限,拼命的守住自己的那點面子,想繼續體現自己的那點價值......上jdon上也看得見,多數的所謂的“牛人”的討論都是那些所謂“牛人”的口水戰,本來很淺顯的意思(你為什么就要選那個錯誤的意思理解了,我是無語了,你為什么就不去了解本意了,需求分析你是白做了),他硬要在那里鉆牛角尖(我承認BENQ有時說的話,不是很嚴謹,但這就是反對他的借口嗎??放棄正確的思想的理由嗎??如果你們放棄的話,我希望你們不要當面一套,背著一套,私下猛的接受他的思想,如果是那樣的話,我想你是罪人!!~~你誤導了很多剛出道的求知若渴的年輕一代,你是罪人),一句話,他們放不下那張老臉!!!!雖然在編程的經驗上我是菜鳥,但是我的思想比你們先進,對于這點我很自信(你隨便說我也沒用,我不會跟你計較太多的,話說回來吃虧的又不是我,我沒BENQ那樣的耐心),學東西我認為首先要有先進的思想,要不黨校也就不用辦了,黨校培訓也不用了,你直接入黨算了......  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-16 22:09 Jacklondon Chen

          也許你應該比較一下 VelocityWeb 與 Jdon 的優缺點。
          從樓主的介紹,看不出 Jdom 有什么用。也看不出比傳統的 Struts 應用好在哪里。不要提什么 Spring, 有很多應用不用 Spring 只用 Struts 的!!
          http://velocityweb.sourceforge.net  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-21 16:25 guest

          jdon不太了解, 我得承認banq在面向對象方面布道上做出了成就,
          水平也應該很高, 但此人確實足夠偏執, 可能有時候也很無奈,誰也不能說自己的瓜苦啊?

          但是只有接受建設性的意見才能長大, 一意孤行是不利于發展的.  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-21 16:39 guest2

          @xiaohufeilong

          人品怎么樣很難說, 各有各的活法,各有各的理念, 道不同者多了.

          但是從你的話中, 至少俺不喜歡你的人品. 你確實浮淺  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-11-24 22:44 xiaohufeilong

          @guest2
          那麻煩您指點下,偶到底那里表現的比較膚淺?~~~不勝感激(我只是根據他的說法反駁他而已)。
          你說:人品怎么樣很難說, 各有各的活法,各有各的理念, 道不同者多了.
          但是你又說我很膚淺,這么說確實是給人自相矛盾的感覺。又看了遍,我明白了你的意思是:人品怎么樣很難說, 各有各的活法,各有各的理念, 道不同者多了,不應該隨便評論別人的人品怎樣怎樣,不應該要求別人一定要跟自己一樣的理念.....恩,說的不錯,我同意,謝謝。你后半句我不敢茍同,既然你能說出前面那樣有深意的話,后半句就不應該說了,否則就有點自相矛盾了。取其精華就可以了,不想卷入口水戰  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2008-12-22 20:56 dpurpel

          我是菜鳥,看了一些benq的回復,的確如鬼狗所說 RP有問題
          我以前也碰到過一個叫lee的家伙

          直覺就是"不謹慎" , "自以為是 隨意下定論" , "死要面子" , "以高手自居"
          如 Bjarne Stroustrup 所說的
          "對于許多管理員來說, 擺脫那些妄自尊大、缺乏修養、多拿報酬、鬼迷心竅、穿著不合禮儀的程序員是大有好處的事情。"
          當然 我是指前兩條

          以上對于有持反對意見的 就不要對我進行人身攻擊了, 只是單純的直覺罷了  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2009-03-25 23:55

          我對J道并不陌生
          對于banq這個人我無法理解
          感覺他的網站并不存心讓別人徹底知道他的意圖
          而是要經過他的培訓!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2009-03-27 12:45 路人甲

          一個開源框架技術文章的回復內容竟然基本全部是打口水仗.
          只有國內才有如此氛圍吧,悲哀  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2009-04-11 20:40 匿名

          文人相輕啊!banq的觀點有錯的地方不新鮮。誰沒有呢?但很多觀點需要以后才能驗證。至于其框架火不火,跟框架本身好不好沒有直接關系。這個我想反駁的人不會很多吧。大家能有這么多牢騷觀點正說明jdon是大家關注的網站。對個人攻擊不好。banq對java開發者有很大貢獻的,無論是框架還是觀點。國內注重用器,而國外注重造器。我想banq是在造器的路上,不知道大家是不是在造器的路上還是用器的路上。恐怕思維的方向就有差別吧。
          --------偶然來此的路人有感  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2009-04-13 21:13 yizhitunshu

          我是看JDON入門的,后來接觸了SPRINGSIDE,覺得比JDON更實用。
          個人感覺,JDON比較適合學習研究的參考,SS比較適合實際應用參考。
          論水平,BANQ應該比江南白衣高些。不過對初學者言,白衣更平易近人,看回復可以看出來。
          水平高的人有點脾氣性情也不傷大雅,關鍵是有開源精神。人家教你知識,你還有什么不滿意的。當然水平高脾氣又好就更好了。
          回貼只會人身攻擊的,感覺挺無聊的,基本可以忽略。
          jdon成功不成功不好說,至少我覺得它在學術是很成功的,幫助了很多人。
          應用上就不好說了。我也接觸過dorado,另一個國人框架,技術上感覺沒什么,商業推廣做的挺好,有一家公司在運營,不知算不算成功。
          國內環境如此,而且IT技術本來也落后,造器太難了。國內也有成功的框架,比如ZK,技術和商業應用都做的很好。不過太小了,屬于SOLO型的。成功的MVC類的框架需要一個成功的團隊來支持。國內缺乏這種團隊,不知是找不到這么多高手,還是缺少一種合作氛圍。很多牛X的技術,都是從高手之間的幾封郵件,一個實驗誕生的。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2009-04-16 13:48 dracularking

          對benq認識不深,但不管他的網站是不是存心讓別人徹底知道他的意圖,水平挺高且樂于傳播他的知識,他對學習者是有貢獻的  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2010-04-01 12:55 javafuns

          又打口水仗,shit  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2011-02-10 18:03 hansonjan

          口水戰總是讓人感覺厭煩!  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2012-09-03 11:42 Aaron

          應該說寫的還是非常中肯的!對Jdon有了解的人應該知道,相比于springside,它已經有很大進步了!起碼,Jdon能夠比較好的吸收了sping、hibernate這些主流框架的優點!現在的國內,一般人還真是干不出來。。。。  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架 2015-03-19 14:49 delphi23

          jdon原來還有這么個歷史淵源。。。
          我覺得jdon的網站還是不錯,能學到很多理論知識。至于jdon的框架,最吸引我的就是所宣稱的DDD,Event Driver, Reactive等思想,要細細研究。
          另為,現在已經發展到了6.8版本了,不知道和Spring框架或JPA等一些規范結合的怎么樣?  回復  更多評論   

          # re: 第三只眼看Jdon-一個讓很多人抓狂框架[未登錄] 2015-06-03 16:01 呵呵

          所謂jdon真的不敢恭維,開始同事推薦,而后看了,發覺就是各種亂湊  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 泗水县| 金山区| 沅江市| 卢氏县| 昌黎县| 浙江省| 监利县| 阿勒泰市| 龙山县| 林芝县| 且末县| 买车| 鄂伦春自治旗| 民乐县| 古浪县| 始兴县| 凉城县| 南投市| 东平县| 环江| 宜丰县| 乾安县| 汝城县| 出国| 吉林省| 梁平县| 武邑县| 慈利县| 清镇市| 出国| 沙河市| 红安县| 四川省| 柳江县| 榕江县| 会理县| 楚雄市| 兴义市| 宜黄县| 永济市| 白河县|