Eclipse环境

2024-10-03

Eclipse环境(精选9篇)

Eclipse环境 篇1

前言

随着社会信息化程度不断提高, 越来越多的软件开发人员需要开发Web应用程序。目前网络编程主要有两大技术体系:基于J2EE的网络开发和基于.NET的网络开发。J2EE技术以其开放性、灵活性、安全性和技术成熟度赢得了广大编程爱好者的青睐, 并且在目前企业级信息系统开发领域也占领了很大的市场, 取得了许多成功的案例。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Eclipse的出现, 为Java开发者提供了免费使用Java集成开发环境的机会。一些免费插件的出现, 大大丰富了Eclipse开发平台的功能, 尤其是一些支持J2EE开发的免费插件 (如Lomboz) 的出现, 使得Eclipse成为众多J2EE爱好者首选的开发平台。

一、J2EE产生的背景

1. 企业级应用框架的需求。

在许多企业级应用中, 例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块, 这些模块如果每次再开发都由开发人员来完成的话, 将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列统称为中间件。

2. 为了通用必须要提出规范, 不然无法达到通用。

在上面的需求基础之上, 许多公司都开发了自己的中间件, 但其与用户的沟通都各有不同, 从而导致用户无法将各个公司不同的中间件组装在一起为自己服务, 从而产生瓶颈, 于是提出标准的概念。其实J2EE就是基于Java技术的一系列标准。

为了满足开发多层体系结构的企业级应用的需求, Java的创始人Sun公司在早期的J2SE (Java 2 Platform Standard Edition) 基础上, 针对企业级应用的各种需求, 提出了J2EE (Java 2Platform Enterprise Edition) 。

二、什么是J2EE

J2EE是一个标准中间件体系结构。与Java不同, J2EE是一种体系结构, 而不是一门编程语言。Java是一门编程语言, 可以用来编写各种应用程序。J2EE是一个标准中间件体系结构, 旨在简化和规范分布式多层企业应用系统的开发和部署。

典型的J2EE结构的应用程序包括四层:客户层、表示逻辑屋 (Web层) 、业务逻辑层和企业信息系统层。如图1所示。

J2EE客户层可以是网络浏览器, 也可以是桌面应用程序。

表示逻辑层 (Web层) 、业务逻辑层都位于应用服务器上, 它们由一些J2EE标准组件JSP (Java Server Page) 、Servlet、EJB (Enterprise Java Beans) 等来实现, 这些组件运行在实现了J2EE标准的应用服务器上, 以实现特定的表现逻辑和业务逻辑。

企业信息系统层主要用于企业信息的存储管理, 主要包括数据库系统、目录服务等。J2EE应用程序组件经常需要访问企业信息系统层来获取所需的数据信息。

J2EE体系架构的实施可显著地提高企业应用系统的可移植性、安全性、可伸缩性、负载平衡和可重用性。

三、J2EE的优越性

1. 基于Java技术, 平台无关性表现突出。

2. 开放的标准, 许多大型公司已经实现了对该规范支持的应用服务器。如BEA, IBM, ORACLE等。

3. 提供相当专业的通用软件服务。

4. 提供了一个优秀的企业级应用程序框架, 对快速高质量开发打下基础。

四、搭建J2EE开发环境

目前J2EE应用开发环境分为两大类:基于命令行的开发环境和集成开发环境。基于命令行的开发环境利用简单的文本编辑器编写程序代码, 通过运行Java命令实现程序的编译、发布、运行等操作。这个开发方式对于开发人员要求较高, 且比较烦琐、易出错, 不易为初学者掌握。因此对于初学者来说, 最适合使用集成开发环境进行入门学习。最常见的J2EE应用集成开发环境有Borland公司的Jbuilder、IBM公司的WSAD (Websphere Studio Application Developer) 、Sun公司的SUNone Studio, 等等。但这些集成开发环境价格昂贵, 且运行时对机器的硬件配置要求比较高。而开放源代码的免费集成开发环境Eclipse为J2EE开发环境的构建提供了另一条途径。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Eclipse的出现, 为Java开发者提供了免费使用Java集成开发环境的机会。由于Eclipse自身不包含JDK (Java Development Kit, Java开发工具包) , 因此, 要利用Eclipse开发J2EE应用程序, 必须首先要安装JDK。

Eclipse只提供了通用的Java开发环境, 为支持J2EE开发, 需要为Eclipse添加支持J2EE开发专用插件。Lomblz是一个免费的J2EE开发插件, 它将很多Java应用服务器、J2EE组件和Web应用开发向导工具集成到Eclipse中, 可以帮助Java开发者在Eclipse环境内建立、测试和部署J2EE应用。

J2EE编程属于服务器端应用的编程, 因此J2EE程序的运行还需要一个中间件应用服务器的支持。Jboss是一个开放源码的、功能强大的Java应用服务器, 也是目前最受Java开发者欢迎的应用服务器之一。

五、小结

J2EE集成开发环境的搭建是开发J2EE应用程序的前提。J2EE容器的使用使测试极端复杂, 以至于难以进行。这种困难局面源于业务逻辑和容器框架服务之间产生的耦合。借助于Spring的配置机制, 使实现可以动态切换, 这样就有助于将业务对象从容器中释放出来。这在通常错综复杂的J2EE编程领域是颇受欢迎的。

参考文献

[1]Allamaraju M著.闻道工作室译.J2EE服务器端高级编程.北京:机械工业出版社, 2001.

[2]杨绍方.深入掌握J2EE编程技术.北京:科学出版社, 2002.

Eclipse环境 篇2

2、从中解压出features与plugins文件夹,复制到E:/MyEclipse/myPlugin/svn里面,其它的*.xml文件不要。

3、在E:/MyEclipse/MyEclipse X.X/dropins下新建文件svn.link,内容是:path=E://MyEclipse//myPlugin//svn 保存。

4、删除E:/MyEclipse/MyEclipse X.X/configuration/org.eclipse.update文件夹

Eclipse的应用发展 篇3

1 Eclipse简介

1.1 概况

由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月,前期投入了4000万美金,2003年Eclipse3.0选择Osci服务平台规范为运行时构架,2007年6月,稳定版3.3发布,2008年6月发布代号为Gany mede的3.4版,可见Eclipse发展起源时间并不长远,近几年的快速发展,使得它进入一个新阶段,Eclipse基金会在此做了不少努力,2006年起,Eclipse基金会都会安排版本的发布,下面是9月及2月释放出SR1及SR2的版本细则,如表1所示。

从表1可看出版本平台在不断更新,每一年都在更新,以及发行的时间段都有很强的规律性。

1.2 插件机制

Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件。Eclipse的设计思想是:一切皆插件。E-clipse核心很小,其他所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API(SWT/Jface),Java开发环境插件(JDT)。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。通常的软件必须通过重新编译的形式才能进行更改或扩充,而Eclipse则是通过插件机制,让可以动态地增加系统功能而无需修改系统代码。

1.3 Eclipse的主要组成

主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目3个项目组成,具体包括四个部分组成———Ecli pse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发Eclipse Platform则是一个开放的可扩展IDEEclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。

Eclipse的不断创新,也出现了很多快捷键,例如:

熟悉快捷键可以帮助开发事半功倍,节省更多的时间来用于做有意义的事情。

Eclipse程序在Java编程中的应用:学习中Eclipse主要应用于学习Java中的语言编程,打开Eclipse软件,新建一个Java项目,并在里面新建一个类,便可以编写程序了,但此过程中可能遇到很多问题,比如建议不要用缺省包,以及提示此安装包是空的,这都要检查自己所创建的是否正确,否则无法编程,下面有上机课的一次作业清楚地说明Eclipse的应用。

此代码为一个常规的猜字游戏,程序会随机给客户一个1到100之间的整数,然后输入自己的猜测,程序返回提示信息,分别是"猜大了","猜小了",直到猜对为止,其中输入了一排数,绕了很多弯子才输出正确数字27,不是猜大了就是猜小了,其他同学也一样,猜了很久才猜出来,完全没有一次就猜对的同学,在编写这一程序时,很多问题值得注意,全程必须是英文符号,否则程序前面都会错误地提示让你修改,只要你的字节码不对,都会提示在哪儿错了,并且还有更改快捷键,或是更改方法,相对C语言而言,能及时有效地找出错误所在地,及时修改,节省时间。同时从上面的编程中,有很多收获,每一个单词,一个符号都必须细心打,很多时候打出来就是一竖排的红色提醒,只有全部没有红色提示后才能运行出所需要的结果,相对于Java而言,Eclipse与它就是饭与碗的关系,Eclipse就是盛饭的碗,辅助功能。Eclipse的应用给人们的Java学习创造了不可缺少的益处。总的来说Clipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK),这是进行Java开发的必不可少的Java开发环境。

1.4 Eclipse的优点

(1)Eclipse是开源而且免费的,得到全面支持。

(2)Eclipse的支持超过Java的语言。

(3)Eclipse可无限扩展的强大插件功能。

(4)Eclipse在多重平台上提供一致的特性集。

(5)Eclipse是行业力量。

2 Eclipse在现代的发展

2.1 Eclipse的发展前景

软件的创始与开发,都有瓶颈与高潮时期,利于社会发展的就利用,不利的就淘汰,总的来说高科技的开发都是服务与人民,IBM软件集团Rational软件总经理Eclipse创始人之一这样说“Eclipse将面临一些挑战,这些挑战也是必不可免的,当今的商业环境,特别是软件开发的商业环境,受到速度,全球化,新的管制的影响,在以IT为主导的环境下,面临全球的竞争压力,现实自动运作,扩展自己业务生产的,或融入市场,否则只有死路一条”。在生活来看,同学们应用Eclipse技术的人并不多,可以说是少之又少,根据调查学校只有120余人现在应用这一技术,在学习Java时老师指导应用Eclipse来编写程序语言,当然都是应用Java的编程项目。当然,Eclipse近几年的不断创新,相信它会走向更高一层。

2.2 Eclipse就业方向

利用Eclipse,可以将高级设计(也许是采用UML)与低级开发工具(如应用试器)结合在一起。Eclipse就业方向跟Java差不多,现在编程人员需求量非常大,根据IDC的数据统计对Java工程师的需求达到全部需求量的60%~70%,产品研发经理,技术经理,软件工程等就业方面非常高薪酬也是人们所理想的范围。对于一个有志于从事软件开发工作的学生来说,最重要的事情是要把面向对象的编程基础打扎实,不断积累经验。不论是学习C语言还是Java,只要用心学习,都能有一个好的发展前程,有了扎实的基础,无论热点转向什么方向,都能很快的适应,融入环境,就像性格好的人,容易接触的人,无论在什么场合都能很快融入一个集体,很快地跟别人打成一片。无论如何,打好基础,为自己做好铺垫。

3 结语

Eclipse有它最吸引的部分和优点,(1)它创新性的图形;(2)它的插件机制;(3)利用它的插件机制开发的众多功能强大的插件。通过这一软件的学习,对Eclipse和Java有了更深层次的了解,也发现了学习中的不足。利用这些优点来开发人们的空间,正是这些技术让计算机技术的发展不断创新,让人们进入一个高科技的时代,当然,软件的开发对新型的社会影响力很大。

参考文献

[1]连洪武.Eclipse的入门到精通.清华大学出版,2007.

[2]赫胥黎.天演论.严复,译.

[3]夏明萍.Eclipse基础与应用.

[4]张跃平,耿祥义.Java2实用教程.清华大学出版社.

Eclipse环境 篇4

9、新建一个Map/reduce 项目:

选择Project:

建立Map/Reduce项目:

项目名称:

10、把自带的WordCount 代码拷进去:

11、在本地硬盘新建一个测试文档:

上传到HDFS上面:

刷新:

新建的文档显示出来,可看见刚才写进去的内容:

12、运行代码:

右键àRun AsàRunConfigurations:

13、设置在HDFS上的文档输入输出路径:

中间空格分开:

hdfs://localhost:8020/input/file4.txt hdfs://localhost:8020/output/out4.txt

Console:

查看生成的out4.txt内容:

14、运行完毕:

Eclipse环境 篇5

首先,需要分析8142Pro传输的数据格式,以及各数据位的具体含义,并找出需要的数据位。

1 托利多8142Pro的数据采集端口及发送的数据格式

在8142Pro的实际使用中,最后一位校验和没有使用,所以每个数据包共有17个字节。8142Pro背面板如图1所示。

由图1可知,程序采集的数据来自COM2端口。

8142Pro发送的数据格式如表1

其中各数据位意义如下:

1:ASCII起始符为(02H)。

2:状态字A:小数点位置和分度值因子。B:毛重或净重等信息。C:是否有打印命令。

3:显示重量,毛重或净重(可设置),6位不带符号和小数点的数字。

4:皮重,6位不带符号和小数点的数字。

5:ASCII回车符(0DH)。

6:可选的校验和。

2 设计思路及实现方法

2.1 Java串口通信简介及开发环境设置

Java读写串口要用到的是javax扩展类库comm,其核心是抽象的CommPort类及其两个子类:SerialPort类和ParallePort类。其中,SerialPort类是用于串口通信的类,ParallePort类是用于并行口通信的类。本文只关心SerialPort类,SerialPort类具有以下重要属性和方法:

setSerialPortParams:描述一个RS-232串行通信端口的底层接口,它定义了串口通信所需的最小功能集。通过它,用户可以直接对串口进行读、写及设置工作。

open:打开端口。

close:关闭端口。

getInputStream:获取端口上的输入流对象。

available:是否有数据通过。

read:读取一个字节并将其放到指定字节变量中。

