首頁>Club>
java/C#都說是可以跨平臺的,為什麼大部分商業公司都選了java,而不是.net/c#那?謝謝還有就是我的理解是java需要虛機jdk也就是執行時,來跨平臺,c# 需要 .net framework執行時來跨平臺,要是.net framework能安裝到linux,那麼mono還有必要嗎?要是不能,c#怎麼說自個是跨平臺的那?
10
回覆列表
  • 1 # 小熊社長

    首先Java跨平臺都是需要安裝對應的runtime,這些語言都不是直接編譯成機器程式碼,而是先編譯成中間語言,然後再透過runtime編譯成機器程式碼.

  • 2 # 甜橙很酸

    首先,我們常說Java、C#、C等語言實現跨平臺,再有.NET Framework是微軟開發的應用框架,只能應用在Windows作業系統。為了使C#跨平臺,微軟推出了.Net Core,所以也說.Net Core跨平臺。mono是Xamarin公司開發的跨平臺.NET執行環境。

    .NET Framework

    .NET Framework構建的應用是跑在Windows、Windows Phone、Windows Server 和 Microsoft Azure上的,無法跑在Linux和macOS上,它無法使C#跨平臺。

    Net Core

    2016年二月微軟推出了.Net Core,這個框架可以執行在三大主流系統上,即Linux、macOS和Windows。

    簡要談談Java跨平臺

    Java源程式先編譯為與平臺無關的位元組碼,然後由虛擬機器(JVM)執行這些位元組碼,在將其轉換為特定機器的機器碼,要注意的是,針對不同的平臺,有不同的JVM,也就是JVM不是平臺通用的。另外,我們下載的JDK中包含了JRE,JRE包含了JVM。所以說JVM是Java實現跨平臺的核心。沒有JVM就不可能實現跨平臺。

    下面說下C#是如何藉助.Net Core和Mono實現跨平臺。

    要說.Net Core跨平臺,先看看它都包含哪些元件。

    .NET Runtime:也就是CoreCLR,即公共語言執行庫,和Java虛擬機器一樣也是一個執行時環境。

    Framework Libraries,包括集合類,檔案系統處理類,XML處理類,非同步Task類等。

    還有SDK工具和編譯器等。

    .NET Runtime之所以跨平臺,主要歸功於CoreCLR,它為程式提供記憶體分配、垃圾回收、安全控制、異常處理和多執行緒管理等。它也同樣如Java語言一樣,將原始碼翻譯成中間語言,然後.NET Runtime將之翻譯為機器碼。

    Mono跨平臺原理與.Net Core相似。

    最後大公司為啥不愛使用.NET、而選擇Java

    這個問題由來已久,好多論壇也發起類似的爭論。我覺得,一個是

    .NET

  • 中秋節和大豐收的關聯?
  • 吃了抗生素後如何恢復身體?