午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

由基本概念開始全面認識JAVA

 aaie_ 2015-04-20

[導(dǎo)讀] Java應(yīng)該怎么學(xué)?Java能做什么?什么是Applet?什么是Servlet、Jsp、EJB?還有Webspere、Weblogic又是做什么的等等。之所以學(xué)員會有這些疑問,是因為大家普遍對Java相關(guān)概念聽說的太多而了解的又相對少的緣故。 學(xué)通Java語言需要一個過程,所有Java相關(guān)的概念都會在學(xué)習(xí)的過程中逐漸變得清昕。這個過程的開始就是要先學(xué)會標(biāo)

 

Java應(yīng)該怎么學(xué)?Java能做什么?什么是Applet?什么是Servlet、Jsp、EJB?還有Webspere、Weblogic又是做什么的等等。之所以學(xué)員會有這些疑問,是因為大家普遍對Java相關(guān)概念聽說的太多而了解的又相對少的緣故。

學(xué)通Java語言需要一個過程,所有Java相關(guān)的概念都會在學(xué)習(xí)的過程中逐漸變得清昕。這個過程的開始就是要先學(xué)會標(biāo)準(zhǔn)的Java技術(shù)(J2SE),然后是學(xué)Java的簡單Web運用,然后分布式運用,再以后對Java的移動技術(shù)運用就很容易理解了。

以下是Java標(biāo)準(zhǔn)技術(shù)的一些要點

一、Java的跨平臺性,即一次編譯到處運行

簡單地說Java的跨平臺性就是指,編譯后的Java程序可直接在不同的平臺上運行而不用重新編譯,這一特性使得Java隨著Web應(yīng)用的普及而迅速普及起來。而Java的跨平臺性是如何實現(xiàn)的呢?這就要理解Java虛擬機和字節(jié)碼的概念。

實際上,編譯后的Java代碼并不是傳統(tǒng)的二進制代碼(如Windows下的.exe文件),而是Java字節(jié)碼,這種字節(jié)碼文件是不能直接在操作系統(tǒng)上執(zhí)行的。要想在一個操作系統(tǒng)上運行一個Java程序必須有一個中間環(huán)節(jié)來負責(zé)將Java字節(jié)碼解釋成二進制碼,這個中間環(huán)節(jié)就是Java虛擬機(簡稱JVM)。由于目前大多數(shù)操作系統(tǒng)已經(jīng)實現(xiàn)了JVM,所以Java輕松實現(xiàn)跨平臺性。

二、面象對象技術(shù)

Java全面支持面象對象技術(shù),這體現(xiàn)在Class(類)是Java程序構(gòu)成的基本單元,一個Java程序通常由許多Class組成,而且這些Class還會有一定的繼承關(guān)系,Java支持Class的單繼承,從而使類之間的繼承關(guān)系更明確。繼承的結(jié)果產(chǎn)生類的多態(tài)性,類的多態(tài)本質(zhì)上講就是可以用父類的引用訪問繼承類的實現(xiàn)(子類對象),類的這種多態(tài)性最終形成了組件對象模型的基礎(chǔ),即通過接口(父類)訪問實現(xiàn)(子類)。

三、Java中的I/O操作

Java中以字節(jié)流(InputStream和OutputStream)、節(jié)符流(Reader和Writer)來分別讀寫二進制數(shù)據(jù)和字符數(shù)據(jù),使用非常簡單有效。Java類庫中的File類不僅提供文件操作而且還包含文件夾操作,如下面這幾行代碼可以列出C盤根目錄下的所有文件:

File f=new File("c://");

String [] m_dir= f.list();

