技术培训-02-JAVA开发体系简介_第1页
技术培训-02-JAVA开发体系简介_第2页
技术培训-02-JAVA开发体系简介_第3页
技术培训-02-JAVA开发体系简介_第4页
技术培训-02-JAVA开发体系简介_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件开发技术培训

第二课:Java开发体系介绍网管中心业务支撑室2012年4月内容Java语言简介1JavaEE体系结构2客户层技术3Web层技术4业务层技术5持久层技术6应用服务器介绍7SSH开源框架8其它9Java是什么Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。1995年5月23日,Java语言诞生1996年1月,第一个JDK-JDK1.0诞生1998年12月8日,JAVA2企业平台J2EE发布1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)2005年6月,Java的各种版本已经更名,J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME2009年04月20日,甲骨文74亿美元收购Sun。取得java的版权。2011年7月,甲骨文公司发布java7的正式版。Java平台分类Java语言分为三个平台:JavaSE:JavaPlatform,StandardEdition,适用于桌面系统的Java2平台标准版JavaEE:JavaPlatform,EnterpriseEdition,适用于创建服务器应用程序和服务的Java2平台企业版JavaME:JavaPlatform,MicroEdition,适用于小型设备和智能卡的Java2平台Micro版Java语言主要特性Java编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的解释执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。熟悉而简单部分解释执行Java的设计目标是要支持网络应用程序。一般而言,网络是由许多不同的平台系统构成,包括各种CPU与操作系统结构。为了让Java应用程序能够在网络上任何地方执行,其编译器将会生成一种具备结构中立性的目标文件格式(bytecode)。编译后的程序码可以在提供Java运行系统的多种不同处理器上面执行。平台独立性Java虚拟机

(JVM)Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。JVM是JavaVirtualMachine(Java虚拟机)的缩写,是一种可以执行Java字节码(bytecode)的虚拟机。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。常见Java虚拟机:sunHotspotVMOracle(sunjre)BEAJRockitOracleIBMJ9VMIBMJava运行环境

(JRE)(JRE)JRE(JavaRuntimeEnvironment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。即JRE=JVM+Lib(JavaAPI)Java程序和JRE之间的关系如下图所示:JavaPlug-in:是一种特殊的JRE,被安装于浏览器中,用于支持在浏览器中运行JavaApplet程序。JVM垃圾回收机制(GarbageCollection)JVM启动时可以通过参数:–Xms指定JVM使用的最小内存;-Xmx指定JVM允许使用的最大内存。这样,Java程序启动时就占用-Xms大小的内存,并且随着程序运行所占用内存不断上涨,当内存使用达到-Xmx指定最大内存的一定比例(比例也可配置)的时候就触发自动垃圾回收机制,由JVM检测失效的对象并将内存释放。这样不断重复就形成了类似波浪状的内存占用示意图(如下图所示),当由于创建对象过多造成JVM使用内存达到-Xmx参数指定的上限时,JVM会抛出内存错误异常。因此,要合理地设定Java运行的内存大小和GC策略。Java运行机制Java程序的运行机制如下图:A.javaB.javaA.classB.class1.程序的源文件2.程序的class文件编译时环境A.classB.classObject.classString.class程序的class文件:*.jar包运行时环境Java虚拟机…通过本地或网络传递class文件使用Java解释器解释执行class文件编译源文件JRE类库操作系统再见HelloWorld编辑程序代码HelloWorld.javajavac生成出错信息Yes编译程序代码javacHelloWorld.javaHelloWorld.class解释执行字节码javaHelloWorld有编译错误吗?NoclassHelloWorldApp{//程序入口函数publicstaticvoidmain(String[]args){//程序执行逻辑System.out.println("HelloWorld!");}}HelloWorldApp.java:一个简单的Java程序的编辑、编译和运行过程示意如下:Java应用分类Java应用客户端应用程序GUI应用程序命令行程序嵌入式应用程序服务端应用程序web服务程序JavaApplet小应用程序即图形用户界面程序,可以实现复杂的用户交互功能和丰富的展现方式无需界面,只需在命令行下运行,运行结果只在后台发生变化嵌入到各种终端设备中运行的Java应用程序通过web的方式提供用户交互界面,这些程序运行在服务器端,通过HTTP/WebService等协议方式接收客户端请求并返回相应的数据一种嵌入在HTML网页中的JavaGUI应用程序,Applet的类在服务器端,当浏览器显示网页时,它随之下载到本地,由本地的浏览器载入运行。内容Java语言简介1JavaEE体系结构2客户层技术3Web层技术4业务层技术5持久层技术6应用服务器介绍7SSH开源框架8其它9Java

EE体系结构JavaEE是一种企业级应用的软件架构,是一种思想,一套规范。目前JavaEE已经发展到JavaEE6。JavaEE体系结构图如下图所示:JavaEE的四层结构JavaEE使用多层的分布式应用模型,应用逻辑按照功能划分为不同的组件,各个应用组件根据它们所在的层分布在不同的服务器上,以下为JavaEE典型的四层结构:(1)客户层:ClientTier(2)Web层(展现层):WebTier(3)业务逻辑层:BusinessTier(4)企业信息层(EIS:EnterpriseInformationSystem)也叫数据持久层JavaEE分层职责主要用来提供应用系统的操作界面,它负责为用户提供输入,并把用户的输入请求发送给服务器端的表现层,并接收表现层的响应转换为视图组件展现处理。通常指的是客户端程序或者web浏览器。是用户和应用系统“消息”传递的纽带,主要用来控制系统业务流程的流转,在Web应用中主要由Jsp/Servlet来实现。接收客户层的请求并调用相应的业务逻辑组件处理,并把结果返回给客户层组件。负责整个系统的业务实现,通过业务规则对业务请求进行处理。业务层主要由JavaBean组件或者EJB组件实现。也叫数据持久层,专门处理与数据库交互的操作,负责整个系统的数据持久化。组件的实现方式主要有JDBC方式或ORM方式。客户层展现层业务层企业信息层Java

EE运行方式JavaEE各层之间的调用依赖关系如下图所示:内容Java语言简介1JavaEE体系结构2客户层技术3Web层技术4业务层技术5持久层技术6应用服务器介绍7SSH开源框架8其它9Java客户层技术运行在客户端层的Java程序主要有以下几类:1、独立运行的拥有图形界面的JavaGUI程序2、通过JavaWebStart技术分发与运行的JavaGUI程序3、以命令行方式运行的无界面的Java应用程序,具体又分为控制台方式和后台服务方式4、运行在已安装javaplug-in的浏览器中的JavaApplet小程序Java

GUI应用用于开发Java桌面应用程序的gui工具包主要分为以下三类:AWT、Swing和SWTAWT(AbstractWindowToolkit):Sun最早发布的用于构建JavaGUI程序的组件库。AWT通过JNI接口调用本地图形库实现用户界面,为了保证移植性,AWT只提供几个通用操作系统图形功能的交集,提供的组件非常简单有限,没有如表、树等常用高级组件。目前,sun不推荐使用AWT,但是由于其简单、稳定、占用内存小等特点,在嵌入式系统开发中还拥有一席之地。Swing:Swing是在AWT的基础上构建的一套新的图形界面开发系统,用纯java代码对AWT的功能进行了大幅度的扩充。Swing中的组件都是利用Java2D图形功能模拟绘制出来的,是纯Java实现的,与平台无关。目前,Swing技术在很大程度上替代了AWT技术。Swing优点是跨平台的一致性,同时支持Look&Feel换肤功能,缺点是执行速度较慢,但是随着在新版JRE下性能大幅提高已经接近原生组件。SWT:是IBM提供的开源GUI框架,与AWT/Swing有相似的用处,Eclipse就是用SWT开发的。SWT最大化了操作系统的图形构建API,只要操作系统提供了相应的图形构件,那么SWT就简单的调用它,只有那些操作系统不提供的构件,SWT才去模拟实现,因此在外观上与操作系统基本完全一致。SWT缺点主要是(1)不是Java标准(2)支持的平台太少。如果不考虑移植并且在Windows平台运行,SWT可以有很好的表现。SwingvsSWTSwingvsSWT比较项目结果备注组件类型Swing=SWT都提供丰富的组件响应速度Swing=SWT(JRE5以上)外观Swing=SWTSwing可以通过LookAndFeel实现绚丽的外观效果;SWT与操作系统外观一致,两种实现方式各有所长扩展性Swing>SWTSwing组件更易于扩展,因此能够提供更多功能换肤支持Swing>SWTSwing的LookAndFeel机制支持变更外观成熟稳定性Swing>SWTSWT因为设计上的缺陷,将资源管理交给开发者管理,因此存在不稳定风险跨平台性Swing>

SWTSwing采用纯Java实现,可跨平台;SWT在非Windows平台稳定性和性能很差内存消耗Swing<SWTSwing使用模拟组件需要更大内存启动时间Swing<SWT原因同上注:由于AWT基本不再使用,因此没有进行比较Java

WebStart技术JavaWebStart是一个软件技术,它是基于Java的应用程序,允许从的Web启动、部署和更新功能Java客户端应用程序。在第一次启动JavaWebStart时,用户可以从Web下载新的客户机应用程序;之后这些应用程序可以通过Web页面的链接或(Windows中的)桌面图标或“开始”菜单初始化。应用程序在JavaWebStart下快速初始化,被高速缓存在客户机,并且可以远程的离线启动。当客户机应用程序启动时,JavaWebStart自动执行更新,在从原来的高速缓存(倘若存在高速缓存)装入应用程序的同时,从Web下载最新的代码。(1)提供一种单击一次即可激活应用程序的便捷方法(2)保证您始终运行最新版本的应用程序(3)避免了复杂的安装或升级过程详细例子可以参见:/ch/twaver.php?p_id=90Java

WebStart优缺点JavaWebStart技术主要优势:服务端管理,客户下载;第一次运行只需要下载一些包,但是这些包都能自动存在客户端,第二次运行就不再需要下载;版本管理,自动更新;根据服务端的版本号与客户端包的版本号差异自动下载和更新新版本的包,;客户端运行的是本地应用,操作和GUI程序一样方便、稳定、响应快、性能好。与客户端其它应用的集成方便;方便支持离线操作;二次开发容易。完全以C/S结构设计、开发程序,然后很容易移植在JavaWebStart平台上。要进行前后台的GUI的客户端开发比纯Web要效率高得多。运行时脱离浏览器,运行稳定,浏览器的bug不会给应用程序带来影响。JavaWebStart技术主要不足:首次需要下载;客户端应用存在本地,占一点硬盘存储空间;Java

AppletJavaApplet(小应用程序)是采用Java创建的基于HTML的程序。含有Applet的网页的HTML文件代码中带有<applet>和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。这些程序是直接嵌入到页面中,由支持Java的浏览器解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。<html>...<APPLETARCHIVE="DAVExplorer.jar"CODE="edu.uci.ics.DAVExplorer.AppletMain.class"WIDTH=800HEIGHT=400><PARAMNAME=uriVALUE="http://dav-url/webdav/"><PARAMNAME=usernameVALUE="username"><PARAMNAME=passwordVALUE="password"><PARAMNAME=proxyVALUE="proxy-url"></APPLET>...</html>详细例子可以参见:/ch/twaver.php?p_id=90Java

Applet的安全限制为了防止安全问题出现,JavaApplet如果没有经过数字签名,那么访问客户端下载后会受到使用限制,主要体现在对客户端的本地资源的访问受限:如无法访问本地文件等。可以通过在Applet中加入数字签名的方式实现,只要在Applet运行时用户选择信任这个签名,那么这个Applet就拥有了访问本机资源的权限。如果一个签名没有被CA的证书认证,就会提示说“该应用程序的数字签名无法验证”,如果证书是验证过的,对话框就会是询问你是否信任“某公司”。无论签名是否已经被验证,只要用户选择信任就可以解除安全限制。Java

Applet优缺点JavaApplet的优势是:B/S结构,客户端应用是动态下载的;和WebStart技术一样,其维护主要在服务器端;比纯Web技术的交互性好;

JavaApplet的不足是:

动态从服务端装载类文件到浏览器内的Java虚拟机,导致响应药比GUI慢,响应性稍差;由于不同的IE内置的JDK不一致,因此需要下载与应用匹配的JDK安装到客户端并要安装插件(plug-in);因运行于浏览器内,因此受浏览器的稳定性影响,或浏览器的bug影响,其稳定性要比GUI差很多;由于运行于浏览器内,所以浏览器会占据客户端不少的内存,大应用时会造成内存溢出。与客户端其它应用集成基本不可能,因为受浏览器隔离。Java客户层技术比较

纯WebClient(JavaScript等)AppletGUIClientWebStart二次开发效率低较高高高维护:客户端安装零安装少量安装(JDK,Plug-in)手工安装自动安装维护:客户端更新无需极少打补丁或重装自动更新交互性差一般好同GUI响应性差(无连接方式与服务端交互)一般好(面向连接方式与服务端交互)同GUI客户端性能差(JavaScript解析)一般(需动态从服务端下载class)好(客户端直接加载)同GUI操作效率低一般高同GUI稳定性差(依赖IE)差(依赖IE)好同GUI误操作易发生易发生少发生同GUI客户端应用集成难(通过ActiveX)最难(运行于IE内)易(直接应用集成)同GUI离线操作难(依赖IE)难(依赖IE)可能(脱离浏览器)同GUI内容Java语言简介1JavaEE体系结构2客户层技术3Web层技术4业务层技术5持久层技术6应用服务器介绍7SSH开源框架8其它9Servlet简介浏览器访问网页的过程就是浏览器通过HTTP协议与Web服务器交互的过程.针对纯HTML的静态网页,只须把资源放在Web服务器上供浏览即可.随着应用的发展,客户端与服务器需要动态交互,为了实现这一目标,需要开发一个遵循HTTP协议的服务器端应用软件来处理各种用户请求。什么是Servlet:1、Servlet是一种独立于操作系统和协议的服务器端Java应用程序.2、Servlet能动态响应客户端请求,生成动态的Web页面,从而扩展服务器的功能.3、Servlet由Servlet容器管理(Servlet的运行环境),Tomcat就是一个常用的Servlet容器。Servlet工作流程Servlet1Servlet2HTTPServerWeb应用服务器(如Tomcat)Servlet容器Web浏览器客户端HTTP请求HTTP响应业务Bean①客户端(浏览器)向Web服务器发送一个基于HTTP协议的请求.②HTTPServer接收到该请求,并将请求交给Servlet容器处理.③Servlet容器根据Servlet配置来查找或创建Servlet实例,并执行该Servlet,Servlet容器必须把客户端请求和响应封装成Servlet请求和响应对象传给Servlet.④Servlet使用请求对象获取客户端的信息,比如IP地址、请求的参数等,并执行特定业务逻辑;使用响应对象向客户端发送业务执行的结果.⑤Servlet处理完请求后,通过HTTPServer将最终展现结果返回到客户端浏览器Servlet展现动态网页示例publicclasstestextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();

out.println("<HTML>"+"<HEAD>" +"</HEAD>"+"<BODYBGCOLOR=red>"+"<CENTER><H1>HelloWorld!</H1></CENTER>"+"</BODY>"+"</HTML>");}}HTTPServer<HTML><HEAD><TITLE>Haha</TITLE></HEAD><BODYBGCOLOR=red><CENTER><H1>HelloWorld!</H1></CENTER></BODY></HTML>返回的HTTP响应内容Servlet容器JSP简介JSP(JavaServerPage)是sun公司开发的一种服务器端脚本语言,是一种动态网页技术标准。JSP本质上就是把Java代码嵌套到HTML网页中为用户提供动态数据,当用户访问该JSP页面时,JSP容器将页面编译执行,可以根据其中的动态代码的运行结果生成对应的结果HTML代码,并在客户端的浏览器中显示出来。用JSP开发的Web应用是跨平台的,部署在Tomcat等Web应用服务器中运行。JSP最终会被转换成标准的Servlet(JSP的实质仍然是servlet)。JSP的目的在于简化表示层的表示。<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%><html><body>这是一个JSP示例页面<%嵌入Java语句%>

