Java 9积极解决Linux中的GTK GUI难题
浏览器窗口中的甲骨文Java图标显示效果。
将Java与该工具包最新版本相结合能够避免应用因多GTK版本冲突而遭遇故障。
目前甲骨文公司正计划立足于Linux系统将GTK 3 GUI工具包纳入Java 9当中。此举将保证当前Java与该工具包的最新版本加以结合,从而避免应用因多GTK版本冲突而遭遇故障。
根据openjdk.net网站发布的一项Java增强提案,这项举措的目标在于以默认方式支持GTK(即GIMP工具包)2,并在系统属性指定的情况下方行使用GTK 3。基于JavaFX、Swing或者AWT(即先进容器工具包)的各类Java图形应用程序将被纳入该荐规划,而各现有应用程序亦可在无需针对GTK 2或者3进行修改的前提下运行于Linux之上。
这项提案已经被甲骨文公司Java平台部门首席架构师Mark Reinhold发送至openjfx-dev邮件名单中的各位成员。Java 9预计将在2017年3月正式发布。
“目前有大量Java软件包在使用GTK,其中包括AWT/Swing、JavaFX以及SWT。SWT已经迁移至GTK 3,但其中仍然包含一项系统属性,可被用于强制其使用早期版本,”这份提案指出。“而这种在软件包内混用不同GTK版本的作法有可能导致应用程序发生故障。”
这一问题还特别影响到各类采用Eclipse开发平台的应用程序。这份提案同时表示,尽管GTK 2与3目前已经以默认方式可用于多数Linux发行版,但仍有一部分发行版方案尚未将其纳入。
同样受到影响的还有GTK+,这套跨平台工具包作为功能部件及API存在,并通过GNU项目以免费软件发布。其被囊括于多种常见项目当中,从Apache OpenOffice办公软件套件到Inkscape矢量图形编辑器再到PyShare图像上传工具皆涵盖其中。
根据这份Java提案,可资替代GTK 2与3的备选方案在于调整Java图形以确保其只支持GTK 3,这将极大降低对移植与测试的需求。不过这套方案可能带来大量无法通过测试发现的bug,意味着我们需要投入额外精力检查AWT外观与使用感受,且要求对JavaFX/Swing中的一者或者二者进行移植。这类移植工作在执行中往往要求对AWT与Swing做出大量协调。