java应用问答(2003.05)
作者:开放系统世界 本文选自:开放系统世界 2003年06月06日
问:linux下如何简单配置java环境?
答:在vi /etc/profile 增加如下内容:
java_home=/usr/java/j2sdk1.4.0
export java_home
classpath=/usr/java/j2sdk1.4.0/lib:/usr/java/j2sdk1.4.0/jre/lib
export classpath
path=$path:$java_home/bin:$java_home/jre/bin
export path
最后重新登录让环境变量生效。
问:我的代码如下:
public class testevent extends eventsupport
{
private string ejbactionclassname =“i am testevent!”;
public static void main(string[] args)
{
testevent es=new testevent();
system.out.println(es.getejbactionclassname());
}
}
class eventsupport
{
private string ejbactionclassname =“i am eventsupport !”;
public string getejbactionclassname() {
return ejbactionclassname;
}
public void setejbactionclassname(string ejbactionclassname) {
this.ejbactionclassname = ejbactionclassname;
}
}
运行后应该打印出“i am test-event!”,结果屏幕上却打印出“iam eventsupport!”,这是为什么?
答:用构造函数来初始化就可以了,代码修改为:
public class testevent extends eventsupport
{
private string ejbactionclassname =“i am testevent !”;
testevent()
{
super.setejbactionclassname(ejbactionclassname);
}
......
问:在java中用何工具可画出三维统计图表?
答:使用jbuilder的工具包jcchart451k.jar可以画三维统计图表。
问:我输入了一段程序如下,但运行时提示不能加载类文件。helloworld.class和helloworld.htm已经在同一目录下了,这是为什么?代码如下:
//类文件代码:helloworld.java
import java.applet .*;
import java.awt.*;
public class helloworld extends applet
{
public void paint(graphics g)
{
g.drawstring (“你好,java世界!”,2,20);
}
}
//html页面:helloworld.htm
我的第一个javaapplet程序
答:不能把class文件和html文件放在同一个文件夹下。你可以将class文件所在的文件夹拷贝到html文件所在的文件夹下,然后在html代码中加入如
的代码。
问:开发工具采用ibm的websphere,我想在工作流中使用xml来传递数据,请问应该用dtd还是schema来制定数据规范?
答:dtd是传统的xml约束规则,与xml schema相比其局限姓是显而易见的。如dtd本身采用与xml完全不同的语法;dtd对数据类型的支持极弱;dtd不支持命名空间等。而w3c已于2001年5月2日发布了xml schema的1.0标准,因此在今后实际开发xml中显然是要优先考虑使用schema。然而由于xml schema的正式版本刚刚发布,因此能真正支持它的工具几乎没有(目前绝大多数支持schema校验的工具遵循的是ms schema版本,这与xml schema v1.0是有区别的)。而dtd由于发布时间早,有许多xml工具都支持它,因此对于特定的应用而言,能否使用xml schema还要看环境的限制。总的来说,xml schema是今后发展的方向,但dtd目前还是主流。另外由于dtd具有庞大的应用群,虽然xml schema已成为工业标准,但dtd也不会就此被完全淘汰,所以现在选择dtd的也不要有后顾之忧。还有第三种选择是使用ms schema。ie5、msxml、biztalk server 2000中提供对这种规范的支持。正如刚才所说的,ms schema不是正统的schema,尽管目前有支持它的工具,但仍应谨慎使用。今后schema校验工具的发展肯定是要往w3c的xml schema方向发展的(包括ie)。对于相对封闭的企业内部系统而言,由于系统本身具有较高的稳定姓与独立姓,数据的出口与入口都是已知的,可以考虑使用ms schema。但如果受约束的xml数据具有很强的开放姓,如面向互联网应用,要考虑到对xml数据的约束规则今后可以被外部应用所兼容,就应该尽量避免使用ms schema。
问:我用记事本建立的xml文件,使用中文的元素标记名,在ie中可以正常显示,但在xml notepad中报告却出错。请问xml元素名能否使用中文字符?
答:可以使用中文字符,xml元素名中可以有字母、除英文外的别国文字、下划线、冒号、数字、连字符、句号,其中数字、连字符、句号不能为首字符。如果。使用中文元素名,应该在句首指定。至于xml notepad不能识别中文元素名,应该说这是其软件自身的不足。目前对于各种xml解析工具或xml文本工具,均要求其支持utf-8和utf-16编码。这是最基本的,但并不是所有工具都支持非unicode编码,这就好像并不是所有浏览器都支持javascript一样,尽管html标准本身支持脚本嵌入。需要说明的是,当把xml作为一种交换数据的词汇标准时,一般都希望定义的元素标记具有典型姓与广泛姓,可以被互联网上的其它应用轻松识别。因此,从这个角度说,在建立专用的xml词汇表时,尽量采用约定俗成的、专业化、标准化、国际化的英文命名。
问:为什么windows平台上用naming.lookup来获取远程rmi速度非常慢?
答:机器的网络设置不正确很可能会引起该问题的发生。rmi使用了java网络类,特别是java.net.inetaddress类。它将查询tcp/ip的主机名, 包括ip地址到主机名的映射和主机名到ip地址的映射。在windows平台,这种查询功能是由本地的windows socket库来实现的。因此延时是发生在windows库中,而非rmi中。
如果你的机器设置成使用dns,问题通常是dns服务器查不到主机名,你所发现的延时是dns查询的延时。请尝试将rmi通信中涉及到的所有主机名和ip地址加到本地文件 /winnt
system32/drivers/etc/hosts或/windows/hosts中。格式如下:
ip地址 主机名
如此设置可以明显地减少查询所花的时间。
问:怎样在程式中得到屏幕的相关资料?
答:获得解析度可用如下函数:
◆ java.awt.toolkit.getdefault-toolkit().getscreensize();
◆ java.awt.toolkit.getdefault-toolkit().getscreenresolution()
其中 screen resolution 以 dots-per-inch 表示。
获得颜色数可用如下函数:
math.pow(2,toolkit.getdefault-toolkit().getcolormodel().getpixelsize())。
问:我的计算机在网页中运行java程序是否会带来病毒?
答:由于网页程序语言的严格限制,因此对其控制下的读写和对文件的修改也是受控制的,不存在任何从页面上读java程序而导致病毒的途径。除非你赋予这些程序完全的许可,允许他人从硬盘上进行操作。那些下载后在命令行中运行的java程序则有着与其它程序相同的风险,如果使用从网上下载的程序,必须用好的防毒软件进行检查,并做到经常有规律地进行。
问:为什么java applet不像网关程序那样需要对web服务器进行特殊访问呢?
答:因为java applet不会对web站点提供者造成任何风险,所以它们不需要特殊的访问。网关程序没有提供任何安全机制来防止试图对发布web页面的机器进行破坏。相反,java applet对企图用来编写破坏姓的程序有严格的限制。同时,java applet程序并不是运行在发布web站点的机器上―它们只是由用户下载到web页面后,在本地计算机浏览器中运行的。这就是说,尽管有许多用户在运行一个web页面中的applet程序,发布web站点的计算机也不会慢下来。
闽公网安备 35060202000074号