网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  如何避免microsoft非标准javasdk的潜在危险(1)     
  文章作者:未知  文章来源:水木森林  
  查看:98次  录入:管理员--2007-11-17  
 
  如何避免microsoft非标准javasdk的潜在危险
我分析了类,遇到了七个方面的问题。如果要用microsoft java sdk开发在其他java1.1认证的环境中可以运行的应用,应该特别注意这些问题,它们是:

1.新类
2.新方法
3.新变量
4.更改的接口
5.com.ms包
6.省略的方法
7.动作差别

baratz在sun宣布其起诉时用"欺骗"一词是因为sdk中所带的关于java类的文档没有提到这些修改。要发现它们,必须用sdk所带的classvue工具或者人工地读源代码。最好使用classvue,因为sdk提供的源代码可能并不是产生类的文件,对不熟悉classvue的人,等价的工具是sunsdk提供的类文件内部检查器javap。

以下是一张sdk中所有修改的清单,但是也有可能有疏漏。这里提到的所有修改都在java.lang、java.io、java.awt、java.util和java.security包或子包中,每个包的修改如下:

java.lang:新方法、新变量

java.io:省略方法

java.awt:新类、新方法、新变量

java.util:新方法、新变量

java.security:修改接口


新类
首先,microsoft在其javasdk系统包中增加了新的类、方法和变量。所有在完全修饰名中以java.*开头的叫做系统包或者核心javaapi。十六个新类加入到了java.awt中,它们是:

microsoft 新 增 加 的awt 同 位 类 的java 类 wbuttonpeer wcheckboxmenuitempeer wcheckboxpeer wchoicepeer
wlabelpeer wlistpeer wmenubarpeer wmenuitempeer
wmenupeer wpopupmenupeer wscrollbarpeer wscrollpanepeer
wtextareapeer wtextcomponentpeer wtextfieldpeer wuipeer

除了最后一个,所有的类都是awt构件的同位(peer)类。同位类是诸如按钮和菜单的图形构件在特定平台的表示。一般来说,这些类会出现在不同的包中,如sun.awt.windows或者sun.awt.motif,你可以不使用它们,故很容易避免。wuipeer也是一个同位类,但是它支持microsoft专用的动作,应该避免使用它。另外还加入了其他的包私有(package-private)类(也称为友类,无须增加访问分类符关键字),如_awtuiband和_uimenuroot。因为在java.awt之外是不可访问的,故不能直接使用。

新方法和实例变量
增加最多的方法是getbasename()。幸好它是包私有的。其他的修改,例如将classloader的loadclassinternal()方法由包私有变为私有是由于实现上的差别,不影响开发者。

不是我忽视microsoft的包私有修改,但是除非开发者自己扩展java关键类库,否则就涉及不到这些修改。因为开发者更多的时候是寻求一种跨平台的解决方案,而不是将自己的修改加入到关键java类库中去,所以这不是问题。而真正的问题是microsoft新加入的公用方法。

关键java类库中加入的公用方法类新方法

java.awt.eventqueue _postevent(awtevent)
java.awt.font getnativedata()
java.awt.image.colormodel finalize()[was protected]
java.awt.image.directcolormodel gettoolkitdata()
java.awt.image.indexcolormodel getopaque()
gettoolkitdata()
java.awt.systemcolor getwin32index()
java.lang.class getinterface(string)
getmethods(int[])
getmethodfromsignature(string,string)
getdeclaredmethodfromsignature(string,string)
java.lang.runtime getnativeservices()
java.lang.securitymanager checkfiledialog()
checkmultimedia()
checkregistry(int,string)
checksystemstreams(int)
java.lang.verifyerror getauditdetails()
getauditidentifier()
getclassname()
getmethodname()
getpc()
getviolationcode()
getviolationdescription()
java.lang.reflect.method getdescriptor()
getparametercount()
java.util.locale locale(string,string,string,int,int)
getcodepage()
getdefaultlocalelist()
getlcid() [was private]
getlocalefromlcid(int)
java.util.resourcebundle getmenu(string)
getmenubar(string)

除非你只在microsoft的环境中运行你的java程序,否则就应该避免使用这些方法。除此之外还有三个新的实例变量和为数不少的国际化地区变量。

加入到javaapi中的实例变量类新变量

java.awt.font pdata
java.awt.systemcolor appworkspace
java.lang.reflect.member public_declared
java.util.locale afrikaans
albanian
australia
basque
belgian
belgian_french
brazilian
bulgarian
byelorus
catalan
croatian
czech
danish
dutch
estonian
finnish
german_austrian
german_swiss
greek
hebrew
hungarian
icelandic
indonesian
ireland
japanese_vertical korean_vertical
latvian
l99vhuanian
mexican
newzealand
norwegian
norwegian_nynorsk
polish
portugese
romanian
russian
serbian
simplified_chinese_vertical
singapore
slovakian
slovenian
south_africa
spanish
spanish_modern
swedish
swiss
thai
trad99vional_chinese_vertical
turkish
ukranian

public_decalred对member是全新的,appworkspace对systemcolor也是全新的,而pdata则由私有变为公用。与其他修改一样,必须避免使用。就locale对象而言,microsoft环境支持另外几种语言,而javasoft不支持。虽然不使用这些新的地区变量要求你格式化消息时做额外的工作,但是还是应该避免使用,而用必要的参数自己创建一个locale对象。

对每个新加入的地区变量,在java.text.resource包中都加入了两个公用类,因为sun的docucentation特别声明,不应该直接调用text.resource中的api,所以这也不是问题。

接口修改
接口定义了类必须遵循的部分摸板,microsoft修改了部分安全接口摸板:

java安全接口中增加的方法接口新方法

java.security.interfaces.dsaprivatekey getalgorithm()
getencoded()
getformat()
getparams()
java.security.interfaces.dsapublickey

 
 
上一篇: 绕过java开发瓶颈:解析ejb    下一篇: 如何打造实用网站
  相关文档
如何在js中将字符串转为xml对象,并读取对象的值 11-17
用java增加一个xslt功能 11-17
java十大热点问题调查揭晓 11-16
在容器外使用ejb 3.0 persistence 11-17
初学入门:一组常用的弹出窗口用法总结 12-04
enterprise javabeans组件慨述(1) 11-17
编写一个java的队列类 11-16
java基础知识精华总结 11-17
初始化类时newinstance和new的区别 11-17
正则表达式语法 11-16
浅析struts 体系结构与工作原理 11-16
在netbeans ide下开发struts应用 11-17
datagrid web control 基本操作 11-17
java技术专题综述之内部类篇 11-17
j2ee基础:开发第一个分布式的j2ee应用 11-16
也谈面向对象 11-17
说文解字:解读java中的“垃圾方言” 11-17
开发j2ee应用应遵循的几点原则 11-16
加法运算符 (+) 11-16
jdk的安装 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息