`
JeffreyJia
  • 浏览: 20106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我为什么放弃Jboss和Jboss社区

阅读更多

    1.我和jboss的结缘

   直到现在还清晰的记得当初在学校和同学一起在jboss 4.0.x 上使用ejb 3.0 将一条数据存进mysql数据库里的那种喜悦之情。

    我当初是在一个3、4线小城市上的大学,不像北上广这样的城市有个好的IT环境,在那里老师教的都是很多年没有变过的课程,和当时流行的技术根本不搭边,我记得我学过Pascal语言,呵呵,不知道现在谁还学过。那时候自己的一个梦想是等毕业了去做程序员,然后自学java,花了很多钱去买《java核心技术》 卷一和卷二,并且都看完了,现在回想那时候只是看完了其实都不怎么理解。  

     学完java语言就应该学习基于java语言的一些框架,那个时候身边没有人也没有已经上班的朋友做指导,没有人指导我应该先学习什么框架在学习什么框架,我没有办法就只能从简单的开始,从图书馆借jsp的书,这是我进入恶性循环的开始,每看一本书,它的前言就介绍自己的技术有多好,还介绍了其他的技术,比如,在jsp的书里都会介绍的tomcat , jsf,struts,resion 等,我学完了一本又按着它提到去学习其他的技术,就这样无休止的学习了,tomcat jsf struts resion, jsp,ejb,jboss,等等等等,那个时候都还比较迷信java ee 服务器,说jboss weblogic webspare 有多好等,EJB  有多好多好等,那我就信了,我开始了学习jboss和ejb的旅程。

 

    我学习还是比较刻苦的,现在还记得我经常抱着书在宿舍看到大半夜。 皱眉

     无论如何,就是在那是我我喜欢上了jboss和ejb 认为 jboss和ejb是很厉害的技术,哈哈。到后来毕业了,就一直在自己学习jboss和ejb,在后来的换工作找到了一个做jboss相关的工作。在这期间做了很多和jboss相关的是,包括学习和使用seam,jsf,jboss咨询,jboss培训(培训别人哦),jboss性能调优等。  也为大家众所周知的网站的生产系统安装了一百套jboss。

    也在jboss社区的其他项目上投入很多的时间和精力,如HornetQ,infinispan,mod_cluster,jboss seam。

 

    我还做了好几个关于jboss和seam的视频,我现在建议大家 不 要看了,我在后面阐述原因

     (1) jboss 相关:http://v.youku.com/v_show/id_XMjE3NDI3MzY4.html?f=5256556

     (2) seam 相关:http://v.youku.com/v_show/id_XMzIzMjQ5NTE2.html?f=16640771

 

2. 我的反思

    (1) 我对jboss的反思:

jboss在那个年代确实很火,很多大行的项目中都在使用jboss,我在过的两家支付公司就使用过jboss,在后来的一家支付公司我在推进去jboss化的工作。

    从我了解到的情况,现在仍然在使用使用jboss的大概有这么几种情况

    a. 老系统就跑在jboss上,遗留项目,没人想动,没人敢动。

    b. 为了降低成本从weblogic或websphare迁移到jboss上

    c. 依然顽固不化不思进取的技术决策者(我已经不在顽固 酷)

    d. 被销售人员忽悠的傻大憨粗的政府部门和国有企业

 

    (2)jboss真的那么不堪吗? NO !

   当然不是,从jboss 5 -->jboss6-->jboss7--->wildfly(相当于jboss 7,8),一步一步都在进步,尤其是在jboss7 ,完全重写了jboss的所有,我还记得当初 jboss7 alpha1 出来后,我完全看完了jboss 7源代码,jboss7各个模块的加载过程和加载机制,很壮观!

     我的观点是:Jboss包括现在的wildfly在技术上是先进的,甚至要好于weblogic和websphare,但是,在理念上已经过时或者错误。

    包括jboss(wildfly),weblogic,websphare在内所有的javaEE服务器,将所有的功能都集成进入服务器(jsf ,jpa,ejb,jta,jms,jndi,jms,cache),但现实中在用的javaee服务器的功能有几个内,很多的项目都是只用到了一个servlet容器,但是还是将应用部署到了Jboss服务器里去了,我觉得一点没有必要。

     我唱衰的不仅是jboss也包括weblogic,websphare 这样的java EE全栈服务器,如果一个简单的应用只需需要一个servlet容器,但是仍然部署到jboss中的,有如下几个问题:

     a.jboss启动需要占用更大的内存(jboss7以后按模块加载会好些),如果买云服务那内存可不便宜

     b.jboss会在同时启动很多的端口(有端口洁癖的人心里很不爽)

     c.配置复杂,在配置上花的时间和精力有可能比在代码业务逻辑上花的时间还多。

     d.jboss性能不及tomcat,jboss性能好过tomcat那是销售的外交辞令,只要会调优tomcat 性能会好过jboss的。

     e.jboss 提供的负载均衡器mod_cluster虽然智能但是性能不会好过nginx。jboss+mod_cluster 我认为不如果 tomcat+nginx

     (3) 我对jboss社区的反感:

       jboss社区人文环境其实不错,但有一点我不喜欢,那就是"自恋"

       jboss社区什么都想使用社区以有的项目,社区的其他项目都喜欢依赖jboss社区的其他项目,我知道他们想打造生态系统,但是没有本着简约的理念来做。

比如:HornetQ默认使用jboss-logging 包,输出日志,infinispan也是这样,ovirt.org 项目使用jboss作为服务器,太依赖fedora,你能用tomcat为什么非要用jboss,是为了用而用,ovirt 项目中使用jboss 使用ejb3.1 ,导致很多不喜欢ejb的社区开发人员不贡献,只能靠红帽提供支持的开发人员推进项目。

       jboss更名:将jboss更名为wildfly 官方的说法是问了人们更好的区分jboss社区版和企业版,现在jboss名称默认是指jboss EAP , 开源版才叫 wildfly ,我觉得这个馊主意一定是红帽销售人员出的,为了能让jboss企业版买的更好而将jboss社区版更名为wildfly,这是愚蠢的做法,现在越来越少的人知道wildfly,我认为开发人员对这点是反感的至少我是。

     (4) 我对seam的反思:

      a.jboss seam确实使用起来很方便,不用xml配置,有长对话,但是你使用seam的同时也一般会使用jsf, seam + JSF 在性能上不如springMVC 这个很确定,如果在 seam中使用restful ,你还要使用到 resteasy,那个配合起来和使用起来原没有 springMVC 爽。

     b. seam 早已停止维护,转而到apache 社区的DeltaSpike 项目,DeltaSpike项目进展缓慢,社区冷清,真正里能搞在生产项目上使用不知道到什么时候呢,DeltaSpike生态系统现在还没有建好。远不如spring 社区。

     c. 在项目中采用seam或DeltaSpike的需要面对一个现实,那就是在市场上招聘一个seam程序员很难的。

spring 程序员一抓一大把。这无形中给公司增加成本。

     d. seam 中所有的组件都是用注解,后来想想也不完全是好事,不如spring xml 配置,虽然配置麻烦些但是新人和初级开发人员很清晰的理清软件架构,如果是seam 各个标签什么意思,而且标签之间组合使用什么意思都得清楚才能动手开发,seam中太多隐藏知识点了。

    e. 我在以前发的博客里还说过,我的一个项目(连接我就不说了,以免有推广嫌疑)使用的seam开发的,在两个月一个人将这个项目全部用springMVC重写了,我强调了“我一个人” 是因为我身边的人就我一个人会seam,以后要找人一起开发这个项目还的让人家学习seam,况且这样的人也不好找,干脆我就重写了这个项目。

     (5) jboss社区还是有些好的项目的:

         netty 是个不错网络通讯的框架,如果你做手机socket通讯,建议你看看这个。

         jgroups 是个主要UDP通信的框架,如果你做局域网里的数据通讯建议你看看这个。

 

  3. 写在最后

      (1) 优秀的互联网公司一直都在使用轻量级的框架和服务器,这个趋势一个没有变过

      (2) 上班以来一直都是从技术社区上搜索知识,不怎么回馈给社区,这篇文章也算是对技术的一些感悟分享给大家(当然观点不一定正确)

      (3) 在自己从事开发7个年头,在这个自己一年内过的第二个农历生日的今天,在一个自己决心放下jboss的时候,写这篇文章也算是一个告别仪式吧!!!

 

17
6
分享到:
评论
15 楼 yizhyi 2014-11-22  
重写的时候前台框架是什么?
14 楼 hity 2014-11-21  
如果非要化简为繁就看你这么做的意义了。

truesmile 写道
hity 写道
同楼主一样,从weblogic--->websphare--->tomcat---->jetty这么一步步走过来,以前大尔全的一站式解决方案正在逐渐没落;java在web开发方面也在日渐势微;nginx反向代理配合简单的容器甚至不用容器已经能够很好的应付大多数互联网应用。EJB和大容器的诞生是为了解决分布式事务问题,但是我个人认为,这应该是数据库(包括云端数据库)以及数据库中间件要解决的问题,方向错了只会越走越远。

分布式事务不仅仅是数据库的分布式事务,比如消息也可以做成分布式事务的一部分,这个就和数据库没什么关系了。

13 楼 truesmile 2014-11-21  
hity 写道
同楼主一样,从weblogic--->websphare--->tomcat---->jetty这么一步步走过来,以前大尔全的一站式解决方案正在逐渐没落;java在web开发方面也在日渐势微;nginx反向代理配合简单的容器甚至不用容器已经能够很好的应付大多数互联网应用。EJB和大容器的诞生是为了解决分布式事务问题,但是我个人认为,这应该是数据库(包括云端数据库)以及数据库中间件要解决的问题,方向错了只会越走越远。

分布式事务不仅仅是数据库的分布式事务,比如消息也可以做成分布式事务的一部分,这个就和数据库没什么关系了。
12 楼 kualer 2014-11-21  
还在纠结着技术那个技术,是刚刚出道的人遇到的问题
11 楼 Vampiredx 2014-11-21  
软件,框架,组件,都是越轻量越好。越做越臃肿复杂的,必然遭抛弃。
10 楼 dongcb678 2014-11-21  
哎 ... 这玩意儿真不是主流
9 楼 handong890 2014-11-21  
websphere liberty 已经把很多J2EE 功能插件化了 只选择用户需要的。不过我个人最近很看好nodejs
8 楼 dieslrae 2014-11-21  
上次尝试用jgroups做缓存同步,结果照着度娘给的做法做无法广播到同一网段不同ip的应用,不知道LZ有相关的资料没?
7 楼 Tyrion 2014-11-20  
现在还有多少要用EJB的项目。。
6 楼 wangcgen 2014-11-20  
10年时候用过Jboss,也是由于使用了EJB的缘故,很不喜欢它那一套,不上不下。
5 楼 fally 2014-11-20  
jboss更名确实是一个比较愚蠢的决定。
4 楼 empireghost 2014-11-20  
说的有道理
就像 写个小例子  觉得hibernate  比mybatis好用
但是一般大公司互联网公司都使用mybatis  没有使用hibernate的
3 楼 hity 2014-11-20  
同楼主一样,从weblogic--->websphare--->tomcat---->jetty这么一步步走过来,以前大尔全的一站式解决方案正在逐渐没落;java在web开发方面也在日渐势微;nginx反向代理配合简单的容器甚至不用容器已经能够很好的应付大多数互联网应用。EJB和大容器的诞生是为了解决分布式事务问题,但是我个人认为,这应该是数据库(包括云端数据库)以及数据库中间件要解决的问题,方向错了只会越走越远。
2 楼 xouou_53320 2014-11-20  
有一丝蛋蛋的忧伤夹带着一种一往无前的正能量划破天际 正如流星赶月搬扑面而来 让我情不自禁地顶起
1 楼 tangduDream 2014-11-20  
向哥们致敬

相关推荐

    jboss 7.1.1 Final 的jsp热部署解决方案

    公司的网站系统使用的中间是jboss7.1.1 Final,由于有些数据和服务测试环境不具备,免不了要在测试环境调试些jsp页面,发现从jboss社区里下载的jboss应用有个问题,新增jsp页面会实时部署,修改过的jsp页面就无法正常...

    jboss-4.2.3

    在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。

    java8看不到源码-jboss-parent-pom:JBoss父POM

    社区项目的父级 Maven POM。 它是什么? JBoss 父 POM 为 Maven 构建提供默认配置。 最常用的 Maven 插件的推荐/默认版本 jar 和程序集插件的清单配置 用于生成源 jar 和强制执行最低版本的 Java 和 Maven 的配置...

    intellij-idea-plugin:JBoss Forge IntelliJ IDEA插件

    JBoss Forge IntelliJ IDEA插件发表在 提供对IntelliJ IDEA中的命令和向导的支持。 要显示命令列表,请按Ctrl+Alt+4 。 在MacOSX上,使用Command + Option + 4 。安装使用IDE内置插件系统: 首选项>插件>市场>搜索...

    JBoss Tools 3 Developer Guide 全书 PDF

    JBOSS Tools是JBOSS社区提供的一套用于J2EE开发的Eclipse插件,现在的版本是3.1,本书出版于2009年,详述如何使用JBOSS Tools 3插件在Eclipse下开发J2EE project, 涵盖JSF, Struts, Seam, Hibernate, JBPM, ESB, web...

    Jboss技术文档

    在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。

    JBoss Community-开源

    社区驱动的项目,具有针对尖端应用程序的最新创新。 我们的旗舰项目JBoss AS是领先的开源,符合标准的,基于Java EE的应用服务器,以100%纯Java实现。

    Apress - Beginning JSF 2APIs and JBoss Seam

    JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。...从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。

    一个jms activemq Topic 消息实例

    JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以使用它) jbossmq 等 在jboss 5 之前好像一直在用jbossmq ,而从6 开始使用HornetQ ,hornetq 也可以脱离jboss 单独使用 hornetq 的配置在jboss-6.0.0.20100429...

    jbosstools-fuse:JBoss Camel开发人员工具

    社区Red Hat Fuse Tooling是开源的,我们希望鼓励每个人都尝试一下并参与该项目的未来开发。 有关更多信息,请参见下面的“贡献”部分。问题如果您要报告错误或请求新功能,请在我们的举票。 如果您想开始为该项目做...

    datasource_application_xml_test:测试应用程序以帮助JBoss社区的人员重现错误

    创建此存储库是为了帮助复制

    WildFly配置指南及管理员手册.pdf

    WildFly 为JBossAS 更名后的社区版本名称,开发目标为兼容JavaEE7 的开源应用服务器产品,未来会成为 Redhat JBoss EAP 7(即红帽商业应用服务器)的基础版本,WildFly 最主要的特性之一就是新的高性能的称之为 ...

    HornetQ 2.1 中文文档

    HornetQ是JBoss社区所研发的开放源代码消息中间件;HornetQ是以Java 5 编写,因此只需要操作系统支持Java虚拟机,HornetQ便可运行。 支持Java消息服务 (JMS) 1.1 版本 集群 (Clustering) 支持庞大的消息(Message)...

    开源软件之道(中文高清版)

    第1篇 了解开源软件 第1章 开源软件概述 1.1 开源软件的理解 ...第12章 开源组织和社区 12.1 Apache软件基金会 12.1.1 Apache的历史 …… 第13章 商业模式与实例 第14章 参与开源社区 第15章 开创事业

    JspRun!社区论坛系统 v6.0 bulid 090424 GBK 安装版.rar

    13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑...

    开源软件之道.part2of2

    12.3.2 linux kernel社区文化和价值观 185 12.3.3 linux kernel开发模式 186 12.3.4 linux kernel运营模式 188 12.4 eclipse社区 189 12.4.1 eclipse的历史 189 12.4.2 eclipse的发展 190 12.4.3 eclipse组织结构 ...

    Drools应用.doc

    本文档是描述如何去使用Drools的文档,重点放在规则的语法和用法上,可让读者在编写规则是查阅;...Drools(又称 JBoss Rules)是JBoss开源社区中的一个为Java量身定制的、基于RETE算法的产生式规则引擎的实现

    JspRun!社区论坛系统 v6.0 bulid 090423 GBK 源码版.rar

    13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑...

    JSF2和RICHFASES4使用指南

    JSF2和RICHFASES4使用指南,JSF(Java Server Faces)是JCP标准化组织通过的Web应用开发标准框架,RichFaces是RedHat公司的JBoss社区开发的一套基于JSF的UI组件库,支持异步请求功能

    用Java动态代理实现AOP

    目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一时之间成了潮流。Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP...

Global site tag (gtag.js) - Google Analytics