1. JAVA 技術
1.1. JAVA 技術的組成
Java
是一個面向對象的編程語言, 由 sun
公司所研發, 是目前世界上使用最廣泛的編程語言之一
Java
技術的組成:
JVM
:Java
虛擬機, 提供Java
的運行環境JAVA 編程語言
: 提供給程序員編寫代碼JAVA Class
: Java 的類文件格式, 決定Java
程序編譯出的字節碼應該遵循的規範, 用於兼容不同的JVM
JAVA API
: 提供Java
的API
接口, 縮短應用程序的開發週期
1.2. JVM
JVM
是 Java
的核心和基礎, 是 Java
解釋器和 OS
平臺之間的虛擬處理器(中間層), 它是一種基於操作系統和硬件平臺利用軟件方法抽象出的計算機
引入 Java
虛擬機後, 使得 Java
語言在不同平臺上運行時不需要重新編; 使得 Java
程序員在開發 Java
程序時只需要面對 JVM
編寫代碼即可, 不用關心底層的操作系統和硬件平臺 Java
語言使用 Java
虛擬機屏蔽了與具體平臺相關的信息, 使得 Java
語言編譯程序只需生成在 Java
虛擬機上運行的目標字節碼, 就可以在多種平臺上不加修改地運行
1.3. JDK
JDK
是 Java
語言的軟件開發工具包, 是整個 Java
的核心, 它包含了 Java
的運行環境和 Java
工具
簡單來說 JDK = JAVA 編程語言 + JAVA API + 編譯器 + JVM
JDK 的分類
- Java SE: 標準版, 是我們通常用的一個版本
- Java EE: 企業版, 使用這種
JDK
開發J2EE
應用程序 - Java ME: 主要用於移動設備、嵌入式設備上的
Java
應用程序
2. JAVA WEB 程序的實現
2.1. applet 類
applet
是採用 Java
編程語言編寫的, 經過編譯後 applet
程序可以嵌到 HTML
中去, 然後將 applet
程序發送到客戶端, 客戶端的瀏覽器只要安裝有 JDK
插件就能執行這個 applet
程序, 並將結果通過瀏覽器顯示在客戶端上, 這便是客戶端動態網站
客戶端動態網站的缺點:
- 需要客戶端安裝
JDK
插件 - 如果
applet
帶有病毒如果這個程序在客戶端運行就可能會對客戶端主機造成巨大的危害
因爲這些缺點所以後來出現了服務器端動態的概念
2.2. servlet 類
Servlet
是用 Java
編寫的服務器端程序, 其主要功能爲交互式的瀏覽和修改數據, 生成動態 WEB 資源 Servlet
可以讓 Java
語言根據 CGI
技術開發運行在服務器端的動態 WEB
程序, 但在通信量大的服務器上 Java Servlet
的優點在於它們的執行速度更快於 CGI
程序Servlet
各個用戶請求被激活成單個程序中的一個線程, 而無需創建單獨的進程, 這意味着服務器端處理請求的系統開銷將明顯降低
Servlet
處理請求的過程:
- 客戶端發送請求至服務器端
- 服務器將請求信息發送至
Servlet
Servlet
生成響應內容並將其傳給服務器- 服務器將響應返回給客戶端
2.3. JSP
JSP
是 Java
的服務器頁面,它是 Servlet
的一個特殊類, 在根本上是一個簡化的 Servlet
設計JSP
是在傳統的 HTML
文件中插入 Java
的程序段, 從而形成了 JSP
文件
開發 JSP
程序的一個著名框架就是 SSH(Structs, Spring, Hebernate)
JSP
實現了 HTML
語法中的 Java
擴展, 通過在服務器端執行 Java
代碼然後將執行結果嵌入到 HTML
中返回給客戶端Servlet
主要是實現了用 Java
語言開發運行在 server
端的 WEB
動態資源
而這些依據 Java
語言開發的 WEB
動態資源大多數都是 .jsp
資源
2.4. servlet container 和 web container
Servlet Container
包含 JDK
以及 JDK
所不具備的功能, 可以讓一個 Servlet
運行起來, 有相應的 Servlet
進程Servlet
進程負責接收前端 CGI
傳遞過來的請求, 並在本地的 JVM
上進行處理Servlet
同時還負責監控本地的 .java
程序是否發生了修改, 一旦發生修改則重新讓編譯器編譯成 .class
文件
Web Container
是一個包含 Jasper
和 Servlet
相關的技術的框架, 其中 Jasper
負責監控本地的 .jsp
程序是否發生修改, 一旦修改就根據需求將其替換爲 .java
源代碼, 而 .java
就交給 Servlet
進行處理
Web Container
的商業實現: websphere
, weblogic
Web Container
的開源實現: tomcat
, jetty