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的时候,写这篇文章也算是一个告别仪式吧!!!
相关推荐
公司的网站系统使用的中间是jboss7.1.1 Final,由于有些数据和服务测试环境不具备,免不了要在测试环境调试些jsp页面,发现从jboss社区里下载的jboss应用有个问题,新增jsp页面会实时部署,修改过的jsp页面就无法正常...
在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
社区项目的父级 Maven POM。 它是什么? JBoss 父 POM 为 Maven 构建提供默认配置。 最常用的 Maven 插件的推荐/默认版本 jar 和程序集插件的清单配置 用于生成源 jar 和强制执行最低版本的 Java 和 Maven 的配置...
JBoss Forge IntelliJ IDEA插件发表在 提供对IntelliJ IDEA中的命令和向导的支持。 要显示命令列表,请按Ctrl+Alt+4 。 在MacOSX上,使用Command + Option + 4 。安装使用IDE内置插件系统: 首选项>插件>市场>搜索...
JBOSS Tools是JBOSS社区提供的一套用于J2EE开发的Eclipse插件,现在的版本是3.1,本书出版于2009年,详述如何使用JBOSS Tools 3插件在Eclipse下开发J2EE project, 涵盖JSF, Struts, Seam, Hibernate, JBPM, ESB, web...
在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
社区驱动的项目,具有针对尖端应用程序的最新创新。 我们的旗舰项目JBoss AS是领先的开源,符合标准的,基于Java EE的应用服务器,以100%纯Java实现。
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持。...从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,JPA作为ORM领域标准化整合者的目标应该不难实现。
JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以使用它) jbossmq 等 在jboss 5 之前好像一直在用jbossmq ,而从6 开始使用HornetQ ,hornetq 也可以脱离jboss 单独使用 hornetq 的配置在jboss-6.0.0.20100429...
社区Red Hat Fuse Tooling是开源的,我们希望鼓励每个人都尝试一下并参与该项目的未来开发。 有关更多信息,请参见下面的“贡献”部分。问题如果您要报告错误或请求新功能,请在我们的举票。 如果您想开始为该项目做...
创建此存储库是为了帮助复制
WildFly 为JBossAS 更名后的社区版本名称,开发目标为兼容JavaEE7 的开源应用服务器产品,未来会成为 Redhat JBoss EAP 7(即红帽商业应用服务器)的基础版本,WildFly 最主要的特性之一就是新的高性能的称之为 ...
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章 开创事业
13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑...
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的文档,重点放在规则的语法和用法上,可让读者在编写规则是查阅;...Drools(又称 JBoss Rules)是JBoss开源社区中的一个为Java量身定制的、基于RETE算法的产生式规则引擎的实现
13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑...
JSF2和RICHFASES4使用指南,JSF(Java Server Faces)是JCP标准化组织通过的Web应用开发标准框架,RichFaces是RedHat公司的JBoss社区开发的一套基于JSF的UI组件库,支持异步请求功能
目前整个开发社区对AOP(Aspect Oriented Programing)推崇备至,也涌现出大量支持AOP的优秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一时之间成了潮流。Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP...