声明:本文为作者阅读《软件系统框架与开发环境》后的摘录笔记
1 Java的三个开发平台
Java EE 企业版
Java SE 标准版
Java ME 微型版
Applet技术
<HTML>
<BODY BGCOLOR="#FFFFF0">
<H1 ALIGN=CENTER>Running AnApplet</H1>
<APPLET codebase="bin/"CODE=demoApplet.class archive=”demoApplet.jar”
WIDTH=300 HEIGHT=100>
<paramname ="msg" value = "Hello, this is a test.">
</APPLET>
</BODY>
</HTML>
<applet>标签有三个属性,code属性提供载入的Applet字节码文件名;
Codebase为文件路径,相对路径
Archive
<applet>属性表
align | · left · right · top · bottom · middle · baseline · texttop · absmiddle · absbottom | 定义 applet 相对于周围元素的对齐方式。 |
alt | text | 规定 applet 的替换文本。 |
archive | URL | 规定档案文件的位置。 |
codebase | URL | 规定 code 属性中指定的 applet 的基准 URL。 |
height | pixels | 定义 applet 的高度 |
hspace | pixels | 定义围绕 applet 的水平间隔。 |
name | unique_name | 规定 applet 的名称(用在脚本中的)。 |
vspace | pixels | 定义围绕 applet 的垂直间隔。 |
width | pixels | 定义 applet 的宽度 |
HTML5 中不支持<applet> 标签。请使用 object 元素 标签代替。
HTML 4.01 中不赞成使用 <applet> 元素。
在java 1.2 之后利用数字签名来证明外来applet代码源的可靠性,从而获得访问本地资源的更多权限。为此,将class文件打包成jar文件,在利用JDK提供的jarsign工具对其进行签名,例如:
jarsigner -keystore bin/demo.jks bin/demoApplet.jar kpDemo
.jks 文件为是JAVA的keytools证书工具支持的证书私钥格式。
cer是证书的公钥。
<Object>标签
定义一个嵌入的对象。请使用此元素向您的 XHTML 页面添加多媒体。此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码。
<object> 标签用于包含对象,比如图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。
object 的初衷是取代 img 和 applet 元素。不过由于漏洞以及缺乏浏览器支持,这一点并未实现。
Servlet技术
运行在服务器端的小程序。运行在Web容器中,客户通过HTTP协议发送请求。
搭配配置文件 web.xml
<servlet>包含如下子元素
<servlet-name>,用于为Servlet命名
<servlet-class>,指定Servlet程序代码文件的路径
<servlet-mapping>,指定Servlet程序的URL,作为用户界面网页与该程序之间的对接标识。一个完整的URL包含三个部分(服务器域名,应用名,逻辑路径名)。
<init-param>,提供环境参数,相当于JavaApplet配套HTML文档中的<param>,包含<param-name>和<param-value>
2 Java集成开发工具
2.1 Java SE的架构相关技术
Java SE软件架构重要技术:对象反射,对象序列化,异常处理,线程并发控制,集合类。
1 Java的反射技术
Java的反射技术支持对象的动态辨识和动态创建,甚至是对象结构的动态修改,而对象序列化特性则支持对象在分布式系统构件之间的交换。
2 Java的对象序列化技术
3 Java的异常处理技术
4 Java线程的并发控制
5 Java的集合类
3 Visual Studio与.NET框架
Visualstudio是微软.NET平台的系列继承开发工具。.NET平台主要有visual Studio系列工具、CLR和.NET类库组成,其特点是通过多种开发语言提供了众多的软件框架及其配套的构建,并且通过CLR把上述框架集成为一个整体,微软将其称为.NET框架。Java EE与.NET平台比较,主要区别:①Java EE主要面向B-S应用,而.NET平台在桌面应用开发方面也提供了许多新技术,例如基于Windows Forms和WPF(windows presentation foundation)的开发技术;②Java EE 1.4规范定义的本质上还是一种面向对象的开发平台,Java EE 1.5及其后续版本的规范才全面向基于框架的方向发展,而.NET平台一开始就是基于框架的开发平台;③Java EE是基于Java语言的开发平台,而.NET支持的开发语言包括VB、VC++、C#和F#。
3.1 CLR及其相关概念
把不同开发语言的框架集成起来具有重大意义,.NET平台能做到这点,主要得益于CLR(Common Language Runtime),它实际上是微软为.NET平台提供的虚拟机,比Java平台中的JVM功能更强大。CLR不仅可以为高级语言屏蔽不同计算机平台之间的差别,还可以支持多种语言开发。
与CLR相关的四个基本概念:
①CIL(Common IntermediateLanguage),它是一种平台无关的中间语言,基于CLR的高级语言编写的程序编译后都将成为CIL代码,CIL代码不能直接在操作系统上执行,需要在CLR的支持下才能运行。
②JIT(Just-In-Time)即时编译器,它负责CIL的解释与执行。
③程序集,在.NET平台上,应用软件“build”结果通常不是单一的EXE文件,而是一个目录结构,其中除了CIL代码外,还可包括含元信息以及资源信息文件,这就是所谓的程序集。元信息可以实现程序集的自描述,保证其在脱离开发环境后还能正常使用。
④托管代码,理论上,在一个程序集中可能同时出现需要依托CLR运行的代码和自己能够直接与操作系统进行交互的目标代码,为了区别,一般称前者为托管代码,后者为非托管代码。
3.2 扩展的B-S架构
Silverlight, 可指浏览器插件,也可指一种有微软提供的、用于支持上述插件运行的软件包,还可指一种RIA(rich Internet application)解决方案。Silverlight插件程序一律编译打包成一个XAP文件,他是一个标准的zip压缩文件,主要包含一个DLL文件和一个名为AppMainfest.xaml的文档,前者包含插件的程序集。后者的内容主要描述入口点信息(程序名称、类型)、运行时版本。Silverlight可以镶嵌到HTML文件中。
ActiveX控件技术,它是一种基于组件对象模型(COM)的可重用组件,可以运行在普通ActiveX控件容器中,也可以镶嵌在HTML中,有浏览器加载运行。浏览器加载ActiveX方法:浏览器通常根据系统注册表中注册的class ID从本地文件中加载运行一个控件,只有当控件还没有注册,或者已注册的版本偏低时,浏览器才会从codebase指定的位置下载控件的代码,它是一个后缀为OCX的文件,其必须是经过签名的。开发ActiveX可以用CS的MFC模板,MFC ActiveX控件向导。
4 Android平台
4.1 Android操作系统
基于Linux内核的操作系统,对GNU、Linux内核进行大幅精简,删除/换掉了其中的GNU C标准库、窗口系统。图形界面开发工具等内容。
4.2 Dalvik虚拟机
在Android平台上,每个程序都在属于自己的Dalvik虚拟机实例中运行。Android不同于J2ME,Dalvik虚拟机也不是按照Java 虚拟机的规范来实现的,两者区别如下:
1)Java虚拟机运行Java字节码,而Dalvik虚拟机运行的则是其专有的DEX(DalvikExecutable)格式代码。Android采用的是Java变成,它们被编译成CLASS文件后再转换为DEX文件后执行。
2)Java虚拟机是基于栈的,而Dalvik是基于寄存器的(同.NETCLR的虚拟机一样),采用模拟寄存器可以提升虚拟机在多个方面的性能,如编译速度。
3)Java虚拟机与操作系统相对立,有多重版本,可用于支持不同的操作系统,Dalvik虚拟机依赖于Linux内核的一些功能,如线程和底层内存管理机制,只能运行在Android操作系统中。
4.3 Android应用软件框架及其Activity构件
系统框架分文5层:Linux内核、AndroidRuntime(DVM和核心库)、Android库、应用框架和应用层。上述构件的具体形式都是单个派生类,其基类有平台的类库提供,包括:
1)activity类,主要提供UI
2)Service 类,运行在后台,主要提供各种业务处理功能
3) Broadcast类,主要向其他构件广播消息,并接收、处理来自其他构件的广播消息
4)ContentProvider类,主要实现了一套标准的数据存取方法,可以为其他应用提供存储于文件系统,SQLite数据库中的数据管理服务。