for(int i=0;iSystem.out.println(m_dir[i]);

四、Java中的圖形及事件處理

可以用awt包或swing包的Java類來進行大部分的Java圖形界面設(shè)計,下面的幾行代碼將產(chǎn)生一個200*200像素的窗體:

Frame f=new Frame("Welcome");

f.setSize(200,200);

f.setVisible(true);

默認情況下,F(xiàn)rame窗體的關(guān)閉按鈕不起作用,這也是Java初學(xué)者迷惑的地方。為了使用戶按下關(guān)閉按鈕時能關(guān)閉Frame窗體,需要讓這個窗體響應(yīng)一個WindowEvent事件,具體的做法就是給這個窗體添加一個事件監(jiān)聽器對象,這個事件監(jiān)聽器就是WindowListener接口的實現(xiàn)。在上面的代碼中插入如下代碼就可以關(guān)閉窗體:

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

這里用到一個無名內(nèi)部類,無名內(nèi)部類是Java中內(nèi)部類的一種靈活運用方式。

五、Java中線程及同步控制

線程概念的引入是為了實現(xiàn)并行處理,從而提高程序的效率。Java中的線程實現(xiàn)非常簡單,可以用兩種方式來創(chuàng)建線程,一種是實現(xiàn)Runnable接口,另一種是繼承Thread類重寫run()方法。兩種方式唯一的不同就是前者保留了繼承一個類的可能(因為Java只支持類的單繼承,但接口沒有此限制)。

永遠都用start()方法來啟動一個線程,線程類中的run()可以被直接調(diào)用,但決不是啟動一個線程,二者有著本質(zhì)的區(qū)別。

用同步控制關(guān)鍵字synchronized來保護線程敏感數(shù)據(jù),synchronized塊中的內(nèi)容可以保證同一時刻只能被一個線程訪問,所以其中的數(shù)據(jù)是線程安全的。

用Object類中的wait()和notify()方法可以實現(xiàn)線程間交互,但要記住wait()和notify()方法只有發(fā)生在同一個對象上才能真正實現(xiàn)線程間交互。被某一對象wait()方法阻塞的線程需要另外一個調(diào)用了同一對象notify()的線程干預(yù)才能恢復(fù)運行。notify()方法一次喚醒一個被wait()方法阻塞的線程,notifyAll()方法可以一次喚醒所有被wait()方法阻塞的線程。

六、Java本地方法(native方法)的實現(xiàn)

Java不是完美的,Java的不足除了體現(xiàn)在運行速度上要比傳統(tǒng)的C++慢許多之外,Java無法直接訪問到操作系統(tǒng)底層(如系統(tǒng)硬件等),為此Java使用native方法來擴展Java程序的功能。

可以將native方法比作Java程序同C程序的接口,其實現(xiàn)步驟:

1、在Java中聲明native()方法,然后編譯;

2、用javah產(chǎn)生一個.h文件;

3、寫一個.cpp文件實現(xiàn)native導(dǎo)出方法,其中需要包含第二步產(chǎn)生的.h文件(注意其中又包含了JDK帶的jni.h文件);

4、將第三步的.cpp文件編譯成動態(tài)鏈接庫文件;

5、在Java中用System.loadLibrary()方法加載第四步產(chǎn)生的動態(tài)鏈接庫文件,這個native()方法就可以在Java中被訪問了。

上述所提及的一些Java技術(shù)具有一定的普遍性,它們基本上是在Java各個方面的運用中都需要掌握的術(shù)。實際上Java的運用非常廣泛,而且每個方面都需要遵循不同的規(guī)范。以下是對Java應(yīng)用的簡要介紹。

一)理解Java SDK的三個版本

Java SDK Micro Edition (J2ME)

用于開發(fā)掌上電腦、手機等移動通信設(shè)備上使用的應(yīng)用程序。并不是所有的移動設(shè)備都支持Java,只有具備J2ME運行環(huán)境(JVM+J2ME API)的設(shè)備才能運行Java程序。J2ME的集成開發(fā)工具(通常都有帶有一些訪真器)有 Sun 的J2ME Wireless Toolkit 、IBM的Visul Age Micro Edition 等。

Java SDK Standard Edition(J2SE)

