01-Java編程概述_第1頁
01-Java編程概述_第2頁
01-Java編程概述_第3頁
01-Java編程概述_第4頁
01-Java編程概述_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Java編程概述 Java發(fā)展簡史 Java技術體系架構 JDK的安裝和配置 編寫一個Java應用程序 常見錯誤計算機語言的發(fā)展計算機語言的發(fā)展第一代語言第一代語言打孔機打孔機-純機器語言純機器語言直接由計算機的指令組成,指令、數(shù)據(jù)、地址都是以直接由計算機的指令組成,指令、數(shù)據(jù)、地址都是以0和和1的符合的符合串組成;可以被計算機直接執(zhí)行。串組成;可以被計算機直接執(zhí)行。第二代語言第二代語言匯編語言匯編語言-用容易理解和記憶的符號表示指令、數(shù)據(jù)以及寄存器等,用容易理解和記憶的符號表示指令、數(shù)據(jù)以及寄存器等,抽象層次很低,程序員需要考慮大量的機器細節(jié)。抽象層次很低,程序員需要考慮大量的機器細節(jié)。計算

2、機語言的發(fā)展計算機語言的發(fā)展第三代語言第三代語言 高級語言高級語言屏蔽了機器細節(jié),提高了抽象層次接近于人的自然語言,提出了結構屏蔽了機器細節(jié),提高了抽象層次接近于人的自然語言,提出了結構化數(shù)據(jù)和語句,數(shù)據(jù)和過程抽象等概念?;瘮?shù)據(jù)和語句,數(shù)據(jù)和過程抽象等概念。C面向過程面向過程C+面向過程面向過程/面向對象面向對象Java跨平臺的純面向對象的語言跨平臺的純面向對象的語言面向對象的語言與以往的各種語言的根本不同是,它的設計出發(fā)點就面向對象的語言與以往的各種語言的根本不同是,它的設計出發(fā)點就是為了能直接的描述問題域中客觀存在的事物。是為了能直接的描述問題域中客觀存在的事物。前面三種的語言都要自己控制

3、如何做怎么做。前面三種的語言都要自己控制如何做怎么做。計算機語言的發(fā)展計算機語言的發(fā)展第四代語言第四代語言SQL 只需要告訴機器我要什么,不管怎么得到結果的。只需要告訴機器我要什么,不管怎么得到結果的。第五代語言第五代語言自然語言自然語言計算機語言是朝著人更加容易理解的方向發(fā)展,而不是朝著計算機容計算機語言是朝著人更加容易理解的方向發(fā)展,而不是朝著計算機容易理解的方向發(fā)展易理解的方向發(fā)展.Java概述 Java的出生地:SUN Microsystems Inc. SUN:Stanford University Network Java之父:James GoslingJava發(fā)展簡史 1991年

4、出現(xiàn) 1995年發(fā)布 最新推出 Java Platform, Standard Edition,v1.7,現(xiàn)在用得最廣的是1.5Java技術體系架構Java技術體系架構J2ME(Java 2 Micro Edition) 微型版(致力于消費產(chǎn)品和嵌入式設備的最佳解決方案),提供了HTTP高級Internet協(xié)議,使移動電話能以Client/Server方式直接訪問Internet的全部信息,不同的Client訪問不同的文件,此外還能訪問本地存儲區(qū),提供最高效率的無線交流。J2SE (Java 2 Standard Edition)標準版(桌面開發(fā)和低端商務應用的解決方案),提供CORBA標準的

5、ORB技術,結合Java的RMI支持分布式互操作環(huán)境。J2EE (JAEE)(Java 2 Enterprise Edition)企業(yè)版(以企業(yè)為環(huán)境而開發(fā)應用程序的解決方案),目前已經(jīng)成為開發(fā)商創(chuàng)建電子商務應用的事實標準。Java 2 Platform Standard EditionJ2EE 三大組件1)Servlet -提供了基于組件、平臺無關的方法用以構建基本W(wǎng)eb的應用程序。2) JSP- JSP技術是servlet的擴展,代表Java服務器端頁面。3) EJB-企業(yè)級的Java Bean,定義了服務器端組件是如何被編寫以及提供了組件之間和服務器的標準架構協(xié)議。J2EE 服務和相關術

6、語4) JDBC-JDBC是對大范圍關系型數(shù)據(jù)庫提供了統(tǒng)一的訪問。 JDBC2.0提供了數(shù)據(jù)庫連接池的支持。5) RMI和和RMI-IIOP-RMI (remote method invocation)是一種遠程方法調用的一種機制。 EJB依靠RMI作為同一機器或不同機器組件間會話的API。-IIOP-Internet Inter-ORB協(xié)議,RMI的擴展。6) JNDI-Java命名和目錄接口(Java Naming and Directory Interface)。J2EE 服務7) JMS-Java消息服務(Java Messaging Service),異步通訊的實現(xiàn)。- 通過結合Ja

7、va技術于企業(yè)消息,JMS API提供了一個新的,強有力的工具以解決企業(yè)計算問題。通過定義一組消息概念和編程策略,JMS API提升了程序員的生產(chǎn)效率。8) JTA和和JTS- JTA Java Transaction API;-JTS Java Transaction Service;-JTA是高級別的傳輸API,允許應用程序和J2EE服務器管理事務;JTS表明了事務管理器的具體實現(xiàn)。J2EE 相關術語9) 安全安全 Security-J2EE訪問控制包括鑒定(authentication)和授權(authorization)。10) 容器容器 Containers-每個組件運行于J2EE平

8、臺提供商提供的容器內。-容器提供了特定的部署和運行服務(生命周期、安全,事務等)。11) Web容器和容器和EJB容器容器 -通過調用JSP和servlet來返回結果給客戶端,Web組件提供給客戶 端以運行時支持,如Tomcat。-EJB容器提供事務、EJB組件狀態(tài)管理以及安全等方面的自動支持。 如Weblogic、Jboss。JVM (Java Virtual Machine) 在一臺計算機上由軟件或硬件模擬的計算機。Java虛擬機(JVM)讀取并處理經(jīng)編譯過的平臺無關的字節(jié)碼class文件 。 Java編譯器針對Java虛擬機產(chǎn)生class文件,因此是獨立于平臺的。 Java解釋器負責將J

9、ava虛擬機的代碼在特定的平臺上運行。 Sun 目前采用的目前采用的JVM叫做叫做HotSpot。Java虛擬機虛擬機 (JVM)Java運行時環(huán)境(JRE) 它是運行Java應用程序所必須的。JRE包括JVM、Java核心類庫(Java API)和若干支撐文件組成。 Java運行環(huán)境的三項主要功能: 加載代碼:由class loader 完成; 校驗代碼:由bytecode verifier 完成; 執(zhí)行代碼:由 runtime interpreter完成。JDK JDK 是Java開發(fā)工具(Java Development Kit)的簡稱,這是為Java開發(fā)人員準備的,它除了包括JRE的全

10、部內容外,還包括編譯、調試、文檔生成等工具,這些工具對于開發(fā)Java應用程序和Java小程序(applet)都是必不可少的。作為Java開發(fā)者,學習和掌握JDK是必不可少的功課,目前最新的版本是JDK1.7。問題問題JRE和JVM是什么關系?答: 簡單的說:JRE包含JVM,JVM是運行Java程序的核心,而運行Java程序不僅需要核心虛擬機,還需要其他的類加載器、字節(jié)碼效驗器以及大量的基礎類庫。JRE除了包含JVM之外,還包含運行Java程序的其他環(huán)境支持。Java的垃圾回收機制(GC) 不再使用的內存空間應回收-垃圾收集。 在C/C+ 等語言中,由程序員負責回收無用內存。 Java語言解除

11、了程序員回收無用內存空間的責任。它提供一種系統(tǒng)級線程跟蹤存儲空間的分配情況。并在JVM的空閑時,檢查并釋放那些可被釋放的存儲器空間。 垃圾收集在Java程序運行過程中自動進行,程序員無法精確控制和干預。 環(huán)境變量JAVA_HOME讓諸如Tomcat等應用軟件找到你Java的安裝路徑,因為他們需要用,而在啟動Tomcat的時候,他直接引用了%JAVA_HOME%設置一個JAVA_HOME,環(huán)境變量指定JDK安裝目錄,很多服務器都需要這個變量的。 環(huán)境變量PATH 設置供操作系統(tǒng)去尋找和執(zhí)行應用程序的路徑。也就是說,如果操作系統(tǒng)在當前目錄下沒有找到我們想要執(zhí)行的程序和命令時,操作系統(tǒng)就會按照pat

