小雨开源

我也加入到了开源队伍中了

常用链接

统计

最新评论

第三只眼看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 小雨开源 阅读(17932) 评论(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真的不敢恭维,开始同事推荐,而后看了,发觉就是各种乱凑  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: