国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

“Java網(wǎng)絡(luò)編程”與“軟件構(gòu)件與中間件”教學(xué)探索

2018-04-11 06:35:30郭松超
實(shí)驗(yàn)室研究與探索 2018年2期
關(guān)鍵詞:中間件服務(wù)器端網(wǎng)頁(yè)

孫 燕, 郭松超, 張 芮

(青海民族大學(xué) 計(jì)算機(jī)學(xué)院,西寧 810007)

0 導(dǎo) 語(yǔ)

隨著科學(xué)技術(shù)的近年來(lái)的蓬勃發(fā)展,Java[1]技術(shù)框架的日益豐富,高校編程語(yǔ)言課程也增加了比C[2]和C++[3]更具可移植性好、便于異構(gòu)系統(tǒng)通信、跨平臺(tái)的java[4]語(yǔ)言程序設(shè)計(jì)課程,基于Java[5]的各種應(yīng)用程序及處于各種通信分布式應(yīng)用軟件中間的獨(dú)立應(yīng)用程序—中間件技術(shù)課程也被高校所重視,但一般從學(xué)生的培養(yǎng)方案中:中間件技術(shù)被劃為軟件工程專業(yè)的學(xué)生,而這個(gè)專業(yè)的學(xué)生對(duì)于通信的整體的結(jié)構(gòu)認(rèn)識(shí)欠缺,因這個(gè)專業(yè)的網(wǎng)絡(luò)專業(yè)課程開設(shè)的少,軟件工程的學(xué)生的視野局限于單個(gè)獨(dú)立的小的項(xiàng)目,給軟件工程專業(yè)的學(xué)生講清楚網(wǎng)絡(luò)通信的整體結(jié)構(gòu)和概念是十分必要的。本文從網(wǎng)絡(luò)編程概念和一個(gè)Web Java[6]項(xiàng)目詳述了通信的概念和通信的結(jié)構(gòu)以及通信中各個(gè)組成部分之間的關(guān)系。

1 Java網(wǎng)絡(luò)編程概念

Java[7]網(wǎng)絡(luò)編程基礎(chǔ)需要OSI參考模型及實(shí)際在Internet使用的體系TCP/IP,其中對(duì)于學(xué)生從體系結(jié)構(gòu)去理解通信的概念至關(guān)重要,這里用郵遞員投遞信件的實(shí)例來(lái)講解通信概念:一個(gè)人工作需要給另外一人寫信交流,他們之間的真正的溝通是通過郵政系統(tǒng)的投遞實(shí)現(xiàn)的,如圖1所示。通常,不會(huì)去考慮分析信件投遞的實(shí)際過程,人們會(huì)覺得通信是水平方向的;由圖1可見,水平方向通信是由垂直方向的數(shù)據(jù)的投遞完成的。在Java中網(wǎng)絡(luò)編程教學(xué)中也涉及到2個(gè)通信的端點(diǎn)(客戶端和服務(wù)器端),它們之間的溝通也要通過網(wǎng)絡(luò)的垂直方向的數(shù)據(jù)傳輸實(shí)現(xiàn)。這兩個(gè)通信的端點(diǎn)之間通信如果基于Java語(yǔ)言實(shí)現(xiàn),一樣需要有一個(gè)數(shù)據(jù)傳輸?shù)耐ǖ?通路),通路在網(wǎng)絡(luò)編程里實(shí)際就是Socket,學(xué)生們?cè)趯W(xué)習(xí)Socket編程時(shí),學(xué)生從圖1理解基于Java Socket[8]編程就變得容易可行了,下文會(huì)詳述通信的國(guó)際標(biāo)準(zhǔn)模型及通信數(shù)據(jù)的解封裝。

圖1 信件投遞過程

2 中間件

中間件一般的定義是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助它聯(lián)系服務(wù)器端實(shí)現(xiàn)計(jì)算機(jī)資源共享和網(wǎng)絡(luò)通信;它是異構(gòu)系統(tǒng)溝通的橋梁。Java[10-15]中的很多框架也起到如上功能,它是Web Java項(xiàng)目中各種由socket的技術(shù)整合起來(lái)的中間的用于實(shí)現(xiàn)B/S,或是C/S模型軟件系統(tǒng)必不可少的位于客戶端和服務(wù)器端的中間橋梁,如Hibernate框架就是一個(gè)中間件技術(shù),由圖2整體就能看出,Hibernate處于Java Application和Database中間,所以在Web Java教學(xué)中也可以將Hibernate視為中間件技術(shù),這里對(duì)于它的細(xì)節(jié)組成不在贅述。

圖2 Hibernate框架

在中間件教學(xué)過程中,因?yàn)橹虚g件軟件所處的編程位置,學(xué)生需要明白中間件就像是網(wǎng)絡(luò)中的路由器所處網(wǎng)絡(luò)位置一樣,中間件的作用和路由器的作用是一樣的。它是對(duì)等線程(客戶端和服務(wù)器端)數(shù)據(jù)互通的中間通道;中間件應(yīng)該支持同步和異步傳輸,因?yàn)橹虚g件需要將不同硬件平臺(tái)(IBM主機(jī)、UNIX工作站、PC機(jī))之上安裝的不同的操作系統(tǒng)(UNIX、Microsoft Windows、MacOSX);使用C、C++、C#、Java、Delphi開發(fā)語(yǔ)言完成不同的數(shù)據(jù)管理(Oracle、SQLServer、XML等)而且這種數(shù)據(jù)的通信是在各種異構(gòu)的網(wǎng)絡(luò)(Ethernet、IPX/SPX、FDDI、X.25、TCP/IP)實(shí)現(xiàn)的;這些中間件作為低層組件,為底層的通信模塊提供了一定層次的抽象,同時(shí)也將更高層次的地址標(biāo)識(shí)和數(shù)據(jù)轉(zhuǎn)換等功能留給高一層的服務(wù)模塊。這里需要一提的是中間件連接接數(shù)據(jù)庫(kù)協(xié)議也有多種(微軟的ODBC和Sun公司JDBC)。以上是中間件教學(xué)必須講清的概念。其次才該去了解熟悉各個(gè)公司生產(chǎn)的中間件技術(shù)細(xì)節(jié)。