java.comm类库在sun的官网上只提供Linux版本。由于开发的平台是Win32。所以下载的java.comm包解压后必须进行相应配置,配置方法如下:

(1)把javax.comm.properties文件拷贝到Java运行时环境的lib目录中。

(2)把win32com.dll拷贝到C:windowssystem32和C:Program FilesJavajdk1.5.0_12jrebin下。

(3)把comm.jar放到Java运行时环境的lib目录中。

(4)在“环境变量”的CLASSPATH中添加comm.jar,如:%JAVA_HOME%libcomm.jar。

2.2 重量数据的提取

要在缓存中得到有效数据,首先将数据按字节存到一个字节数组变量中,在此字节数组查找需要的有效数据。按照8142Pro字节定义,开始字节为02H,结束字节为0DH,按照ASCII换算为十进制为2和13。

在字节数组中查找readBuffer[i]等于2且readBuffer[i+16]等于13的数据,如果有则存储为一个有效数据。否则,继续返回查找。

2.3 重量数据的转换显示

接收的重量数据是6个字节。每个字节为8位,根据ASCII表,所以应该是0~127。实际接收的数据应该为ASCII表中的48~57,减去48之后即为显示的结果0~9。如果接收的数据大于127,则应再减去128之后按照前述进行处理。

3 主要程序源代码

4 实际应用

Eclipse环境 篇6

对于程序员在软件开发、维护等工作中产生的行为的收集和分析对于软件工程有着重要的意义。例如,通过监控程序员的行为可以进行程序员开发行为模式的挖掘、匹配和行为建议。此外,还可以通过监控程序员正在使用的API,主动为其搜索在线资源,并推送相关的搜索结果。当然,也可以用在对不符合组织定义的软件过程的探测以及容易发生bug的软件行为模式的探测上。

然而,无论希望实现以上的哪个功能,都需要以收集到真实完整的程序员开发行为流并将其处理为按照时序排列的结构化事件为前提条件。因此,设计一种全面、客观且忠实地记录程序员的开发过程的工具就显得极为重要,它能提供程序员开发全过程的第一手数据,从而避免了使用调查、访谈或问卷等其他调研方法中不全面,不细致的弊端。

针对以上问题,本文基于Eclipse的可扩展性提出并实现了一种程序员开发行为监控插件。插件由监控模块和数据处理模块组成,通过对Eclipse的插件监听接口和扩展点进行研究和探索,实现了对程序员开发行为完整、自动、无侵扰性地进行细粒度的监控,并对行为发生的时间信息和上下文空间环境进行记录,按照统一的接口格式将监控所获得的这些数据保存到关系数据库。

为了验证所提出方法和工具的有效性,本文设计了一个典型的程序员开发任务轨迹记录的应用案例。该案例基于本文开发的插件扩展,增加了在UI上与程序员的交互,根据程序员的开发行为监控来为程序员实时分析并提供建议,并允许程序员及其团队回看监控记录下的任务开发的每个环节步骤。通过案例实验证明了工具的有效性和易用性,为进一步实现行为信息的深入挖掘和共享打下了基础。

1 相关工作

对于程序员行为的研究,国内外已有不少相关的工作和文献。如Eclipse的顶级项目Mylyn[1,2]就是一种集成在Eclipse中的插件,可以匿名记录程序员的相关行为和上下文并以XML格式保存。Mylyn可以在界面上给出相关的建议,使程序员聚焦在与任务相关的上下文和代码提示上。夏威夷大学开发的Hackystat[3]工具采用“传感器———服务器”模式来进行收集和分析软件开发过程中程序员产生的行为,这些行为通过处理之后会被上传到云端服务器。McKeogh J等人[4]的工作实现了一种Eclipse插件来监控程序员行为,该插件使用SWT提供的监听器来监控在Eclipse编辑器上的浏览、编码等事件。Shi Lei等人[5]的工作提出了一种以方法为粒度的Eclipse过程数据采集框架。罗悦等人[6]的工作提出了一种基于Eclipse的代码错误提示和快速修复的插件,该插件在Eclipse的文档编辑器上添加监听器,当发生代码编辑事件时,插件可以即时地获取被编辑的代码片段,启动代码检查线程来确定这部分代码潜在存在的问题,并结合Quick Fix快速在UI线程中加以提示。

以上工作为本文提供了很多有益的启示,但这些工作在程序员行为监控方面普遍还存在以下这些不足。一是粒度不够细,多数工具的粒度只记录到文件或类;二是对程序员行为监控不够全面,往往只关注于浏览、编码,而忽略了测试、调试等其他行为,这些工具所监控的事件类型较为有限(如Mylyn只使用4个核心监控点,Hackystat也只有6个,每个监控点对应一个监听接口,监控一类特定的事件);三是没有记录并利用相关行为上所附加的时间信息,而时间信息往往反映了程序员的思路,对于后续的行为分析和理解具有重要的意义。为此,本文通过E-clipse这个最流行的跨操作系统开发平台作为程序员行为监控工具的载体,利用其优秀的扩展性和丰富的监听接口设计并实现了程序员行为监控的插件,力争能克服以上的这些问题。

2 方法框架

2.1 插件的总体架构设计

本文插件的总体架构设计和主要的工作原理如图1所示。

图1的外层虚线框标识了本文实现插件的功能边界,该边界由内层虚线框标识的Eclipse平台上的插件部分和保存程序员行为的关系数据库部分组成。插件部分分为以下三个模块:

程序员行为监控模块。利用Eclipse丰富的扩展性和监控接口在Eclipse的环境中部署26个监控点,每个监控点监控一类行为,当这类行为发生时,所绑定的处理方法即被触发。

上下文监控模块。以最细的粒度记录当前行为在Eclipse工作区中所处的包、文件、类和方法等上下文信息。

数据处理模块。将上述监控得来的程序员行为结合其发生时间和上下文环境信息等经过统一的处理,保存到关系数据库中,以便后续对原始行为数据的分析和应用工作。

插件中三个模块的关系及主要工作原理如下:当程序员产生原始开发行为(编码、调试等)时,在Eclipse平台上注入的程序员行为监控模块和上下文监控模块会同时根据各自的监控逻辑捕获该行为的各属性数据和行为所处上下文环境,并把两个监控模块所获得的信息经过数据处理模块进行预处理后形成统一格式的行为数据,保存到关系数据库中,为将来充分分析和挖掘这些信息的后续工作奠定基础。

2.2 插件设计的技术标准

为了真正能使程序员行为监控插件在软件开发的效率和质量上发挥作用,其所监控得来的数据应当符合后续对这些数据预期使用的要求且监控行为应最小程度地对程序员正常开发产生干扰。为此,本文在设计实现之前将先行确定本插件应当达到的技术要求:

完整性:插件应当能够完整地记录程序员从启动Eclipse开始到退出Eclipse为止的所有行为。

自动化:插件的启动、记录、暂停、退出等行为应当由插件本身和其所处的Eclipse环境自主决定。

