Java的痛


发布者 ourjs  发布时间 1403745266841
关键字 我要吐嘈  瞎扯 
在2014年,如果一个程序员在命令行中运行一段简单的程序变得非常困难,那么这就是不正常的。

我写了些代码去连接 Keybase OpenKeychain, 本计划写更多。因为这是一个Android App,而且代码是用Java写的,我相信也有很多人使用Java,那些人有能力使用它,所以我也用了。但是这个东西写起来不应该这么困难。

我的Java代码已经在线上可以正常工作了,所以我把它们从 OpenK­ey­chain 中拷出来,然后创建了一个新的项目,然后我想我应该可以从命令行跑起来,然后集成测试一下(smoke test)。

但是!行不通。首先它不停地在Java命令行提示,它缺少我项目中的一些class文件和json.org库(其实我早就已经下载了,所以我才能编绎这个笨蛋程序)。对的,我十年前已经知道这个东西了,这一步真不应该有什么复杂的。

当我指定以后,它拒绝运行,因为我想去从 https:// 
抓取内容(你懂的)。但是不行,Java 7做不到,好吧,我真的不知道为什么。在一些认证表(certs table)中有一些无法理解的补丁。所以Java 7不行了,OS X也不行了,一切都不行了,然后它无法正常工作了;显然,你可以在底层安全机制里修复它。但是我是只想从该死的(fucking)的https连接处抓取一些内容,并不想动任何其他任何代码。顺便提一下,curl可以在命令行里从一样的地址里获取这些东西,但是Java做不以。
(注* curl 为linux中的一条命令)


所以最简单的解决办法是创建一个子Android项目叫 KeybaseTest, 设置一个空的TextView然后我就可以写类似下面的代码。

printf("%d %s", http­s_s­ta­tus, http­s_mes­sage_­body);

当然,为了这样搞,我不得不将我的Mac机连接到一台真正的Android设备,然后只是为了运行这段简单的代码,然后我就可以使用adb指令开始调试了。
记住!这是最简单的运行Java代码的方式。

亲爱的Java: 我可以在命令行里直接运行Ruby或Python或Go或JavaScript或C代码。但是我运行不了你,这是不是意味着你已经快不行了?

现在,我的Keybase Java客户端已经被重构成了一个Android项目,因为就像我之前说的,在2014年,最简单运行Java程序的办法是连上一台我自己拥有的互联网设备。


评论:这里有很多评论,“Tim Bray指出这种问题只有Java初学者才会遇到,我不关心这个人是谁,但是我不想花时间去学习其它工具”。
但是事实上这个家伙是Xml规范的联合起草人,而且是sun技术部门的总监,显然它不是初学者! 更多评论参见 Hack News.






回复 (2)
  • #
  • #1 诛笑靥 1404285248000
    最后一段话是什么意思
  • #2 OurJS 1404868080000
    @诛笑靥

    最后一段是作者对一些评论的综合回复。
微信扫码 立即评论