...</body></html>test.jspJSP和Servlet区别通俗的讲,JSP是往HTML里嵌Java代码,Servlet是在Java代码里输出HTML元素。也就是说,JSP将业务层混合到表示层中,而Servlet将表示层混合到业务层中。Servlet用来写业务层是很强大的,但是对于写表示层就很不方便。JSP则主要是为了方便写表示层而设计的,当然也可以写业务层。response.setContentType("text/html;charset=gb2312");PrintWriterout=response.getWriter();out.println("<HTML>");out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");out.println("<BODY>");for(inti=1;i<=5;i++){

out.print("

<fontsize=");

out.print(i+">");

out.println("测试JSP</font><br>");}out.println("</BODY>");out.println("</HTML>");out.flush();out.close();<%@pagelanguage="java“pageEncoding="gb2312"%><HTML><HEAD><TITLE>AServlet</TITLE></HEAD><body><%for(inti=1;i<=5;i++){%>

<fontsize=<%=i%>>测试JSP</font><br><%

}%></body></HTML>Servlet实现jsp实现JSP与Servlet关系由于HttpServlet大多是用来响应HTTP请求,并返回Web页面,所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给servlet书写效率和可读性带来很大障碍。JSP使用HTML的书写格式,在适当的地方加入Java代码片断,将程序员从复杂的HTML中解放出来,更专注于业务处理方面的内容。JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。Struts开源框架Struts是Apache下的一个开源项目,它通过采用Servlet/JSP技术,实现了基于Java

Web应用的Model-View-Controller〔MVC〕设计模式的应用框架。在JavaEE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JSP的源代码中,采用HTML与Java代码混合的方式进行开发。因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,给前期开发与后期维护带来巨大的复杂度。为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,CraigMcClanahan采用了MVC的设计模式开发Struts。后来该框架产

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论