无侵扰性:插件对于程序员行为的监控应当在后台进行,在获得程序员的授权之后,监控行为本身不应在UI上展现,以使其对程序员的干扰降到最低。

时序性:插件收集的程序员行为应当附带有时间戳的信息,对于可合并的连续事件应当包括开始和结束时间。

原子性:插件收集的程序员行为应当是原子行为,即不可再分割的行为,这些行为可能是由程序员触发的,也可能是自动触发的系统行为。

细粒度:插件收集的程序员行为应当以当前行为所处的可以获得的最细的上下文粒度来进行记录,如类、方法、变量、甚至行号。

非匿名性:插件收集的程序员行为在经过授权之后应当是非匿名性的,既可以用来分析单个程序员的编程习惯个性,也可以将所有的程序员行为放在一起分析共性。

3 工具实现

3.1 行为监控模块

1)对于Eclipse IDE监控机制的探索

本文基于Eclipse插件开发环境PDE(Plug-in Development Environment)进行,通过实现Eclipse各组件提供的监听API和声明各组件提供的扩展点,如UI、Debug、JUnit、SVN等,无缝地使本插件和Eclipse开发环境结合。其中,每个组件提供的监控方法又有所不同,大致来说分为以下两类。

(1)监听器(Listener)机制

这种监控机制的原理如图2所示。Eclipse核心平台及很多插件提供了监听接口,这些监听接口遵循观察者模式,被注册在各类组件上,当该组件监听的特定事件发生时,注册在该组件监听接口会被自动通知,触发监听器中的处理方法。当然,由于不同接口由不同插件提供,其实现方式、注册监听方式都各有不同。本文的工作即是寻找并实现这些监听接口,查阅其API,并将它们注册到相应组件上,并实现相应的处理方法。

一个典型的使用监听器机制进行监控的例子是对于透视图(Perspective)行为的监控。它的监听器接口定义在org.eclipse.ui包中,名为IPerspective Listener,该监听器提供了两个方法,分别为perspective Activated()和perspective Changed(),分别在透视图被激活和被更改时被触发。要使该监听器正常工作,还需要将其注册到相应的组件上。通过查阅IPerspective Listener的API Usage,可知应将监听器注册在通过Platform UI获取到的当前活动窗口上。一旦透视图发生变更或被激活,当前活动窗口就会通知所有注册在其上的透视图监听器,触发相应的方法,再根据3.3节方法将其进保存。

(2)扩展点(Extension Point)机制

这种监控机制的原理如图3所示。扩展点是Eclipse中的一种关键机制,每个插件都可以通过扩展其他插件的扩展点向Eclipse平台添加新功能。这种允许不断改进的松耦合功能被广泛地使用,本文的工作即是寻找对于监控有价值的扩展点,在插件中声明扩展该扩展点并实现相应的方法。

一个典型的使用扩展点机制进行监控的例子是对于控制台输出(Console)内容的监控,控制台是输出运行结果或运行错误的UI组件。对于控制台的扩展点,声明在org.ecipse.debug.ui.consoli Line Trackers,下一步在本插件中声明对该扩展点的扩展,实现相应的类和接口方法,如init(),line Appended()和dispose(),它们分别在控制台被初始化,控制台输出运行结果和控制台被销毁时触发,再根据3.3节中的特定机制在这三个方法中将这些控制台行为进行预处理后保存。

(3)两种监控机制的关系

监听器机制和扩展点机制都是对Eclipse上的程序员行为进行监控和采集的有效手段,两者互有异同。相似之处在于,它们都利用了Eclipse平台的可扩展性,对其现有的开放监听接口(类)进行了实现(继承)扩展。

从图2和图3中可以看出两者的区别。对于监听器机制,当程序员发生操作后,监听器机制会通知行为的接收者(被注入监听器的组件),再由该组件通知所有注册在其上的监听器,由监听器来处理程序员行为,其本质是利用了Eclipse原生插件提供的接口,通过查阅API后添加相关的监听器及其处理方法至相应组件上,在不改变原有组件的基础上扩展了相关功能;对于扩展点机制,当程序员发生操作后,Eclipse平台会直接通知被扩展的组件,由该组件直接来处理程序员的行为,其本质是以扩展后的新组件替代了原生的Eclipse组件,新组件不对原生组件的功能做任何的修改,只是附加了监控捕获和处理的机制,并不会影响到程序员的正常开发行为。

2)各类监控接口和扩展点的实现

结合上述两种Eclipse程序员行为监控方法,本插件一共实现了26个监听接口的实现和扩展点的扩展,它们被分为8个行为类别,分别从不同的角度对各类行为进行监控。这些监控点就像探针一样,分布在Eclipse的环境的各处,随Eclipse打开而打开,无侵扰地在后台监控着程序员的一举一动。

Eclipse UI行为。负责监控Eclipse的UI事件,如工作区、窗体、页面、透视图以及视图和编辑器等组件的事件。

Eclipse控制行为。负责监控Eclipse环境的非UI事件,如Job任务事件,首选项Preference参数设置更改等事件。

开发行为。负责监控程序员的开发行为,核心是Java代码编辑器行为监控,包括SWT的监控(键盘、鼠标、滚动条、帮助事件等),文档变更监控,代码自动补全监控、对于菜单栏菜单项和快捷键命令的监控(复制、粘贴、重构、搜索、编译等)、选择行为监控、元素变化监控等其他开发过程中的行为监控。

调试行为。负责监控程序员的调试行为,包括断点管理和调试管理。断点管理负责监控断点的添加、移除、变更断点触发条件等,调试管理负责监控调试行为,如继续、暂停、终止、步进、跳出等调试事件。

测试行为。负责监控程序员的测试行为,依赖JUnit框架,负责对于测试套件和测试用例的启动、结束等事件的监控和流逝时间计算。

版本管理行为。负责监控程序员的版本管理行为,依赖CVS和SVN框架,负责对CVS和SVN的资源库操作和版本管理事件,如对提交、检出等事件的监控。

资源控制行为。负责监控工作空间资源文件增加、变更、删除事件的监控。

日志行为。负责日志事件监控,如Error Log日志监控,控制台输出监控和对Problems视图发生变化时的监控。

结合以上8类事件的监控,本文实现的插件基本可以覆盖几乎所有的程序员常见行为,其完整的结构图和涉及到的监控接口及扩展点如表1所示。

3.2 上下文监控模块

1)程序员行为的上下文

程序员从打开Eclipse进行工作之时起,产生的每一个行为都几乎都会意图施加在一个工作空间的对象上,它可能是一个包,也可能是一个文件、类或方法甚至是某一行代码。为了更加客观地监控程序员的行为,对程序员每个行为的施加对象及其所处的上下文环境和状态都应进行监控。这种上下文信息为程序员的行为后续的分析工作提供更丰富的信息,如果结合时序信息,则可更清楚地分析理清程序员开发过程中的思路。