對(duì)于現(xiàn)在應(yīng)用的中間件有與分布對(duì)象技術(shù)(Distributed Object Technology)合:DCOM(分布式組件對(duì)象模型);CORBA(公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu));EJB(企業(yè)Java Bean)技術(shù);與企業(yè)應(yīng)用集成ApplicationIntegration,EAI)整合;(Enterprise與Web服務(wù)(Web Services)整合的Web服務(wù)中間件技術(shù),以上技術(shù)都是現(xiàn)在高校學(xué)生應(yīng)該學(xué)習(xí)的。

3 教學(xué)實(shí)例:Java程序調(diào)試

由上面的概念介紹,本文著重強(qiáng)調(diào)了Java編程首先弄清通信過程不是一個(gè)簡(jiǎn)單的過程,知道了在客戶端和服務(wù)器端還需要一些獨(dú)立的應(yīng)用程序連接通信的兩端,其次讓學(xué)生的對(duì)通信的概念清晰,明了通信的體系結(jié)構(gòu)更是重要的,下面以一個(gè)Web Java項(xiàng)目程序在不同的編譯平臺(tái)的結(jié)構(gòu)和通信國(guó)際標(biāo)準(zhǔn)模型來(lái)說(shuō)明建立通信的整體框架的必要及重要性。

教學(xué)實(shí)例是一個(gè)基于Java的網(wǎng)上購(gòu)物平臺(tái),學(xué)生可以使用的IDE平臺(tái)有NetBeans和Eclipse及Myeclipse;基于Java的Web程序項(xiàng)目,那么學(xué)習(xí)Web Java編程,對(duì)于學(xué)生需要以下的準(zhǔn)備和步驟完成。

3.1 各種Java編程IDE平臺(tái)

對(duì)于學(xué)生選擇一個(gè)自己習(xí)慣用的熟悉的IDE平臺(tái)在學(xué)習(xí)Java編程項(xiàng)目至關(guān)重要,學(xué)生需要熟悉它們各有什么優(yōu)缺點(diǎn),如eclipse的數(shù)據(jù)流的關(guān)系從導(dǎo)航欄清楚看出(見圖3),從這個(gè)項(xiàng)目樹狀圖可以看出src文件夾是存放*.Java一般部署在服務(wù)器端的文件;中間的Web App library等有小書形狀的是服務(wù)器端文件所需的類庫(kù)或者框架;下面的Webroot文件夾是放置網(wǎng)頁(yè)的文件夾,其中有網(wǎng)頁(yè)所需的各種文件:*.jsp; *.js ;*.css; *.jpg;*.jsp是用%符號(hào)將Java語(yǔ)句嵌入在網(wǎng)頁(yè)里的網(wǎng)頁(yè)文件;*.js是將*.jsp中javascript單獨(dú)存儲(chǔ)為腳本文件;*.css是控制網(wǎng)頁(yè)格式的文件,*.jpg是各種網(wǎng)頁(yè)所需的各種圖片。這個(gè)樹狀的圖的最下面是服務(wù)器,此圖沒有顯示。我們可以直觀感受數(shù)據(jù)從網(wǎng)頁(yè)的請(qǐng)求到服務(wù)器端的數(shù)據(jù)流處

圖3 eclipse項(xiàng)目樹結(jié)構(gòu)

理過程。這棵樹上的每個(gè)節(jié)點(diǎn)是有內(nèi)在看不見的通信關(guān)系和聯(lián)系的,不是隨便羅列上去的,圖3是eclipse下項(xiàng)目的樹結(jié)構(gòu);這種樹狀結(jié)構(gòu)可以給學(xué)生們講出數(shù)據(jù)從客戶端到服務(wù)器端的數(shù)據(jù)傳遞垂直方向流向,這里強(qiáng)調(diào)一點(diǎn):客戶端與服務(wù)器端的通信(溝通)在人們的思維中,通常是水平的,而這就是網(wǎng)絡(luò)專業(yè)上講的對(duì)等層通信概念;但是對(duì)于真正的通信的理解是該從垂直方向數(shù)據(jù)流支撐了水平方向的虛通信(這里的虛指數(shù)據(jù)流向),如圖4所示。

圖4ISO/OSI RM

圖4中的上部是通信涉及的節(jié)點(diǎn)(設(shè)備A 中間節(jié)點(diǎn)2個(gè) 設(shè)備B)和連接它們的物理介質(zhì),下部是ISO/OSIRM(國(guó)際標(biāo)準(zhǔn)化組織/開放系統(tǒng)互聯(lián)參考模型)體系將每個(gè)節(jié)點(diǎn)分層,對(duì)等層之間是用虛線連接的,它們之間遵循著這一層通信的約定(協(xié)議),可以看出對(duì)于通信過程的理解是從垂直和水平兩個(gè)層次理解是必要的。這正是Web Java編程教學(xué)中讓學(xué)生理解和掌握各種已有框架的基礎(chǔ)。還有項(xiàng)目實(shí)現(xiàn)具體過程是程序流從服務(wù)器端響應(yīng)客戶端時(shí)的數(shù)據(jù)傳輸過程中數(shù)據(jù)是一層層封裝的,正如圖5所示。再講服務(wù)器端實(shí)現(xiàn)時(shí)需要這個(gè)圖。這里列舉一個(gè)代碼如圖6所示,從中間的第11行可以看出數(shù)據(jù)的封裝關(guān)系,說(shuō)明客戶端和服務(wù)器端的數(shù)據(jù)通信是封裝和解封裝的數(shù)據(jù)流完成的。

圖5 數(shù)據(jù)的解封裝

圖6 數(shù)據(jù)代碼封裝實(shí)例

3.2 NetBeans平臺(tái)

對(duì)于NetBeans將服務(wù)器單獨(dú)放置在一個(gè)標(biāo)簽里,如圖7所示其樹結(jié)構(gòu)似乎沒有eclipse有通信的流向清晰,而且數(shù)據(jù)庫(kù)配置在另外的標(biāo)簽上在MyEclipse中有一個(gè)可視的網(wǎng)頁(yè)的界面,所以MyEclipse對(duì)于初學(xué)Web Java項(xiàng)目的人員來(lái)說(shuō)很受喜愛。

圖7 NetBeans項(xiàng)目樹結(jié)構(gòu)

3.3 IDE平臺(tái)的理解

對(duì)于調(diào)試Java語(yǔ)言的IDE平臺(tái)理解可以想象它是一個(gè)桌子或是容器,將Java的服務(wù)器端的程序,類庫(kù)、各種編程所需的組件所需的配置文件和客戶端放在桌面和容器里完成Web Java項(xiàng)目的編寫調(diào)試和發(fā)布。

3.4 Java項(xiàng)目編寫步驟

(1) 考慮編程的項(xiàng)目需要的類庫(kù)和Java包或及框架;查看相關(guān)框架文檔弄懂框架結(jié)構(gòu);

(2) 將這些框架所需的.JAR包事先導(dǎo)入平臺(tái);

(3) 選擇發(fā)布Web Java的網(wǎng)頁(yè)服務(wù)器(比如Windows中IIS,Linux下的Apache的Tomcat);

(4) 下載安裝后臺(tái)數(shù)據(jù)庫(kù)如MySQL或是SQL Server軟件;

(5) 再導(dǎo)入系統(tǒng).JAR包時(shí)不要忘記導(dǎo)入Java與數(shù)據(jù)庫(kù)相連的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包。比如MySQL連接Java需要mysql-connector-java-5.0.0.jar驅(qū)動(dòng)。這個(gè)包實(shí)際也是由Java語(yǔ)言寫出的連接數(shù)據(jù)庫(kù)的類和實(shí)現(xiàn)方法。網(wǎng)絡(luò)打成包類,直接使用了。

4 結(jié) 語(yǔ)

本文通過對(duì)Java網(wǎng)絡(luò)編程及Java中間件概念的闡述及一個(gè)實(shí)例的講解,主旨是讓學(xué)習(xí)Java網(wǎng)絡(luò)編程的學(xué)生能夠在開發(fā)項(xiàng)目時(shí)對(duì)通信的復(fù)雜實(shí)現(xiàn)能從網(wǎng)絡(luò)體系結(jié)構(gòu)的整體出發(fā),獲得簡(jiǎn)潔明了條理清晰的編程思想,指導(dǎo)具體項(xiàng)目的開發(fā)和運(yùn)維。

參考文獻(xiàn)(References):

[1]OpenJDK: GPLv2+Classpath Exception.Openjdk.java.net. Copyright (C) 1989, 1991 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

[2]BCL For Java SE. Oracle com[DB/OL], 2013.http://www.oracle.com/technetwork/java/javase/terms/license/index.html

[3]Eckel B. Thinking in Java[M]. 4rd ed. USA: Prentice Hall PTR, 2006: 13-14.

[4]Barnes D, lling M Ko. Objects First with Java A Practical Introduction using BlueJ[M]. 4rd ed. USA: Prentice Hall PTR, 2008: 42-51.

[5]Ko M, lling B Quig, Patterson A. The BlueJ system and its pedagogy[J]. Journal of Computer Science Education, 2003, 13(4):249-268.

[6]Fisker K, McCall D, lling M Ko,etal. Group Work Support for the BlueJ IDE[C]∥Proc the 13th Annual Conference on Innovation and Technology in Computer Science Education (ITiCSE 2008). ACM Press 2008:163-168.

[7]Dean J, Ghemawat S. Mapreduce: A Flexible Data Processing Tool[J]. Commun. ACM, 2010,53(1):72-77.

[8]Sutter H, Larus J. Software and the concurrency revolution[J]. Queue, 2005, 3(7):54-62.

[9]Oaks S, Wong H, Java Threads[M]. 3rd ed O’Reilly Media, Inc, 2004.

[10]Chandra R, Dagum L, Kohr D, McDon-ald, and R. Menon, Parallel Programming in OpenMP[M]. Morgan Kaufmann Publishers Inc, 2001.

[11]Frigo M, Leiserson C E, Randall K H. The implementation of the Cilk-5 multithreaded language[C]∥Proceedings of the ACM SIGPLAN’98 Conference on Programming Language Design and Implementation (PLDI), 1998(1):212-223.

[12]Shafi A, Carpenter B, Baker M,etal. Nested paral- lelism for multi-core HPC systems using Java[J]. Journal of Parallel and Distributed Computing, 2009, 69(6):532-545.

[13]Taboada G L, Tourin J,etal. F-MPJ: Scal- able Java Message-passing Communications on Parallel Systems[J]. J Supercomput, 2012,60(1):117-140.

[14]Vega-Gisbert O, Roman J E, Groβ S,etal. Towards the Availability of Java Bindings in Open-MPI[C]∥Proceedings of the 20th European MPI Users’ Group Meeting, EuroMPI’13.ACM, 2013(1):141-142.

[15]White T. Hadoop: The Definitive Guide[M]. O’Reilly Media, Inc, 2009:26-36.

猜你喜歡
中間件服務(wù)器端網(wǎng)頁(yè)
RFID中間件技術(shù)及其應(yīng)用研究
電子制作(2018年14期)2018-08-21 01:38:10
基于CSS的網(wǎng)頁(yè)導(dǎo)航欄的設(shè)計(jì)
電子制作(2018年10期)2018-08-04 03:24:38
基于VanConnect中間件的設(shè)計(jì)與開發(fā)
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
基于URL和網(wǎng)頁(yè)類型的網(wǎng)頁(yè)信息采集研究
電子制作(2017年2期)2017-05-17 03:54:56
網(wǎng)頁(yè)制作在英語(yǔ)教學(xué)中的應(yīng)用
在Windows中安裝OpenVPN
中間件在高速公路領(lǐng)域的應(yīng)用
10個(gè)必知的網(wǎng)頁(yè)設(shè)計(jì)術(shù)語(yǔ)
一種支持智能環(huán)境構(gòu)建的中間件
桃江县| 莫力| 西贡区| 繁峙县| 大理市| 虎林市| 甘泉县| 黑山县| 上思县| 临沧市| 大城县| 阳朔县| 乌审旗| 时尚| 洛浦县| 肃北| 磐石市| 临泉县| 新野县| 什邡市| 揭东县| 连云港市| 承德县| 米林县| 当阳市| 屯门区| 鲁山县| 临泽县| 屏南县| 疏勒县| 六安市| 四会市| 扎兰屯市| 临颍县| 永吉县| 巨野县| 广安市| 苗栗县| 大名县| 富裕县| 高碑店市|