Java的痛
英文原文:Java Pain
在 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.
<span id="shareA4" class="fl">
</span>