但并不是所有的行为监控都会提供接口告诉监控模块行为的对象是什么,这就为实时监控每个行为的上下文带来的困难。如图4所示,程序员先“打开”了个A项目,然后点击“编译”按钮编译了A项目。此时,该场景由两个事件组成,一个结构选择事件和一个命令事件。而命令事件监听接口IExecution Listener所监听到的编译事件(Build)并不能告知其编译的到底是哪个项目,对于这样的情况,本文插件会根据前序捕获的“打开”行为来做“根据时序的最近猜测”,即判断编译事件施加的对象即为前序“打开”的A项目。

这种解决思路有一个前提:程序员每进行一个操作之前,都会先切换到该上下文环境中进行。换而言之,只要在每次程序员切换上下文时将其捕获,之后所有的行为都可以认为是在这个上下文之中进行,直到下一次捕获到程序员切换上下文的行为。在大多数情况下,这种前提应当是合理的。基于这种最优猜测的思路,本文提出了三种重要的上下文切换行为:

(1)结构化选择行为

JFace中的结构化选择(IStructured Selection)监听接口继承于org.eclipse.jface.viewers的ISelection接口,指包含元素的选择事件。它们广泛地存在于Eclipse环境中,如包资源管理器(Package Explorer),大纲视图(Outline),类型层次(Type Hierarchy)等视图中,当这些视图中的元素发生切换时,结构化选择事件即被触发,此时即可认为程序员接下来要进行的操作应该是要施加在这个文件(或类、方法等,下同)上,在此基础上根据选择的元素进行判断,如果判断为编程元素(如包、文件、类、方法等),就可以切换上下文来指向当前编程元素。

(2)文字化选择行为

JFace中的文字化选择(IText Selection)监听接口同样继承于org.eclipse.jface.viewers的ISelection接口,指包含文字的选择事件。它们广泛地存在于编辑器浏览代码的过程中,当把文字化选择事件接口注册到相应的代码编辑器的Source Viewer上,且程序员将光标选择了某段代码或将光标定位在该代码编辑器内(长度为0的文字选择事件)时,此时文字化选择事件被触发,可以合理地推断当前光标定位的部分正是程序员正在关注的代码片段。

(3)元素变更行为

元素变更行为(IElement Changed Listener)监听接口定义于JDT的core包,是专门针对Java元素的监听事件。当把元素变更监听器注册到Java Core上后,一旦元素对应的Java模型发生了变化,监听器中的事件即被触发。这种变化常见于代码的编辑、重构等事件中。每当Java模型变更时,插件会自动捕获该Java元素的变化增量(IJava Element Delta)。监控模块对该增量的类型进行判断,如果是增加(Add)或变化(Change),则将该增量所属的句柄更新为新的上下文,如果是删除(Remove),则将该增量所属的上一级非空句柄更新为新的上下文。

2)特殊情况的处理

以上提到的思路已经可以监控大部分情况下程序员的行为上下文,但在特殊情况下,程序员的行为并不意图施加在某一个编程元素上,比如修改Eclipse IDE的首选项(Preference)参数设置事件,控制台输出事件,打开“关于Eclipse”事件,以及从Eclipse Market安装新的Eclipse插件事件等等。对于这些行为,本插件不会记录该行为其上下文环境(因为对后续分析没有意义),而是枚举这些事件,只记录在3.1节中行为的属性值,如首选项参数设置前后的值,并将其保存在数据库中。

3.3 数据处理模块

通过行为监控和上下文监控的模块,插件已经基本可以捕获各种类型的程序员行为,但是由于每个监控都是由不同的插件提供,其接口或扩展的实现方法、提供的数据格式也不尽相同,要想将这些行为数据真正用于后续的分析和利用,还需要将这些数据经过统一的预处理后保存到数据库中去。

数据处理是承上启下的模块,它既与监控收集得来的数据契合,也为后续数据的利用提供统一的接口和平台。和监控模块一样,数据处理模块也是静默地在后台调用异步线程运行,而不对程序员的正常开发造成侵扰。它将每个程序员行为结合发生的时间信息和所处的上下文空间信息一并转化为统一的数据格式,存储到数据库中。数据库的存储格式如表2所示。

4 案例研究

4.1 场景定义

为了验证本插件的有效性和易用性,在完成上述工作后,本文在已实现的插件基础上扩展了一个典型的实用案例场景研究:任务轨迹记录。场景的典型用例是:程序员可把即将进行的一项工作预定义为一项任务,并点击工具栏上的“开始”按钮启动录制任务的开发行为轨迹。在开发过程中的所有行为都将由插件保存,视图“上下文推荐”会动态地更新所有涉及和该任务有关的文件、类、方法等,这些元素根据其被编辑的时长长短显示在上下文视图中。任务结束时,再点击工具栏上的“结束”按钮结束录制行为轨迹。这些轨迹可以允许程序员通过视图“行为轨迹”回看,并上传到SVN上。由于本插件对于程序员行为监控的非匿名性,当团队中任何一名成员希望查看这个功能是怎样被实现时,都可以从SVN上调出这个任务的行为轨迹记录,查看这个任务详细的每个步骤。

4.2 场景实现

本场景在已实现的监控插件基础上,又扩展了UI的相应功能,使监控插件不再仅限于后台静默运行,而加入了和用户的前台交互,通过分析监控插件得来的程序员行为信息即时地为其提供相关的建议。具体体现在在Eclipse UI上增加了两个视图:“上下文推荐”和“行为轨迹”,并在工具栏上增加了两个命令按钮:“开始”和“结束”。

无论任务是否开始,程序员行为监控插件始终都会根据3.3节中的逻辑将每个开发行为保存。而当任务一旦开始,插件就会自动在数据库“任务”表中建立一条记录,记载该任务开始的时间,并在数据库“任务与上下文关联”表里开始记录涉及该任务的上下文及其之间的关联,根据每个上下文元素编辑活动的时间计算其与该任务的关联度,动态地根据计算结果在“上下文推荐”视图中做出相关的推荐,如图5所示。当任务结束时,该记录便会记载任务结束的时间。如果程序员想要再次将这些记录轨迹调出,可根据“任务”表中记载的任务的起始时间和终止时间来抓取3.3节中数据库记录下来的相应区间的行为数据,并在“行为轨迹”视图中用表格形式展示,如图6所示。

4.3 场景分析和评价

图5展示了一个任务“添加调试事件监控特性”的上下文推荐截图,通过给任务的开始和结束打上时间戳,可以客观地将程序员整个任务的行为序列按时间顺序记录下来,使程序员可以更加聚焦在与这个任务相关的包、类、文件上。同Mylyn等成熟插件相比,本插件加入了更多的时间信息,利用这些事件信息,可以根据每个元素编辑时长为程序员提供时间相关度更高的建议。

