您的位置:首页 > 移动开发

applet升级jre1.8的问题

2020-03-06 18:21 941 查看
最近接到任务把applet程序升级GUI工具包,且要在新版本的jvm环境下运行,

对于java来说,我一直是了解点皮毛,这次任务才更深入了解了一点,中途差点放弃,研究了半个月终于搞定,总结一下供以后翻阅。 首先碰到的问题是目前都是用哪些工具包,了解awt,swing,swt的优缺点, awt内存少,成熟稳定,启动事件少,但界面丑,组件少,无扩展性。 swing是在awt的基础上构建的,它提供了awt 所能够提供的所有功能,它有丰富的组件类型,丰富的组件特性,成熟稳定,可扩展和灵活性,不过它比awt,swt更多的内存消耗,在运行时加载了大量的类,许多小的对象难以有效的被垃圾回收机制回收,因此,swing应用程序通常会因无法及时回收冗余的对象而导致性能下降。 swt是由IBM构建的一个新的GUI库,其目的在于尝试彻底解决AWT和swing带来的诸多问题,swt有丰富的组件类型,更快的响应时间,更少的内存消耗,但是它不在JRE的标准库中,必须将它和程序捆绑在一起,并为所要支持的每个操作系统创建单独的安装程序。不够成熟和稳定。 综上所述,在对GUI编程时的工具包选择得根据具体项目决定:若是需要用低内存来运行GUI程序,使用AWT会是一个不错的选择,而如果只考虑平台的移植性可优先考虑SWT/swing 下载了swt的组件包,名为repository.zip的包,通过eclipse的help ->install new software -> add(repository的目录)来安装。然后在file->new->other中新建swing项目了。 不过我已有原项目,把swt.jar加入到我原有的项目中。 安装新版本的1.8jdk 32位(开始安装1.7_80发现IE浏览器打不开applet,本电脑为64位,后改为安装1.7_80 32位的可成功显示页面),开发人员一般电脑上会有多个版本的JDK,可修改环境变量或regedit注册表修改使用的版本。 在eclipse中项目-》属性-》java build path和java compiler修改使用的jre 修改版本在window->preferences->java下的compiler和installed jres 更改JRE版本后,打包jar用tftp放入mcu中,发现用IE浏览器能显示界面但是无法登录 检查发现在socket connect时卡住堵塞无反应,但用eclipse运行无问题,上网查资料 解决问题:applet跨域访问的安全性问题 当使用域名访问时,applet跨域访问造成的安全性问题。解决方法有以下几种,目前使用第一种能成功解决问题:
1、在JRE的策略文件java.policy中添加授权
在安装目录下的lib/security目录下的java.policy文件中的grant {}中添加下面授权:
permission java.net.SocketPermission “:”, “accept,connect,resolve”;
其中*:中第一个表示允许的IP,如果是表示所有;第二个表示端口或端口范围,*表示所有端口,还可以是8080或8080-,如果是8080-则表示大于等于8080端口都允许。
"accept,connect,resolve"表示允许的操作:接受、连接、解析。
2、建立自己的策略文件
也可以建立自己的策略文件,如myPolicy.policy,在其中添加上面描述的授权,再在lib/security目录下的java.security文件中添加我们建立的策略文件:
policy.url.x=file:${java.home}/lib/security/myPolicy.policy
或者不用在java.security添加包含的策略文件,而是在启动时带一个参数
java -Djava.security.policy=myPolicy.policy
也是可以的。
3、对applet进行数字签名
首先使用JDK自带的keytool工具生成证书,再使用jarsigner来对applet的jar进行签名。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_38080025 发布了3 篇原创文章 · 获赞 0 · 访问量 72 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: