|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?程序利用Java言语编写使用程序最年夜的长处在于“一次编译,到处运转”,但是这并非说一切的Java程序都具有跨平台的特征,现实上,相称一部分的Java程序是不克不及在其余操纵体系上准确运转的,那末怎样才干编写一个真实的跨平台的Java程序呢?上面是在编写跨平台的Java程序是必要注重的一些事变:
1.编写Java跨平台使用程序时,你能够选择JDK1.0,1.1,1.2或撑持它们的GUI开辟工具如:Jbuilder,VisualAgeforJava等等,可是必需注重你的Java程序只能利用Java中心API包,假如要利用第三方的类库包,则该类库包也要由Java中心包开辟完成,不然在公布你的程序的时分还得将撑持该Java类库包的JVM公布进来。也就是说,你的程序必要是100%纯Java的。举一个例子,VisualJ++就不是纯Java的,由VisualJ++编写的程序也就不具有平台有关性。
2.不管你利用的是JDK或其他开辟工具,在编译时都要翻开一切的告诫选项,如许编译器能够尽量多的发明平台相干的语句,并给出告诫。固然不克不及包管没有编译时告诫毛病的程序必定是跨平台的,但含有告诫毛病的程序却很有多是非平台有关的。
3.在程序中利用任何一个办法的时分,要具体观察文档,确保你利用的办法不是在文档中已声名为过期的办法(Deprecatedmethod),也不是文档中未标明的隐含办法(Undocumentedmethod)。
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的结构办理器(layoutmanager)来设置和办理可视组件的巨细和地位,不然有大概形成结构凌乱。
12.因为分歧的操纵体系,分歧的呆板,体系撑持的色彩和屏幕的巨细和分辩率都分歧,怎样取得这些属性呢?利用java.awt.Systemcolor类能够取得必要的色彩,如该类的inactiveCaption就是窗口边框中举动题目的背景色彩,menu则是菜单的背景色彩。利用java.awt.Toolkit的getScreenResolution能够以“象素每英寸”为单元显现屏幕的分辩率。该类的getScreenSize能够失掉屏幕巨细(英寸),loadSystemColors能够列出一切的体系色彩
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。 |
|