JAVA一些基礎概念

Java

 

(計算機編程語言)

 
Java是一門 面向對象編程語言,不只吸取了 C++語言的各類優勢,還摒棄了C++裏難以理解的 多繼承指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程[1]   。
Java具備簡單性、面向對象、 分佈式健壯性安全性、平臺獨立與可移植性、 多線程、動態性等特色[2]   。Java能夠編寫 桌面應用程序Web應用程序分佈式系統嵌入式系統應用程序等[3]   。

 

工做原理



由四方面組成:
(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應用程序接口[21]  
當編輯並運行一個Java程序時,須要同時涉及到這四種方面。使用文字編輯軟件 (例如 記事本 寫字板 UltraEdit 等)或集成開發環境 Eclipse MyEclipse等)在Java源文件中定義不一樣的類[22]   ,經過調用類 (這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,而後再經過運行與操做系統平臺環境相對應的Java虛擬機來運行class文件,執行編譯產生的字節碼,調用class文件中實現的方法來知足程序的Java API調用[6]   

sdk

 

(軟件開發工具包)

 

軟件開發工具包(外語首字母縮寫:SDK、外語全稱:S oftware D evelopment K it)通常都是一些 軟件工程師爲特定的 軟件包軟件框架、硬件平臺、 操做系統等創建應用軟件時的 開發工具的集合。
軟件開發工具包括廣義上指輔助開發某一類軟件的相關文檔、範例和工具的 集合
軟件開發工具包是一些被軟件工程師用於爲特定的軟件包、軟件框架、硬件平臺、操做系統等建立應用軟件的開發工具的集合,通常而言SDK即開發 Windows平臺下的應用程序所使用的SDK。它能夠簡單的爲某個 程序設計語言提供 應用程序接口 API的一些文件,但也可能包括能與某種 嵌入式系統通信的複雜的硬件。通常的工具包括用於調試和其餘用途的實用工具。SDK 還常常包括示例代碼、支持性的技術註解或者其餘的爲基本參考資料澄清疑點的支持文檔。
爲了鼓勵開發者使用其系統或者語言,許多 SDK 是免費提供的。 軟件工程師一般從目標系統開發者那裏得到軟件開發包,也能夠直接從互聯網下載,有時也被做爲 營銷手段。例如,營銷公司會免費提供構件SDK 以鼓勵人們使用它,從而會吸引更多人因爲能免費爲其編程而購買其構件。
SDK 可能附帶了使其不能在不兼容的許可證下開發軟件的許可證。例如產品供應商提供一個專有的SDK可能與自由軟件開發抵觸。 GPL能使SDK與專有軟件開發近乎不兼容。 LGPL下的SDK則沒有這個問題。

API

API(Application Programming Interface,應用編程接口)其實就是操做系統留給應用程序的一個調用接口,應用程序經過調用操做系統的 API 而使操做系統去執行應用程序的 命令(動做)。其實早在 DOS時代就有 API 的概念,只不過那個時候的 API 是以中斷調用的形式(INT 21h)提供的,在 DOS 下跑的應用程序都直接或間接的經過中斷調用來使用操做系統功能,好比將 AH 置爲 30h後調用INT 21h就能夠獲得DOS 操做系統的版本號。而在  Windows 中,系統 API 是以 函數調用的方式提供的。一樣是取得操做系統的版本號,在 Windows 中你所要作的就是調用 GetVersionEx() 函數。
能夠這麼說, DOSAPI 是「Thinking in 彙編語言」的,而 Windows API 則是「Thinking in 高級語言」的。
DOS API是系統程序的一部分,他們與系統一同被載入內存而且能夠經過 中斷矢量表找到他們的入口,那麼 什麼是Windows API 呢?要說明白這個問題就不得不引入咱們下面要介紹得這個概念——DLL。

DLL

DLL,即 Dynamic Link Library( 動態連接庫)。在windows環境下含有大量 . dll格式的文件,這些文件就是 動態連接庫文件,其實也是一種 可執行文件格式。跟 .exe 文件不一樣的是,.dll文件不能直接執行,他們一般由 .exe 在執行時裝入,內含有一些資源以及 可執行代碼等。其實 Windows 的三大模塊就是以DLL的形式提供的( Kernel32.dllUser32.dllGDI32.dll),裏面就含有了 API函數的執行代碼。爲了使用 DLL 中的 API 函數, 必需要有 API 函數的聲明(.H)和其 導入庫(.LIB),導入庫能夠先這樣理解:導入庫是爲了在 DLL 中找到 API 的 入口點而使用的。
爲了使用  API 函數,咱們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、範例和工具的「工具包」。
SDK 包含了使用 API 的必需資料,因此人們也常把僅使用 API 來編寫  Windows 應用程序的開發方式叫作「SDK編程」。而API和 SDK 是開發Windows應用程序所必需的東西,因此其它編程框架和類庫都是創建在它們之上的,好比VCL 和 MFC,雖然他們比起「SDK 編程」來有着更高的抽象度,但這絲絕不妨礙咱們在須要的時候隨時直接調用 API 函數 。


 

jdk

 

(SunMicrosystems針對Java開發員的產品)

 
JDK是  Java 語言的 軟件開發工具包,主要用於移動設備、嵌入式設備上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境,JAVA工具和JAVA基礎的類庫。

 

JDK (Java Development Kit)稱爲Java開發包或Java開發工具,是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包括了Java運行環境 (Java Runtime Envirnment),一些Java工具和Java的核心類庫 (Java API)。不論什麼Java應用服務器實質都是內置了某個版本的JDK。主流的JDK是Sun公司發佈的JDK,除了Sun以外,還有不少公司和組織都開發了本身的JDK,例如,IBM公司開發的JDK,BEA公司的Jrocket,還有GNU組織開發的JDK[13]   。
JDK(Java Development Kit) 是 Java 語言的軟件開發工具包( SDK)。
SE(J2SE),standard edition,標準版,是咱們一般用的一個版本,從JDK 5.0開始,更名爲Java SE。
EE(J2EE),enterprise edition,企業版,使用這種JDK開發J2EE應用程序,從JDK 5.0開始,更名爲Java EE。
ME(J2ME),micro edition,主要用於移動設備、嵌入式設備上的java應用程序,從JDK 5.0開始,更名爲Java ME。
沒有JDK的話,沒法編譯Java程序,若是想只運行Java程序,要確保已安裝相應的JRE。

組成

編輯
JDK包含的基本組件包括:
javac – 編譯器,將源程序轉成字節碼
jar – 打包工具,將相關的類文件打包成一個文件
javadoc – 文檔生成器,從源碼註釋中提取文檔
jdb – debugger,查錯工具
java – 運行編譯後的java程序(.class後綴的)
appletviewer:小程序瀏覽器,一種執行 HTML文件上的Java小程序的Java瀏覽器。
Javah:產生能夠調用Java過程的C過程,或創建能被Java程序調用的C過程的頭文件。
Javap:Java反彙編器,顯示編譯類文件中的可訪問功能和數據,同時顯示 字節代碼含義。
Jconsole: Java進行系統調試和監控的工具

經常使用的包

編輯
java.lang: 這個是系統的基礎類,好比String等都是這裏面的,這個包是惟一一個能夠不用引入(import)就可使用的包。
java.io: 這裏面是全部輸入輸出有關的類,好比文件操做等。
java.nio:爲了完善io包中的功能,提升io包中性能而寫的一個新包 ,例如NIO非堵塞應用
java.net: 這裏面是與網絡有關的類,好比URL,URLConnection等。
java.util: 這個是系統輔助類,特別是集合類Collection,List,Map等。
java.sql: 這個是數據庫操做的類,Connection, Statement,ResultSet等。
javax.servlet:這個是JSP,Servlet等使用到的類。

 

JRE

 
JRE(Java Runtime Environment,Java運行環境),運行JAVA程序所必須的環境的集合,包含JVM標準實現及Java核心類庫。
另外,能夠把 Java API類庫中的Java SE API子集和Java虛擬機這兩部分統稱爲 JRE (JAVA Runtime Environment)JRE是支持Java程序運行的標準環境[14]   。
JRE是個運行環境,JDK是個開發環境。所以寫Java程序的時候須要JDK,而運行Java程序的時候就須要JRE。而JDK裏面已經包含了JRE,所以只要安裝了JDK,就能夠編輯Java程序,也能夠正常運行Java程序。但因爲JDK包含了許多與運行無關的內容,佔用的空間較大,所以運行普通的Java程序無須安裝JDK,而只須要安裝JRE便可[15]   。
JRE爲Java Runtime Environment的簡稱,Java Runtime Environment(包括Java Plug-in)是 Sun的產品,包括兩部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是能夠在其上運行、測試和傳輸應用程序的Java平臺。 它包括Java虛擬機(jvm)、Java核心類庫和支持文件。它不包含開發工具(JDK)-- 編譯器 、調試器和其它工具。JRE須要輔助軟件--Java Plug-in--以便在瀏覽器中運行 applet
Java Plug-in軟件容許Java Applet和JavaBean組件在使用Sun的Java Runtime Environment(JRE)的瀏覽器中運行,而不是在使用缺省的Java運行環境的瀏覽器中運行。Java Plug-in可用於Netscape Navigator和Microsoft Internet Explorer。
J2RE是Java2 Runtime Environment,即Java運行環境,只是強調其匹配Java2平臺,有時簡稱JRE 。若是你只須要運行Java程序或 Applet ,下載並安裝它便可。若是你要自行開發 Java軟件,請下載JDK(JRE和JDK的區別)。JDK中附帶有JRE。注意因爲Microsoft對Java的支持不徹底,請不要使用IE自帶的 虛擬機來運行 Applet,務必安裝一個JRE或JDK。
接着在PATH路徑中找JRE
註冊表 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的鍵值指向哪一個JRE
最經常使用的是在PATH路徑中找JRE,通常狀況下,本身的程序運行以前都會先在 批處理文件裏面臨時設置PATH,把本身用的JRE放到PATH路徑最前面,因此確定會運行本身帶的JRE,不會形成版本混亂。

JVM

 
JVM是Java Virtual Machine(Java 虛擬機)的縮寫,JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是經過在實際的計算機上仿真模擬各類計算機功能來實現的。
Java語言的一個很是重要的特色就是與平臺的無關性。而使用Java虛擬機是實現這一特色的關鍵。通常的高級語言若是要在不一樣的平臺上運行,至少須要編譯成不一樣的 目標代碼。而引入Java語言虛擬機後,Java語言在不一樣平臺上運行時不須要從新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言 編譯程序只需生成在Java虛擬機上運行的目標代碼( 字節碼),就能夠在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的 機器指令執行。這就是Java的可以「一次編譯,處處運行」的緣由。

規格

編輯
JVM的設計目標是提供一個基於抽象規格描述的計算機模型,爲解釋程序開發人員提供很好的靈活性,同時也確保Java代碼可在符合該規範的任何系統上運行。JVM對其實現的某些方面給出了具體的定義,特別是對Java 可執行代碼,即 字節碼(Bytecode)的格式給出了明確的規格。這一規格包括 操做碼操做數的語法和數值、 標識符的數值表示方式、以及Java類文件中的Java對象、 常量緩衝池在JVM的存儲映象。這些定義爲JVM 解釋器開發人員提供了所需的信息和開發環境。Java的設計者但願給開發人員以爲所欲爲使用Java的自由。
JVM定義了控制Java代碼 解釋執行和具體實現的五種規格,它們是:

原理

編輯
JVM是java的核心和基礎,在java編譯器和os平臺之間的虛擬處理器。它是一種基於下層的操做系統和硬件平臺並利用軟件方法來實現的抽象的計算機,能夠在上面執行java的字節碼程序。
java編譯器只需面向JVM,生成JVM能理解的代碼或字節碼文件。Java源文件經編譯器,編譯成字節碼程序,經過JVM將每一條指令翻譯成不一樣平臺機器碼,經過特定平臺運行。
JVM執行程序的過程 :
I.加載.class文件
II.管理並分配內存
III.執行垃圾收集
JRE(java運行時環境)包含JVM的java程序的運行環境 [1]  
JVM是Java程序運行的容器,可是他同時也是操做系統的一個進程,所以他也有他本身的運行的生命週期,也有本身的代碼和數據空間。
JVM在整個jdk中處於最底層,負責與操做系統的交互,用來屏蔽操做系統環境,提供一個完整的Java運行環境,所以也就虛擬計算機.操做系統裝入JVM是經過jdk中Java.exe來完成,經過下面4步來完成JVM環境。
1.建立JVM裝載環境和配置
2.裝載JVM.dll
3.初始化JVM.dll並掛接到JNIENV(JNI調用接口)實例
4.調用JNIEnv實例裝載並處理 class類。[

棧結構

編輯
做爲基於棧結構的計算機,Java棧是JVM存儲信息的主要方法。當JVM獲得一個Java 字節碼應用程序後,便爲該代碼中一個類的每個方法建立一個棧框架,以保存該方法的狀態信息。每一個棧框架包括如下三類信息:
執行環境
局部變量用於存儲一個類的方法中所用到的局部變量。vars寄存器指向該變量表中的第一個局部變量。
執行環境用於保存 解釋器對Java字節碼進行解釋過程當中所需的信息。它們是:上次調用的方法、局部變量 指針和操做數棧的棧頂和棧底指針。執行環境是一個執行一個方法的控制中心。例如:若是解釋器要執行iadd(整數加法),首先要從frame寄存器中找到當前執行環境,然後便從執行環境中找到操做數棧,從棧頂彈出兩個整數進行加法運算,最後將結果壓入棧頂。
操做數棧用於存儲運算所需操做數及運算的結果。

碎片回收

編輯
Java類的實例所需的存儲空間是在堆上分配的。 解釋器具體承擔爲類實例分配空間的工做。解釋器在爲一個實例分配完存儲空間後,便開始記錄對該實例所佔用的內存區域的使用。一旦對象使用完畢,便將其回收到堆中。在Java語言中,除了new語句外沒有其餘方法爲一對象申請和釋放內存。對內存進行釋放和回收的工做是由Java運行系統承擔的。這容許Java運行系統的設計者本身決定碎片回收的方法。在SUN公司開發的Java解釋器和Hot Java環境中,碎片回收用後臺線程的方式來執行。這不但爲運行系統提供了良好的性能,並且使程序設計人員擺脫了本身控制內存使用的風險。

存儲區

編輯
JVM有兩類存儲區: 常量緩衝池和方法區。常量緩衝池用於存儲類名稱、方法和字段名稱以及串常量。方法區則用於存儲Java方法的 字節碼。對於這兩種 存儲區域具體實現方式在JVM規格中沒有明確規定。這使得Java應用程序的存儲佈局必須在運行過程當中肯定,依賴於具體平臺的實現方式。JVM是爲Java字節碼定義的一種獨立於具體平臺的規格描述,是 Java平臺獨立性的基礎。JVM還存在一些限制和不足,有待於進一步的完善,但不管如何,JVM的思想是成功的。
對比分析:若是把Java原程序想象成咱們的C++原程序,Java原程序編譯後生成的字節碼就至關於C++原程序編譯後的80x86的 機器碼(二進制 程序文件),JVM 虛擬機至關於80x86計算機系統,Java 解釋器至關於80x86CPU。在80x86CPU上運行的是機器碼,在Java解釋器上運行的是Java字節碼。Java解釋器至關於運行Java 字節碼的「CPU」,但該「CPU」不是經過硬件實現的,而是用軟件實現的。Java解釋器實際上就是特定的平臺下的一個應用程序。只要實現了特定平臺下的解釋器程序,Java字節碼就能經過解釋器程序在該平臺下運行,這是Java跨平臺的根本。當前,並非在全部的平臺下都有相應Java解釋器程序,這也是Java並不能在全部的平臺下都能運行的緣由,它只能在已實現了Java解釋器程序的平臺下運行。

運行數據

編輯
JVM定義了若干個程序執行期間使用的數據區域。這個區域裏的一些數據在JVM啓動的時候建立,在JVM退出的時候銷燬。而其餘的數據依賴於每個線程,在線程建立時建立,在線程退出時銷燬。分別有程序計數器,堆,棧,方法區,運行時常量池。[3]  

體系結構

編輯
JVM能夠由不一樣的廠商來實現。因爲廠商的不一樣必然致使JVM在實現上的一些不一樣,然而JVM仍是能夠實現跨平臺的特性,這就要歸功於設計JVM時的體系結構了。咱們知道,一個JVM實例的行爲不光是它本身的事,還涉及到它的子系統、 存儲區域、數據類型和指令這些部分,它們描述了JVM的一個抽象的內部體系結構,其目的不光規定實現JVM時它內部的體系結構,更重要的是提供了一種方式,用於嚴格定義實現時的外部行爲。每一個JVM都有兩種機制,一個是裝載具備合適名稱的類(類或是接口),叫作類裝載子系統;另外的一個負責執行包含在已裝載的類或接口中的指令,叫作運行引擎。每一個JVM又包括方法區、堆、Java棧、 程序計數器和本地方法棧這五個部分,這幾個部分和類裝載機制與運行引擎機制一塊兒組成的體系結構圖爲:JVM的每一個實例都有一個它本身的方法域和一個堆,運行於JVM內的全部的線程都共享這些區域;當 虛擬機裝載類文件的時候,它解析其中的二進制數據所包含的類信息,並把它們放到方法域中;當程序運行的時候,JVM把程序初始化的全部對象置於堆上;而每一個線程建立的時候,都會擁有本身的 程序計數器和Java棧,其中程序計數器中的值指向下一條即將被執行的指令,線程的Java棧則存儲爲該線程調用Java方法的狀態;本地方法調用的狀態被存儲在本地方法棧,該方法棧依賴於具體的實現。

 

 


 

JSP

 

(java服務器頁面)

 
JSP全名爲Java Server Pages,中文名叫java 服務器頁面,其根本是一個簡化的 Servlet設計,它[1]   是由 Sun Microsystems公司倡導、許多公司參與一塊兒創建的一種 動態網頁技術標準。JSP技術有點相似ASP技術,它是在傳統的 網頁HTML( 標準通用標記語言的子集)文件(*.htm,*. html)中插入Java 程序段(Scriptlet)和JSP標記(tag),從而造成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是 跨平臺的,既能在Linux下運行,也能在其餘操做系統上運行。
它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet同樣,是在服務器端執行的。一般返回給客戶端的就是一個HTML文本,所以客戶端只要有瀏覽器就能瀏覽。
JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能經過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從 Servlet中分離出來。
Java Servlet是JSP的技術基礎,並且大型的Web應用程序的開發須要Java Servlet和JSP配合才能完成。JSP具有了 Java技術的簡單易用,徹底的面向對象,具備平臺無關性且安全可靠,主要面向因特網的全部特色。

servlet

 
Servlet(Server Applet),全稱Java Servlet,未有中文譯文。是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,通常狀況下,人們將Servlet理解爲後者。
Servlet運行於支持Java的應用服務器中。從原理上講,Servlet能夠響應任何類型的請求,但絕大多數狀況下Servlet只用來擴展基於HTTP協議的Web服務器。
最先支持Servlet標準的是JavaSoft的Java Web Server,此後,一些其它的基於Java的Web服務器開始支持標準的Servlet。

Applet

 
Applet是採用Java編程語言編寫的小應用程序,該程序能夠包含在  HTML標準通用標記語言的一個應用)頁中,與在頁中包含圖像的方式大體相同。[1]  
含有Applet的網頁的 HTML文件代碼中部帶有<applet> 和</applet>這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小應用程序代碼並在本地計算機上執行該Applet。Java Applet 是用Java 語言編寫的一些 小應用程序,這些程序是直接嵌入到頁面中,由支持Java的瀏覽器(IE 或 Netscape) 解釋執行可以產生特殊效果的程序。它能夠大大提升Web頁面的交互能力和動態執行能力。包含Applet的網頁被稱爲Java-powered頁,能夠稱其爲Java支持的網頁。
當用戶訪問這樣的 網頁時,Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網絡瀏覽器。因爲Applet是在用戶的計算機上執行的,因此它的執行速度不受網絡帶寬或者Modem存取速度的限制,用戶能夠更好地欣賞網頁上Applet產生的多媒體效果。
在Java Applet中,能夠實現圖形繪製,字體和顏色控制,動畫和聲音的插入,人機交互及網絡交流等功能。 Applet還提供了名爲抽象窗口 工具箱(Abstract Window Toolkit, AWT)的窗口環境開發工具。 AWT利用用戶計算機的GUI元素,能夠創建標準的 圖形用戶界面,如窗口、按鈕、滾動條等等。目前,在網絡上有很是多的Applet範例來生動地展示這些功能,讀者能夠去調閱相應的網頁以觀看它們的效果。
Applet  小應用程序的實現主要依靠 java.applet包中的Applet類。與通常的應用程序不一樣,Applet應用程序必須嵌入在HTML頁面中,才能獲得 解釋執行;同時Applet能夠從Web頁面中得到參數,並和Web頁面進行交互。
Applet是一種Java的小程序,它經過使用該Applet的HTML文件,由支持Java的 網頁瀏覽器下載運行。也能夠經過java開發工具的 appletviewer來運行。Applet 程序離不開使用它的HTML文件。這個HTML文件中關於Applet的信息至少應包含如下三點:
1) 字節碼文件名(編譯後的Java文件,以.class爲後綴)
2)字節碼文件的地址
3)在網頁上顯示Applet的方式。
一個HTML文件增長Applet有關的內容只是使網頁更加富有生氣,如添加聲音、動畫等這些吸引人的特徵,它並不會改變HTML文件中與Applet無關的元素。

