java語言分爲三個體系:
javase javaee,是javase的基礎 通常就是指jdk
javaee java的企業版本 實際上是一套規範,就是用java語言作企業開發(目前看來就是開發一些動態網站,或者對外提供調用服務的網站,或者其餘沒接觸過的。。。)中的一整套規範,好比類怎麼封裝,網頁的請求要用什麼方法處理,語言編碼一類的處理,攔截器啊什麼的定義,請求返回得有什麼信息。。。(具體看servlet的接口就知道了)
好比:tomcat就是按照這套規範開發的容器軟件,還有什麼weblogic,JBoss、Resin等等
javame java的微型版本,通常不用java
2 Java體系結構包括四個獨立但相關的技術:
Java程序設計語言
Java class文件格式
Java API
Java VM程序員
用Java語言編譯源代碼,把它編譯成Java Class文件,而後在Java VM中運行class文件;當編寫程序時,經過調用類(Java API)中的方法來訪問系統資源,而當程序運行時,它經過調用class文件中實現了Java API的方法也知足程序的Java API調用。Java VM和Java API一塊兒組成了一個「平臺」,全部Java程序都在其上編譯和運行,所以,它們有時也被稱做Java運行時環境。
Java VM的主要任務是裝載class文件而且執行其中的字節碼。Java VM包含一個類裝載器(class loader),它能夠從程序和API裝載class文件;而Java API的類只在程序執行中須要時纔會被裝載。
Java字節碼由執行引擎來執行。而不一樣的Java VM中,其執行引擎的實現可能各不相同。最簡單的執行引擎不是一次性解釋字節碼,而另外一種稱爲「即時編譯器(just-in-time compiler)」的執行引擎執行速度更快,但要消耗更多的內存資源。即時編譯模式下,第一次被執行的字節碼會被編譯成本地機器代碼並緩存下來以實現「複用」。第三種執行引擎是所謂的自適應優化器,此種方法中,虛擬機始的時候解釋字節碼,介是會監視運行中程序的活動,而且記錄下使用最頻繁的代碼。程序運行時,虛擬機只把那些活動最頻繁的代碼編譯成本地代碼,而不頻繁的代碼則仍然保留爲字節碼由虛擬機解釋執行。自適應優化器可使得Java VM在80%-90%的時間裏執行被優化過的本地代碼,而只須要編譯10%-20%對性能有影響的代碼。最後一種虛擬機由硬件芯片構成,它用本地方法執行Java字節碼,其執行引擎內嵌於芯片中。web
3 java運行時區域
因爲Java程序是交由JVM執行的,因此咱們在談Java內存區域劃分的時候事實上是指JVM內存區域劃分。編程
根據《Java虛擬機規範》的規定,運行時數據區一般包括這幾個部分:程序計數器(Program Counter Register)、Java棧(VM Stack)、本地方法棧(Native Method Stack)、方法區(Method Area)、堆(Heap)。緩存
程序計數器,又有叫pc寄存器,既程序當前運行的指針(學過編程的小夥伴會知道,程序在運行時會有指針)
java棧 java方法的棧,是java方法執行的內存模型。裏面包含:局部變量表,操做數棧,指向運行時常量池的引用,方法返回地址,附加信息
本地方法棧 相似本地方法,不過這裏的是本地方法
堆 程序員惟一可管理的內存區域,儲存對象
方法區 被線程共享的區域,在方法區中,存儲了每一個類的信息(包括類的名稱、方法信息、字段信息)、靜態變量、常量以及編譯器編譯後的代碼等。還有一項重要的區域。它是每個類或接口的常量池的運行時表示形式,在類和接口被加載到JVM後,對應的運行時常量池就被建立出來。GC的垃圾回收(新生代,老年代)就是在這tomcat
3 tomcat的介紹
tomcat 就是java ee的一個不徹底實現。
在第一次調用以後,JSP會被編譯成一個servlet類,在後續的操做中則能夠直接使用此類,從而避免了對每一次調用的都要從新分析和編譯。
所以,相似servlet,JSP的執行須要在container中完成。JSP的container跟servlet的container基本相同,
但在JSP執行以前,須要一些額外的步驟如與servlet代碼創建會話等。
Tomcat包含了一個叫作Catalina的Servlet container(執行servlet和編譯過的JSP)和一個JSP編譯器(Jasper編譯器)。
事實上,一個包含了JSP編譯器和Servlet容器的應用程序組合經過被稱做Web容器。
JSP和Servlet的最大區別在於,Servlet一般須要事先編譯好,而JSP則並不是必須事先編譯。
這意味着Servlet一般放置於私有資源區域,而JSP則一般以嵌入代碼的方式包含於HTML頁面文件中,這些HTML文件一般放置在公開資源區域。
MVC架構:
Controller,Model和View各自獨立,一個流行的開源實現是Apache Structs框架;目今,設計優良的Web應用程序一般用相就的技術實現相應的功能,好比:
1)、Servlet用於實現應用邏輯;
2)、JSP用於內容展現;
3)、標籤庫和JSP擴展語言用於替換在JSP內部嵌入Java代碼,進而下降了HTML維護的複雜度;
4)、MVC框架用於實現展現和應用邏輯的分離;架構
對於一個Web應用程序而言,其一般由Servlets、JSP和其它文件等共同組成。這些文件一般被打包成WAR(Web Application Archive)格式,並以.war做爲打包後的文件擴展名。而Servlet規範則定義了在WAR內部組織這些文件的標準目錄結構。其目錄和功用以下:
/ Web應用程序的根目錄,全部可被公開訪問的文件均放置於此處,如HTML、JSP和圖片文件等;
/WEB-INF 此目錄爲私有資源目錄,其內部的全部文件和子目錄均不能被公開訪問;包含着此Web應用程序的配置文件web.xml(程序結構描述符文件)一般放置於此目錄;
/WEB-INF/classes 當前Web應用程序的類文件的存在目錄;
/WEB-INF/lib 可被打包爲JAR格式的類文件一般放置於此目錄;框架