跨平台Java程序

HolmesNovia · 发布于 2017-01-11 · 字数3800 · 浏览 812 · 评论 0

使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情:

1.编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Java程序只能使用Java核心API包,如果要使用第三方的类库包,则该类库包也要由Java核心包开发完成,否则在发布你的程序的时候还得将支持该Java类库包的JVM发布出去。也就是说,你的程序需要是100%纯Java的。举一个例子,Visual J++ 就不是纯Java的,由Visual J++编写的程序也就不具有平台无关性。

2.无论你使用的是JDK或其他开发工具,在编译时都要打开所有的警告选项,这样编译器可以尽可能多的发现平台相关的语句,并给出警告。虽然不能保证没有编译时警告错误的程序一定是跨平台的,但含有警告错误的程序却很有可能是非平台无关的。

3.在程序中使用任何一个方法的时候,要详细察看文档,确保你使用的方法不是在文档中已经申明为过时的方法(Deprecated method),也不是文档中未标明的隐含方法(Undocumented method)。

4.退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是我们希望看到的情况。事实上要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。只有在程序非正常退出时,才使用exit方法退出程序。

5.避免使用本地方法和本地代码,尽可能自己编写具有相应功能的Java类,改写该方法。如果一定要使用该本地方法,可以编写一个服务器程序调用该方法,然后将现在要编写的程序作为该服务器程序的客户程序,或者考虑CORBA(公共对象请求代理)程序结构。

6.Java中有一个类似于Delphi中的winexec的方法,java.lang.runtime类的exec方法,作为该方法本身是具有平台无关性的,但是给方法所调用的命令及命令参数却是与平台相关的,因此,在编写程序时要避免使用,如果一定要调用其他的程序的话,必须要让用户自己来设置该命令及其参数。比如说,在windows中可以调用notepad.exe程序,在linux 中就要调用vi程序了。

7.程序设计中的所有的信息都要使用ASCII码字符集,因为并不是所有的操作系统都支持Unicode字符集,这对于跨平台的Java中文软件程序不能不说是一大噩耗。

8.在程序中不要硬性编码与平台相关的任何常量,比如行分隔符,文件分隔符,路径分隔符等等,这些常量在不同的平台上是不同的,比如文件分隔符,在UNIX和MAC中是“/”,在windows中是“”,如果要使用这些常量,需要使用jdava.util.Properties类的getProperty方法,如java.util.Properties.getProperty(“file.separator”)可以获得文件分隔符,getProperty (“line.separator”)返回行分隔符,getProperty(“path.separator”)返回路径分隔符。

9.在编写跨平台的网络程序时,不要使用java.net.InetAddress类的getHostName方法得到主机名,因为不同的平台的主机名格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主机名都要换成IP地址,比如www.263.net就要换成相应的IP地址。

10.涉及文件操作的程序需要注意:不要在程序中硬性编码文件路径,理由和8中一样,只是这一点特别重要,因此单独提出。而且,不同平台对于文件名使用的字符及最大文件名长度的要求不同,编写你的程序的时候要使用一般的ASCII码字符作为文件的名字,而且不能与平台中已存在的程序同名,否则会造成冲突。

11.如果您写的程序是GUI程序,在使用AWT组件时不能硬性设置组件的大小和位置而应该使用Java的布局管理器(layout manager)来设置和管理可视组件的大小和位置,否则有可能造成布局混乱。

12.由于不同的操作系统,不同的机器,系统支持的颜色和屏幕的大小和分辨率都不同,如何获得这些属性呢?使用java.awt.Systemcolor类可以获得需要的颜色,如该类的inactiveCaption 就是窗口边框中活动标题的背景颜色,menu则是菜单的背景颜色。使用java.awt.Toolkit的getScreenResolution可以以“象素每英寸”为单位显示屏幕的分辨率。该类的getScreenSize可以得到屏幕大小(英寸),loadSystemColors可以列出所有的系统颜色。

