我想構建一個可在Windows和Mac OS X上運行的應用程序。我也願意利用其運行的平臺所提供的最佳平臺關於框架,API等等。有沒有辦法做到這一點,而不必編寫Objective-C代碼,然後編寫C#代碼?我一直在想C++作爲替代方案,但我想知道是否還有其他東西。該應用程序將基於GUI(雖然我不知道它會做什麼)創建一個跨平臺的Windows,Mac OS X應用程序
-G。
我想構建一個可在Windows和Mac OS X上運行的應用程序。我也願意利用其運行的平臺所提供的最佳平臺關於框架,API等等。有沒有辦法做到這一點,而不必編寫Objective-C代碼,然後編寫C#代碼?我一直在想C++作爲替代方案,但我想知道是否還有其他東西。該應用程序將基於GUI(雖然我不知道它會做什麼)創建一個跨平臺的Windows,Mac OS X應用程序
-G。
你很早就想到了可移植性 - 在事實發生之後「很難將其」綁定「。
有各種各樣的跨平臺套件可用,但恕我直言,所有這些都缺乏提供所有支持的平臺上的「本機」的外觀和感覺。在Mac上(我使用的),這類工具包的支持者總是想提及他們正在使用本機控件。這是一個好的開始,但這不是整個旅程。通過Apple's Human Interface Guidelines解決的其他問題包括控制應該如何安排,按鈕標籤應該如何表述,應該用什麼標準快捷鍵等
即使微軟不得不learn the hard way約的嘗試寫一個跨平臺的危險圖形用戶界面,用於Mac的命運多Word的Word 6.0。恕我直言,更好的方法是使用MVC設計,模型層用標準,可移植的C++編寫,視圖層和控制器層使用本地工具包用於每個平臺。對於Mac版本,Carbon和C++始終都是一個有趣的選項,現在不再支持,因此您希望使用Cocoa,在視圖中使用Objective-C,在控制器中使用Objective-C++來彌補語言差距。您的Windows版本可能同樣將您的模型編譯爲「託管C++」,並將任何.NET語言用於控制器和視圖。
對於GUI,我會考慮SDL或QT。
而且,只要檢查出單http://mono-project.com/Main_Page
,你是不依賴於語言,它看起來像Java是一個不錯的人選。將它和SWT結合起來,你就可以在任何你喜歡的操作系統上安裝一個本地的應用程序。
除了Java程序在Mac上臭名昭着的「壞」。文件對話框不能按預期工作,並且一切都感覺錯誤。 (我用Java開發,至少在某些時候!) – 2008-10-31 04:54:02
即使使用SWT?鑑於在Mac上運行Eclipse的開發人員的數量,這對我來說似乎很奇怪。 – 2008-10-31 14:24:47
>>文件對話框不能正常工作 這很容易解決,只需使用java.awt.FileDialog而不是javax.swing.JFileChooser – 2009-09-03 12:06:20
看看Real Studio。認真。您可以在Real Studio中編寫應用程序,並將其部署在Windows,Mac OS X和Linux上。
編輯:Real Studio現在是Xojo。
對我來說,這是唯一真正的選項,以所有3個爲目標幾年。 – bruceatk 2008-11-02 23:26:55
我不知道有一個OO,更新版本的BASIC。整齊! – EndangeredMassa 2008-12-21 01:12:36
如果您是Windows開發人員,請使用Qt或C#Winforms;如果你是Mac開發者,你可以嘗試Cocotron(http://www.cocotron.org/),但它還沒有完成,儘管商業應用程序已經與它一起出貨。
wxWidgets是一個跨平臺的C++庫,這是一個實用的選擇。但是我同意Sherm--所有的跨平臺庫都會爲本地應用程序創建一個劣質的UI。
由於每個操作系統具有不同的UI語義(按鈕順序等),使得它變得更加困難,所以雖然您可以獲得好看,但通過一個視圖層獲得每個平臺上的「感覺」幾乎是不可能的。
根據您最終做了什麼,您可能會發現更好的Web界面(例如,將Web服務器嵌入到您的應用中,並將HTTP頁面提供給瀏覽器)。您避免了L & F問題!或者,你可以決定你只是有一個完全非標準的L & F,並且可以使用wxWidgets或Tcl/Tk。
我打算做類似的事情,我正在考慮創建一個C#/。NET Windows應用程序,然後使用Mono將它移植到OS X.我的應用程序已經有一個完整的(除了標題欄和轉角按鈕)自定義繪製的用戶界面,所以美化操作系統差異不應該太多影響我。
我不確定在框架和API等方面充分利用每個平臺的優勢,意味着什麼。一般來說,編寫一個跨平臺的應用程序意味着寫一個最小公分母,這意味着而不是從每個平臺中獲得最大利益。
您應該使用適用於每個操作系統的最佳工具。
C/C++代碼可以從GUI中分離出來並用於每個單獨開發的程序。
在您做出決定之前,請查看使用可移植工具包(例如Qt或wxWidgets)開發的跨平臺應用程序。根據我的經驗,他們從來沒有像他們的本地對手那樣精緻,尤其是在Mac上。
帶有AIR庫的Adobe Flex爲您提供了一個單一的高級開發環境。我已經編寫了幾個實用程序,供人們在兩個平臺上交替使用。
如果您感興趣的話,您也可以通過瀏覽器獲得合理的可移植性。但我認爲這是一個很好的解決方案,不考慮這個好處。
Java或Mono出現在我的腦海。有些人可能會爭辯說,Java圖形工具包並不是最簡單的,但它似乎至少對我來說是將應用程序移植到多個平臺並避免部署困難的最簡單方法。
另一方面,單聲道可能有點難以移植,因爲如果您打算擁有原生的小部件(winforms或GTK for Windows和CocoaSharp for Max),您至少必須編寫gui兩次,但你可以只寫一次後端,爲每個平臺開發一個前端。
正如我所說的,Java GUI工具包可能不會在OSX內部或Windows上感覺到「本機」,但它們確實可以在兩種平臺上工作,您可以使用Swing或AWT。
至於單聲道,你可以使用GTK或Winforms的Windows和OSX,但他們仍然不會覺得本機,但可以,但是,使用CocoaSharp綁定到Cocoa框架,但我不知道項目的狀態(閱讀:功能支持)
我第二個Java。它被設計成一個跨平臺的解決方案。
其他人提到Adobe Air。
與Adobe Air類似,Silverlight是Silverlight。我相信它是(或將會)完全跨平臺。
還檢查了fltk,wxWidgets的非常好&豐富,但也非常大......
您可以創建的Java Swing夢幻般的尋找跨平臺的應用程序。它只是需要稍微更多的努力學會這樣做。
在這裏,看看其中的一些鏈接。
正如其他人所說的,絕對是婆可以在Windows和Mac上用Java創建出色的跨平臺GUI。但是,如果您希望自己的應用融入並採取行動,使其「感覺」像是從底層開始爲其運行的平臺設計的應用,則您必須爲每個版本的應用開發GUI和用戶體驗應用程序分開。
如果您分析您的應用程序將要執行的操作,並確定可以在平臺之間共享的代碼/邏輯的重要部分,然後使用兩種系統上可用的語言以便攜方式編寫該部分。 C,C++,Java,Python,Ruby等。如果沒有重要的部分,即大多數代碼將用於GUI,則根本不需要共享任何代碼。
如果有相當部分的通用代碼,我會建議將Python和Ruby視爲實現語言,因爲在Mac和Windows上使用IronPython和IronRuby時,可用於Cocoa綁定的語言也可以在.Net應用程序中使用該代碼。
即將到來的QT造物主可能是值得一試:link text
在磁Studios的傢伙有一個不錯的write up on using Cocotron建立一個Windows可執行文件和Xcode。
我對Cocotron沒有經驗,但是如果我需要編寫一個Windows應用程序 - 帶有Mac開發背景 - 這將是我第一次嘗試。
感謝您的所有答案。我一直在做一些研究,並與WPF和CAnimation等玩耍。它看起來像使用C/C++模型,併爲每個平臺單獨做GUI是最好的方法。感謝你的幫助。
我的建議,使用Python。 Python與Objective-C和C#(IronPython)集成。只要避免使用該語言的許多全新的出血邊緣功能,即可。
當然,這不會是無憂無慮的簡單。但我認爲,不應該無意識地容易。當設計人員將其應用程序移植到其他平臺時,他們的應用程序將如何工作,這一點變得非常明顯。
如果您選擇C++語言,那麼我肯定會推薦Qt。您的應用程序可以根據OP中的要求在Windows和Mac下部署,也可以在Linux上部署,並且現在可以使用智能手機上的最新版本使用iOs,Windows RT和Android。
這是有據可查,並在網絡上非常活躍(包括SO)。
我看到的唯一不足就是Qt的創造者工具,恕我直言,它不像歷史工具(比如Visual Studio)那麼友好,但實際上你並沒有被迫將它用作Qt開發的IDE。
爲了完整性,現在值得將Unity添加到列表中。
要爲任一平臺創建一個原生外觀的應用程序是非常困難的,而且一般的GUI工具還遠未成熟。但是,它不僅僅是一個遊戲引擎,你可以用C#/ Mono編寫,使用一系列體面的庫,並且可以毫不費力地部署到Win和OSX上。
SDL是一款優秀的遊戲解決方案 - 但對於GUI應用程序來說呢?真的嗎? – 2008-10-31 04:09:32
Qt的+1。不知道關於SDL。 – jop 2008-10-31 04:58:13