APP下载

“Java网络编程”与“软件构件与中间件”教学探索

2018-04-11郭松超

实验室研究与探索 2018年2期
关键词:中间件服务器端网页

孙 燕, 郭松超, 张 芮

(青海民族大学 计算机学院,西宁 810007)

0 导 语

随着科学技术的近年来的蓬勃发展,Java[1]技术框架的日益丰富,高校编程语言课程也增加了比C[2]和C++[3]更具可移植性好、便于异构系统通信、跨平台的java[4]语言程序设计课程,基于Java[5]的各种应用程序及处于各种通信分布式应用软件中间的独立应用程序—中间件技术课程也被高校所重视,但一般从学生的培养方案中:中间件技术被划为软件工程专业的学生,而这个专业的学生对于通信的整体的结构认识欠缺,因这个专业的网络专业课程开设的少,软件工程的学生的视野局限于单个独立的小的项目,给软件工程专业的学生讲清楚网络通信的整体结构和概念是十分必要的。本文从网络编程概念和一个Web Java[6]项目详述了通信的概念和通信的结构以及通信中各个组成部分之间的关系。

1 Java网络编程概念

Java[7]网络编程基础需要OSI参考模型及实际在Internet使用的体系TCP/IP,其中对于学生从体系结构去理解通信的概念至关重要,这里用邮递员投递信件的实例来讲解通信概念:一个人工作需要给另外一人写信交流,他们之间的真正的沟通是通过邮政系统的投递实现的,如图1所示。通常,不会去考虑分析信件投递的实际过程,人们会觉得通信是水平方向的;由图1可见,水平方向通信是由垂直方向的数据的投递完成的。在Java中网络编程教学中也涉及到2个通信的端点(客户端和服务器端),它们之间的沟通也要通过网络的垂直方向的数据传输实现。这两个通信的端点之间通信如果基于Java语言实现,一样需要有一个数据传输的通道(通路),通路在网络编程里实际就是Socket,学生们在学习Socket编程时,学生从图1理解基于Java Socket[8]编程就变得容易可行了,下文会详述通信的国际标准模型及通信数据的解封装。

图1 信件投递过程

2 中间件

中间件一般的定义是一种独立的系统软件或服务程序,分布式应用软件借助它联系服务器端实现计算机资源共享和网络通信;它是异构系统沟通的桥梁。Java[10-15]中的很多框架也起到如上功能,它是Web Java项目中各种由socket的技术整合起来的中间的用于实现B/S,或是C/S模型软件系统必不可少的位于客户端和服务器端的中间桥梁,如Hibernate框架就是一个中间件技术,由图2整体就能看出,Hibernate处于Java Application和Database中间,所以在Web Java教学中也可以将Hibernate视为中间件技术,这里对于它的细节组成不在赘述。

图2 Hibernate框架

在中间件教学过程中,因为中间件软件所处的编程位置,学生需要明白中间件就像是网络中的路由器所处网络位置一样,中间件的作用和路由器的作用是一样的。它是对等线程(客户端和服务器端)数据互通的中间通道;中间件应该支持同步和异步传输,因为中间件需要将不同硬件平台(IBM主机、UNIX工作站、PC机)之上安装的不同的操作系统(UNIX、Microsoft Windows、MacOSX);使用C、C++、C#、Java、Delphi开发语言完成不同的数据管理(Oracle、SQLServer、XML等)而且这种数据的通信是在各种异构的网络(Ethernet、IPX/SPX、FDDI、X.25、TCP/IP)实现的;这些中间件作为低层组件,为底层的通信模块提供了一定层次的抽象,同时也将更高层次的地址标识和数据转换等功能留给高一层的服务模块。这里需要一提的是中间件连接接数据库协议也有多种(微软的ODBC和Sun公司JDBC)。以上是中间件教学必须讲清的概念。其次才该去了解熟悉各个公司生产的中间件技术细节。

