「非功能测试文档java」什么是非功能测试
本篇文章给大家谈谈非功能测试文档java,以及什么是非功能测试对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何写测试用例 java
- 2、求一个关于JAVA的论文
- 3、java单元测试中 为什么单元测试通过了 但程序还是报了错?
- 4、java怎么将测试结果做成表的形式
- 5、java规则引擎---Jess
- 6、运行java程序,同时需要jdk和jre吗?
如何写测试用例 java
测试用例设计和执行是测试工作的核心,也是工作量最大的任务之一。
测试用例(Test Case)目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
测试用例编写准备
1
从配置管理员处申请软件配置:《需求规格说明书》和《设计说明书》;
2
根据需求规格说明书和设计说明书,详细理解用户的真正需求,并且对软件所实现的功能已经准确理解,然后着手制订测试用例。
测试用例制定的原则
1测试用例要包括欲测试的功能、应输入的数据和预期的输出结果。
2测试数据应该选用少量、高效的测试数据进行尽可能完备的测试。
用例覆盖
1正确性测试:输入用户实际数据以验证系统是满足需求规格说明书的要求;测试用 例中的测试点应首先保证要至少覆盖需求规格说明书中的各项功能,并且正常。
2容错性(健壮性)测试:程序能够接收正确数据输入并且产生正确(预期)的输出, 输入非法数据(非法类型、不符合要求的数据、溢出数据等),程序应能给出提示 并进行相应处理。把自己想象成一名对产品操作一点也不懂的客户,在进行任意操作。
3完整(安全)性测试:对未经授权的人使用软件系统或数据的企图,系统能够控制的程度,程序的数据处理能够保持外部信息(数据库或文件)的完整。
4接口间测试:测试各个模块相互间的协调和通信情况,数据输入输出的一致性和正确性。
5压力测试:输入10条记录运行各个功能,输入30条记录运行,输入50条记录进行测试。
6性能:完成预定的功能,系统的运行时间(主要是针对数据库而言)。
7可理解(操作)性:理解和使用该系统的难易程度(界面友好性)。
8可移植性:在不同操作系统及硬件配置情况下的运行性。
测试方法
1边界值分析法:确定边界情况(刚好等于、稍小于和稍大于和刚刚大于等价类边界值),针对我们的系统在测试过程中主要输入一些合法数据/非法数据,主要在边界值附近选取。
2等价划分:将所有可能的输入数据(有效的和无效的)划分成若干个等价类。
3错误推测:主要是根据测试经验和直觉,参照以往的软件系统出现错误之处。
测试用例的填写
1一个软件系统或项目共用一套完整的测试用例,整个系统测试过程测试完毕,将实际测试结果填写到测试用例中,操作步骤应尽可能的详细,测试结论是指最终的测试结果(结论为:通过或不通过)。
求一个关于JAVA的论文
TAGS: 毕业论文 计算机 基于 远程 对象 RMI 方法 实现 调用
哪位老兄有计算机毕业设计论文啊?是基于java的,小弟急用,谢谢!用RMI开发基于Java的企业分布式应用我站还提供更多的免费计算机论文,但免费论文仅供参考,建议广大网友下载后不要轻易采用。摘要由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案。
关键词 Java RMI 企业分布式应用
1 概述
随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。
在当今的编程术语里,分布式计算已经成为很常见的词,它将企业的业务数据和程序分布在网络的不同物理位置上,通过调动网络上多台计算机的处理能力,发挥远程调用数据的功能。
远程方法调用(Remote Method Invocation ,RMI),可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信。JVM可以位于相同或不同计算机上,在多个JVM中,一个JVM可以调用存储在其它JVM的对象的方法。
本文主要介绍RMI的特点,分析应用RMI进行企业分布式计算的原理,以及利用RMI实现基于Java的企业分布式应用的具体步骤。2 远程方法调用(RMI)的特点
2.1 TCP编程的缺点
由于Java编程语言设计之初就是面向对象和支持网络的,因此,基于对象的RMI机制已经内置在Java平台中。
我们经常会在网络开发中使用TCP/IP编程,这样,自然而然地就会涉及到Socket(套接字)编程。但是,使用Socket编程需要大量重复编码,在复杂分布式操作时显得非常麻烦,而且易于出错。因此,如何快速、高效、安全、可扩展地进行网络分布式计算,是开发者们一贯追求和倡导的主题。直到RMI的出现,这种繁杂、低效的开发情况才有很大改观。2.2 RMI编程的特点
当我们利用对象序列化在网络上分配对象时,RMI提供了非Java平台无法匹敌的独特而强电子商务资料库)*!%267'$#7'455大的分布式计算模型,RMI主要有以下特点:
? 客户机可以向本地方法一样调用远程服务器上的方法;
? 可以根据接口指定客户机/服务器编程合约;
? 可以从服务器对象缺省二进制类文件,自动生成调动/反调动代码;
? 将Java编程模型扩展到机器边界(和Java虚拟机(JVM)边界之外),不需要任何特殊语法;
? 还可以和一个远程方法调用中的数据同时传输行为(代码)。
尽管RMI不是唯一的企业级远程对象访问方案,但它却是最容易实现的。2.3 RMI与CORBA
作为分布式应用程序框架的规范,COBRA首当其冲,它是由对象管理组织(OMG)开发的。与CORBA不同的是,CORBA能够利用不同编程语言(例如C/C++、Basic等)开发实现分布式应用,而RMI是一种纯Java解决方案。在RMI中,程序的所有部分都由Java语言编写,这样,开发出来的程序完全符合Java规范,便于实现跨平台访问、扩展和移植。按照笔者所在西北电力建设集团公司的情况看,服务器操作系统主要有Linux和Windows2000 Server,分别存在于公司和部门当中,它们是不同的系统平台;同时,公司下属各个工程项目部又距离很远,近的几十公里,远则达到上千公里甚至位于国外,因此跨平台和远程访问这两大功能在开发企业应用系统时就必须考虑,而RMI恰恰能够用它的自身特点来满足编程需要。3 RMI基本体系结构简介
RMI通过TCP/IP在内部使用Socket,象其名称暗示的那样,它能够帮助我们查找并执行远程对象的方法。RMI的目的是让位于不同JVM中的对象,在外观及行为上都像是本地的对象。
通常,我们把调用这种远程对象的JVM,称为客户机;而把包括这种远程对象的JVM,称为服务器。
尽管对一个远程对象的引用和获得对本地对象的引用有所不同,但我们可以把远程对象像本地对象一样使用。应用程序并不知道一个对象是远程的还是本地的。实际上,远程对象上被调用的方法与本地对象上调用的方法,具有相同的语法结构。
作为RMI的底层(会包含复杂的Socket操作),它会自动截获方法调用,找到远程对象,然后处理远程请求。笔者认为,RMI设计的重要之处,就在于不但在设计上实现了远程访问功能,而且实现了设计的透明性。
RMI的基本体系结构,概括起来说,由三个抽象层组成:3.1 存根/框架层(Stubs/Skeletons Layer)
java单元测试中 为什么单元测试通过了 但程序还是报了错?
Java学习之路:不走弯路,就是捷径 (1)
作者: ∣来源:中国Java技术网∣原文地址∣2006-3-14
0.引言 在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?Java该如何学习?"。类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法。到时候再有人问起类似的问题,我可以告诉他(她),请你去看看《Java学习之路》。拜读过台湾蔡学镛先生的《Java夜未眠》,有些文章如《Java学习之道》等让我们确实有共鸣,本文题目也由此而来。 软件开发之路是充满荆棘与挑战之路,也是充满希望之路。Java学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。 "不走弯路,就是捷径",佛经说的不无道理。
1.如何学习程序设计? Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。
1.1 培养兴趣 兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。
1.2 慎选程序设计语言 男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。 如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。 如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。
1.3 要脚踏实地,快餐式的学习不可取 先分享一个故事。 有一个小朋友,他很喜欢研究生物学,很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会飞。有一次,他走到草原上面看见一个蛹,便取了回家,然后看着,过了几天以后,这个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,想抓破蛹壳飞出来。 这个过程达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎,怎么也没法子走出来。这个小孩看着看着不忍心,就想不如让我帮帮它吧,便随手拿起剪刀在蛹上剪开,使蝴蝶破蛹而出。 但蝴蝶出来以后,因为翅膀不够力,变得很臃肿,飞不起来。 这个故事给我们的启示是:欲速则不达。 浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故,就像当年的大跃进一样,都想大步跨入共产主义社会。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧,居然有的打广告宣称"参加培训,100%就业",居然报名的学生不少,简直是藐视天下程序员。社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C++/Java没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello World程序,就忙不迭的向世界宣告,"我会软件开发了",简历上也大言不惭地写上"精通VC/Java"。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《Java编程思想》仔细钻研,早知如此何必当初呀。 "你现在讲究简单方便,你以后的路就长了",好象也是佛经中的劝戒。
1.4 多实践,快实践 彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。 从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:"我打算去南海朝圣,你看怎么样?"富和尚说:"这里离南海有几千里远,你靠什么去呢?"穷和尚说:"我只要一个水钵,一个饭碗就够了。"富和尚为难地说:"几年前我就打算买条船去南海,可至今没去成,你还是别去吧!" 一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。 这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,"君子动口不动手"对软件开发人员来讲根本就是错误的,他们提倡"动手至上",但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。
1.5 多参考程序代码 程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。 多多参考代码例子,对Java而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。
1.6 加强英文阅读能力 对学习编程来说,不要求英语, 但不能一点不会,。最起码像Java API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学Java的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的"周扒皮"。
1.7 万不得已才请教别人 笔者在ChinaITLab网校的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。 你是否在google中搜索了问题的解决办法? 你是否查看了Java API文档? 你是否查找过相关书籍? 你是否写代码测试过? 如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。
1.8 多读好书 书中自有颜如玉。比尔?盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔?盖茨就已经读完了所有的百科全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。 笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,"天呐,这么多书到什么时候才能看完了","学软件开发,感觉上了贼船"。这时候,我的回答一般是,"别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的",学生当场晕倒。(注:这一部分学生是刚学软件开发的) 对于在Java开发领域的好书在笔者另外一篇文章中会专门点评。该文章可作为本文的姊妹篇。
1.9 使用合适的工具 工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。在笔者另外一篇文章中会专门阐述如何选择合适的工具(该文章也可作为本文的姊妹篇)。
2.软件开发学习路线 两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。 从软件开发人员的生涯规划来讲,我们可以大致分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。
A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。
B.一门编程语言,现在基本上都是面向对象的语言,Java/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。
C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。
D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等
E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。
F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。
G.一种软件过程,RUP/XP/CMM等等,通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。当然还有其他的一些软件工程知识。
H.项目管理、体系结构、框架知识。
正确的路线应该是:B→C→E→F→G→H。 还需要补充几点:
1).对于A与C要补充的是,我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现,更新速度令人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一,在上面需要多投入时间,给你的回报也会让你惊喜。
2).对于数据库来说是独立学习的,这个时机就由你来决定吧。
3).编程语言作为学习软件开发的主线,而其余的作为辅线。
4).软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H。
3.如何学习Java?
3.1 Java学习路线
3.1.1 基础语法及Java原理 基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
3.1.2 OO思想的领悟 掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是:
●调查收集需求。
●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。
●细化分析模型到设计模型。
●用具体的技术去实现。
●测试、部署、总结。
3.1.3 基本API的学习 进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。 基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4 特定API的学习 Java介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟 悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。
3.1.5 开发工具的用法 在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉IDE了。 程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。 从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。 Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的Java IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。
3.1.6 学习软件工程 对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。
3.2学习要点 确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,不要嫌我婆婆妈妈啊。
3.2.1勤查API文档 当程序员编写好某些类,觉得很有成就感,想把它贡献给各位苦难的同行。这时候你要使用"Javadoc"工具(包含在JDK中)生成标准的Java DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具,几乎人手一份,除了菜鸟之外。J2SE DOC文档官方下载地址:,你可以到google搜索CHM版本下载。也可以在线查看:。 对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍。 当需要某项功能的时候,你应该先查相应的DOC文档看看有没有现成的实现,有的话就不必劳神费心了直接用就可以了,找不到的时候才考虑自己实现。使用步骤一般如下: ●找特定的包,包一般根据功能组织。 ●找需要使用类,类命名规范的话我们由类的名字可猜出一二。 ●选择构造器,大多数使用类的方式是创建对象。 ●选择你需要的方法。
3.2.2 查书/google-写代码测试-查看源代码-请教别人 当我们遇到问题的时候该如何解决? 这时候不要急着问别人,太简单的问题,没经过思考的问题,别人会因此而瞧不起你。可以先找找书,到google中搜一下看看,绝大部分问题基本就解决了。而像"某些类/方法如何使用的问题",DOC文档就是答案。对某些知识点有疑惑是,写代码测试一下,会给你留下深刻的印象。而有的问题,你可能需要直接看API的源代码验证你的想法。万不得已才去请教别人。
3.2.3学习开源软件的设计思想 Java领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法。
3.2.4 规范的重要性 没有规矩,不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到下载JSRXXX规范,多读规范,这是最权威准确最新的教材。第二层含义是编程规范,如果你使用了大量的独特算法,富有个性的变量及方法的命名方式;同时,没给程序作注释,以显示你的编程功底是多么的深厚。这样的代码别人看起来像天书,要理解谈何容易,更不用说维护了,必然会被无情地扫入垃圾堆。Java编码规范到此查看或下载,中文的也有,啊,还要问我在哪,请参考3.2.2节。
3.2.5 不局限于Java 很不幸,很幸运,要学习的东西还有很多。不幸的是因为要学的东西太多且多变,没时间陪老婆家人或女朋友,导致身心疲惫,严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事,他们或她们需要付出很多才能达成心愿。 Java不要孤立地去学习,需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识,用横向纵向的比较联想的方式去学习会更有效。如学习Java集合的时候找数据结构的书看看;学JDBC的时候复习数据库技术;采取的依然是"需要的时候再学"的原则。
4.结束语 需要强调的是,学习软件开发确实有一定的难度,也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在Java神殿之外的朋友有所帮助的话,笔者也欣慰了。哈哈,怎么听起来老气横秋呀?没办法,在电脑的长期辐射之下,都快变成小老头了。最后奉劝各位程序员尤其是MM程序员,完成工作后赶快远离电脑,据《胡播乱报》报道,电脑辐射会在白皙的皮肤上面点缀一些小黑点,看起来鲜艳无比…… (转载文章请保留出处:Java家())
java怎么将测试结果做成表的形式
通过这个例子,演示以下如何用java生成excel文件:
import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
publicclass CreateCells
{
publicstaticvoid main(String[] args)
throws IOException
{
HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook对象
HSSFSheet sheet = wb.createSheet("new sheet");//建立新的sheet对象
// Create a row and put some cells in it. Rows are 0 based.
HSSFRow row = sheet.createRow((short)0);//建立新行
// Create a cell and put a value in it.
HSSFCell cell = row.createCell((short)0);//建立新cell
cell.setCellValue(1);//设置cell的整数类型的值
// Or do it on one line.
row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值
row.createCell((short)2).setCellValue("test");//设置cell字符类型的值
row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值
HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell样式
cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));//设置cell样式为定制的日期格式
HSSFCell dCell =row.createCell((short)4);
dCell.setCellValue(new Date());//设置cell为日期类型的值
dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式
HSSFCell csCell =row.createCell((short)5);
csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断
csCell.setCellValue("中文测试_Chinese Words Test");//设置中西文结合字符串
row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
}
}
从以上例子,可以清楚的看到xls文件从大到小包扩了 HSSFWorkbook HSSFSheet HSSFRow HSSFCell这样几个对象。还可以在cell中设置各种类型的值。尤其要注意的是如果你想正确的显示非欧美的字符时,尤其象中日韩这样的语言,必须 设置编码为16位的即是HSSFCell.ENCODING_UTF_16,才能保证字符的高8位不被截断而引起编码失真形成乱码。
其他测试可以通过参考examples包中的测试例子掌握poi的详细用法,包括字体的设置,cell大小和低纹的设置等。需要注意的是POI是一 个仍然在完善中的公开代码的项目,所以有些功能正在不断的扩充。如HSSFSheet的getFooter() getHeader()和 setFooter(HSSFFooter hsf) setHeader(HSSFHeader hsh)是在POI1.7中才有的,而POI1.5中就没有。运行测试熟悉代码或者使用它做项目时请注意POI的版本。
另外需要注意的是HSSF也有它的对xls基于事件的解析。可以参考例程中的EventExample.java。它通过实现 HSSFListener完成从普通流认知Xls中包含的内容,在apache Cocoon中的 org.apache.cocoon.serialization.HSSFSerializer中用到了这个解析。因为Cocoon2 是基于事件的,所以POI为了提供快速的解析也提供了相应的事件。当然我们自己也可以实现这个事件接口。
因为POI还不是一个足够成熟的项目,所以有必要做进一步的开发和测试。但是它已经为我们用纯java操作ole2对象提供了可能,而且克服了ole对象调用的缺陷,提供了服务器端的Excel解决方案。
利用Java 创建和读取Excel文档
为了保证示例程序的运行,必须安装Java 2 sdk1.4.0 和Jakarta POI,Jakarta POI的Web站点是:
示例1将演示如何利用Jakarta POI API 创建Excel 文档。
示例1程序如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
publicclass CreateXL {
/** Excel 文件要存放的位置,假定在D盘JTest目录下*/
publicstatic String outputFile="D:/JTest/ gongye.xls";
publicstaticvoid main(String argv[])
{
try
{
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
// 如要新建一名为"效益指标"的工作表,其语句为:
// HSSFSheet sheet = workbook.createSheet("效益指标");
HSSFSheet sheet = workbook.createSheet();
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short)0);
//在索引0的位置创建单元格(左上端)
HSSFCell cell = row.createCell((short) 0);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 在单元格中输入一些内容
cell.setCellValue("增加值");
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close();
System.out.println("文件生成...");
}catch(Exception e) {
System.out.println("已运行 xlCreate() : " + e );
}
}
}
这里演示创建和设置字体和单元格的格式,然后再应用这些格式:
1、创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
2、创建格式
HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);
3、应用格式
HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");
总之,如本篇文章所演示的一样,Java程序员不必担心Excel工作表中的数据了,利用Jakarta POI API, 就可以轻易的在程序中存取Excel文档。
java规则引擎---Jess
该尔杰斯开发环境( JessDE )提供的一套插件为流行的开源的IDE Eclipse的;特别是,这些都是Eclipse的插件版本为3.1或更高版本。请注意,只有JessDE作品的充分“的Eclipse SDK的” -规模较小的“平台运行二进制”是不够的。
要安装JessDE ,只需退出Eclipse的,解压缩所有文件Jess71p2/eclipse进入最高级别的Eclipse的安装目录。确认目录命名为“ plugins/gov.sandia.jess_7.1.0 ”存在,在你的Eclipse的安装目录,然后重新启动Eclipse的。 //////
这段翻译的结果,不是你的SDK 不是 full "Eclipse SDK"
Jess 7.0p1——Java平台规则引擎(一) 2008-07-12 22:21
分类:JESS 字号: 大大 中中 小小 1.入门
1.1.需求
Jess是一个用java语言编写的程序库。因此要使用Jess你需要Java虚拟机(JVM)。你可以从 Sun Microsystems上免费得到一个非常适合用于Windows, Linux,Solaris上的JVM。Jess 7是兼容所有版本的Java,从开始的JDK 1.4到现在的最新版本JDK1.5。版本更老的编号为4.x的Jess兼容JDK 1.0, 5.x版本兼容的是JDK1.1,Jess 6工作在JDK1.2及以上版本。
在使用Jess前请先确认JVM是否正确安装并能正常工作。
使用JessDE集成开发环境,你需要Eclipse SDK的3.1版或更新版本,这个可以从获得。安装JessDE前请确认Eclipse是已经安装并能正常工作。
Jess类库为另一种语言担任译员,这种语言我在本文档中称为Jess语言。Jess语言是一种高度专业化的Lisp形式语言。
我会认为读者你是将使用这两种或其中一种语言的一个程序员。并且所有的读者都至少有起码Java基础。另外你必须有一个Java运行系统和知道如何以一个简单的方法使用这个系统。你应该知道如何用它来:
· 运行一个Java应用程序
· 处理如CLASSPATH变量的配置问题
· 编译Java源文件集(可选)
如果你没有对Java的环境有基本的熟悉,那么我建议你购买了关于java的基础的书籍。对与各种平台的Java软件以及丰富的教程和文档可以免费从上获得。
对于那些将要使用jess语言编写程序的读者,我假定你们已经熟悉了一般程序编写的原理。我会说明整个Jess语言,所以熟悉Lisp是不需要(虽然熟悉是有些用的)。此外,在可能范围内,我将努力说明基于规则系统的最重要的概念,因为它们适用于Jess。再次,我将假定读者对这些概念有了一定的熟悉程度和了解更多。如果不熟悉基于规则系统,你也许应当考虑购买一本关于这一主题的书籍。
许多读者都希望提高Jess的能力,无论是通过向Jess语言加入的命令(用JAVA语言写)或以Java应用的方式嵌入Jess库。另外一些人会想用Jess语言的Java集成能力来从Jess语言程序调用Java函数。在本文档专门针对这类读者的一些章节中,我将承担适度Java编程的知识。我不会教Java语言任何方面的知识,有兴趣的读者可到您当地的书店参阅相关书籍。
这个文档包含了一个目录,在很多书上这些主题也都被列举出来。
1.2.准备
1.2.1.安装包的组成
Jess提供一个可用于所有支持平台的单独的.zip压缩包。这个单独的文件压缩包包含在Windows,UNIX,或Macintosh系统上使用Jess的所有你需要(除了JVM你必须自己安装)的资源。当Jess是解压后,你应该有一个命名为jess71a2 /的目录。在这个目录路径有下列文件和子目录:
README
快速开始指导.
LICENSE
关于Jess使用的您的权利信息.
bin
一个包含Windows 批处理文件(jess.bat)和一个UNIX脚本(Jess)的目录,你可以使用它们启动Jess命令提示符.
lib
该目录含有作为一个Java档案文件的Jess本身。注意,这不是一个“点击”存档文件,你不可以通过双击它运行Jess。这是要注意的。在这个目录的jsr94.jar包中又包含了符合JSR - 94 (javax.rules)的API。
docs/
这是一个文档,以“index.html”为首页的Jess手册。.
examples/jess
一个包含使用Jess语言编写的小程序的目录.
examples/xml
一个包含使用JessML, Jess's XML规则语言编写的小程序的目录.
eclipse
JessDE, 是Jess集成开发环境, 提供支持Eclipse 3.0的插件集。看这里的安装说明。
src (Optional)
如果这个目录存在,它包含全部的Jess规则引擎和开发环境的源代码,包括一个构建它的Ant脚本。
1.2.2.命令行界面
Jess有一个交互的命令行界面。分布包括两个你能运行Jess命令提示符的脚本:其中一个用于Windows,另一个用于UNIX。它们两个都在bin/ directory目录下。运行适合你系统的那一个,然后你应该看到以下的界面:
C:\Jess71a2 bin\jess.bat
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 9/5/2006
Jess
这就是Jess的命令。尝试计算一个前缀数学表达式"(+ 2 2)"。不要忘记那些括号!
Jess (+ 2 2)
4
Jess计算了此函数,并打印结果。在这份文档的下一章,我们会发现Jess规则语言本身的语法。
通过Jess命令行执行Jess代码编写的文件,可以使用批处理命令:
Jess (batch "examples/jess/sticks.clp")
Who moves first (Computer: c Human: h)?
在前面的例子应注意到,在Jess提示符后键入命令,Jess将在下一行响应命令。我将在整个这本文档中遵循本约定。
直接从操作系统提示符执行这样的Jess程序,你可以把程序的名字作为Jess脚本的一个参数,这样就可以启动:
C:\Jess71a2 bin\jess.bat examples\jess\sticks.clp
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 8/28/2006
Who moves first (Computer: c Human: h)?
jess.console类是一个简单的jess命令行界面的图形版。你在窗口的底部输入一个命令,结果就会出现在滚动窗口之上。试着从Jess71a2路径下键入下面命令:
C:\Jess71a2 java -classpath lib\jess.jar jess.Console
1.2.3.Java程序设计语言与Jess
要在你的Java程序中把Jess做为库使用,文件jess.jar(在lib目录下)必须是以一个标准的扩展名安装在类路径之下,或者对你的开发工具配置后能够识别它。做好这些工作的细节是随系统和环境而定的,但在设置一个类路径时通常涉及修改环境变量,并且安装一个标准的扩展名,简单来说就是复制jess.jar到你的$(JAVA_HOME)/jre/lib/ext路径下。可查阅Java文档或介绍Java的文本以了解更多的细节。
1.2.4.Jess例子程序
有一些简单的例子程序(在examples/jess和examples/xml目录下),您可以用这些程序测试你的Jess是否已经安装正确。这些程序包括fullmab.clp,zebra.clp和wordgame.clp。fullmab.clp是关于猴子与香蕉问题的经典版本。要从命令行运行它,只需要输入:
C:\Jess71a2 bin\jess examples\jess\fullmab.clp
和要运行的问题,就会在屏幕上输出结果。任何Jess代码的文件都可以以这种方式运行。像使用批处理函数一样在命令行给一个Jess文件名就可以运行了。因此,一般你只需要保证文件是以:
Jess (reset)
(run)
结束或根本没有规则将运行。zebra.clp和wordgame.clp程序是两个典型的例子,它们是用来展示Jess如何处理复杂情况的程序。这些例子都产生大量的局部模式匹配,因此它们运行非常慢而且使用了大量的内存。另外的例子包括sticks.clp (互动游戏)和frame.clp (一个使用jess的java集成能力建立图形界面的演示)。
XML的例子在单独的子目录下,每个子目录中都包含有运行例子说明的自述文件。
2.Jess开发环境
Jess 7包括一个基于Eclipse的开发环境。这个开发环境有一个编辑器,一个调试器和一个Rete网络视图。在将来发布的版本中将包含更多组件(规则浏览器和其它工具)。
2.1.安装JessDE
Jess开发环境(JessDE)是作为一个插件集支持流行的开源的集成开发环境Eclipse;该插件支持Eclipse 3.1及其更新版本。应该注意的是JessDE仅仅工作在完全的" Eclipse SDK "上——较小的"二进制运行平台"是不能运行的。
安装JessDE,首先要退出Eclipse,然后从Jess71a2/eclipse解压缩所有文件到顶层的Eclipse的安装路径。确认在你的eclipse安装目录有一个名为" plugins/gov.sandia.jess_7.0.0 "的目录存在,然后重新启动Eclipse。
注意!如果你只是从以前的版本的JessDE更新,你必须在Eclipse的命令行使用"-clean "命令开关,强制更新缓存中有关JessDE插件的信息。如果你不这样做,很多的JessDE的选项可能被禁用,安装后你只需要这样做一次。
2.1.1.验证你的安装
在“Help”菜单下选择“about Eclipse SDK”。在" about Eclipse SDK "主窗口有一个有Jess标志的按钮。单击“Plug-in Details”,如果JessDE已安装妥当,你将发现三个或四个Jess相关插件在列表上——在我的Eclipse中,它们出现在底部。
然后使用“New Project”向导建立一个Java工程。在新的工程中创建一个新文件并命名为“hello.clp”。这个文件会在一个Jess的编辑器中打开,这个编辑器有一个带红色“J”字的银色小球的图标。输入一些Jess代码,如下:
(printout t "Hello, World" crlf)
你应该看到合适的语法被高亮显示。如果看到,祝贺你!工作一切正常!阅读更多JessDE其他功能的信息。
2.1.2.更多的细节
JessDE编辑器在你的Jess文件中能够标示出语法错误和警告。你很可能希望这些标记能出现在Eclipse的“Problems”视图中,尽管在默认情况下它们可能没有显示出来。安装完成JessDE后,重新启动Eclipse,在Problems的视图,在标题栏点击“Filters”的图标,然后选择标着" Jess Problem "(如果没有被选中的话)多选项。你的Problems视图应该马上就会显示Jess错误和警告。
要使用Rete网络视图,你需要安装Eclipse图形编辑框架(GEF)。你可以从Eclipse工程项目页面得到GEF,或通过Eclipse的内置式更新管理器安装它。然后打开这一视图,在“Jess Debugger”组之下Eclipse的“Show view”对话框找到它。那么在Jess编辑窗口中当光标停在某一内部规则时,Rete网络视图将会为这项规则显示出编译的网络。
2.2.使用JessDE
2.2.1.Jess语言编辑器
JessDE编辑器可以编辑“.clp”格式的文件。在默认情况下你建立的任何 “.clp”格式的文件都将使用JessDE编辑器打开。没有单独Jess的视图,或是Jess项目类型;我们期望大多数人都将使用JessDE工具来写Jess/Java混合应用组成的Jess程序,因此JessDE工具将用在Java项目的文件中。在Jess语言代码中JessDE使用你的Java项目的类路径以解决Java中类名称问题——例如,调用defclass函数。
编辑器有您期望的一个现代程序编辑器所应具有的全部功能。
可定制的语法变色
你可以使用Eclipse全局参数对话框中的“Jess Editor”表来改变默认的颜色。
提供模板,槽和函数名的帮助内容
在许多不同地方使用JessDE编辑器你可引用Eclipse的" Content Assist "功能;JessDE将使输入Jess代码变得更容易。在输入时可以使用快捷键Alt-' / '弹出选择列表清单。
自动修复代码的“Quick fix”助手
这个功能默认使用Ctrl-1快捷键,快速匹配能立即知道怎样定义未定义的deftemplates,并为现有的deftemplates(如果它们在相同的文件里被定义)增加新的槽。
实时错误检测标记和错误高亮显示
当你输入有错误和警告时将被高亮显示
代码自动格式化
当你输入时代码自动缩进。你可以从"Source"菜单下选择"Format"命令来格式化一个全部的缓冲区
使用大纲视图快速导航
Eclipse大纲视图列出了所有在缓冲区中定义的结构;你可以点击其中任何一个就能够迅速定位到它
圆括号匹配和自动插入
当你输入一个'('或’”’符号,JessDE就会插入匹配的符号。当你的光标移动到下一个圆括号时,JessDE会显示与之相匹配的圆括号。
通过悬停获得Jess函数和结构在线帮助
快速访问Jess手册中每一个函数和结构类型的描述。
支持deftemplates 和 deffunctions的悬停帮助
如果你将你的滑鼠移动到一个deftemplate或deffunction的名字上,任何代码处,JessDE都将显示一个关于这个模板或函数信息的"tooltip"。
Jess程序的运行和调试命令
你可以使用正常Eclipse 的" Run... "菜单或由右击导航项或在编辑窗口运行或调试Jess程序。
2.2.2.文件之间的关联
有时候一个*.clp文件依靠其他的*.clp文件中的代码先被阅读执行。例如,rules.clp 也许需要templates.clp中的定义。没有这些定义,rules.clp将会出现语法错误。为了解决这个问题,你可以使用require*函数。"require*"让你清楚的声明这些关联。
如果一个文件rules.clp依靠在Java中执行的Jess命令,你可以仅仅为了这个目标创建一个特殊的文件处理这个问题(你也许称之为ruledepends.clp),这个特殊的文件包括了编辑器中使rule.clp文件能够正确解析的所有声明。如果你添加"(require* ruledepends)"到rules.clp中,仅当这个外部文件存在的话才会解析,因为它有可能正在开发中。当你部署代码时,你不需要部署ruledepends.clp,只要rules.clp能够从Java代码中取得所需声明。
"require"机制代替了JessDE的早期版本中的"Source dependencies"属性表,"Source dependencies"属性表已不再被支持。
2.2.3.Rete网络视图
使用JessDE的"Rete Network View"你可以即时看到一个衍生自任何规则的Rete网的图形展示。当这个视图是打开时(你可以使用Eclipse中的"Windows | View | Other..."对话框打开它),它会显示基于编辑器插字符所在规则的Rete网络,你可以用这个实时看到修改规则所对应的Rete网络变化。图表的布局方式是远胜于你能从Jess视图命令中得到的----因为这样没有重叠和交叉线,而且每一列的高度都可变。
2.2.4.Jess调试器
JessDE调试器可以让你调试一个在.clp文件中定义的Jess程序。它具有您期望的图形调试器所具有的所有功能:你可以暂停和恢复程序,或以步进方式执行。当程序停止时,执行堆栈的内容将会显示出来,这样你就可以检查在每个堆栈结构中定义的变量。选择的堆栈结构也可以导航到被执行的源码处。在编辑器窗口的左手边缘处,你可以通过右键单击某一规则在任何.clp文件中设置(或清除)断点。断点仅能设在函数(内置或用户自定义)中,所以你不能在defrule 或者deftemplate结构中打断程序执行。然而,你能够在一个调用规则 的左边或右手边的函数中暂停。
3.Jess 语言基础
大多数时间你是在使用Jess语言编写Jess规则。如果你从来没有使用过Lisp,第一次使用Jess规则语言也许看起来就有点奇怪了,但它并不需要太长时间来学习。回报也是丰厚的,你将使用非常少的代码表达复杂的逻辑关系。
在这一章,我们将看到Jess语言的基础语法。在后面的章节中,我们再来学习怎样定义像事实与规则这样的高级概念,但现在我们将学习最基础的。
在本语言指导中,我将使用一个非正规的符号来描述语法。在 中的基本串是必须提供的数据类型,在方括号中([])的内容是可选的,以 + 结束表示可以出现一次或多次,以 * 结束表示可以出现零次或更多。一般来说, Jess的输入格式是自由的。换行不具有特殊的含义,仅被处理为空格,而异常将被标识。
3.1.符号
符号是Jess语言的一个核心概念。符号是非常类似于其他语言中的标识符。Jess符号包括字母,数字和下面的标点符号:$*=+/_?#.。一个符号不能以数字开始,可以以一些特殊的标点符号开始(这些字符作为操作员当出现在符号开始时有着特殊的意义)
Jess符号对于大小写敏感。foo,FOO,和Foo是不同的符号。
最佳的符号是由字母,数字,下划线和破折号组成。破折号是传统的分隔符。如下所示为合法的符号:
foo first-value contestant#1 _abc
Jess中有三种特殊的符号。零,和java中的空值有点类似;真和假是Jess中的布尔类型的值。
3.2.数字
Jess分别使用Java函数parseInt(java.lang.String), parseLong(java.lang.String)和parseDouble(java.lang.String)来解析整型,长整型和浮点型数字。参考本文档中关于这些方法精确的语法描述。如下为合法的数字:
3 4. 5.643 5654L 6.0E4 1D
3.3.字符串
Jess中的字符串是用双引呈来标识的(").。反斜线能够区分嵌入的引号。注意Jess的字符串和Java的字符串在一些重要的地方是不一样的。首先,不会认识转义序列。比如说你不能用一个"\n"字符串来换行。另一方面,真正的换行可以通过双引号中的字符串来实现。他们是字符串的一部分。如下为合法的字符串:
"foo" "Hello, World" "\"Nonsense,\" he said firmly." "Hello,
There"
最后一个字符串相当于Java中的字符串"Hello,\nThere".。
3.4.列表
Jess中的另一个基础语法元素是列表。列表是由圆括号和空,符号,数字,字符串和其他列表组成。如下所示为合法的列表:
(+ 3 2) (a b c) ("Hello, World") () (deftemplate foo (slot bar))
Jess中列表的第一个元素(Lisp中称为列表的car)通常被称列表的头。
3.5.注释
Jess支持两种类型的程序注释。Lisp风格的行注释和C风格的块注释。行注释是以分号开头,延伸到文本中本行的最后。这里有一个行注释的例子:
; This is a list
(a b c)
块注释就和他们在C语言中的用法一样:他们以两个特征符"/*"开始,以"*/"结束。块注释不能嵌套。
/*
Here is an example of a list (commented out):
(a b c)
*/
注释可以在Jess程序的任何地方出现,包括模板和规则的结构里。
3.6.函数调用
和Lisp一样,Jess中的所有代码(控制结构,分配,程序调用)都是以函数调用的方式进行的。没有操作器,一切都是函数调用。然而,有些函数的名字使它们看起来像是Java操作器,在这种情况下,它们就和它们的Java 副本工作的非常相似。
Jess中的函数调用可以理解为简单的列表。函数调用采用前缀表示,如果一个列表的头部是一个已经存在的函数的符号,那么它就可以称为是一个函数调用。举例来说,用+函数来算2和3相加的表达式应该写为(+ 2 3)。在计算时,这个表达式的结果是数字5(不是一个仅包含数字5的列表!)。通常来说,在合适的时候表达式都被看作是这样并通过上下文求值。你可以在Jess提示符后键入表达式。Jess计算表达式并打印出结果:
Jess (+ 2 3)
5
Jess (+ (+ 2 3) (* 3 3))
14
注意你可以嵌套调用函数;外部函数是形成内部函数调用计算的因素。
Jess自身带有大量的内置函数,它们可以用来做一切事情,如数学计算,程序控制和字符处理,让你能够使用Java的API函数。当然你也可以在Jess语言或者是Java语言中定义自己的函数。
其中一个最经常用的函数是printout,它是用来发送文本到Jess的标准输出窗口,或者是输出到一个文件中。完善的解释你必须等待,但是现在,你所要了解的都包含在下面这个例子中:
Jess (printout t "The answer is " 42 "!" crlf)
The answer is 42!
另一个常用的函数是batch,它是用来计算一个包含Jess代码文件的。要运行Jess源文件examples/jess/hello.clp,你可以键入:
ess (batch "examples/jess/hello.clp")
Hello, world!
Jess自带的其他的所有函数的详细说明都在Jess function guide.。
3.7.变量
Jess中程序变量是以问号开始的标识符。问号也是变量名的一部分。名字可以包括字母,数字,破折号,下划线,分号和星号的任何组合。
一个变量可以看作是一个简单的符号,数字,字符串或者是一个列表。你可以用bind函数来为变量指定一个值。
Jess (bind ?x "The value")
"The value"
变量在第一次使用前不需要声明(全局变量除外)。
想在Jess提示符后看到变量 的值,你只需要键入变量的名字:
Jess (bind ?a 123)
123
Jess ?a
123
3.7.1.全局变量(默认全局)
你在Jess提示符后或者任何Jess语言程序顶层创建的所有变量, 当重置命令运行的时候都将被清除。这样就使它们稍嫌短暂,对于暂时性变量它们很好用,在标准理解的前提下不是永久全局变量。要创建不被reset销毁的全局变量,你可以用全局结构:
(defglobal [?global-name = value]+)
全局变量的名称必须是以星号开头以星号结束。合法的全局变量如下:
?*a* ?*all-values* ?*counter*
当全局变量建立以后,它会被初始化赋值。当reset命令随后执行的时候,这个变量可能会用相同的值重新设置,当然这取决于reset-globals的属性设置。有一个称为set-reset-globals的函数可以用来设置这个属性。如例所示:
Jess (defglobal ?*x* = 3)
TRUE
Jess ?*x*
3
Jess (bind ?*x* 4)
4
Jess ?*x*
4
Jess (reset)
TRUE
Jess ?*x*
3
Jess (bind ?*x* 4)
4
Jess (set-reset-globals nil)
FALSE
Jess (reset)
TRUE
Jess ?*x*
4
您可以阅读Jess function guide.中有关set-reset-globals和相关的get-reset-globals函数的信息。
3.8.控制流
Java中控制流(分支和循环,异常处理等)都是由一些特殊的语法和关键字如if,while,for,和try等来引导的。在Jess中,就如我们前面说过的,所有的一切都是函数调用,控制流也不例外。因此,Jess包含有那些名为if,while,for,和try以及foreach等函数。这些函数就和Java体系中相同名称的结构工作起来类似。
3.8.1.简单循环
例如,如下 是Jess中的一个“while”循环示例:
Jess (bind ?i 3)
3
Jess (while ( ?i 0)
(printout t ?i crlf)
(-- ?i))
3
2
1
FALSE
While循环的第一个参数是一个布尔表达式。While函数计算它的第一个参数,如果它为真,就计算它所有其他的参数。它一直进行这个过程直到它的线一个参数值为假。一个while循环总是返回FALSE.
Jess中内置有一些其他的循环函数。详情参看Jess function index.中关于for和foreach的有关描述。Jess中有一个break函数,可以有来跳出循环,也可以很早的从一个规则的右手边返回
//原文地址
运行java程序,同时需要jdk和jre吗?
呵呵我认为你这种情况只要有jre就可了
JRE较小的下一个就行啦呵呵
JDK
JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK.最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。
JDK一般有三种版本:SE(J2SE),standard edition,标准版,是我们通常用的一个版本EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序,ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
作为JDK实用程序,工具库中有七种主要程序。
Javac:Java编译器,将Java源代码转换成字节码。
Java:Java解释器,直接从类文件执行Java应用程序字节代码。
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javadoc:根据Java源码及说明语句生成HTML文档。
Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
JRE
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。是Sun的产品,包括两部分:JavaRuntimeEnvironment和JavaPlug-inJavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具——编译器、调试器和其它工具。JRE需要辅助软件 ——JavaPlug-in——以便在浏览器中运行applet.J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE.如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发 Java软件,请下载JDK.在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK.
引自blog163
非功能测试文档java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于什么是非功能测试、非功能测试文档java的信息别忘了在本站进行查找喔。
发布于:2022-12-13,除非注明,否则均为
原创文章,转载请注明出处。