补充 之前关于wordpress插件的说明。
wordpress这种在php上提供插件框架的产品,其插件化都比较“高内聚”。 其才后台管理中有插件生命周期管理的功能,就是可以安装插件、配置插件、禁用、删除插件等。怎么?不削一顾? 我跟你们说JavaWeb开发中,你要弄一个比较完善的插件化框架非常困难!! JavaWeb开发者习惯把“业务”功能都写在Action往下的层次,并用spring集成。你们要知道,一旦写在servlet以下的层次一般来说都变成,初始化导入的程序。也就是说,你代码只能在jvm启动时导入一次,包括struts spring hibernate这种东西的配置文件。开发调试效率极其低下,每次调整都要重启服务器。 解决办法之一,也是最原始的办法,吧所有业务代码都写在JSP中。
这种方式已经被很早以前的开发者给摒弃掉了,因为认为会导致混乱,这也是mvc大行其道时所针对的问题。但是我想说,人家用mvc框架、用分层概念,是因为其产品或应用框架在长时间演化过程中,其已实现规模要求的,是慢慢演进论证过来的,并不是应用初期架构设计出来的。演进的结果是必然符合其具体实现要求,但是预先设计并不一定符合其实现要求。
我所谓JavaWeb开发者常常误入歧途,就是指这种过度设计过度预判的情况。包括我在内,在开发时貌似总有一个声音在说,“我要拆分、我要跟模块化,我要能复用、我要能OO。。。。。”,我现在对我说我生病了吧。。。。java开发者的早期教育深入骨髓啊。。。包括一些毒素也是。。。
好吧,回到主题,之前所说的无法动态化是指"一般来说",有人会说了那我用asm cglib 反射 jrebel行吧? 行,那你技术门槛、学习成本又上升不只一点点。有人说那我直接用OSGi作为插件化如何?那我问有多少人会为了开发个blog或相册去学OSGi,跟况且企业开发者到现在为止有多少人在用OSGi?同样 技术门槛、学习成本不只一点点的高。最后的结果是,一般的JavaWeb开发者懒得用这种架构方式或技术。但是却会去选择哪种分层结构SSH么。因为SSH的学习成本比前面这些稍低。(更奇怪的是这些奉行SSH的人却有很多jsp/servlet/jdbc都不理解。可能是招聘者的问题吧,那这些招聘者又如何呢?算了不臆想了。。。)
这样有个带来个问题,javaweb基于现有技术能否提供一个 简单易学、高度灵活、易插拔、易调试的插件框架么??? 看看大家有啥意见吧。。。。