来看Jacks:Java的兼容性测试 开放源码之路
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。甚么是Jacks?
Jacks测试套件反省Java编译器是不是切合JLS(Java言语标准)。它由大批小测试案例构成,每一个测试都偏重于JLS中特定的部分。EricBlake为Jacks项目作出了很年夜奉献,他从面向细节范畴形貌了这类范例测试的优点。“经由过程天生带有指定编译举动的小测试案例,然后将每一个案例的实行主动化,编译器作者或调试者能够疾速找出Java源码到字节码转换中存在的成绩。”
开辟Jacks面前的观点是要简化对多编译器或多编译器设置所运转的测试(比方,对上两个刊行版的Jikes和Javac的JDK1.3刊行版所举行的一组测试)。假如手工举行,您必需反复地设置情况变量,然后依据所希冀的了局来反省测试了局。而经由过程利用Jacks,只必要变动到寄存测试的目次,挪用Jacks框架,然后标明应当利用哪一个编译器设置。
Sun没有实行对Java开辟者所做的答应引发了Jikes小组对Jacks项目标设置和运转。Sun再三声明它会把Java、JCK(JavaCompatibilityKit)和相干Java手艺交到一个尺度主体的手中。但由于这还没有完成,处置Java项目标开辟者就不克不及利用JCK来对一样平常的开辟举行回回测试。劈面对因为分歧理的允许证限定而招致的代码工资不敷时,他们偏向于用新的更完美的体系来交换旧体系。这就是产生在Jacks上的故事。(只管Jacks由developerWorks掌管,它受GPL而非IBMPublicLicense束缚。)
利用Jacks
Jacks是以Tcl编写的,因而必要确保具有Tcl8.3。(必要版本8.3来确保具有tcltest扩大和Unicode撑持,这二者都是Jacks所必须的)。能够下载用于Windows的安装程序和用于RedHatx86的RPM,也能够更便利地从源代码中构建。假如您不晓得到甚么中央下载,请参阅本文稍后的参考材料部分;假如利用的是RedHat7,极可能已安装了Tcl8.3。
安装了Tcl后,必要从CVS掏出Jacks。然后经由过程将编译器路径名包含在要测试的编译器的Jacks_setup设置文件中来设置Jacks。关于每一个但愿撑持的设置都必要一个_setup文件。比方,Jacks带有javac_setup文件。必要编纂该文件来为javac设置路径。EricBlake说,“最坚苦的部分是判定怎样测试Jikes,由于我在情况中已设置了JIKESPATH。但我想出了要在jikes_setup设置文件中变动甚么内容,统统都很顺遂。”
从CVS模块中掏出Jacks源代码
setenvCVSROOT:pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jikes
cvslogin
paswsdanoncvs
cvscheckoutjacks
能够对数目不限的编译器或编译器设置利用Jacks。要撤除某一编译器的设置,只必要删除其_setup文件。
从CVS中掏出源代码后,就必要在路径中包含顶层Jacks目次,如许才干运转Jacksshell剧本。为审慎起见,最后运转shell剧本时应当不带任何自变量,以确保每项都经由准确设置。
%jacks
假如统统一般,将看到Jacks剧本所承受的命令行选项的清单。假如收到毛病,请反省在路径中是不是能找到可实行文件tclsh8.3。Windows用户必要间接运转tclsh83,并将jacks.tcl自变量在一样平常标记之前传送给它。还应当思索安装CygwinUNIX兼容性层,如许,象Unix用户一样,您就能够利用供应的shell剧本来运转Jacks了。上面的指令假定您利用的是shell剧本。
关于测试示例,必要利用Jikes编译器来运转给定子目次中的一切测试,命令以下:
%cdtests/jls/packages/package-declarations/unnamed-packages
%jacksjikes
<p>
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。 Java是一种计算机编程语言,拥有跨平台、面向对java 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 是一种使用者不需花费很多时间学习的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页:
[1]