图6展示了一个任务“添加JUnit Test监控特性”的部分行为轨迹截图,每一行记录都是一条原始行为的轨迹。该任务共记录了173个程序员主动触发事件和824个非主动触发事件。该轨迹反映了程序员完成该任务的思路:开始任务后,程序员首先按下了F1键进行了Help查阅API Usage,然后建立了继承自TestRun Listener的监控类Junit Test Listener,随后进行了编码,重载了父类的五个方法,对五个方法的公共部分进行了重构提取,随即在Junit Core上注册了该监听器,并将其注册到插件类Eclipse MonitorPlugin的初始化代码中,最后进行了断点的设置、调试运行后结束任务。

通过回看程序员的任务轨迹,可以清晰地掌握他们开发的思路,学习他们是如何从架构设计到具体实现、了解程序员何时进行了版本管理、判断断点设置的条件与位置、学习重构的策略甚至是使用快捷键的技巧。另一方面,可以对行为进行统计意义上的分析,如分析程序员在某个任务中浏览、编码、调试、查阅帮助的时间比例,或利用数据挖掘的技术来挖掘程序员的行为模式等。

案例场景对团队开发也有很强的现实意义。对于团队合作来说,领导者可以通过回看任务轨迹来评判任务工作量,进而评判程序员在开发的过程中是否遵循了预先定义的软件过程。未来还可以对本场景进行扩展,建立在线的云任务库。每个程序员在完成某个特定任务之后,都可以选择将当前任务的开发过程轨迹记录上传到库中,待后续的程序员要想再进行类似的开发时,就可以直接在任务库中搜索之前已完成的任务。与传统的学习开源软件直接提供的源代码相比,这样的云任务库可以利用记录下来的时序信息更多反映程序员当时的思路,为后人提供更多有益的软件实践,避免之前走过的弯路。

5 结语

本文通过对Eclipse IDE中的监控机制的研究,在前人工作的基础上,调研了相关的Eclipse开放的监听接口和扩展点,并加以实现和扩展,将不同的插件所提供的监听接口和扩展点监控得到的程序员各类事件进行统一数据接口的整合,通过异步线程保存到数据库。在此基础上,本文设计了一个任务轨迹记录的案例分析,通过场景实例和分析评价有效地证明了本插件的有效性和易用性。

本文所提出和实现的插件还仍有一定的局限性。到目前为止,插件的主体部分还主要局限在后台静默捕获程序员的行为,和前台的交互相对还不够充分和成熟。在今后的工作中,将把插件更智能地与程序员交互运行,如根据监测程序员正在使用的API,智能搜索和该API相关的在线资源后推送,或是根据优秀的行为模式库来监测当前程序员的开发是否符合最优代码实践或是否有任何bug的隐患;可视化也是未来发展的方向,以类似于UML顺序图的形式展现出来,更加方便理解。

摘要:程序员在软件开发过程所产生的浏览、编码、调试和测试等行为可以转化为带有时序信息的行为数据,为提高软件质量和开发效率提供有价值的信息。针对如何全面、客观地记录程序员开发行为数据的问题,基于Eclipse的可扩展性提出并实现了一种程序员开发行为监控插件。该插件可以对软件生产中程序员的行为及其上下文进行实时监控,将原始行为预处理后转化为统一格式的行为数据并保存到数据库中。在此基础上,设计了一个典型的程序员开发任务轨迹记录的应用案例。该应用允许程序员定义任务、记录任务行为轨迹、回看轨迹,并允许整个开发团队共享任务行为信息。案例研究结果验证了该插件的有效性和易用性,为进一步实现行为信息的深入挖掘和共享打下了基础。

关键词:Eclipse插件,行为监控,上下文监控

参考文献

[1]StaM.Origo Mylyn plug-in and advanced issue management[D].Swiss Federal Institute of Technology Zurich,2008-2009.

[2]Eclipse Mylyn Project[EB/OL].2013-12-1.http://www.eclipse.org/mylyn/.

[3]Johnson P M,Hongbing K,Agustim J M,et al.Practical automated process and product metric collection and analysis in a classroom setting:Lessons learned from Hackystat-UH[C]//Empirical Software Engineering,2004.ISESE’04.Proceedings.2004 International Symposium on,IEEE,2004:136-144.

[4]McK eogh J,Exton C.Eclipse plug-in to monitor the programmer behaviour[C]//Proceedings of the 2004 OOPSLA workshop on eclipse technology eX change,ACM,2004:93-97.

[5]Shi L.Eclipse IDE Software Process Data Collection Technique[R].Beijing:Software Engineering Institute of Peking University,2009.

[6]罗悦,刘辉.基于监控与Quick Fix的代码错误提示和修复方法[OL].[2014-02-10].中国科技论文在线.http://www.paper.edu.cn/releasepaper/content/201402-120.

[7]Murphy C,Kaiser G,Loveland K,et al.Retina:helping students and instructors based on observed programming activities[C]//ACM SIGCSE Bulletin,ACM,2009:178-182.

[8]Majid I,Rabillard M P.NaC IN:an Eclipse plug-in for program navigation-based concern inference[C]//Proceedings of the 2005 OOPSLA workshop on Eclipse technology eX change,ACM,2005:70-74.

Eclipse环境 篇7

JPF的基本工作原理是从被检测对象中筛选出少量的状态等价于原系统,然后交给JVM检测,再对不符合系统性质的检测结果,JPF可以用不同的方式显示错误路径及性质违例。JPF有三种不同的输出方式:分别是JPF报告系统(Reporting System)、JPF日志和应用输出。

JPF中的整个设计重点基本是JVM和Search对象,JVM的功能相当于状态生成器,在执行过程中,首先JVM生成模型检测使用的程序状态,同时JVM中的三个重要的方法:Forward()表示下一个状态、Backtrack()存储回溯栈中的上一个状态和Restore State()存储一个任意状态,控制程序状态;Search的功能相当于是JVM的驱动,筛选出供JVM处理的状态,告诉JPF虚拟机在状态空间中是前进还是后退,同时具有性质验证器的功能。

2 JPF的关键技术

在检测过程中,JAVA程序状态一般包括三部分,分别是对象的动态变量、类的静态变量和每个线程的信息。由此可见,JAVA程序的状态数量一般都是很大,在解决严重的状态爆炸问题方面,JPF使用了启发式路径选择生成器、on-the-fly偏序规约、主机VM执行、状态抽象、静态分析、对称规约和符号执行等一系列的解决方案。

偏序规约(Partial Order Reduction)方法是利用行为的独立性(Independence)来减少并行系统模型检测中的状态空间爆炸问题。因此,在算法中只需要考虑其中的一种状态而忽略另一种状态,状态S通过这种方式可以转换成比较小的另一个状态S',在执行状态空间遍历时,只需要选择合适并具有代表性的状态集代替全部状态集,从而达到减少状态数量。

