发扬EJB、Spring思想将组件化进行到底

EJB、Spring,这不是Java界最有名的两大冤家,何以把它们扯在一起。其实Spring乃是EJB1.x、2.x的继承者,正如EJB之前的COM、CORBA。他们的思想一脉相承,那就是企业级的组件化思想,也可称之为理想!
一、非组件化的国内软件行业

各个行业的企业总有一些核心业务,长久保持不变,新时期的新业务基本上都是围绕核心业务展开。很长时间以来,IT技术的变化与企业业务的扩展存在着很大的矛盾。当企业的新业务开展之后,如何保证原有业务稳定运行的同时,新业务能够得到IT的支持与扩展?当IT技术有重大进展后,如何保证原有业务的同时进行新技术改造?在以上两种运动中,如何重用原有的技术成果?这是每一位负责任的系统管理员、CIO与及开发商所关心的事情。遗憾的是,组件化思想及实践产生以前,这个矛盾基本上是极难解开的死结。绝大多数的做法就是重写。

譬如DOS时代,很多单位都使用了单机foxbase版的财务系统,界面虽简但稳定实用;到了Windows时代,流行VB、PB,于是系统重写;再到B/S时代,系统再次重写;到最近热炒的RIA,系统是不是要再次重写?对于很多小产商的作品而言,答案肯定是Yes。

很多同道可能会说,这样正好啊?我们才可以不断地赚钱。错!

这样的状况叫“低水平重复”,这个术语经常被国人用来痛斥社会经济领域的很多不合理现象。可惜我们这个自认为高智力的行业,很多时候就是在干这种愚事。每到技术革新,各企业要重花一次钱、重学一次操作、重转一次数据,折腾得半死;而适应不了新技术的产商,随被淘汰的代码一同退出市场;适应不了新技术的程序员,只能转行。要想不被淘汰,就必须紧跟时代风潮,不停地把精力放在新技术上,在领会业务上花的时间太少,最后导致我们的系统与企业的业务总是差半拍。因为原先快把业务搞清楚的程序员大多升官或离职了。

笔者以为这是软件界,尤其是国内软件界混乱的根本技术原因。由于技术长期得不到积累,我们不得不一次又一次吃外国的人剩饭。

那我们终究需要怎样的软件才能解决这些问题。

其实答案早就在我们身边晃了太多年,偏偏我们视而不见。大家接个新外设,要不要换主机?加根内存条、换块显卡、声卡要不要换主板?OS是不是只能用几个特定的硬件,跑几个特定的程序?而大家在OS下写的程序,是不是在系统新版本运行不了?答案基本上是否定的。

OS可以适应全世界数以万计的程序及其发展,为什么我们的应用程序不能适应哪怕一个特定单位的变化和发展。为什么我们的应用系统到了新环境下就要重写?

原因就在于我们大多数应用程序规范性太低、耦合度太高。

要提高规范性、降低耦合度,就要不断地设计、不断地分层、不断地抽象、不断地重构。当我们终有一日把有用和成熟的代码封装成jar或是dll,不仅自己能重用,别人也能重用的时候,代码其实才算合格。

现在大家都习惯用开源产品了,外国人热衷的就是不断地制造这样的零件(组件)或技术。而我们中国人,热衷的却是组装人家的零件和技术(一如其它涉及技术的产业)。很多外国人十多岁就做出了了不起的组件,而我们中国人却把“不重复发明轮子”这种搬来的话挂在嘴在,结果是既不制造旧轮子,更没有能力发明新轮子。很多人从业十多年都写着乱糟糟代码。

项目,不是说东西扔到客户手上套足了钱,拍拍屁股就走人。成功的项目,要对客户负责任。就算自己退了,也该把工作交接好。前面的工作成果后面用不上,只能说前面的工作不合格。

国内应用软件界一直在走RAD的道路,一开始吃着爽,越到后面越不是滋味。不是说RAD不能用,而是说,一上来就RAD,注定被养成懒汉,早晚沦落成编码机器。RAD诱使我们逃避思考,诱使我们逃避设计,最终让我们被早早淘汰!

时间: 2024-09-19 08:54:40

发扬EJB、Spring思想将组件化进行到底的相关文章

发扬EJB,Spring思想将组件化进行到底

EJB.Spring,这不是Java界最有名的两大冤家,何以把它们扯在一起.其实Spring乃是EJB1.x.2.x的继承者,正如EJB之前的COM.CORBA.他们的思想一脉相承,那就是企业级的组件化思想,也可称之为理想! 一.非组件化的国内软件行业 各个行业的企业总有一些核心业务,长久保持不变,新时期的新业务基本上都是围绕核心业务展开.很长时间以来,IT技术的变化与企业业务的扩展存在着很大的矛盾.当企业的新业务开展之后,如何保证原有业务稳定运行的同时,新业务能够得到IT的支持与扩展?当IT技

