2011-10-20 88 views
5

是的,當面試官提到他們爲C/C++應用程序使用Java swing GUI時,我有點驚訝。我很好奇,問他如何將這些結合在一起,他的回答是「通過消息傳遞」。有趣! 那麼,我對這種方法很陌生,並且很好奇,如果那裏的公司真的使用這種設計。如果是的話,那麼這個設計是否有很大的優勢?如果您有任何參考資料請分享,對我來說理解這個設計如何運作會有點困難。該產品是基於數據備份的應用程序(可能在Linux/Unix平臺上)。 謝謝。C++應用程序的Java GUI - 這是一個好的設計嗎?

CV

+1

我猜測他們這樣設計它的唯一原因是因爲他們有一個「C/C++人」和「Java人」在一起工作,既不想在舒適區之外開發。聽起來像不好的設計給我。 – hspain

+0

不知道這是一個StackOverflow問題還是[programmers.stackexchange](http://programmers.stackexchange.com)。我認爲這可能是由於他們的編程人員的專業知識 - 他們可能更習慣於Java GUI,但對於C/C++「膽量」來說可以。無論如何,我投票將這個問題轉移到[programmers.stackexchange](http://programmers.stackexchange.com)作爲更合適的網站這種類型的問題。 –

+2

或者有尖尖頭髮的人聽說Java非常適合用戶界面/可移植性(可能在90年代後期!)並且強制使用一些Java。或者可能是後端系統依賴於很多本地代碼,因此將整個事件作爲獨立的C++應用程序編寫起來會更容易。 – ObscureRobot

回答

3

這是很難說,如果這是沒有關於應用程序的要求的更多信息的好設計。

另一件需要考慮的事情是,有時面試官會提出奇怪的設計來看候選人如何反應。當我僱用一個不是我的個人能力的角色時,我通常會這樣做,但是我有過經驗(通常情況是這樣)的角色。我的目標是看看候選人是否比我更好地解決問題!不好的候選人會狂妄地接受我糟糕的解決方案。更好的候選人會立即提出更好的解決方案最佳人選將比較我的弱解決方案和他們更好的解決方案,並探討每種解決方案的合理性。

我猜想Java前端是出於可移植性原因而選擇的。我會爭論一個基於瀏覽器的界面來實現這些相同的目標,但也許他們的UI/UX人員真的很喜歡Java。

7

我沒有看到任何錯誤。通過消息傳遞集成不同的組件是很常見的。我認爲它通常更適合具有同質環境(例如,所有應用程序都是用Java而不是Java和C++編寫的),但是通常情況下,您必須與以其他語言編寫的舊版或第三方組件集成,成本的原因或因爲沒有其他選擇。

消息傳遞是執行此操作的常用方法。我認爲HTTP是在「消息傳遞」的保護下,幾乎所有的語言都有一個HTTP庫 - 這使得它成爲一種常見的消息「語言」的不錯選擇。在集成非常異構的系統時,不僅要集成組件,還要集成消息傳遞系統(例如ESBs),還有專用的工具/框架。

+3

我同意。爲什麼重寫一個工作系統,如果你可以簡單地添加一個與之交談的GUI。這種情況在金融服務行業中經常發生,傳統的後端系統在Java中經常使用新的GUI,通過消息與後端進行通信。事實上,很大一部分網絡銀行解決方案甚至ATM的工作方式就是這樣。 – Ewald

1

可能會受到限制,爲什麼他們必須首先調用C++函數,然後才能分配客戶端需求。您將如何開發一個解決方案,以便您構建一個消息傳遞系統並與服務器端的C++接口。這是一天結束時的工作解決方案。我不希望用戶界面必須用C++編譯,因爲服務器端是用C++編寫的,有時你需要組裝不同的技術來實現你的解決方案。

1

這是一個可行的/好的方法,我看到它在一個非常大的(財富20如果有這樣的事情)公司使用,當我在那裏作爲一個承包商2005-2006在那裏工作。

當我問爲什麼,我被告知:

  1. 需要的Linux圖形用戶界面,JAVA/SWING是一個可敬的選擇。我也認爲他們有一些需要工作的Java開發人員。
  2. 他們在C++/C中有很大的性能關鍵代碼庫。
  3. 他們已經廣泛地使用了消息傳遞併爲此提供了庫。
  4. 雖然消息接口開發起來比較昂貴,但它允許團隊編寫測試程序(例如用python腳本替換生產GUI)。

這一切都表示,Qt和GTK/Gtkmm是非常好的GUI框架,爲什麼不使用這些?

相關問題