`
Nighthaven
  • 浏览: 106015 次
  • 性别: Icon_minigender_1
  • 来自: GreatArcan
文章分类
社区版块
存档分类
最新评论

为什么一些JAVA EE / J2EE 工程是效率低下或者至少是效率欠佳的(翻译)

阅读更多
英文原帖地址:http://www.adam-bien.com/roller/abien/entry/why_some_of_the_java

1. 架构师对于PowerPoint的熟练程度要远远胜过流行的Java IDE。
2. 光是部署基本环境(比如应用程序服务器和数据库)就需要若干张DVD和几个小时。
3. 一些流行的服务器需要几分钟去启动和部署,而你每天要重复这一过程若干次。
4. 为应用服务器的bug立案(并且重现问题的所在)往往比你自己修复它需要的时间更长(当然,如果你有源代码的话)
5. 很难为开发者们找到一个可以高效运行那些“企业级”开发工具的硬件,而且因为这些开发工具十分昂贵,想要弃他们不用也很困难
6. 架构师热爱分层,光是从持久层传递一个持久实体到表现层,就需要若干次mapping。
7. 一切都是可配置、可替换、可建模的。XML的负担十分巨大。问题是:上一次你真正的需要在工程中替换某些东西是什么时候?
8. 无论是瀑布式还是敏捷式都充满各种专业术语和奇怪的规范。两者都可以非常的低效。看上去只做最基本的有时真的很难。
9. 开发者有的时候非常极端:不是用成千上万的模式和最佳实践把所有东西都过度设计,就是直接了当的使用“意大利面条”式的开发风格。
10. “快感已经不再”很多开发者、构架师和经理们已经失去了他们的狂热和激情。这也是为什么许多工程如此低效的原因之一。
11. 即使像留言板这样的程序,也要考虑高可用性(译者:就是不掉线~)、集群。复杂性统治一切。
12. 奇怪的质量保证规则(比如文档化很明显的getters/setters方法)加大开发和维护成本。

这个文章的评论里面有人总结出来第13条:
构架师和开发者热爱框架。即使对于最简单的增删查改类的程序,也要用到internet://**/*.jar,而不是Java SE或者应用程序服务器提供的API。


译者:我不是推卸责任,虽然都在点子上,但是原文作者的文笔确实一般,我基本忠于原文,所以文笔也就只能这样了。

最后奉上我自己写的仿《大腕》经典对白:

一定要找那最流行的框架,
用功能最强大编辑器,
做就要做最复杂的系统,
轻量级的绝对不行,
框架最简单也得是SPRING,
什么EJB啊,HIBERNATE啊,SEAM啊,能用的全都得用上,
表现层要可配置、持久层要可替换,
程序最好能用一万年,
客户一见面,甭管有事没事,
都得问人家:您准备换框架不?
系统还得能够集群
访问量再小也得同时开10几台服务器
一天24小时在线
火星撞地球了都能提供服务
服务器上跑得都是weblogic、websphere
你要用一jboss,都不好意思跟人家打招呼
你说这系统,得做多长时间?
(怎么地也得5年吧?)
5年?那是一期工程,
10年起,
你得揣摩老板的心理,
愿意花5年开发一套系统的老板,
根本就不在乎再多等5年,
什么是软件工程你知道么?
软件工程就是,搞什么都不用最好的,用最复杂的
所以我们口号就是:
不求最好,但求最复杂。
分享到:
评论
68 楼 cprogrammer 2009-02-02  
说是那么说,可是我在设计一些东西时也经常犯过度设计的毛病,这个东西欠缺的是指导,对于特定需求的最佳解决方案的指导,因为我们没有一个定性什么样的需求做什么样的设计就必然会出现过度设计。经常看到路边的一个公厕修的比住宅楼都豪华,大概没有人可以避免这样的情况,因为我们始终没有一个标准。
67 楼 andyyehoo 2009-01-21  
是的,没有开源的Spring和Hibernate,IBM和WebLogic不知道还会用EJB和应用服务器会忽悠多少客户呢,他们心里一定恨得痒痒的
66 楼 昏暗学子 2008-09-12  
楼主太猛 我是来打酱油的
65 楼 jonyzhu 2008-08-07  
被商务的因素影响着,技术越来越偏离应用本来的需要。所以,不得不自己寻找出路。开源的项目作者们,大概也是因为忍受不料,才自己动手的吧:)
64 楼 pipilu 2008-08-06  
shanghui_12 写道
sg552 写道
LZ太强悍了。赞

最近几天在公司给上海大众的一个项目做支持,这个项目很大一部分是IBM给做的。
什么分布式啊,SOAP啊,WEB SERVICE啊,能用的复杂技术都用上了。

服务器硬件不必说了,软件就有WebSphere一些东东。

结果从开发到现在,4个月上线的东西,拖到现在快8个月了。BUG巨多,动不动就死机出毛病。做跑了一个项目经理。现在后进来的程序员都不知道前面的需求如何了。

反观我们公司做的东西, 技术和用法都很简单,客户反应很好!还准备做三期呢。

想起了 yulimin 的那句: 简单就是美!

同感,公司一个系统让IBM给做的,该用的恨不得都用上,自己想扩展,改流程,都很麻烦,还得不少钱,几百万就做了个跑不起来的东西。自己开发的反而很好,有问题修改也方便


汗,,IBM咋这样捏,在我心目中的形象大打折扣啊。。。
63 楼 shanghui_12 2008-08-05  
sg552 写道
LZ太强悍了。赞

最近几天在公司给上海大众的一个项目做支持,这个项目很大一部分是IBM给做的。
什么分布式啊,SOAP啊,WEB SERVICE啊,能用的复杂技术都用上了。

服务器硬件不必说了,软件就有WebSphere一些东东。

结果从开发到现在,4个月上线的东西,拖到现在快8个月了。BUG巨多,动不动就死机出毛病。做跑了一个项目经理。现在后进来的程序员都不知道前面的需求如何了。

反观我们公司做的东西, 技术和用法都很简单,客户反应很好!还准备做三期呢。

想起了 yulimin 的那句: 简单就是美!

同感,公司一个系统让IBM给做的,该用的恨不得都用上,自己想扩展,改流程,都很麻烦,还得不少钱,几百万就做了个跑不起来的东西。自己开发的反而很好,有问题修改也方便
62 楼 andyyehoo 2008-08-04  
Nighthaven 写道

最后奉上我自己写的仿《大腕》经典对白:

一定要找那最流行的框架,
用功能最强大编辑器,
做就要做最复杂的系统,
轻量级的绝对不行,
框架最简单也得是SPRING,
什么EJB啊,HIBERNATE啊,SEAM啊,能用的全都得用上,
表现层要可配置、持久层要可替换,
程序最好能用一万年,
客户一见面,甭管有事没事,
都得问人家:您准备换框架不?
系统还得能够集群
访问量再小也得同时开10几台服务器
一天24小时在线
火星撞地球了都能提供服务
服务器上跑得都是weblogic、websphere
你要用一jboss,都不好意思跟人家打招呼
你说这系统,得做多长时间?
(怎么地也得5年吧?)
5年?那是一期工程,
10年起,
你得揣摩老板的心理,
愿意花5年开发一套系统的老板,
根本就不在乎再多等5年,
什么是软件工程你知道么?
软件工程就是,搞什么都不用最好的,用最复杂的
所以我们口号就是:
不求最好,但求最复杂。


这段对白的修改,实在太经典了
61 楼 alanwu 2008-08-03  
有道理啊

很多项目在做决策的时候不是考虑实现成本,而是考虑技术先进性和一些不知道什么时候会被用到的特性。

Nighthaven 写道
英文原帖地址:http://www.adam-bien.com/roller/abien/entry/why_some_of_the_java

1. 架构师对于PowerPoint的熟练程度要远远胜过流行的Java IDE。
2. 光是部署基本环境(比如应用程序服务器和数据库)就需要若干张DVD和几个小时。
3. 一些流行的服务器需要几分钟去启动和部署,而你每天要重复这一过程若干次。
4. 为应用服务器的bug立案(并且重现问题的所在)往往比你自己修复它需要的时间更长(当然,如果你有源代码的话)
5. 很难为开发者们找到一个可以高效运行那些“企业级”开发工具的硬件,而且因为这些开发工具十分昂贵,想要弃他们不用也很困难
6. 架构师热爱分层,光是从持久层传递一个持久实体到表现层,就需要若干次mapping。
7. 一切都是可配置、可替换、可建模的。XML的负担十分巨大。问题是:上一次你真正的需要在工程中替换某些东西是什么时候?
8. 无论是瀑布式还是敏捷式都充满各种专业术语和奇怪的规范。两者都可以非常的低效。看上去只做最基本的有时真的很难。
9. 开发者有的时候非常极端:不是用成千上万的模式和最佳实践把所有东西都过度设计,就是直接了当的使用“意大利面条”式的开发风格。
10. “快感已经不再”很多开发者、构架师和经理们已经失去了他们的狂热和激情。这也是为什么许多工程如此低效的原因之一。
11. 即使像留言板这样的程序,也要考虑高可用性(译者:就是不掉线~)、集群。复杂性统治一切。
12. 奇怪的质量保证规则(比如文档化很明显的getters/setters方法)加大开发和维护成本。

这个文章的评论里面有人总结出来第13条:
构架师和开发者热爱框架。即使对于最简单的增删查改类的程序,也要用到internet://**/*.jar,而不是Java SE或者应用程序服务器提供的API。


译者:我不是推卸责任,虽然都在点子上,但是原文作者的文笔确实一般,我基本忠于原文,所以文笔也就只能这样了。

最后奉上我自己写的仿《大腕》经典对白:

一定要找那最流行的框架,
用功能最强大编辑器,
做就要做最复杂的系统,
轻量级的绝对不行,
框架最简单也得是SPRING,
什么EJB啊,HIBERNATE啊,SEAM啊,能用的全都得用上,
表现层要可配置、持久层要可替换,
程序最好能用一万年,
客户一见面,甭管有事没事,
都得问人家:您准备换框架不?
系统还得能够集群
访问量再小也得同时开10几台服务器
一天24小时在线
火星撞地球了都能提供服务
服务器上跑得都是weblogic、websphere
你要用一jboss,都不好意思跟人家打招呼
你说这系统,得做多长时间?
(怎么地也得5年吧?)
5年?那是一期工程,
10年起,
你得揣摩老板的心理,
愿意花5年开发一套系统的老板,
根本就不在乎再多等5年,
什么是软件工程你知道么?
软件工程就是,搞什么都不用最好的,用最复杂的
所以我们口号就是:
不求最好,但求最复杂。

60 楼 sword721 2008-07-23  
lz太有才了.<大腕>改的太贴切了.
59 楼 sunwine 2008-07-08  
其实到不是某个技术复杂,而是有一堆技术要用。现在看到很多程序,.XML文件比.java的还多,美其名曰:灵活配置;引用.jar文件一堆,自己程序代码百行,说起来精简扼要,可又有几人知道这些东东干嘛呢。
开源和社区是Java的精髓,可也是灾难,兄弟们要不断研究新的东西,不断比较选择最好的框架,哪天同事说一新名词要是不懂,得半个月睡不着,妈呀,落伍啦。
58 楼 jackyxiap 2008-07-03  
的确倒出了程序员的苦水,很多东西占用了大部分时间,但对最后的结果并没多大贡献。
57 楼 abo 2008-05-14  
楼主真是道出了IT民工们的心声。也许随着技术竞争的激烈,有些方面也会简化起来的。
56 楼 chenzengpeng 2008-05-12  
我爱楼主 哈哈 强悍啊
55 楼 fight_bird 2008-05-04  
jerry_shen 写道
现在做一家美国物流公司的项目,ejb,jms,cics,mq,appclient一堆,200个项目相互牵制,头都大了,启动一下要15分钟,还好我们只做移植,要是开发的话,他那套很强的IT部制定的私有框架也够折腾的。

IBM的客户顾问看到你们公司的CIO要乐坏了:我的SOA万能胶有用武之地了。
54 楼 bohemia 2008-05-04  
复杂-->简化-->再复杂--->再简化..

就是这样发展的...好像否极泰来一样.事物总在演变;

:) 想到<周易>.^_^.
53 楼 jerry_shen 2008-05-01  
这就是所谓的企业级开发。
52 楼 jerry_shen 2008-05-01  
现在做一家美国物流公司的项目,ejb,jms,cics,mq,appclient一堆,200个项目相互牵制,头都大了,启动一下要15分钟,还好我们只做移植,要是开发的话,他那套很强的IT部制定的私有框架也够折腾的。
51 楼 newold 2008-05-01  
我觉得EJB挺好用的呀,也很简单呀
50 楼 gurudk 2008-04-30  
深有体会, 简单的技术,起点低,上手快,能够快速掌握并使用,这在外包企业很常见。
复杂技术,学习曲线高,维护起来也不容易,而且对开发人员要求很高,如果掌握复杂
技术的人离开了,对项目组就是一个灾难;反过来,如果技术简单,开发人员走了,其它
人迅速就可以接上。我们公司目前还是使用struts1.2+spring+hibernate,同事自己写
了一个粘合框架,使用起来非常简单。简单也是struts 1.x使用者众多的原因之一。
写熟练了根本不在乎多不多写一个ActionForm类。毕竟重要的是实现业务逻辑。
49 楼 fight_bird 2008-04-28  
预算多的项目:简单问题复杂化;
预算少的项目:复杂问题简单化。

反之,出力不讨好!纯技术主义永远不是商用之道!

相关推荐

    Java/J2EE Job Interview Companion

    ### Java/J2EE核心概念与关键领域 #### 核心概念 **1. Java 基础** - **基础知识**:了解Java的历史、特点和发展趋势。 - **语法**:掌握基本的数据类型、变量、控制结构(如if语句、循环等)。 - **面向对象...

    Java/J2EE interview questions

    Java/J2EE interview questions这本书是为准备面试的Java开发者准备的,涵盖了核心概念、设计和编码问题,以及如何应对面试中可能遇到的问题。 核心概念包括Java语言基础,比如Java语言的基本原则、语法、核心库的...

    java ee j2ee 帮助文档 java ee j2ee 帮助文档 java ee j2ee 帮助文档

    开发企业级Java应用程序离不开Java EE/J2EE的帮助文档。这个框架为开发者提供了丰富的技术规范和API,使得构建稳定、可扩展的大型应用成为可能。为了让开发者更好地理解和掌握Java EE的使用,本文将详细介绍其核心...

    如何才算掌握Java(J2EE篇)

    在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用开发领域,J2EE(Java Platform, Enterprise Edition)更是占据了重要地位。很多人认为自己掌握了Java,但往往在实际项目中遇到困难,这通常是因为他们...

    java_ee6_tutorial/j2ee教程

    Java EE 6(Java Platform, Enterprise Edition 6)是Java平台的一个版本,专注于为企业级应用程序开发提供服务。这个教程,"java_ee6_tutorial",可能是Sun Microsystems(现已被Oracle收购)官方提供的一个详细...

    java/j2ee学习资料大全第二部分(共5部分)

    Java/J2EE学习资料大全是IT开发者们提升技能的重要资源,尤其对于想要深入理解Java企业级应用开发的人员来说,这些资料无疑是宝贵的财富。第二部分的学习资料可能涵盖多个主题,包括核心Java、J2EE框架、数据库交互...

    Java_EE_PPT.rar_J2EE_JAVA EE_j2ee ppt_ppt of j2ee

    J2EE后来更名为Java EE,全称为Java Platform, Enterprise Edition,旨在简化企业软件开发,提供一组标准API和服务,支持Web应用程序、电子商务系统、企业级应用服务器等的开发。 在这些PPT资料中,你可能会学习到...

    Java/J2ee笔试总结(java算法)

    ### Java/J2ee笔试知识点详解 #### 一、求两个数的最大公约数——辗转相除法 辗转相除法,也称欧几里得算法,是一种高效计算两个正整数最大公约数的方法。其实现原理基于这样一个事实:两数a和b(假设a&gt;b)的最大...

    Java EE(J2EE)快速开发框架jeexjj,

    J2EE在2006年后更名为Java EE,以反映其在技术上的不断演进。Java EE平台包括一系列的组件和服务,如Servlet、JSP、EJB、JMS、JPA、JSF等,这些组件共同为企业级应用提供了强大的支持。 Jeexjj是一个基于Java EE的...

    java企业级开发编程学习资料 Java EE教程 J2ee教程 Struts2 共200页.pptx

    ### Java企业级开发编程学习资料Java EE教程J2ee教程Struts2概览 #### Java EE与J2EE概述 Java EE(Java Platform, Enterprise Edition)是为开发可移植、健壮、可伸缩且安全的服务器端应用程序而设计的一个平台。...

    达内PPT/ j2ee&ejb课件

    Java EE(以前称为J2EE)是企业级Java应用程序开发的平台,它提供了一系列的框架和服务,用于构建分布式、多层的Web应用。EJB(Enterprise JavaBeans)是Java EE平台的核心组成部分,主要用于构建可复用的服务器端...

    什么是J2EE、Java SE、Java EE、Java ME

    例如,**Java EE** 在2018年被重新命名为**Jakarta EE**,继续发展以适应现代企业应用的需求。同时,**Java SE** 也经历了多次版本更新,提供了更多的特性和改进,如模块化系统(Project Jigsaw)等。 ### 总结 ...

    什么是Java EE 5

    为了澄清这一点,并强调Java EE作为Java家族的一员,Sun Microsystems决定将J2EE 1.5更名为Java EE 5。 #### 架构与功能更新 Java EE 5的架构图展示了其相对于前代的新增功能,最显著的变化之一是引入了JSF(Java...

    JAVA第一章:Java SE、J2EE(Java EE)、Java ME

    JAVA第一章:Java SE、J2EE(Java EE)、Java ME

    sun j2ee java ee源码

    Sun Microsystems是Java的最初开发者,因此“sun j2ee java ee源码”指的是Sun公司开发的Java EE平台的源代码。 Java EE的核心在于其服务导向架构(Service-Oriented Architecture, SOA),它定义了一系列标准和...

    java JDK J2EE API

    Java JDK(Java Development Kit)是Java编程语言的核心组件,它包含了一个Java运行环境、编译器(javac)、Java类库以及各种工具,用于开发、调试和运行Java应用程序。JDK是Java程序员的基础,它是Oracle公司提供的...

    J2EE外文翻译(J2EE和企业解决方案及其应用框架)

    **J2EE(Java 2 Platform, Enterprise Edition)**是Java平台上用于构建企业级应用程序的框架,它由Sun Microsystems(现已被Oracle收购)在2000年代初推出。J2EE提供了一个全面的开发环境,支持分布式计算、多层...

    j2ee api java ee pai

    Java EE(Java Platform, Enterprise Edition)是Oracle公司提供的一个用于构建企业级Web应用程序的框架,它为开发人员提供了丰富的API和服务。"j2ee api"是这个平台的核心组成部分,包含了各种接口、类和注解,使得...

Global site tag (gtag.js) - Google Analytics