讲解关于编写跨平台Java程序时的注意事项

使用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程序了。

时间: 2024-10-27 20:35:51

讲解关于编写跨平台Java程序时的注意事项的相关文章

编写跨平台Java程序注意事项

程序 使用Java语言编写应用程序最大的优点在于"一次编译,处处运行",然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情:   1. 编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Jav

跨平台Java程序_JSP编程

使用Java语言编写应用程序最大的优点在于"一次编译,处处运行",然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情: 1.编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Java程序只能使

xmn-运行Java程序时,JVM参数没有生效,请高手帮忙看看。

问题描述 运行Java程序时,JVM参数没有生效,请高手帮忙看看. 小弟在学习GC的过程中,遇到JVM参数未生效的问题,一时不知道怎么解决,请路过大神帮帮忙指点指点,小弟谢过! 运行环境为:Win7 64bit, 4 core. 1,程序如下 public class PSGCDirectOldDemo { /** * @para args * @throws InterruptedException */ public static void main(String[] args) throw

eclipse-Eclipse 运行java程序时出现错误

问题描述 Eclipse 运行java程序时出现错误 下面这张是我上一次运行的java程序 解决方案 main 函数要传递String args[] 如下: public static void main(String args[]) { } 解决方案二: 先编译 后运行 鼠标点击format.java的代码页面,就是现在这个页面 在这个页面下 ctr l+ s 编译当前文件 然后运行 解决方案三: 啥意思?这不是两个工程吗?要运行Format.java的话,选中这个文件,右键->Run as

文档-编写一个java程序,将webbrowser控件嵌入进去

问题描述 编写一个java程序,将webbrowser控件嵌入进去 用java语言编写一个程序实现从网页中找到文档链接并下载和删除.拜托各位啦 解决方案 http://blog.csdn.net/b_h_l/article/details/8266899

VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异

VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异 一直用VC++6.0,对VS2005不太了解,下面简单的熟悉一下VS2005的一下功能,总结一下VS2005在编写MFC时候的应用. 1.    菜单项: 和VC6.0一样,也是找到资源视图,点击menu资源,在上面新建自己的菜单项.只是'属性',陈列的方式不同,VS2005陈列在右下角:在VC6.0中,我们对菜单项建立类向导,而在VS2005中,点右键,选择的是:'添加事件处理程序',然后再对话框里选择相应的消息类型,在类列表

windows-如何利用C/C++标准库编写跨平台的程序?

问题描述 如何利用C/C++标准库编写跨平台的程序? 如题,最近公司给了个小任务,让在一个工程中找出符合某种条件的代码,并记录下行号. 听着好像比较简单,因为公司的项目在win,linux下有两个版本,所以小白同学比较装逼的想做一个跨平台的版本,然后,炸了. 思路好像还比较好找,因为是C++的项目,所以只要遍历某文件夹下的所有子文件以及子文件夹,找到.c或者.cpp文件,然后在其中寻找符合条件的语句连同行号写入文件中,可是,C/C++的标准库没有办法直接操作目录么? 找到各种解决方案都说目录是要

class-cmd编译java程序时的一个问题

问题描述 cmd编译java程序时的一个问题 使用javac编译一个java程序时,如果该java文件导入了其他的类,只能将导入的类一个一个手动编译吗?有没有什么其他便捷的方法? 解决方案 Exception in thread "main" java.lang.NoClassDefFoundError: comexampleMain 问题一个解决思路......答案就在这里:编译java程序时的一个问题 解决方案二: 如果是测试的话你也可以把其他类嵌套到一个类测试,这样就可以监测其功

序列化和反序列化技术在编写Socket应用程序时的应用

我们在编写与Socket有关的应用程序时,在发送软为复杂的数据时,可能我们最常做的是把各个部分的数据转换为字符串,然后将这些字符串用一个分隔符连接起来进行发送.不过,不知道你有没有想过这样做还是有问题的. 比如,我用#来分隔各个字符串,在根据客户端输入的内容到服务器端进行查找,然后返回结果,万一用户输入的查找关键字中就包含#,那么就会影响我们对字符串进行分割了. 不知道各位有没有想过,把序列化和反序列化的技术也用到socket上?先定义一个封装数据的类,发送前将该类的对象序列化,然后发送:接收时