AliOS Things 基于组件化思想的多bin特性

今年杭州云栖大会上,AliOS Things正式发布,其中有一个基于组件化思想的多bin特性,这是AliOS Things有专利保护的多bin fota升级解决方案核心.随着我们不断的版本迭代,这里很高兴和大家分享下多bin基于AliOS Things v1.1.2版本的具体实现.这里我主要以"两个W(what.why).一个H(how)"来展开. What -- AliOS Things多bin特性是什么 AliOS Things v1.1.2版本实现的多bin版本(实现的是三bin

谈笑风生组件化

在当今的前端开发领域,大红大紫的组件化开发如万人空巷,前端技术圈中关于组件化讨论的文章亦如汗牛充栋.然而别人的理解终归是别人的,作为一个胸存小志的开发者,我还是希望能够根据自己的理解和实际工作,总结自己对组件和组件化开发的认知. 在我第一次接触组件化概念时,一时迷迷糊糊,如坠云雾深处.组件是什么?组件化开发是什么?为什么大牛们知道这么多而我不知道?这应该并不是我个人的疑问,每一个除此接触概念的新手,都会有此疑惑.   为什么大牛们知道这么多而我不知道? 我曾经无数次为类似的问题而烦恼,也曾感到急

Android开发:由模块化到组件化(一)

在Android SDK一文中,我们谈到模块化和组件化,现在我们来聊聊组件化开发背后的哪些事.最早是在广告SDK中应用组件化,但是同样适用于普通应用开发. 以下高能,请做好心理准备,看不懂请发私信来交流.本文不推荐新手阅读,如果你刚接触Android开发不久,请立刻放弃阅读本文. 模块化和组件化 模块化 组件化不是个新概念,其在各行各业都一直备受重视.至于组件化什么时候在软件工程领域提出已经无从考究了,不过呢可以确认的是组件化最早应用于服务端开发,后来在该思想的指导下,前端开发和移动端开发也产生

XCoreRedux框架:Android UI组件化与Redux实践

XCoreRedux框架:Android UI组件化与Redux实践 @author: 莫川 https://github.com/nuptboyzhb/ XCoreRedux源码+Demo:https://github.com/nuptboyzhb/XCoreRedux 使用android studio打开该项目. 目录结构 demo 基于xcore框架写的一个小demo xcore XCoreRedux核心代码库 pics 文档的pic资源 前言 Android开发当中的Code Archi

一、Angular 2.0的变革之路-组件化 Web Components

Angular 2.0的变革之路 Angular 1.x从2009年到现在已经过了6个年头,虽然中间Angular1.x顺应前端思想加入了很多新的特性,例如在1.3版本加入的bindToController,在1.5版本加入的用于取代directive部分功能的component.然而从整体的设计思想来说,Web Components已经成为大势所趋,Angular的变革也就势在必行. Angular 2.0 放弃了对1.x版本的兼容,这也就意味着2.0版本没有了1.x版本的历史包袱.Googl

详解vue.js组件化开发实践_javascript技巧

前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然成为了第一个问题.鉴于目前web前端mvvm框架以及组件化开发方式的流行,决定技术栈采用:vue + es6 + 组件化. 这里首先简单说下web前端组件化开发方式的历程: 最早的组件化结构,代码结构可能如下: - lib/components/calendar |- calendar.css |-

一起谈.NET技术,使用Dijit实现界面组件化开发

对于组件化的软件工程设计,很多开发人员都比较熟悉.组件化的设计适合于复杂的软件系统和团队协作开发.把软件系统划分成若干个组件,组件之间通过预先定义好的接口和协议进行通讯和协作,共同完成整个软件系统的职责.团队中的开发人员可以各自负责不同的组件.组件化的思想在桌面应用和Web应用后台开发中比较流行,相关的技术和实践都比较成熟. 而在Web应用的前端部分,组件化一直进展得比较缓慢.这其中的原因有很多,最主要的是Web应用的前端在开始的时候比较简单,没有组件化和设计的必要.随着Ajax应用的流行,We

使用Dijit实现界面组件化开发

对于组件化的软件工程设计,很多开发人员都比较熟悉.组件化的设计适合于复杂的软件系统和团队协作开发.把软件系统划分成若干个组件,组件之间通过预先定义好的接口和协议进行通讯和协作,共同完成整个软件系统的职责.团队中的开发人员可以各自负责不同的组件.组件化的思想在桌面应用和Web应用后台开发中比较流行,相关的技术和实践都比较成熟. 而在Web应用的前端部分,组件化一直进展得比较缓慢.这其中的原因有很多,最主要的是Web应用的前端在开始的时候比较简单,没有组件化和设计的必要.随着Ajax应用的流行,We