(这是一年半前在jdon首发的老文,因观点比较激烈,仅作整理收录)
好大的标题,看似又一篇炒作滥文,其实是笔者近两年对软件架构痛苦思索徘徊后所得的经验体会,在此与诸位共勉。
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诱使我们逃避思考,诱使我们逃避设计,最终让我们被早早淘汰!
分享到:
相关推荐
这种方式可以将 ejb 的强健性与 Spring 的易用性结合在一起。 **CommonEjbProj项目概述** "CommonEjbProj"可能是这个ejb和Spring整合的示例项目的名称。该项目可能包含以下组件: - **Session Beans**:用于表示...
### Spring与EJB3.0的关键区别及其优劣分析 #### 一、Spring框架概述 **1.1 引言** Spring作为一个广受欢迎的开源框架,最初被设计用于减轻企业级应用开发中的复杂性问题。它的一个显著特点在于模块化的分层架构...
【EJB3.0与Spring比较】 EJB3.0和Spring是两种广泛使用的Java企业级应用程序开发框架,它们在很多方面有所不同,这些差异主要体现在以下几个关键点: 1. **厂商无关性(Vendor Independence)** - EJB3.0遵循开放...
### EJB与Spring详细对比分析 #### 一、引言 在现代企业级应用开发领域,EJB(Enterprise JavaBeans)与Spring框架均扮演着重要角色。随着技术的发展与需求的变化,两者之间的对比成为了业界广泛关注的话题。本文...
Spring 集成 EJB(Enterprise JavaBeans)是将轻量级的 Spring 框架与企业级的 EJB 3.x 技术相结合的一种方式,以实现更灵活且高效的企业应用开发。Spring 提供了一个丰富的IoC(Inversion of Control,控制反转)和...
【Java Jsp EJB Spring 学习】 Java Jsp EJB Spring 是企业级软件开发中的核心技术,它们在构建高效、可扩展的Web应用程序方面发挥着关键作用。让我们逐一深入探讨这些技术及其相互间的关联。 首先,JavaServer ...
Spring 框架以其轻量级、模块化和灵活的设计而闻名,而 EJB3(Enterprise JavaBeans 3)则是 Java EE(现在称为Jakarta EE)平台的一部分,提供了服务器端组件模型。这两个框架在不同场景下各有优势,开发者可以根据...
**J2EE技术详解与Spring、EJB框架集成** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,主要用于构建分布式、多层的企业级应用系统。它提供了丰富的API和服务,如Servlet、JSP、EJB、JMS等,...
在IT行业中,Hibernate、Spring、EJB(Enterprise JavaBeans)和Ajax是四个非常重要的技术,它们各自在软件开发的不同方面发挥着关键作用。下面将分别详细介绍这些技术,并探讨它们之间的协同工作方式。 **...
在"spring+struts+ejb整合"的项目中,这三个框架协同工作,以实现更高效、更模块化的应用程序开发。以下是对这个整合的具体解释: 1. **Spring**:作为核心容器,Spring负责管理应用程序的组件,包括Bean的创建、...
标签“EJ”可能代表了EJB(Enterprise JavaBeans)的缩写,强调了文档将围绕EJB技术进行讨论。EJB是一种由Java平台企业版(Java EE)定义的标准组件架构,支持客户端通过网络访问服务器端的业务逻辑。 在给定的...
在本文中,我们将探讨如何将三个流行的Java EE框架——Struts2、EJB3和Spring——集成在一起,形成一个强大的企业级应用。这个整合过程对于初学者来说可能会有些复杂,但通过逐步指导,我们将简化这一过程。我们使用...
EJB(Enterprise Java Beans)是J2EE架构中的核心组件之一,它定义了企业级应用程序的开发标准和框架,旨在提供可扩展、分布式、事务处理、持久化、安全等高级特性。EJB通过一套标准化的API集合,实现了在服务器端的...
- 事务管理方面,Spring提供了声明式事务管理,可以在EJB3的Bean或Spring的Service层进行配置,确保银行交易的原子性和一致性。 - 安全性是银行系统的关键,Spring Security可以用来实现用户认证和授权,保护敏感的...
EJB,全称为Enterprise JavaBeans,是Java EE(Enterprise Edition)平台中用于构建分布式企业级应用的核心组件。EJB提供了一种标准的方式来实现业务逻辑,让开发者可以专注于编写业务代码,而无需关心底层的分布式...
4. EJB3的实体Bean是如何通过JPA(Java Persistence API)或Hibernate进行数据持久化的。 5. Spring如何管理Struts2和EJB3组件的生命周期,以及如何实现AOP功能。 6. 如何在Web应用中整合这三个框架,使它们协同工作...
### Spring的核心思想 #### 一、Spring框架简介与核心概念 Spring框架是一个开源的轻量级Java开发框架,主要用于简化企业级应用的开发工作。它提供了全面的基础架构支持,包括但不限于依赖注入(Dependency ...
将两者结合,可以利用Spring的灵活性和EJB 3的事务管理、安全性等特性。 **Spring与EJB 3的集成优势** 1. **松耦合**:Spring通过依赖注入(DI)提供松耦合,EJB 3通过注解驱动的编程也实现了这一目标。两者结合,...