对于现在应用的中间件有与分布对象技术(Distributed Object Technology)合:DCOM(分布式组件对象模型);CORBA(公共对象请求代理体系结构);EJB(企业Java Bean)技术;与企业应用集成ApplicationIntegration,EAI)整合;(Enterprise与Web服务(Web Services)整合的Web服务中间件技术,以上技术都是现在高校学生应该学习的。

3 教学实例:Java程序调试

由上面的概念介绍,本文着重强调了Java编程首先弄清通信过程不是一个简单的过程,知道了在客户端和服务器端还需要一些独立的应用程序连接通信的两端,其次让学生的对通信的概念清晰,明了通信的体系结构更是重要的,下面以一个Web Java项目程序在不同的编译平台的结构和通信国际标准模型来说明建立通信的整体框架的必要及重要性。

教学实例是一个基于Java的网上购物平台,学生可以使用的IDE平台有NetBeans和Eclipse及Myeclipse;基于Java的Web程序项目,那么学习Web Java编程,对于学生需要以下的准备和步骤完成。

3.1 各种Java编程IDE平台

对于学生选择一个自己习惯用的熟悉的IDE平台在学习Java编程项目至关重要,学生需要熟悉它们各有什么优缺点,如eclipse的数据流的关系从导航栏清楚看出(见图3),从这个项目树状图可以看出src文件夹是存放*.Java一般部署在服务器端的文件;中间的Web App library等有小书形状的是服务器端文件所需的类库或者框架;下面的Webroot文件夹是放置网页的文件夹,其中有网页所需的各种文件:*.jsp; *.js ;*.css; *.jpg;*.jsp是用%符号将Java语句嵌入在网页里的网页文件;*.js是将*.jsp中javascript单独存储为脚本文件;*.css是控制网页格式的文件,*.jpg是各种网页所需的各种图片。这个树状的图的最下面是服务器,此图没有显示。我们可以直观感受数据从网页的请求到服务器端的数据流处

图3 eclipse项目树结构

理过程。这棵树上的每个节点是有内在看不见的通信关系和联系的,不是随便罗列上去的,图3是eclipse下项目的树结构;这种树状结构可以给学生们讲出数据从客户端到服务器端的数据传递垂直方向流向,这里强调一点:客户端与服务器端的通信(沟通)在人们的思维中,通常是水平的,而这就是网络专业上讲的对等层通信概念;但是对于真正的通信的理解是该从垂直方向数据流支撑了水平方向的虚通信(这里的虚指数据流向),如图4所示。

图4ISO/OSI RM

图4中的上部是通信涉及的节点(设备A 中间节点2个 设备B)和连接它们的物理介质,下部是ISO/OSIRM(国际标准化组织/开放系统互联参考模型)体系将每个节点分层,对等层之间是用虚线连接的,它们之间遵循着这一层通信的约定(协议),可以看出对于通信过程的理解是从垂直和水平两个层次理解是必要的。这正是Web Java编程教学中让学生理解和掌握各种已有框架的基础。还有项目实现具体过程是程序流从服务器端响应客户端时的数据传输过程中数据是一层层封装的,正如图5所示。再讲服务器端实现时需要这个图。这里列举一个代码如图6所示,从中间的第11行可以看出数据的封装关系,说明客户端和服务器端的数据通信是封装和解封装的数据流完成的。

图5 数据的解封装

图6 数据代码封装实例

3.2 NetBeans平台

对于NetBeans将服务器单独放置在一个标签里,如图7所示其树结构似乎没有eclipse有通信的流向清晰,而且数据库配置在另外的标签上在MyEclipse中有一个可视的网页的界面,所以MyEclipse对于初学Web Java项目的人员来说很受喜爱。

图7 NetBeans项目树结构

3.3 IDE平台的理解

对于调试Java语言的IDE平台理解可以想象它是一个桌子或是容器,将Java的服务器端的程序,类库、各种编程所需的组件所需的配置文件和客户端放在桌面和容器里完成Web Java项目的编写调试和发布。

3.4 Java项目编写步骤

(1) 考虑编程的项目需要的类库和Java包或及框架;查看相关框架文档弄懂框架结构;

(2) 将这些框架所需的.JAR包事先导入平台;

(3) 选择发布Web Java的网页服务器(比如Windows中IIS,Linux下的Apache的Tomcat);

(4) 下载安装后台数据库如MySQL或是SQL Server软件;

(5) 再导入系统.JAR包时不要忘记导入Java与数据库相连的数据库驱动包。比如MySQL连接Java需要mysql-connector-java-5.0.0.jar驱动。这个包实际也是由Java语言写出的连接数据库的类和实现方法。网络打成包类,直接使用了。

4 结 语

本文通过对Java网络编程及Java中间件概念的阐述及一个实例的讲解,主旨是让学习Java网络编程的学生能够在开发项目时对通信的复杂实现能从网络体系结构的整体出发,获得简洁明了条理清晰的编程思想,指导具体项目的开发和运维。

参考文献(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.

猜你喜欢

中间件服务器端网页
Linux环境下基于Socket的数据传输软件设计
RFID中间件技术及其应用研究
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Android 平台的OSGi 架构中间件的研究与应用
基于URL和网页类型的网页信息采集研究
基于Qt的安全即时通讯软件服务器端设计
网页制作在英语教学中的应用
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用