2010-11-22 19 views
2

這個問題的上下文是C和java用戶之間的爭論。 C用戶聲稱C後端比JVM更具可移植性。如果我們遇到沒有預先存在的JVM支持或相對較弱的支持的平臺,情況就是如此。有沒有人對堆棧溢出遇到過這樣的平臺?我們能否列舉一些例子?在什麼平臺上沒有jvm,或者與windows或linux相比功能有限的jvm

+0

感謝所有花時間回答的人。如果其他人想在未來加入,我應該解釋一下,我寫的代碼非常注重數值,並使用命令行界面。 – SetJmp 2010-12-15 16:15:02

回答

1

x86和x86_64以外的任何平臺往往有較差的JVM支持。

1

JVM下載列表may be found here。我沒有特別的JVM支持專業知識,但表面上看起來像Windows,Linux,Solaris和OS X都支持。我猜如果你正在運行其他任何東西,那麼Java是不可行的...

這是所有操作系統的pretty comprehensive list。我很抱歉地說Amiga或ProDOS沒有JVM。

+1

有許多許多操作系統沒有在那裏列出。該列表只是Oracle自己提供的。 – DJClayworth 2010-11-22 18:01:15

2

任何運行ARM或MIPS的東西都不太可能擁有完整的JDK,儘管它可以訪問J2ME。

2

「更便攜」可能不是最好的問題。您需要做的是確定您可能需要合理支持的平臺,並確定C和/或Java是否適用於他們。如果兩者都可用,那麼便攜性對您來說不是問題。 C可用於更多平臺(很可能是這樣)的事實,其中許多可能非常模糊,與此無關。

如果這只是一個抽象的辯論,那麼恰當的答案是「誰在乎」?

編輯:在迴應評論。

這不僅僅是「本週推出產品」。如果您的目標是桌面,那麼Windows,Mac和Linux覆蓋大約99.999999999%的所有安裝(提供或接受幾個9),並且都包含Java。

如果您的目標是移動設備,那麼您可以查找哪些具有Java,但是您仍然必須在它們之間移植,並且使用C不會幫助您。

您考慮定位哪個其他平臺? IBM 370? Dec VAX? OS9?如果你不能想到一個你不想要的平臺,那就不是上述的那種,那麼額外的可移植性就是浪費你自己的時間。請記住,其他所有相同的C開發將比Java慢。如果你打算花費你寶貴的時間用C語言寫作,你最好從中獲得你可能需要的東西。

如果您希望創建一個「通用工具包」,您可以在未來十年使用不同的項目,那麼「一種語言」不會有幫助。如果您正在開發一個Java項目,那麼合併C代碼就非常複雜,即使安全性考慮讓您可能也不值得這樣做。您可能需要的是針對您打算使用的每種語言的不同工具包 - 一個用於Java,一個用於C等.C工具包可能包含諸如可擴展數組以及Java中免費提供的其他內容。無論哪種方式:首先爲每個項目選擇語言,然後爲該語言提取適當的工具包。

+0

我正在編寫代碼(個人圖書館),我現在不想在將來重新編寫代碼。 「誰在乎」不是一種選擇......代碼將被寫入,而且我必須選擇如何在今天爲我的時間和精力預算。我注意到,高效的程序員擁有這些工具,他們在十多年前已經在某些情況下建立了他們隨身攜帶的工具。這是一個不同的思路,而不是在下週推出一個產品,以提前知道可用的平臺。 – SetJmp 2010-11-22 18:56:45

4

我不明白C在這方面的「可移植性」。 如果你的意思是你可以爲任何cpu編譯「hello world」 - 那麼是的C更便攜。 但是你能用C來製作任何可移植的GUI或網絡,多線程等嗎?是的,你可以使用QT或類似的。但這是否便攜? Java是一個平臺,但C是一種語言。恕我直言,這是非常不同的東西

-1

只有以便攜方式編碼時,C纔是便攜式的。但是,這樣做時字數量,圖書館支持等都很重要。您幾乎總是必須重新編譯目標平臺的程序。

Java被設計成一種便攜式語言;您可以使用32位程序並在64位虛擬機下運行而不用更改(除非您下降到JNI)。

+0

好的。那麼爲什麼會被拒絕呢?如果不準確 - 請告訴我爲什麼? – Fortyrunner 2011-03-06 22:11:12

相關問題