主要用于開發(fā)一般臺式機應(yīng)用程序。我們平時所說的JDK就指J2SE,而我們學(xué)Java就是從學(xué)習(xí)J2SE開始的。

Java SDK Enterprise Edition (J2EE)

用于開發(fā)分布式的企業(yè)級大型應(yīng)用程序。其中的核心是Entetprise Java Beans(EJB,分布式Java組件)的開發(fā)。

(二)Java小程序 (Applet)

Java小程序是一個繼承了Applet類并重寫了init()、paint()、stop()等方法的的Java類,它被布署在Web服務(wù)器(如IIS)上,當(dāng)客戶端請求Web頁時,瀏覽器從Web服務(wù)器上將其下載到本地客戶端,然后,瀏覽器創(chuàng)建該Applet類的實例并調(diào)用其init()方法,從安全角度考慮,Applet沒有訪問本地文件的權(quán)限。由于Applet是被瀏覽器執(zhí)行的,所以Applet不需要一個main()方法。實際上,除了Java Application之外,所有其它Java應(yīng)用都不需要一個main()方法。

(三)服務(wù)器端Java小程序 (Servlet)

Servlet也是一個Java類,和Applet形成對比,Servlet是運行于服務(wù)器端的Java小程序,而且Servlet需要一個單獨的Web服務(wù)器(如Tomcat)做容器。除此之外,Servlet中用到的一些類(如HttpServlet)并不包含在J2SE API中,所以需要將Servlet.jar(在Tomcat的common\lib文件夾下)加到環(huán)境變量中去。下面是一個簡單的Servlet例子:

public class Myservlet extends HttpServlet{

public void doGet(HttpServletRequest request,HttpServletResponse response)

{

try{

response.setContentType("text/html");

PrintWriter out=response.getWriter();

out.println("");

out.println("");

out.println("Hello world");

out.println("");

out.println("");

}catch(IOException e){}

}

}

將這個Class文件編譯后放至Tomcat\webapps\examples\WEB-INF\classes下,然后在瀏覽器地址欄里輸入http://127.0.0.1:8080/examples/servlet/Myservlet即可看到 Hello world出現(xiàn)在瀏覽器中。

(四)Java Server Page (JSP)

同Servlet相似的是,JSP運行于Web服務(wù)器端,并且也需要Tomcat之類的容器。不同的是,由于JSP是將Java代碼嵌在html標(biāo)記里(同ASP一樣用<% ...%>),JSP的界面設(shè)計同后臺開發(fā)人員的工作可以有效分離。可以想像讓開發(fā)人員用Servlet寫一個花捎的Web頁面有多困難,所以JSP+Servlet混合Web應(yīng)用是比較理想的選擇。

看起來JSP同ASP的實現(xiàn)機制大同小異,其實也存在著本質(zhì)的區(qū)別。所有的ASP頁面都是解釋運行的,而JSP頁在第一次被請求時會被編譯,再以后的客戶請求都是直接運行服務(wù)器上的.class文件(在Tomcat的Work文件夾下),所以JSP要比ASP速度上快許多。

(五)Java Beans

Java Bean 是可復(fù)用的組件,對Java Bean并沒有嚴(yán)格的規(guī)范,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創(chuàng)建(如Tomcat)的,所以Java Bean應(yīng)具有一個無參的構(gòu)造器,另外,通常Java Bean還要實現(xiàn)Serializable接口用于實現(xiàn)Bean的持久性。

(六)Enterprise Java Beans (EJB)

Java Bean實際上相當(dāng)于微軟COM模型中的本地進程內(nèi)COM組件,它是不能被跨進程訪問的。Enterprise Java Bean 相當(dāng)于DCOM,即分布式組件。它是基于Java的遠程方法調(diào)用(RMI)技術(shù)的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被布署在諸如Webspere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創(chuàng)建和管

關(guān)注此文的讀者還看過:

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多