近年来,在模型检测中经常用对称(Symmetry)方法来避免状态爆炸问题,对称方法主要是利用了系统中的对称结构来进行状态精简的。在JPF中,把对称方法和偏序规约技术结合形成对称规约技术,它的基本思想是,在模型检测过程中对系统中需要进行性质验证的状态形成等价状态,只需要检测这些等价状态中的一个就可以了。假设一个并行系统中,行为集A={xi,yi,zi,ni},状态集S={Ni,Ti,Ci}。形成的完整系统状态转移如图1所示。注意到,图1中存在明显的对称关系,使用对称规约可以得到如图2所示的新的状态转移图。同时,行为y、z是独立的,可以使用偏序规约对系统作进一步的状态精简,从而得到与原系统等价的状态较少的状态空间,如图3所示。

3 基于JPF的Eclipse模型检测平台实现

JPF不仅可以实现对Java程序的模型检测功能,它还提供了很强的程序扩展功能。本文使用JPF的Eclipse的PDE来进行JPF插件的开发,使用PDE提供工程向导,新建一个Eclipse Plug-in项目。

3.1 分析插件要实现的功能,标识需要进行添加的扩展点

plugin.xml是插件和Eclipse内核的接口,它提供的扩展点非常多,常见的扩展点有透视图(perspectives)、视图(views)、编辑器(editors)、首选项(preference Pages)、帮助(toc)和上下文帮助(context)。需要为每个class关联一个配置文件(后缀为.cjp),通过读取cjp文件的配置信息,使用JPF来检测目标class文件。首先在工具栏中设计一个按钮来启动插件的配置对话框,用于配置和管理被检测类的配置文件,然后还需要专门的面板来并显示检测的结果。

3.2 根据扩展点的规范来实现这些扩展

新建一个类MyJpfButtonAction,实现接口IWorkbench Window Action Delegate,然后在run()方法中添加实现打开配置对话框的代码。

然后,需要定义两个视图,一个用于管理配置需要验证的文件,另一个用来显示验证的结果。作为view的扩展,它必须继承ViewPart类,将它们分别命名为OutputView和TopicView。让他们重载父类的create Part Control()方法,来设计各自的面板内容。在OutputView中,设计一个列表来显示线程选择信息,当用户点击某个线程时,在右边显示线程检测的详细信息,为了实现此功能,让OutputView类实现JFace的一个视图UI接口ISelectionChangedListener。

添加一个右键菜单项,新建两个类JavaClass LaunchAction和RunJpfAction,实现接口IObject Action Delegate。在Java Class Launch Action的run()方法中使用IProject和IFile来为class文件创建配置文件,并初始化配置文件的内容。在Run Jpf Action的run()方法中调用JPF来完成指定文件的检测工作。

3.3 编辑plugin.xml文件

PDE为插件清单文件plugin.xml提供了专门的插件清单编辑器。PDE中的插件编辑器为多页编辑器,其中包括概述、依赖项、运行时、扩展、扩展点、编译、MANIFEST.MF、plugin.xml和build.properties等,可在每个配置页面中为其定制相关的属性。为每一个扩展点添加一个节点,然后在子节点中配置扩展点的id、实现类的路径、名称、图标、标签文字等扩展点属性。

调用JPF来执行检测功能,需要设计一个专门的类来完成此项工作。新建一个类VerifyJob,继承Eclipse的核心类Job,该类包含4个主要属性:IFile变量来存储配置文件信息,Config变量来自JPF的配置类,布尔型变量step指示是否单步执行,PrintStream变量用于输出。根据默认的配置文件和用户自定义的配置文件,生成JPF的Config对象,然后在Verify Job的run()方法中使用Config对象构造一个JPF对象,最后执行JPF的run()方法。自定义一个监听器,用于检测并输出JPF的检测结果,然后通过调用JPF的add Search Listener()和addVMListener()方法,将该监听器添加到当前的JPF对象中去。

3.4 插件测试、打包与发布

PDE提供了很方面的测试、调试手段。每添加一次代码,就可以通过在插件项目上点击鼠标右键,选择”Run As Eclipse Application”来测试新插件的功能效果。当然,最终的测试,需要将打包发行后的插件安装到Eclipse中来观察插件的工作情况。

插件项目在打包时,仅将src源文件对应的编译文件打成一个jar包。其它文件如xml、图像文件等都需要手工复制到打包目录下。可使用Eclipse导出功能,或Ant来打包插件。

Eclipse还可以通过新建一个Update Site项目的方法,将新的插件以网页的形式发布出去。利用建立Update Site项目向导,最终会形成一个web目录,该目录下包含了你要发布的plugins和features文件夹,另外还有一个site.xml文件和一个index.html文件。site.xml中定义了改更新站点可以提供的插件的下载路径,这样用户可以通过Eclipse的UpdateManager来在线安装插件。

4 实例应用分析

为测试JPF的死锁检测功能,首先创建一个存在死锁问题的Java类Deadlock,该类实现Runnable接口,在mian()函数中启动两个Deadlock对象,并用synchronized控制对象本身的访问。考虑这样一种情况:1)线程T1在对象t1上同步,然后调用对象t2的foo方法,允许被抢先执行。2)另一个线程T2开始执行,在对性t2上同步。3)T2获得t2,继续执行,企图获得t1,调用t1的foo方法。但获取失败,因为T1占有t1。于是,T2阻塞,等待T1释放t1。4)轮到T1继续执行,T1试图获得t2,但不能成功,因为t2已经被T2占有了。至此,T1和T2都被阻塞,程序死锁。配置JPF,实现死锁检测。

