随笔 | 时代推着走,千锤百炼,方得「Out-of-Box」本色
2023-01-15 本文已影响0人
生信石头
时间很赶,时间也很少。然而我不是还是会遇到或者想起 3年多 以来在 TBtools 上的困染。可以说,为此时间上我可能一个月至少投入了23天的完整时间;开支上,累计也有3w。而这一切,都是 JDK/Java 的自身的问题。
Java 号称跨平台,但在GUI程序上,很多时候你的代码真的没问题,换个电脑就会有问题。对于 TBtools,累计20w用户,每天活跃用户3000+,自然一个小的问题会被无限放大。我并不追求完美,但是一些显而易见的问题,躲是躲不了的。今天解决的问题,应该追溯到3~4年前。
我一直在用 JDK6 写 Java 程序,主要原因是Java不像Python2~3之类,Java可以向下兼容。但我还是太年轻,后来的 JDK8 在支持 https 上有了变动。折腾了许久,发现 JDK6 编译,JRE6 运行没问题;JDK8 编译,JRE8 运行也没问题;但是 JDK6 编译,JRE8 运行,就是不行。于是我被迫升级到 JDK8,随之而来,自然是一系列代码更新或者优化,以及新的 GUI bug。这个是万万没想到。
后续,伴随科研人员的生活水平提高,大伙都用上高清屏幕,简称 HDPI。继续使用JRE8,那么很多老铁就开始吐槽,字体都模糊了云云。因为 JDK8 本身并不支持 HDPI,至少我们要更新到 JDK9 或者以上才行。于是问题来了,那会我还在用cracked版的安装器打包 TBtools。实在找不到支持 JDK9 的安装器,正好也被一些机构团队倒逼在网上讲演,有了一点收入,于是大手一挥 1700刀(约2w元)直接买了一个新版本安装器授权....为了用户体验,其实我还是付出了一些的,毕竟TBtools是一个学术免费软件,且并无经费支持(简单来说,我自己掏钱....)。后续,这个安装器一直沿用到现在,也有3年多了。
But,也因此,我开始用 JDK8 编译软件,然用户用 JRE11 运行软件。其中GUI的一些细节处理,还是复杂。尽管 TBtools 界面看起来丑陋,但不代表使用体验不行。大道至简,开箱即用,IOS逻辑,使用顺畅。往往说不出他那里好,但是就是觉得很好。然而,似乎是 win10~11 的某个更新,导致一些用户直接无法安装 TBtools。为此我确实花了很多时间精力(当然也包括用户的时间,因为我电脑无法复现),最终找到一个办法,那就是用 JDK17 似乎就不会。于是我开始用 JDK8 编译软件,让用户用 JDK17 跑TBtools。
如果说事情就到此结束,那只能说我们太天真。很快,新的GUI问题出现了。JDK17 上,文件拖拽到界面,在不少平台上,会直接卡死,而且根本找不到原因。为此,我整整找了 3年,至今没有解决。那么咋办?
今天,我生气了,又一次各种参数测试,因为根本找不到报错信息,三年期间,我麻烦了不知多少用户,远程 debug,本地编译。没用,一切都是徒劳。但是在我疯狂折腾下,似乎可以在本地重现了拖拽卡死问题。为此,我又付出了一天时间,并找到根本原因。
我们都知道 IntelliJ IDEA 可以说是最强的 Java IDE,尽管我仍然在用 Netbeans。IDEA 所属公司是 Jetbrains,产出了大量优秀的 IDE,包括了 Python 中为人熟知的 Pycharm。而有趣的是,由于 IDEA 是用 Java Swing 写的,为此 Jetbrains 一直有在维护一个 GUI 优化的 OpenJDK 发型版。我一直就用 Jetbrains 的这块 JDK。所以 一直以来 TBtools 的 JDK11 和 JDK17 也是这一款。选择这一款的主要原因,因为他是 GUI 优化过,而TBtools是GUI软件。看谁能想到,恰恰这一款JDK 发行版的 JDK17 (包括JDK11.0.8以后)就会导致文件拖拽卡死,但是 JDK11.0.6 又不会....难搞。能重现问题,一整天时间下去,又遇到的 windows 的antivirus 报错,折腾半天是 JDK LAMA Compressed 的问题。
终于,我选择了 Zulu JDK17,当然,希望不会有新的问题。自然,目前我没发现这个JDK会触发文件拖拽卡死或者安装器中途退出。
写在最后
总而言之,我们不想走,但是时代不允许。简简单单,一个软件安装可能有千百问题;一个便捷的文件拖拽放置操作,也并非一行代码实现。更多时候,完美软件,可能只是用户量还不够。千锤百炼,或许才能得到一款真正的 Out-of-Box 软件。
路漫漫,其修远兮!与大伙共勉~