本文系作者 HolmesNovia 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2015-11-05详解Mustache.js轻量级JavaScript模版引擎使用方法
  • 2015-12-21使用CSS3中的Text-shadow实现文字描边效果
  • 2015-12-23jBar基于jQuery的消息提醒插件
  • 2016-12-02FlyJSONP轻量级的跨域AJAX请求插件
  • 2016-06-08Real-shadow在网页中创建元素/文字真实的阴影特效
  • 2016-06-28jqFloat.js实现页面元素的浮动效果jQuery插件
  • 2016-07-09Filtrify高级标签过滤jQuery插件
  • 2016-07-12phpStudy帮助手册
  • 发布评论

    为您推荐

    问说网 · 发布于 2015-03-03

    使用CSS检测网页双击事件

    随着移动设备的兴起,世界各地的网页设计师都将失去我们可爱的鼠标指针,也就是说,我们将失去在CSS中的Hover伪类,以及MouseEnter MouseLeav…

    问说网 · 发布于 2015-09-03

    使用Blast.js制作网站文字动画效果

    由于文本动画很少采用的网页,使用一个简单的方法是给用户留下深刻的印象。这就是为什么这个话题很有趣的学习:底层技术是简单的程序,但结果感到极其丰富和复杂的用户。

    问说网 · 发布于 2016-01-09

    分享Web开发中实用简单的片段代码

    整理了一些比较实用的网站设计时常用的代码,代码很简单,只有一行,不需要理解多高深的JS或者HTML知识,按照提示把相应的代码加入到网页模板中即可得到你想要的效果…

    用JavaScript实现给出的盒子的序列是否可连为一矩型
    AustenJuliet · 发布于 2017-01-19

    用JavaScript实现给出的盒子的序列是否可连为一矩型

    by cpglkg <script>var arr=[5,10,15];function rect(arr,width){ arr.sort(fun…

    问说网 · 发布于 2016-12-02

    FlyJSONP轻量级的跨域AJAX请求插件

    FlyJSONP是一个JavaScript库,用于实现跨域GET和POST请求服务,支持JSONP,并取得一个JSON格式的数据响应,这个Library具有易于…

    Nike+ Move 日常运动量统计APP

    Nike+ Move是一款帮助用户统计日常运动量的应用,比起同类软件长期占用CPU来说,利用了M7处理器的运动检测软件更是如虎添翼,帮助用户更好的检测睡眠、跑步…

    • Nike+ Move 日常运动量统计APP
    • Nike+ Move 日常运动量统计APP
    • Nike+ Move 日常运动量统计APP
    • Nike+ Move 日常运动量统计APP
    MaxwellDaphne · 发布于 2016-05-14 · 浏览 1237 · 评论 0

    年度设计趋势回顾!引领设计界的扁平化风潮

    在过去几年中,我们见证了软件和应用界面设计从3D及拟物化向扁平化和极简化的快速转变。尽管这一趋势现在已经无所不在,但我们不妨拿出一点时间来思考今天的结果是如何形…

    • 年度设计趋势回顾!引领设计界的扁平化风潮
    • 年度设计趋势回顾!引领设计界的扁平化风潮
    • 年度设计趋势回顾!引领设计界的扁平化风潮
    • 年度设计趋势回顾!引领设计界的扁平化风潮
    BaldwinDean · 发布于 2016-05-16 · 浏览 1013 · 评论 0

    Illustrator绘制可爱的猪脸图标

    通过这个小猪的练习,可以很好的掌握Illustrator的一些技巧,比如说路径工具,渐变色,阴影,混合模式等等。 如何在Adobe Illustrator画一个…

    • Illustrator绘制可爱的猪脸图标
    • Illustrator绘制可爱的猪脸图标
    • Illustrator绘制可爱的猪脸图标
    • Illustrator绘制可爱的猪脸图标
    唐秀 · 发布于 2016-05-17 · 浏览 993 · 评论 0

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    HolmesNovia

    这个人比较懒,什么都没有填写!

    109 文章
    0 评论
    人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 2563

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 2418

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 2467

    图片素材

    关注 图片素材

    文章 29463 · 浏览 1951

    高清图片

    关注 高清图片

    文章 26530 · 浏览 2134

    更多 推荐作者

    关注 秋天的孤寂

    文章 99 · 评论 0

    关注 倾听寂寞

    文章 83 · 评论 0

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    关注 思念像咒语

    文章 102 · 评论 0

    关注 呼吸快窒息

    文章 104 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!