安全性限制

爲了防止這樣的問題出現,在缺省的狀況下,大多數瀏覽器在Applet安全方面受到諸多的限制,幾乎不能對系統進行任何「讀」或「寫」的操做:
1. 不容許Applet訪問本地文件系統
2. Applet不能執行任何本地計算機上的程序
3. 不容許Applet嘗試打開除提供Applet的 服務器以外的任何系統的Socket
4. 不容許Applet訪問用戶名、電子郵件地址等與本地系統有關的信息
5. 對於Applet而言,Java環境中的某些標準系統屬性是隻讀的
6. Applet不能建立或裝載Applet的機器的網絡鏈接
7. Applet不能充當 網絡服務器,監聽或接收來自遠程系統的鏈接請求
8. 不容許Applet裝載動態庫或定義本地方法調用
9. Applet不能操縱不在本身 線程組中的任何線程
10. Applet不能關閉JVM。

servlet

 
Servlet(Server Applet),全稱Java Servlet,未有中文譯文。是用Java編寫的服務器端程序。其主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,通常狀況下,人們將Servlet理解爲後者。
Servlet運行於支持Java的應用服務器中。從原理上講,Servlet能夠響應任何類型的請求,但絕大多數狀況下Servlet只用來擴展基於HTTP協議的Web服務器。
最先支持Servlet標準的是JavaSoft的Java Web Server,此後,一些其它的基於Java的Web服務器開始支持標準的Servlet。
Servlet 是在 服務器上運行的小程序。這個詞是在 Java  applet的環境中創造的,Java applet 是一種看成單獨文件跟網頁一塊兒發送的小程序,它一般用於在客戶端運行,結果獲得爲用戶進行運算或者根據用戶互做用定位圖形等服務。
服務器上須要一些程序,經常是根據用戶輸入訪問數據庫的程序。這些一般是使用 公共網關接口(Common GatewayInterface,CGI)應用程序完成的。然而,在服務器上運行 Java,這種程序可以使用 Java 編程語言實現。在通訊量大的服務器上,JavaServlet 的優勢在於它們的執行速度更快於 CGI 程序。各個用戶請求被激活成單個程序中的一個線程,而無需建立單獨的進程,這意味着 服務器端處理請求的 系統開銷將明顯下降。
實現過程
最先支持 Servlet 技術的是 JavaSoft 的 Java Web Server。此後,一些其它的基於 Java 的 Web Server 開始支持標準的 Servlet API。Servlet 的主要功能在於交互式地瀏覽和修改數據,生成動態 Web 內容。這個過程爲:
1) 客戶端發送請求至服務器端;
2) 服務器將請求信息發送至 Servlet;
3) Servlet 生成響應內容並將其傳給 服務器。響應內容動態生成,一般取決於客戶端的請求;
4) 服務器將響應返回給客戶端。
Servlet 看起來像是一般的 Java 程序。Servlet 導入特定的屬於 Java Servlet API 的包。由於是對象 字節碼,可動態地從網絡加載,能夠說 Servlet 對 Server 就如同 Applet對 Client 同樣,可是,因爲 Servlet 運行於 Server 中,它們並不須要一個 圖形用戶界面。從這個角度講,Servlet 也被稱爲 FacelessObject。
一個 Servlet 就是 Java 編程語言中的一個類,它被用來擴展 服務器的性能,服務器上駐留着能夠經過「請求-響應」編程模型來訪問的應用程序。雖然 Servlet 能夠對任何類型的請求產生響應,但一般只用來擴展 Web 服務器的應用程序。

asp

 

(動態服務器頁面)

 
ASP是動態服務器頁面(Active Server Pages)的英文縮寫,後來也稱爲經典ASP,是微軟公司開發的代替CGI腳本程序的一種應用,也是微軟公司的第一個服務器側的腳本引擎,可以動態產生Web頁面。ASP能夠與Web數據庫以及其它程序進行交互,是一種簡單、方便的編程工具。ASP的網頁文件的格式是.asp,曾用於各類動態網站中。2002年1月微軟發佈ASP.NET,用於取代ASP。[1]  

來源:百度百科html

相關文章
相關標籤/搜索