什麼樣的項目才會考慮使用JBoss、WebSphere、WebLogic等伺服器?
從畢業到現在工作一直在使用Tomcat,早就聽說過JBoss、WebSphere和WebLogic,但一直沒用過,很好奇,什麼時候才會考慮用他們,或者說有什麼非用不可的理由?
javaee的項目,你說那幾個都是javaee的容器,tomcat只是實現了servlet和jsp規範的一個容器。
而javaee可不止一個的servelt規範,我列舉幾個比較主要的吧,比如jpa,ejb,jndi,jms,servlet,jta,validation,jsf等等..完整的規範你可以去看oracle的官方文檔,如果你對java規範比較熟悉的話,只需要下載一個jar包看看這個jar包有哪些packages就能知道包含哪些東西了..javaee的全稱是Java Enterprise Edition,顧名思義,這是做企業軟體開發的規範,javaee出來比較早,那時候可能都還沒有ioc、aop這些現在大家都耳熟能詳的技術名詞,而javaee就有ejb和jndi提供類似定義的規範了,後來各種理論進一步發展和完善,實現技術也越來越好,比如spring的出現,人們在做開發的時候就能有更多的選擇,而且由於javaee太過於重量級,同時又隱藏了太多的細節,出現問題之後調試非常困難,開發各種不方便,所以漸漸的大家都不太願意用javaee的技術棧了...所以也就是你工作這麼幾年也用不上其他的容器。實際上就連servlet和jsp也都有各種替代技術,比如我們可以用其他的rpc技術來代替servlet做介面的通信,我們可以用Freemaker來代替jsp這種模版技術。
在說的具體一點,只需要一個socket server來接收請求,定義相關的協議來解析請求,然後返回對應的內容。
比如我們可以用netty來做http server,用jax-rs來定義交互的規範,jax-rs有一個jersey的實現,還支持template技術的集成,也就是說你完全可以用這一套替代你說的tomcat和servlet相關的技術棧...以上
更新一下答案,重新看了一下其他人的回答,感覺好搞笑。題主問為什麼我們實際工作中只用了tomcat而沒有用到jboss,weblogic之類的容器。這句話說使用某個容器的「使用」是什麼意思呢?作為程序員,tomcat和jboss的使用除了配置有些差異之外,這個「使用」的內涵基本沒有任何差別,唯一的差別在於用到的API不一樣,我們用某個容器,難道會直接用這個容器實現類的API,還是說我們一般的使用者會對這些容器做擴展和開發?顯然不是,javaee程序員是針對javaee定義的規範的interface來編程,可不是針對某個容器的實現編程,所以題主所說的沒用其他的javaee容器所隱含的意思是沒有用對應的技術和規範。再說,jboss可是免費並開源的,你想用隨便用,有人會問你收半毛錢?你連代碼都能下下來做自定義的擴展和修改,還擔心錢的事情?其他答主動不動說什麼回扣、昂貴收費之類的話不知道出了裝逼之外還有什麼其他作用嗎?再說一些商業容器以及其包含的一系列解決方案的事情,javaee完整的容器實現不多,但是某一個javaee的規範的實現多的很,而且很多也都是開源的,你想做什麼樣的搭配完全在你,可選的方案也非常多,完全不會說選了一個方案卻沒有任何保障。而且雖然完整使用javaee技術棧的情況不多,但是只使用某一個javaee技術規範的情況依然很多,比如使用jpa做持久化。限制他們的使用率的原因,不是因為技術方案選擇不多,不是因為不好維護,甚至和要花多少錢也沒太大關係(畢竟有免費開源的實現),而是本身的複雜度太高和易用性不高這個原因。一般來說如果需要用到javaee技術,那麼項目規模通常都會涉及到分散式,系統集成,soa等概念,這些概念理解起來不容易,一般的單體小項目也不需要用到這個程度,如果有到這個規模,往往又會因為有更好更新的實現可以選擇。所以會造成一個問題,會的人不選,不會的人因為不會更加不選。最終使得它們變成一個使用率極低的產品。再補充回答一個問題,關於說銀行、金融行業為什麼會選擇這些產品,主要只有一個原因,就是穩定性要求非常高,在當時那個年代,能提供像javaee這麼成熟的配套的解決方案的產品基本沒有,有的也只是理論和只實現了其中一部分功能的產品,所以講選擇javaee可以說是歷史的必然(你們不要把銀行的人想的那麼傻逼,國外的金融銀行領域一樣用這些產品)。到了後來也就是現在實際上有比javaee更好的產品和技術搭配了,為什麼還是有很多銀行會選javaee的這一套技術棧而不選更新更好的技術棧?原因還是穩定,而且新的技術實現往往內置了一些敏捷開發、並發訪問控制的支持,而銀行的業務並發不高,業務規則十分穩定、複雜,與互聯網產品關注快速迭代、大並發訪問的業務特點有所不同,所以還是有很多銀行會選擇javaee的技術棧,但是即便如此,因為費用、技術升級等原因現在還是有很多銀行在慢慢的調整技術棧了,之前不是有一個去ioe運動可以印證嗎?
10多年was經驗飄過,用過tomcat,weblogic,jboss,以及超長年數專用was。
對了,websphere是一條產品線,裡面好多產品,我默認你就是說最常見的was了。說白了一句話,你要跳ibm的坑就用was。was是收費的,但社區版不收費,社區版就是閹割過的收費版,但業務開發功能全都有。Jboss同理。但jboss擴展很多,不乏好用的。全免費,有坑,正兒八經商用還是要買收費版。R神關注了,請大家坐好聽R神講解如果你用他們東家的操作系統和硬體,想發揮出最佳性能和具有最好的穩定性,肯定是選他們自家的伺服器軟體。所以,會選用他們的首要條件是………………………………
……
………………………………………………有錢
WebLogic應該在電信和政府行業用得多,在金融行業十八摸的WAS早就把WebLogic揍出翔了。JBoss的情況不了解。
JBoss和WebLogic沒用過,做過WAS的運維。
說WAS性能不好的,估計用的是PC伺服器版的WAS,小型機上的WAS性能甩LINUX x86/64版的幾條街,哪怕Linux x86/64版的WAS做了集群,也是弱得很(我在宇宙第一銀行跟著測試過)。小雞版的WAS不但性能剛剛的,而且穩定性出奇的好,不到4GB的內存,swap用了50%,業務還很正常穩定。所以除了極少數應用軟體公司的捅出來的問題,一年下來沒多少事。WebSphere家族裡還有個MQ,這東西幾年都不出問題,爽死了。
聽Oracle的人講,Exalogic一體機的性能牛逼得很,可惜沒有機會體驗。如果企業內部IT系統大型的 推薦用was weblogic ,小工具小系統就用tomcat 簡單
j2ee的項目就會。舉個栗子,用友的產品。
如果是重量級別的EJB那就是Jboss吧 如果是一般要求敏捷開發 spring搭配tomcat 便宜而且開發效率高
曾經是某商業javaee伺服器的核心開發者,說兩句。 我們的中間件主要的用戶是: 銀行、醫院、航空公司,大型工廠等較為傳統的企業。 這些企業最大的特點是研發能力較低、有很多現有系統需要集成,以及需要有背鍋的乙方,通常並不是只賣一套軟體,而是提供一攬子的解決方案。
大多數情況下,甲方想把預算拱高,採購經理和項目利益干係人想拿回扣(外企一樣哦,嘿嘿嘿,你說人家不要?矮油,那隻能說明你接觸的人層次低),那就盡情選用昂貴的WAS吧
推薦閱讀:
※adt-bundle-windows沒有集成tomcat,如何配置tomcat伺服器?網上的教程大多很古老不適用。
※Tomcat是如何將JSP代碼編譯成Servlet代碼的?
※tomcat中對靜態資源的訪問也會用servlet來處理嗎?
TAG:Java | ApacheTomcat | WebSphere | WebLogicServer | JBoss |