在运行D e a d l o c k类后,由于配置了Not Deadlocked Property属性,JPF可以很快发现程序中的死锁问题,并输出导致死锁的程序执行路径。JPF的出现,为Java程序模型检测注入了新的力量,它在许多方面都得到了实际应用,包括航天软件的研制、实时系统验证和网络协议验证[等。Eclipse是Java程序员比较常用的一种Java编辑工具,利用JPF在其基础上开发一款Java模型检测工具是非常有意义的,可以使得程序员在编写程序的同时检测程序代码的逻辑正确性。

摘要:JPF(Java Pathfinder)是一种精确的Java字节码状态模型检测工具,为Java程序的模型检测提供了很好的实现方法,对并行程序中存在的死锁和数据竞争等问题,都可以有效地进行模型检测。本文实现了基于Eclipse的Java模型检测平台,使得程序员可以在编写代码的同时实时检测自己的代码。

关键词:JPF,状态空间爆炸,模型检测

参考文献

[1]杨明远,罗贵明.一种大规模并行程序模型的检测方法[J].计算机工程,2008,34,(13):72-74.

Eclipse环境 篇8

1 所需器材及试剂

ECLIPSE 50试剂盒主要包括可分拆的微孔板、黏胶薄膜、塑料架等;恒温水浴锅;50μL微量取样器及取样头;裁剪刀具;采样瓶;无抗奶。

2 检测方法

2.1 采样

使用采样瓶根据不同药物弃奶期及奶牛停药时间等选择性地采集待检牛奶, 在采样瓶上标明奶牛的个体信息及相关信息。样品采集后如不能及时检测需置于冰箱保鲜层中冷藏。采样过程中牛奶不能接触消毒剂、防腐剂等并确保牛奶的干净。采样瓶用过后用自来水刷净再用开水浸泡以除去采样瓶中的油脂, 晾干或烘干后可重复使用。在此过程中应使用清洁剂或消毒剂彻底冲刷干净, 避免残留, 以免影响试验结果。

2.2 检测程序

根据检测样品的数量用刀从微孔板上裁下所需的微孔, 从微孔板上裁微孔时注意不要划开其他微孔上的金属膜以防微孔挥发以致干结。裁后的微孔板应立即放回塑料袋中密封, 并在2~8℃下冷藏存放。裁下的微孔放在一个空的白色塑料架上, 揭去微孔上的金属薄膜, 用微量取样器在每个微孔中加入50μL牛奶样品 (根据需要可以用无抗奶做阴性对照, 用已知的抗奶做阳性对照;取样头应取一个样换一个) , 再用黏胶薄膜小心地密封微孔板条记录每个微孔所对应的奶样号。密封后将其垂直放入已经预热到65℃的水浴锅中, 温度控制在 (65±2) ℃。放入水浴锅的时间最好通过做阴性和阳性的控制样来确定, 一般为2.5h。

2.3 判定结果

从微孔侧面观察结果, 黄绿色或者黄色表示抗生素不存在 (阴性) ;蓝、紫色表示抗生素存在 (阳性) ;绿、蓝色表示抗生素浓度接近试剂盒的检测限, 此时建议重做检测。

3 注意事项

(1) 所采奶样和微孔应放置于室温片刻以减小二者的温差。 (2) 为控制好温度最初几次应用水温计测量水温。 (3) 本试剂盒对抗生素和其他抗菌物质如清洁剂和消毒剂异常敏感。必须防止样品被此类物质所污染。 (4) 牛奶中少量的天然抑制剂不会影响到试剂盒的检测结果。但初乳、末期乳和乳腺炎牛奶中的抑制物质将会有所增加, 此时检测结果将会受到影响。

4 结果

海林农场畜牧场使用的药物主要有以下几种, 试验数据见表1。

5 小结

Eclipse环境 篇9

关键词:Eclipse, Struts,教学组织,激励,需求,创新

一、相关概念简述

1. 什么是Eclipse.

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言, 它只是一个框架和一组服务, 用于通过插件组件构建开发环境。幸运的是, Eclipse附带了一个标准的插件集, 其中包括Java开发工具 (Java Development Tools, JDT) 。

2. 什么是Struts.

Struts是一个基于Sun J2EE平台的开源MVC框架的解决方案, 它把Servlet、JSP、自定义标签和信息资源整合到一个统一框架中, 开发人员利用其开发时不再需要自己编码实现MVC框架, 极大节省了时间。

二、“在Eclipse中开发Struts工程”的教学方案设计

1. 课前准备细致化。

为了让各个水平层次的学生都能从课堂上受益, 教师在课前应将教学材料准备充分, 除了需要认真查看课程标准、授课计划, 了解学生学习状态等情况之外还需要认真准备在项目进行中学生可能出现的问题, 是否有学生可以超前实现既定目标, 如何对学生实施“激励”使之达到更高要求等。比如, 在使用Eclipse开发Struts工程项目时, 首先要选择合适的项目, 这个项目应该具备“学生比较常见并且对其业务逻辑熟悉”的特征。其次, 准备细节, 即从“建立工程”开始到“项目功能完善”间的所有问题准备到位。这些问题及其解决方案最好能整理成为“项目指导书”分片置于Word文档中 (也可直接置于教学所用的PPT文档中, 但是经过实践检验效率不如Word高) 。第三, 将有关课堂节奏和控制的相关内容整理到PPT文档中。这样双管齐下既可以实现教师在课堂上的宏观调控又可以让学生实现自主学习。

2. 课堂组织宏观化。

有了课前精心准备的教学材料, 教师在课堂上就可以放手学生学习, 自己充分地发挥其指导和辅助作用了。首先, 教师应该从宏观上告诉学生课堂学习目标;其次, 告诉学生如果需要达到目标应该做什么;然后, 给学生一些指导性文件 (即课前准备的项目指导书) ;最后, 实现了学生学习教师在必要时辅导的“教学做”为一体的局面。为了保证学生不至于看到很长篇幅的指导书就不知从何下手, 我们可以在课堂上将指导书分片给学生发放, 此时就需要教师根据学生的情况进行宏观调控和把握, 与此同时实现了对各种水平层次学生的照顾。如技术基础好、对项目掌握得比较快的学生, 可以将指导书整体发放给他们, 这样不仅能让他们对项目有完整的认识, 更加对他们的超前需求有了提前满足;而对那些技术基础薄弱、对项目的理解不够深刻的学生, 则可根据其进展逐步将指导书跟进, 我们可以预料到, 课前准备的指导书越细致, 可操作性越强, 则这部分学生的进展越快, 反之则不然, 所以为了在课堂真正让学生做学习的主人, 我们需要认真准备这些材料。

3. 项目成果个性化。

在如此细致的指导下, 学生的作品雏形是一致的, 在一些强势学生做好雏形作品后, 教师就要发挥其导演作用, 让这些学生们的“表演”更加精彩一些, 比如, 针对某个功能提出更高的业务需求, 更人性化的界面需求, 更节省资源的方法需求等, 用这样的一些“激励”方法可以促使学生的创新意识得到很大程度的提高, 并以此为契机锻炼学生的自学能力。

马斯洛的需求层次理论告诉我们人类的需求可以分为“生理需求、案例需求、归属与爱的需求、尊重需求和自我实现需求”五大类。对于已经实现基本要求的学生而言, 他们在课堂上的需求似乎已经可以达到“自我实现”这一层次上, 作为课堂上的引导者-教师而言, 我们的职责不再是简单地给他们记个满分, 而应该想办法促使他们的需求得到满足, 由此形成“实现需求—激励—实现更高的需求—激励—…”的良性循环。

4. 评价学生层次化。

在类似此项目的评价体系中, 层次化似乎显得更重要一些。因为学生的基础不一, 成果不一, 这必然造成了评价标准也不一的局面。那么该如何分层制订评价方式呢?首先, 根据其成果对需求的满足程度分层。比如, 在此项目中, 满足了基本需求的学生假设为第1层, 满足了较高需求的学生假设分到第2层, 满足了更高需求的学生假设分为第3层等。对于不同层次的学生可以有不同的成绩上限, 在实际操作过程中, 我们可以因项目而异。其次, 根据其项目制作过程中的情况进行综合评价。这时需要使用正常的评价标准来衡量即可。最后, 将评价结果加权处理。

三、结论

上一篇:电子商务呼唤网络安全下一篇:心电数据库