一個牛人給JAVA初學者的建議——篇七:java企業級應用之術語篇

在瞭解完J2ee的相關周邊產品之後需要深入J2ee規範內部去了解一下到底這些規範

這裡介紹幾個最常用的規範

再繼續說下去之前有必要說幾個常識

一個牛人給JAVA初學者的建議——篇七:java企業級應用之術語篇

Java的誕生

Java之父James Gosling早年從cmu畢業之後

從事了一段時間的開發工作,後來意外碰到一個專案

這個專案要求他用C++開發,但可愛的JG是天才,凡是天才在某方面特別突出的同時

必然有一些天生的缺陷,恩,或說共性,比如說懶,急躁和傲慢

JG既然是天才,那就必然具備這些共性,JG懶,以至於他學不好C++

不僅他學不好,當年開發出Java的那個團隊也都學不好C++

他們急噪,以至於他們中有人甚至威脅以辭職的方式離開這個需要使用CPP開發的專案

他們傲慢,所以他們決定開發出一種新的語言來取代那個該死的CPP

更可愛的是,他們一開始居然給這門語言起名C++++——//沒錯,我沒敲錯

叫什麼C加加 加加減減,意思是加上一些好東西,減去一些壞東西

天才的設定,有時候你會發現天才和傻瓜真的只有一線之隔

還好這個可愛的名字沒有被繼承下來,這些天才們給他們的產物起名叫Oak//橡樹

只是後來當他們去註冊這個名字的時候,發現這個名字已經被註冊了

於是在Sun公司的一個女職員//mm就是心細,這個說法也是我們公司mm告訴我的

的提議下,把這個可愛的語言起名為Java,就是他們當時喝的咖啡的名字

所以我們看到Java的標誌就是一杯冒著熱氣的咖啡

JavaBean 瞭解完Java之後,再來說說什麼是JavaBean//華為面試題

JavaBean是什麼? 咖啡豆

ja,更為科學點的解釋是

用java語言編寫的可重用的軟體元件//元件的定義前面說過了,不再重複

很形象不是麼? 將javabean放入杯子//容器,還記得容器的概念麼?web容器,ejb容器

就可以沖泡//編譯 成咖啡,供客人們品嚐//執行

完美的服務

一個牛人給JAVA初學者的建議——篇七:java企業級應用之術語篇

下面進入正題 再談容器

前面介紹過容器,我覺得有必要再補充一點

容器從某種意義上說其實就是一個可執行的java寫的應用程式

猶如c++/c編譯後生成的。exe檔案

不同的是java編譯後的檔案需要用命令列或者指令碼啟動執行

由於容器是由java寫的,所以容器都能夠跨平臺

雖說如此,似乎大部分容器都針對不同的作業系統提供了不同的版本

但可以肯定的一點是,相同容器間的移植元件不需要重新編譯

Servlet web容器元件

Servlet確切地說,就是web容器執行的java元件

與普通javabean不同的是,Servlet定義了一系列方法//比如init()和destroy()

供容器呼叫,呼叫的主要目的是為了管理

當一個request請求被web容器截獲之後,容器分析該請求地址

然後透過一個配置檔案中的對映表//web。xml

呼叫相應的Servlet元件處理後將結果返還給客戶端

JSP//Java Server Page

web容器元件

Servlet出現了之後,人們發現幾乎沒有辦法用一個非常直觀的方式去編寫頁面

畢竟頁面是html語言編寫的

而讓我們用一種流程式的處理方式去逐行教計算機如何寫html程式碼太困難

在這種情況下JSP應運而生,JSP將java程式碼嵌入html程式碼內部

然後存成。jsp檔案,再由計算機編譯生成Servlet儲存起來//注意這個過程

所以JSP和Servlet對於web容器來說其實是一種東西,雖然它們編寫遵循的標準有所不同

極大地簡化了程式碼同時增加了程式碼的可讀性,生產維護成本下降

值得一提的是,在制定JSP規範的過程中,借鑑了ASP的很多規範

