Sun鍏徃鍦?998騫村彂琛?.2鐗堟湰鐨勬椂鍊欙紝浣跨敤浜嗘柊鍚嶇ОJava2Platform錛屽嵆Java2騫沖彴錛屼慨鏀瑰悗鐨凧DK縐頒負(fù) Java2PlatformSoftwareDevelpingKit錛屽茍鍒嗕負(fù)鏍囧噯鐗?StandardEdition錛孞2SE),浼佷笟鐗? (EnterpriseEdition錛孞2EE)錛屽井鍨嬬増(MicroEdition錛孞2ME)銆侸2EE渚跨敱姝よ癁鐢熴?/p>
Java2騫沖彴鍖呮嫭鏍囧噯鐗堬紙J2SE錛夈佷紒涓氱増錛圝2EE錛夊拰寰緝鐗堬紙J2ME錛変笁涓増鏈備粬浠殑鑼冨洿鏄細(xì)J2SE鍖呭惈浜嶫2EE涓紝J2ME鍖呭惈浜咼2SE鐨勬牳蹇冪被錛屼絾鏂版坊鍔犱簡涓浜涗笓鏈夌被銆?/p>
闅忕潃Java鎶鏈殑鍙戝睍錛孞2EE騫沖彴寰楀埌浜嗚繀閫熺殑鍙戝睍錛屾垚涓篔ava璇█涓渶媧昏穬鐨勪綋緋諱箣涓銆傜幇濡備粖錛?span style="color: red;">J2EE涓嶄粎浠呮槸鎸囦竴縐嶆爣鍑嗗鉤鍙幫紝濂規(guī)洿澶氱殑琛ㄨ揪鐫涓縐嶈蔣浠舵灦鏋勫拰璁捐鎬濇兂銆?/span>
2005騫?鏈堬紝JavaOne澶т細(xì)鍙紑錛孲UN鍏徃鍏紑JavaSE6銆傛鏃訛紝Java鐨勫悇縐嶇増鏈凡緇忔洿鍚嶄互鍙栨秷鍏朵腑鐨勬暟瀛?錛欽2EE鏇村悕涓篔avaEE錛孞2SE鏇村悕涓篔avaSE錛孞2ME鏇村悕涓篔ava ME銆?/span>
web鏈嶅姟鍣?/font>鍙互瑙f瀽(handles)http鍗?
璁傚綋web鏈嶅姟鍣ㄦ帴鏀跺埌涓涓猦ttp璇鋒眰(request)錛屼細(xì)榪斿洖涓涓猦ttp鍝嶅簲
(response)錛屼緥濡傞佸洖涓涓猦tml欏甸潰銆備負(fù)浜嗗鐞嗕竴涓姹?request)錛寃eb鏈嶅姟鍣ㄥ彲浠ュ搷搴?response)涓涓潤鎬侀〉闈㈡垨鍥劇墖錛?
榪涜欏甸潰璺寵漿(redirect)錛屾垨鑰呮妸鍔ㄦ佸搷搴?dynamic
response)鐨勪駭鐢熷鎵?delegate)緇欎竴浜涘叾瀹冪殑紼嬪簭渚嬪cgi鑴氭湰錛宩sp(javaserver
pages)鑴氭湰錛宻ervlets錛宎sp(active server
pages)鑴氭湰錛屾湇鍔″櫒绔?server-side)javascript錛屾垨鑰呬竴浜涘叾瀹冪殑鏈嶅姟鍣ㄧ(server-side)鎶鏈傛棤璁哄畠浠?璇戣?
娉?鑴氭湰)鐨勭洰鐨勫浣曪紝榪欎簺鏈嶅姟鍣ㄧ(server-side)鐨勭▼搴忛氬父浜х敓涓涓猦tml鐨勫搷搴?response)鏉ヨ嫻忚鍣ㄥ彲浠ユ祻瑙堛?/p>
瑕佺煡閬擄紝web鏈嶅姟鍣ㄧ殑浠g悊妯″瀷(delegation
model)闈炲父綆鍗曘傚綋涓涓姹?request)琚佸埌web鏈嶅姟鍣ㄩ噷鏉ユ椂錛屽畠鍙崟綰殑鎶婅姹?request)浼犻掔粰鍙互寰堝ソ鐨勫鐞嗚姹?
(request)鐨勭▼搴?璇戣呮敞:鏈嶅姟鍣ㄧ鑴氭湰)銆倃eb鏈嶅姟鍣ㄤ粎浠呮彁渚涗竴涓彲浠ユ墽琛屾湇鍔″櫒绔?server-side)紼嬪簭鍜岃繑鍥?紼嬪簭鎵浜х敓鐨?鍝?
搴?response)鐨勭幆澧冿紝鑰屼笉浼?xì)瓒呭國檨岃兘鑼冨洿銆傛湇鍔″櫒绔?server-side)紼嬪簭閫氬父鍏鋒湁浜嬪姟澶勭悊(transaction
processing)錛屾暟鎹簱榪炴帴(database connectivity)鍜屾秷鎭?messaging)絳夊姛鑳姐?/p>
铏界劧web鏈嶅姟鍣ㄤ笉鏀寔浜嬪姟澶勭悊鎴栨暟鎹簱榪炴帴姹狅紝浣嗗畠鍙互閰嶇疆(employ)鍚勭絳栫暐(strategies)鏉ュ疄鐜板閿欐?fault
tolerance)鍜屽彲鎵╁睍鎬?scalability)錛屼緥濡傝礋杞藉鉤琛?load
balancing)錛岀紦鍐?caching)銆傞泦緹ょ壒寰?clustering鈥攆eatures)緇忓父琚璁や負(fù)浠呬粎鏄簲鐢ㄧ▼搴忔湇鍔″櫒涓撴湁鐨勭壒寰併?/p>
搴旂敤紼嬪簭鏈嶅姟鍣?the application server) 鏍規(guī)嵁鎴戜滑鐨勫畾涔夛紝浣滀負(fù)搴旂敤紼嬪簭鏈嶅姟鍣紝瀹冮氳繃鍚勭鍗忚錛屽彲浠ュ寘鎷琱ttp錛屾妸鍟嗕笟閫昏緫鏆撮湶緇?expose)瀹㈡埛绔簲鐢ㄧ▼搴忋倃eb鏈嶅姟鍣ㄤ富瑕佹槸澶?
鐞嗗悜嫻忚鍣ㄥ彂閫乭tml浠ヤ緵嫻忚錛岃屽簲鐢ㄧ▼搴忔湇鍔″櫒鎻愪緵璁塊棶鍟嗕笟閫昏緫鐨勯斿緞浠ヤ緵瀹㈡埛绔簲鐢ㄧ▼搴忎嬌鐢ㄣ傚簲鐢ㄧ▼搴忎嬌鐢ㄦ鍟嗕笟閫昏緫灝辮薄浣犺皟鐢ㄥ璞$殑涓涓柟娉?
(鎴栬繃紼嬭璦涓殑涓涓嚱鏁?涓鏍楓?/p>
搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑瀹㈡埛绔?鍖呭惈鏈夊浘褰㈢敤鎴風(fēng)晫闈?gui)鐨?鍙兘浼?xì)杩愯鍦ㄤ竴鍙皃c銆佷竴涓獁eb鏈嶅姟鍣ㄦ垨鑰呯敋鑷蟲槸鍏跺畠鐨勫簲鐢ㄧ▼搴忔湇鍔″櫒涓娿傚湪搴旂敤紼嬪簭
鏈嶅姟鍣ㄤ笌鍏跺鎴風(fēng)涔嬮棿鏉ュ洖絀挎(traveling)鐨勪俊鎭笉浠呬粎灞闄愪簬綆鍗曠殑鏄劇ず鏍囪銆傜浉鍙嶏紝榪欑淇℃伅灝辨槸紼嬪簭閫昏緫(program
logic)銆傛鏄敱浜庤繖縐嶉昏緫鍙栧緱浜?takes)鏁版嵁鍜屾柟娉曡皟鐢?calls)鐨勫艦寮忚屼笉鏄潤鎬乭tml錛屾墍浠ュ鎴風(fēng)鎵嶅彲浠ラ殢蹇冩墍嬈茬殑浣跨敤榪欑琚毚闇?
鐨勫晢涓氶昏緫銆?/p>
鍦ㄥぇ澶氭暟鎯呭艦涓嬶紝搴旂敤紼嬪簭鏈嶅姟鍣ㄦ槸閫氳繃緇勪歡(component)鐨勫簲鐢ㄧ▼搴忔帴鍙?api)鎶婂晢涓氶昏緫鏆撮湶(expose)(緇欏鎴風(fēng)搴旂敤紼嬪簭)
鐨勶紝渚嬪鍩轟簬j2ee(java 2 platform, enterprise edition)搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑ejb(enterprise
javabean)緇勪歡妯″瀷銆傛澶栵紝搴旂敤紼嬪簭鏈嶅姟鍣ㄥ彲浠ョ鐞嗚嚜宸辯殑璧勬簮錛屼緥濡傜湅澶ч棬鐨勫伐浣?gate-keeping
duties)鍖呮嫭瀹夊叏(security)錛屼簨鍔″鐞?transaction processing)錛岃祫婧愭睜(resource
pooling)錛屽拰娑堟伅(messaging)銆傚氨璞eb鏈嶅姟鍣ㄤ竴鏍鳳紝搴旂敤紼嬪簭鏈嶅姟鍣ㄩ厤緗簡澶氱鍙墿灞?scalability)鍜屽閿?fault
tolerance)鎶鏈?/p>
涓涓緥瀛?/strong> 渚嬪錛岃鎯充竴涓湪綰垮晢搴?緗戠珯)鎻愪緵瀹炴椂瀹氫環(huán)(real-time
pricing)鍜屾湁鏁堟?availability)淇℃伅銆傝繖涓珯鐐?site)寰堝彲鑳戒細(xì)鎻愪緵涓涓〃鍗?form)璁╀綘鏉ラ夋嫨浜у搧銆傚綋浣犳彁浜ゆ煡璇?
(query)鍚庯紝緗戠珯浼?xì)杩涜鏌ユ?lookup)騫舵妸緇撴灉鍐呭祵鍦╤tml欏甸潰涓繑鍥炪傜綉绔欏彲浠ユ湁寰堝縐嶆柟寮忔潵瀹炵幇榪欑鍔熻兘銆傛垜瑕佷粙緇嶄竴涓笉浣跨敤搴旂敤紼嬪簭
鏈嶅姟鍣ㄧ殑鎯呮櫙鍜屼竴涓嬌鐢ㄥ簲鐢ㄧ▼搴忔湇鍔″櫒鐨勬儏鏅傝瀵熶竴涓嬭繖涓や腑鎯呮櫙鐨勪笉鍚屼細(xì)鏈夊姪浜庝綘浜嗚В搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑鍔熻兘銆?/p>
鎯呮櫙1:涓嶅甫搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑web鏈嶅姟鍣?/p>
鍦ㄦ縐嶆儏鏅笅錛屼竴涓獁eb鏈嶅姟鍣ㄧ嫭绔嬫彁渚涘湪綰垮晢搴楃殑鍔熻兘銆倃eb鏈嶅姟鍣ㄨ幏寰椾綘鐨勮姹?request)錛岀劧鍚庡彂閫佺粰鏈嶅姟鍣ㄧ(server-
side)鍙互澶勭悊璇鋒眰(request)鐨勭▼搴忋傛紼嬪簭浠庢暟鎹簱鎴栨枃鏈枃浠?flat file錛岃瘧鑰呮敞:flat
file鏄寚娌℃湁鐗規(guī)畩鏍煎紡鐨勯潪浜岃繘鍒剁殑鏂囦歡錛屽properties鍜寈ml鏂囦歡絳?涓煡鎵懼畾浠蜂俊鎭備竴鏃︽壘鍒幫紝鏈嶅姟鍣ㄧ(server-side)紼嬪簭
鎶婄粨鏋滀俊鎭〃紺烘垚(formulate)html褰㈠紡錛屾渶鍚巜eb鏈嶅姟鍣ㄦ妸浼?xì)瀹冨彂閫佸埌浣犵殑web嫻忚鍣ㄣ?/p>
綆鑰岃█涔嬶紝web鏈嶅姟鍣ㄥ彧鏄畝鍗曠殑閫氳繃鍝嶅簲(response)html欏甸潰鏉ュ鐞唄ttp璇鋒眰(request)銆?/p>
鎯呮櫙2:甯﹀簲鐢ㄧ▼搴忔湇鍔″櫒鐨剋eb鏈嶅姟鍣?/p>
鎯呮櫙2鍜屾儏鏅?鐩稿悓鐨勬槸web鏈嶅姟鍣ㄨ繕鏄妸鍝嶅簲(response)鐨勪駭鐢熷鎵?delegates)緇欒剼鏈?璇戣呮敞:鏈嶅姟鍣ㄧ(server
-side)紼嬪簭)銆傜劧鑰岋紝浣犲彲浠ユ妸鏌ユ壘瀹氫環(huán)鐨勫晢涓氶昏緫(business
logic)鏀懼埌搴旂敤紼嬪簭鏈嶅姟鍣ㄤ笂銆傜敱浜庤繖縐嶅彉鍖栵紝姝よ剼鏈彧鏄畝鍗曠殑璋冪敤搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑鏌ユ壘鏈嶅姟(lookup
service)錛岃屼笉鏄凡緇忕煡閬撳浣曟煡鎵炬暟鎹劧鍚庤〃紺轟負(fù)(formulate)涓涓搷搴?response)銆傝繖鏃跺綋璇ヨ剼鏈▼搴忎駭鐢焗tml鍝嶅簲
(response)鏃跺氨鍙互浣跨敤璇ユ湇鍔$殑榪斿洖緇撴灉浜嗐?/p>
鍦ㄦ鎯呮櫙涓紝搴旂敤紼嬪簭鏈嶅姟鍣ㄦ彁渚?serves)浜嗙敤浜庢煡璇駭鍝佺殑瀹氫環(huán)淇℃伅鐨勫晢涓氶昏緫銆?鏈嶅姟鍣ㄧ殑)榪欑鍔熻兘(functionality)娌℃湁鎸?
鍑烘湁鍏蟲樉紺哄拰瀹㈡埛绔浣曚嬌鐢ㄦ淇℃伅鐨勭粏鑺傦紝鐩稿弽瀹㈡埛绔拰搴旂敤紼嬪簭鏈嶅姟鍣ㄥ彧鏄潵鍥炰紶閫佹暟鎹傚綋鏈夊鎴風(fēng)璋冪敤搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑鏌ユ壘鏈嶅姟(lookup
service)鏃訛紝姝ゆ湇鍔″彧鏄畝鍗曠殑鏌ユ壘騫惰繑鍥炵粨鏋滅粰瀹㈡埛绔?/p>
閫氳繃浠庡搷搴斾駭鐢?response-generating)html鐨勪唬鐮佷腑鍒嗙鍑烘潵錛屽湪搴旂敤紼嬪簭涔嬩腑璇ュ畾浠?鏌ユ壘)閫昏緫鐨勫彲閲嶇敤鎬ф洿寮轟簡銆傚叾浠栫殑
瀹㈡埛绔紝渚嬪鏀舵鏈猴紝涔熷彲浠ヨ皟鐢ㄥ悓鏍風(fēng)殑鏈嶅姟(service)鏉ヤ綔涓轟竴涓簵鍛樼粰瀹㈡埛緇撳笎銆傜浉鍙嶏紝鍦ㄦ儏鏅?涓殑瀹氫環(huán)鏌ユ壘鏈嶅姟鏄笉鍙噸鐢ㄧ殑鍥犱負(fù)淇℃伅鍐呭祵鍦?
html欏典腑浜嗐?/p>
鎬昏岃█涔嬶紝鍦ㄦ儏鏅?鐨勬ā鍨嬩腑錛屽湪web鏈嶅姟鍣ㄩ氳繃鍥炲簲html欏甸潰鏉ュ鐞唄ttp璇鋒眰(request)錛岃屽簲鐢ㄧ▼搴忔湇鍔″櫒鍒欐槸閫氳繃澶勭悊瀹氫環(huán)鍜屾湁鏁堟?availability)璇鋒眰(request)鏉ユ彁渚涘簲鐢ㄧ▼搴忛昏緫鐨勩?/p>
璀﹀憡(caveats) 鐜板湪錛寈ml web services宸茬粡浣垮簲鐢ㄧ▼搴忔湇鍔″櫒鍜寃eb鏈嶅姟鍣ㄧ殑鐣岀嚎娣鋒穯浜嗐傞氳繃浼犻佷竴涓獂ml鏈夋晥杞借嵎(payload)緇欐湇鍔″櫒錛寃eb鏈嶅姟鍣ㄧ幇鍦ㄥ彲浠ュ鐞嗘暟鎹拰鍝嶅簲(response)鐨勮兘鍔涗笌浠ュ墠鐨勫簲鐢ㄧ▼搴忔湇鍔″櫒鍚屾牱澶氫簡銆?/p>
鍙﹀錛岀幇鍦ㄥぇ澶氭暟搴旂敤紼嬪簭鏈嶅姟鍣ㄤ篃鍖呭惈浜唚eb鏈嶅姟鍣紝榪欏氨鎰忓懗鐫鍙互鎶妛eb鏈嶅姟鍣ㄥ綋浣滄槸搴旂敤紼嬪簭鏈嶅姟鍣ㄧ殑涓涓瓙闆?subset)銆傝櫧鐒跺簲鐢ㄧ▼
搴忔湇鍔″櫒鍖呭惈浜唚eb鏈嶅姟鍣ㄧ殑鍔熻兘錛屼絾鏄紑鍙戣呭緢灝戞妸搴旂敤紼嬪簭鏈嶅姟鍣ㄩ儴緗?deploy)鎴愯繖縐嶅姛鑳?capacity)(璇戣呮敞:榪欑鍔熻兘鏄寚鏃㈡湁搴旂敤
紼嬪簭鏈嶅姟鍣ㄧ殑鍔熻兘鍙堟湁web鏈嶅姟鍣ㄧ殑鍔熻兘)銆傜浉鍙嶏紝濡傛灉闇瑕侊紝浠栦滑閫氬父浼?xì)鎶妛eb鏈嶅姟鍣ㄧ嫭绔嬮厤緗紝鍜屽簲鐢ㄧ▼搴忔湇鍔″櫒涓鍓嶄竴鍚庛傝繖縐嶅姛鑳界殑鍒嗙鏈夊姪浜庢彁楂樻?
鑳?綆鍗曠殑web璇鋒眰(request)灝變笉浼?xì)濯?jiǎng)鍝嶅簲鐢ㄧ▼搴忔湇鍔″櫒浜?錛屽垎寮閰嶇疆(涓撻棬鐨剋eb鏈嶅姟鍣紝闆嗙兢(clustering)絳夌瓑)錛岃屼笖緇欐渶浣?
浜у搧鐨勯夊彇鐣欐湁浣欏湴銆?