12、h環(huán)境變量指定的目錄依次去查找,以最先找到的為準。Path環(huán)境變量可以存放多個路徑,用分號(;)隔開。在Linux下用冒號(:)隔開。設置后可以在命令行用 set path 命令查看,該命令只對當前命令行有效。jdk的命令(工具)存放在JDK安裝路徑的bin目錄下通常設置到jdk安裝目錄的bin目錄下set path=c:javajdk_1.6.0_02bin思考你的cmd是如何直接啟動notepad的.java -version javac -version環(huán)境變量CLASSPATH -Java在編譯和運行時要找的class文件所在的路徑。注意:1. CLASSPATH大寫(為什么?) li

13、nux/Unix = 區(qū)分大小寫2.如果不設置CLASSPATH,JVM默認會在你存放當前.java文件的路徑去找.class文件,也就是說如果不設置CLASSPATH 那么他的默認值是 .,但是一旦設置了CLASSPATH,又沒有設置.那么JVM就只去CLASSPATH指定的位置去找編譯出來的.class文件。3.注意,指定CLASSPATH不是指定.class文件的具體位置,還要考慮包結構.;表示當前目錄jar包的用法,也就是說JVM如果發(fā)現(xiàn)CLASSPATH當中有jar包,會自動讀取包內內容,相當于在當前目錄有包內內容。CLASSPATH的設置開發(fā)第一個Java應用程序 開發(fā)Java應用

14、的基本步驟: 編寫源代碼,生成 .java文件。 編輯Java文件寫業(yè)務邏輯,用文本編輯工具即可;(EditPlus) 編譯源代碼,生成 .class文件;javac HelloWorld.java或javac *.java 運行該程序java HelloWorld開發(fā)Java應用編寫程序public class HelloWorld/Java應用程序入口方法public static void main(String args) /向控制臺打印一條信息System.out.println(Hello World!);開發(fā)Java應用編譯程序 將上述程序內容保存為一個擴展名為.java的文件,

15、文件命名為HelloWorld.java。 進入到java源文件保存的目錄,通過下列指令來編譯這個java文件:javac HelloWorld.java 或者:javac *.java 編譯同目錄下所以java文件開發(fā)Java應用運行程序 在.java文件編譯生成的.class文件所在的路徑下,執(zhí)行如下命令:java HelloWorld 然后回車問題問題為什么 java 命令不需要指定目標文件名?答:因為Java編譯后生成的字節(jié)碼文件有默認的文件名:文件名總是以源文件所定義的類的類名為主文件名,以.class為后綴名。這意味著如果一個源文件里定義了多個類,將編譯生成多個字節(jié)碼文件。Hell

16、oWorld應用要點1.Java中的程序必須以類(class)的形式存在,一個類要能被解釋器直接啟動運行,這個類必須有main函數(shù),JVM運行時會首先調用這個類的main函數(shù)(執(zhí)行入口)。Exception in thread main java.lang.NoSuchMethodError: main2.如果class前面沒有public修飾符,源文件名可以是一切的合法的名稱。而帶有public修飾符的類名必須和文件名同名,但是與文件名同名的類卻不一定要帶有public修飾符。helloWorld.java中的類 HelloWorld 是公共的,應在名為 HelloWorld.java 的文

17、件中聲明Java語言嚴格區(qū)分大小寫。每個語句以分號( ; )結束。HelloWorld應用要點3.運行時輸入的命令是java HelloWorld,而不是java HelloWorld.class。還要注意,java命令后跟的是類名,而不是文件名。4.關于java HelloWorld這個命令,對于Windows來說,java是一個命令,HelloWorld是命令的參數(shù)。對于java語言來說,java命令啟動了一個虛擬機,而HelloWorld是這個JVM上能獨立運行的一個java類。HelloWorld應用要點Java虛擬機按照classpath環(huán)境變量指定的目錄順序去查找一個類,以最先找到