寫過ASP並熟悉Java語言的人應該能很快掌握JSP

一個牛人給JAVA初學者的建議——篇七:java企業級應用之術語篇

EJB//Enterprise JavaBean

ejb容器元件

隨著時間的推移,人們發現普通的JavaBean似乎並不能滿足企業級應用的需要

最典型的就是虛擬機器提供的垃圾回收收集機制也就是GC不夠完善

可以最佳化的餘地極大,在這種情況下,EJB應運而生

EJB和其它元件一樣,不過遵循了某些規範而已

但是這些規範更多的是為充分利用機器並提高效能為主要目的的

舉個簡單例子

比如某個web伺服器有100個使用者同時連線上

由於網路連線是瞬時連線,所以很多時候併發數並沒有100那麼大

前一秒有可能有30個請求被髮送過來並被處理

後一秒可以只有10個請求被髮送過來並被處理

只有在非常非常極端的情況下才有可能發生100個請求同時被髮送過來並被處理的情況

那麼我們是否需要保留100個那麼多個物件在伺服器的記憶體裡面去處理這些請求呢?

很顯然,不需要,大多數時候//甚至可以說是所有時候,我不相信有那麼極端的情況

我們只需要儲存其中的10-30%就夠了,那麼什麼時候需要20%,什麼時候需要50%

甚至100%,這個過程就交給容器去管理,這就是ejb容器每天在乾的事

管理記憶體中活躍的物件

恩,必須強調的一點是,由於使用的不成熟

我們經常把規範以及具體的應用兩個名詞混用

舉個簡單例子,我們說Servlet,極有可能說的是Servlet規範

也有可能說的是一個具體的Servlet,這個就要看情況而定了

EJB,JSP也是如此

一個牛人給JAVA初學者的建議——篇七:java企業級應用之術語篇

JDBC

和資料庫的連線

這個嚴格說來是資料庫產商需要關心的事

關於AppServer如何與資料庫的連線

但是也需要開發人員做一點事,因為AppServer不知道什麼時候元件需要用到資料庫

同時也需要開發人員告訴AppServer他們使用的是什麼資料庫,ip地址等等

JDBC就是關於這一套東東的規範

包括資料庫的產商應提供什麼樣的介面

AppServer應用伺服器應該如何去連線

開發人員應該如何去配置這些連線等等

還有一些資料來源,連線池等概念參考相關資料在此就不再贅述

其它的規範比如JMX等確切地說與開發人員關聯並不大了

這類高階應用只對AppServer應用伺服器產商重要

也不再羅嗦了

————-

記得聽說過這樣一種說法

大一時候不知道自己不知道 大二時候知道自己不知道 大三時候不知道自己知道 大四時候知道自己知道 為什麼呢,因為大一時候剛進大學,什麼都不懂,很正常,大家都一樣

大二或者大三時候開始接觸知識,雖然還是不懂,但慢慢地開始學習,開始積累

過了一段時間,知道自己知道了//也就是前一種說法的大四,後一種說法的大三

開始屁癲,開始拽得不得了,覺得自己懷才不遇,千里馬難尋伯樂的那種感覺

有些人是大四畢業了以後開始拽,悟性高一點的,大三就開始拽,因人而異

這幾乎是每一個初學者經過一段時間學習後的必然階段

不管如何,總之開始入門了,這也不是壞事

但最後每個人都會知道自己不知道的,也就是後一種說法的大四階段

//前一種說法裡面的那些傢伙估計要到工作以後才能明白

因為任何一門學科都博大精深,要是能在兩三年之內就統統搞懂

那不是在吹牛就是坐井觀天,java如此,c如此,c++也是如此

那麼到了本系列的第七集,可愛的讀者應該處在什麼階段呢?

恭喜,在看完這篇文章之後,你就基本處於知道自己不知道的那種階段

離拽起來還有那麼一段距離,因為你們畢竟還沒有學習和積累一定的基礎知識

但是騙騙外行,濛濛國企那些吃閒飯的管理人員問題不大