jdk+tomcat(一)
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位元組碼,其執行引擎內嵌於晶片中。
Sun公司建立了第一個Servlet容器,即Java Web Server, 但JWS只是為了演示Servlet的相應功能,所以其很不穩定。與此同時,ASF建立了JServ專案,一個能夠與apache整合起來的servlet容器。1999年,Sun把JWS捐給了ASF,於是兩個專案合二為一,即今天Tomcat的前身。第一個tomcat版本是Tomcat 3.x系列,而釋出於2001年Tomcat4.0則是在此前基礎上進行了重新設計和實現,其程式碼專案被命名為Catalina。目前最新的版本則是7.x系列。
Java SE則包含了Java二進位制程式(如JVM和Java位元組碼編譯器)和Java的核心程式碼庫,而Jave EE標準則包含了一組適用於建立企業級Web應用程式的API。Jave EE建立在Java SE的基礎上,並依賴於Java SE才能正常工作。當然,任何級別的應用程式均能從Java EE中獲益,但Jave EE卻更適合解決大型軟體系統設計中的問題。
JAVA EE包含多個獨立的API,Servlet和JSP就是其中的兩個,而JAVA EE中著名的API中還包含如下的幾個:
JAVA EE APIs:
EJB(Enterprise JavaBeans):JAVA相關的諸多高階功能的實現,如RMI(Remote Method Invocation), 物件/關係對映,跨越多個資料來源的分散式事務等;
JMS(Java Message Service):高效能非同步訊息服務,實現JAVA EE應用程式與非JAVA程式的“透明”通訊;
JMX(Java Management Extensions):在程式執行時對其進行互動式監控和管理的機制;
JTA(Java Transaction API):允許應用程式在自身的一個或多個元件中平滑地處理錯誤的機制;
JavaMail:透過工業標準的POP/SMTP/IMAP協議傳送和接收郵件的機制;
Java SE APIs:
JNDI(Java Naming and Directory Interface):用於與LDAP服務互動的API;
JAXP(Java API for XML Processing):用於分析及轉換XML(基於XSLT實現);
Java SE API + JDK
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位元組碼,其執行引擎內嵌於晶片中。
Sun公司建立了第一個Servlet容器,即Java Web Server, 但JWS只是為了演示Servlet的相應功能,所以其很不穩定。與此同時,ASF建立了JServ專案,一個能夠與apache整合起來的servlet容器。1999年,Sun把JWS捐給了ASF,於是兩個專案合二為一,即今天Tomcat的前身。第一個tomcat版本是Tomcat 3.x系列,而釋出於2001年Tomcat4.0則是在此前基礎上進行了重新設計和實現,其程式碼專案被命名為Catalina。目前最新的版本則是7.x系列。
Java SE則包含了Java二進位制程式(如JVM和Java位元組碼編譯器)和Java的核心程式碼庫,而Jave EE標準則包含了一組適用於建立企業級Web應用程式的API。Jave EE建立在Java SE的基礎上,並依賴於Java SE才能正常工作。當然,任何級別的應用程式均能從Java EE中獲益,但Jave EE卻更適合解決大型軟體系統設計中的問題。
JAVA EE包含多個獨立的API,Servlet和JSP就是其中的兩個,而JAVA EE中著名的API中還包含如下的幾個:
JAVA EE APIs:
EJB(Enterprise JavaBeans):JAVA相關的諸多高階功能的實現,如RMI(Remote Method Invocation), 物件/關係對映,跨越多個資料來源的分散式事務等;
JMS(Java Message Service):高效能非同步訊息服務,實現JAVA EE應用程式與非JAVA程式的“透明”通訊;
JMX(Java Management Extensions):在程式執行時對其進行互動式監控和管理的機制;
JTA(Java Transaction API):允許應用程式在自身的一個或多個元件中平滑地處理錯誤的機制;
JavaMail:透過工業標準的POP/SMTP/IMAP協議傳送和接收郵件的機制;
Java SE APIs:
JNDI(Java Naming and Directory Interface):用於與LDAP服務互動的API;
JAXP(Java API for XML Processing):用於分析及轉換XML(基於XSLT實現);
Java SE API + JDK
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30129545/viewspace-1473589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux(jdk+tomcat配置安裝)LinuxJDKTomcat
- Centos6.3下jdk+tomcat安裝部署CentOSJDKTomcat
- 一筆一劃教你寫一簽名
- 一主一物一邏備庫
- 一步一步實現一個PromisePromise
- 一、JVM專欄之一JVM
- 冪的一個公式(一)公式
- mybatis 一對一關聯MyBatis
- 弘一法師語錄一
- 一對一直播原始碼助力一對一教育,進入直播3.0時代!原始碼
- MyBatis 使用resultMap 以及 一對一和一對多MyBatis
- 一步一步,實現自己的ButterKnife(一)
- 一步一步帶你實現virtualdom(一)
- 一杯茶,一支菸,一行程式碼寫一天 !行程
- 一比一還原axios原始碼(一)—— 發起第一個請求iOS原始碼
- 一起來看MyBatis(一)MyBatis
- 一週入門angularJS(一)AngularJS
- 一對一聊天ajax實現
- 一個蘿蔔一個坑
- JavaScriptFAQ(一)——常見問題(一)JavaScript
- 聊一聊Oracle的Tablespace(一)Oracle
- promise原理—一步一步實現一個promisePromise
- 一步一步帶你掌握webpack(一)——入門Web
- 一天一個設計模式(一) - 總體概述設計模式
- EF:Fluent API 把一對多對映為一對一API
- 什麼是一對一直播原始碼?一對一直播為何產生?原始碼
- JPA(3) 表關聯關係(多對一、一對多、多對多、一對一)
- SQLServer查詢最近一天,三天,一週,一月,一季度方法SQLServer
- excel表格複製貼上格式怎麼能一模一樣 表格怎麼複製一個一模一樣的Excel
- gorm 關係一對一,一對多,多對多查詢GoORM
- 花費一天一夜解決RAC故障(一)
- 循序漸進DIY一個react(一)React
- Cherry-Pick | 一日一 GitGit
- OPC UA 統一架構) (一)架構
- 自己寫一個mvc框架吧(一)MVC框架
- 【董天一】什麼是IPFS?(一)
- (一)你的第一個Socket程式
- 一個按鈕,一鍵傳功!