從運維角度看 JAVA 技術

1. JAVA 技術

1.1. JAVA 技術的組成

Java 是一個面向對象的編程語言, 由 sun 公司所研發, 是目前世界上使用最廣泛的編程語言之一

Java 技術的組成:

  • JVM: Java 虛擬機, 提供 Java 的運行環境
  • JAVA 編程語言: 提供給程序員編寫代碼
  • JAVA Class: Java 的類文件格式, 決定 Java 程序編譯出的字節碼應該遵循的規範, 用於兼容不同的 JVM
  • JAVA API: 提供 JavaAPI 接口, 縮短應用程序的開發週期

1.2. JVM

JVMJava 的核心和基礎, 是 Java 解釋器和 OS 平臺之間的虛擬處理器(中間層), 它是一種基於操作系統和硬件平臺利用軟件方法抽象出的計算機
引入 Java 虛擬機後, 使得 Java 語言在不同平臺上運行時不需要重新編; 使得 Java 程序員在開發 Java 程序時只需要面對 JVM 編寫代碼即可, 不用關心底層的操作系統和硬件平臺
Java 語言使用 Java 虛擬機屏蔽了與具體平臺相關的信息, 使得 Java 語言編譯程序只需生成在 Java 虛擬機上運行的目標字節碼, 就可以在多種平臺上不加修改地運行

1.3. JDK

JDKJava 語言的軟件開發工具包, 是整個 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 程序, 並將結果通過瀏覽器顯示在客戶端上, 這便是客戶端動態網站

客戶端動態網站的缺點:

  1. 需要客戶端安裝 JDK 插件
  2. 如果 applet 帶有病毒如果這個程序在客戶端運行就可能會對客戶端主機造成巨大的危害

因爲這些缺點所以後來出現了服務器端動態的概念

2.2. servlet 類

Servlet 是用 Java 編寫的服務器端程序, 其主要功能爲交互式的瀏覽和修改數據, 生成動態 WEB 資源
Servlet 可以讓 Java 語言根據 CGI 技術開發運行在服務器端的動態 WEB 程序, 但在通信量大的服務器上 Java Servlet 的優點在於它們的執行速度更快於 CGI 程序
Servlet 各個用戶請求被激活成單個程序中的一個線程, 而無需創建單獨的進程, 這意味着服務器端處理請求的系統開銷將明顯降低

Servlet 處理請求的過程:

  1. 客戶端發送請求至服務器端
  2. 服務器將請求信息發送至 Servlet
  3. Servlet 生成響應內容並將其傳給服務器
  4. 服務器將響應返回給客戶端

2.3. JSP

JSPJava 的服務器頁面,它是 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 是一個包含 JasperServlet 相關的技術的框架, 其中 Jasper 負責監控本地的 .jsp 程序是否發生修改, 一旦修改就根據需求將其替換爲 .java 源代碼, 而 .java 就交給 Servlet 進行處理

Web Container 的商業實現: websphere, weblogic
Web Container 的開源實現: tomcat, jetty

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章