回覆列表
-
1 # 華髮生156
-
2 # 倒轉傾城
首先,java語言要在很多平臺上執行,用c語言寫的話,你得每個平臺都編譯一次,每個平臺都要對應最佳化,麻不麻煩,而且產生不同的好幾個庫,增大執行時體積。
第二,並不是說c語言寫就一定好,用c寫很考驗程式設計師的程式設計水平,作為一個工具類,就要追求效能,考慮記憶體、指標、程式碼最佳化等等複雜問題。而目前jit的最佳化功能已經非常強大了,在很多情況下執行速度與c語言相差無幾。
第三,這些程式碼都要被使用者的java程式碼呼叫,如果要在c實現那麼這些工具類就必須要弄一套jni呼叫,會增加不必要的執行時開銷,程式碼複雜度增加。另外如果要在c實現,那就意味著放棄了已經寫好的java優良特點不用,撿了芝麻丟了西瓜,例如垃圾回收,異常捕捉等非常方便的特性。
第四,方便除錯,設想,假如工具類是用c寫的,一個java程式設計師呼叫這個庫,結果出異常了,你得從java偵錯程式換到支援c的偵錯程式,例如gdb,lldb等等,然後學習怎麼除錯,找c裡面的bug,這對於一個java程式設計師來說,是非常痛苦的。而用如果java寫的話直接就可以除錯,並且可以使用java的異常機制。
如果你java和c都會那當然是可以,如果不會c那就還是老老實實玩java把,就說一點,呼叫的C肯定編譯後的,邏輯肯定看不了,報個錯,你不得當場去世,要簡單拓展一下,也是當場懵逼,java寫你好歹能看懂一點,這個方式是可行的,但並不適合只會java的程式設計師