Java有没有可能以后推出优秀的UI工具包

这有两个问题
一个是比swing更优秀,这个javafx,flutter,swiftui什么都比swing更优秀,因为swing做得实在是不太行,这个没问题,现在已经有了
flutter和swiftui虽然不是java,但其实你认真看dart和swift的语言特性,其实差不多,class在这些语言中的意义是一样的,只不过dart用mixin,而swift用了protocol,应该说大同小异吧
要做纯java,那就是javafx了,目前graal对javafx的扩展使得其他jvm上的语言比如scala,clojure这些也都能写gui了,而且还能组团打包上apple store/app store,那这个意义就比较大了
这个是javafx做的一个ios app,示例意义比较大
Homepage | Watchdog App然后是可拖拽布局
scene builder什么,感觉很难用,一个主要问题是fxml带来的解析极为恶心,各种莫名其妙的bug,最早javafx是打算像web那样,弄一个fxml对应html,fxscript对应javascript,css,然后写,结果第一个凉掉的是fxscript,发现script的那种搞法不行,所以回去用java
现在看,至少我们在fxml上的实践,是不成功的,现在都彻底放弃fxml了,直接用代码写,这里说一下,javafx的布局,比flutter的布局的设计要好一点,swiftui的布局设计最好,它直接用json做配置,然后它就能在xcode里面拖拽出来,但是目前flutter和javafx似乎都还没有觉悟这一点,所以做javafx的johan vos和kotlin的那个roman在twitter上有过一次讨论,到底布局代码,该怎么写,从目前发展的情况看,*ml的方式根本就是个错误,应该回归原始代码,他们当时是在swiftui和flutter的主题下讨论的,roman认为应该用kotlin的dsl,而johan则认为应该用graal的多语言功能,引入新的语言来更好滴设计布局,而flutter则是直接将dart代码设计成表达ui布局更加合理的方式,然后搭配ide的高亮等特性予以展示
但是不管是哪一种做法,反正苹果,Google和Java都开始放弃*ml的做法,Java放弃得比较慢,但是苹果和Google已经明显不再这条路上继续了,一些老的gui框架,比如qt等还会提供这些东西,但是我建议你最好睁开眼睛看看世界的变化,现在是移动为王的年代,两个移动大boss苹果和Google都不约而同地放弃了*ml的话,那说明这货将来前途堪忧
哪怕是安卓,那个最新的jetpack也开始使用代码的方式布局,javafx的布局因为有了pane和binding的存在,会变得很简单,我直接用layout x,y,设置位置,然后将width和height两个属性绑定到stage的width和height上去,然后整个布局就特别容易制作
但是坏处就是,在这些东西稳定下来之前,也就是到底该怎么写布局代码有一个结果之前,拖拖拽拽还是比较麻烦的,暂时还实现不了,swiftui因为它不需要讨论,苹果说怎么做就怎么做,所以它拖拖拽拽很快出来,flutter和javafx这些都还在摸索当中
话说回来,不能拖拖拽拽的话,需要有一定的控件想象能力,而且对于这些编程语言的驾驭能力要足够好,虽然能够暴力试错,但是这里很容易写成一团乱麻
但是如果你对编程语言语法本身熟练的话,一些布局可以很快撸出来,比如下面这个,我撸这个布局只用了一个小时左右,就还原了ui设计师的设计,其实就是各种绑定,layout坐标的计算,做一个之后,其他就简单了,中间战斗的渲染用的是canvas
Java有没有可能以后推出优秀的UI工具包

游戏ui截图对比设计稿
Java有没有可能以后推出优秀的UI工具包

ui设计师给的设计稿

■网友
坐等头铁大佬用JNI封装Qt



■网友
Pivot 感觉好久都不更新了。。。Java的gui感觉彻底退出了。
■网友
若是没被甲骨文给收购,还有一丝希望,被收购后,就甲骨文那个尿性,一点没可能。


推荐阅读