18、的為準。Java虛擬機查找類的過程和Windows查找可執(zhí)行文件exe是有區(qū)別的,不會在當前目錄下查找,只找classpath指定的目錄。Windows是會在當前目錄下查找命令的。而Linux命令也不會在當前目錄下查找命令,只在path指定的目錄中查找。set classpath=可以看做Sun公司提供的JDK的一個bug如何讓java虛擬機在任何情況下都去當前目錄查找要使用的類呢?在classpath設置的時候加上一個點(.)就可以了。HelloWorld的運行HelloWorld的運行運行java字節(jié)碼的工作是由解釋器來完成的。共分三步:代碼的裝入、代碼的校驗和代碼的執(zhí)行。1.classL

19、oader負責裝入運行一個程序需要的所有代碼,包括代碼中所繼承的類和被調用的類。當classLoader裝入一個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他方法可以影響其他類。本臺機器上的所有類都在同一地址空間內,而所有從外部引進的類,都有自己獨立的名字空間。這使得本地類通過共享的名字空間獲得較高的運行效率,同時又保證了它們與從外部引進的類不會相互影響。通過這種內存管理機制,java很好的解決了由于超類改變而使子類崩潰的問題,也有效的防止了代碼對地址的非法訪問。HelloWorld的運行2.被裝入的代碼有字節(jié)碼校驗器進行檢查。校驗器可以發(fā)現(xiàn)操作數(shù)棧溢出

20、、非法數(shù)據(jù)類型轉化等多種錯誤。3.代碼的執(zhí)行:有兩種方式: A.即時編譯:解釋器先將字節(jié)碼編譯成機器碼,執(zhí)行。 B.解釋執(zhí)行:解釋器通過每次解釋并執(zhí)行一小段代碼來完成java字節(jié)碼程序的所有操作。 JVM通常采用的是B方式。這使得將字節(jié)碼翻譯為機器代碼的工作具有較高的效率。對于那些運行速度要求較高的應用程序,解釋器可將java字節(jié)碼即時編譯為機器碼,從而很好的保證了java代碼的可移植性和高性能。常見錯誤 編譯時:HelloWorld.java:1: class helloworld is public, should be declared in a file named helloworl

21、d.java public class helloworld 1 error 運行時:Exception in thread main java.lang.NoSuchMethodError: main 運行時:Exception in thread main java.lang.NoClassDefFoundError: helloWorld (wrong name: HelloWorld)一次編譯到處運行一次編譯到處運行首先編寫Java源代碼,然后編譯程序將Java源代碼編譯成JVM可執(zhí)行的代碼,即Java字節(jié)碼。字節(jié)碼文件相當于C源程序編譯后Windows上的exe可執(zhí)行文件,JVM的作

22、用類似Windows操作系統(tǒng)。在Windows上運行的是exe文件,在JVM上運行的是Java字節(jié)碼文件,也就是.class文件。執(zhí)行exe的過程,就是從exe文件中取出一條條計算機指令,交給CPU去執(zhí)行。 執(zhí)行class文件的過程,也是JVM從Java字節(jié)碼文件中取出一條條的字節(jié)碼指令交給“CPU”去執(zhí)行。硬件與軟件是可以互相轉化的。執(zhí)行字節(jié)碼的“CPU”可以是硬件,也可以是某個系統(tǒng)上運行的一個軟件,這個軟件就被稱為字節(jié)碼解釋程序(也就是Java虛擬機).由此可見,只要在特定的平臺下實現(xiàn)了Java解釋器程序,Java字節(jié)碼就能通過解釋器程序在該平臺下運行,這就是Java跨平臺的根本原理。Java應用程序運行機制應用程序運行機制計算機的高級編程語言類型: 編譯型 解釋型Java 語言是兩種類型的結合;Java源程序、字節(jié)碼文件,機器碼指令。Java兼顧解釋性與編譯性語言的特點,Java源文件轉換成class文件的過程是編譯型的,class在操作系統(tǒng)上運行的過程是解釋型的,Ja

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論