Tomcat是開源的Servlet容器。Servlet容器是Java Web應用程式執行環境的一部分,它負責管理、載入和執行Java Servlet。Servlet是一種小型的Java程式,它在伺服器端執行,並用於擴充套件Web伺服器的功能,處理來自客戶端(如瀏覽器)的HTTP請求並返回響應。
- 生命週期管理:Servlet容器負責Servlet例項的建立、初始化、服務和銷燬。這包括呼叫Servlet的init()方法進行初始化,在接收到HTTP請求時呼叫service()方法來處理請求,以及在需要釋放資源時呼叫destroy()方法。
- 請求分派:當一個HTTP請求到達時,Servlet容器會根據URL對映規則將請求分派給相應的Servlet處理。
- 多執行緒支援:Servlet容器通常提供多執行緒能力,使得單個Servlet例項可以併發地處理多個請求。這意味著容器需要確保執行緒安全,特別是在共享資源訪問方面。
- 資源管理:管理Servlet所需的資源,比如資料庫連線池、檔案系統訪問等,並且在適當的時候回收這些資源以最佳化效能。
WAR檔案是一種用於分發和部署Java Servlet、JSP和其他Web資源(如HTML、JavaScript、CSS等)到Servlet容器(如Apache Tomcat)上的歸檔檔案格式。
JSP允許開發者將Java程式碼片段嵌入到HTML、XML或其他文字檔案中,從而可以生成動態的Web頁面。
JAR 檔案的執行過程通常不會直接編譯成機器碼,而是透過Java虛擬機器(JVM)來執行其中的位元組碼。
- 位元組碼執行:當執行一個JAR檔案時,JVM載入其中的.class檔案,並開始執行這些檔案中的位元組碼。初始階段,JVM可能會逐條解釋執行這些位元組碼指令。
- 即時編譯 (JIT):為了提高效能,現代JVM包含了一個稱為JIT編譯器的元件。它會監視程式的執行情況,識別出那些頻繁使用的“熱”程式碼段,並將它們編譯成本地機器碼。這一步驟是在執行時動態完成的,而不是事先對整個JAR檔案進行編譯。透過這種方式,JVM能夠在保持Java平臺無關性的基礎上,提供接近於原生代碼的執行速度。
- AOT編譯:除了JIT之外,某些版本的JVM還支援提前編譯(Ahead-Of-Time Compilation, AOT),它可以將Java類檔案在部署前編譯成機器碼。然而,這並不是標準JVM行為的一部分,而是額外提供的最佳化選項。