[英]Is using Java the proper language/platform for developing a GUI based accounting app?
我知道這是部分主觀的,但希望有足夠的細節,我可以得到一個很好的答案。
我希望開發一個針對特定細分市場的會計應用程序(想想Quickbooks,但經過調整)。 大多數應用程序都是可編輯的表,與DB數據和一些基本的報告和圖形功能鏈接。
它必須是跨平台的(OS X和Windows)。
它將與本地DB連接。 (SQLite或Derby或其他)
速度不是一個“巨大”的問題。 它需要具有合理的響應性(與C / C ++相比,我不熟悉Java速度)。
我把它縮小到C ++與QT和Java之間。 我只知道很少量的Java,但是經常使用C ++。 但是,到目前為止,Java似乎是最好的整體解決方案,書籍/文檔的數量是巨大的,這是一個加號。
首先我要說的是“這里沒有正確的答案”。
Java可以完全按照您的意願執行。 經過多年的改造,GUI工具包非常先進。 您還可以使用許多工具,框架和擴展來使GUI看起來非常先進。
Java還有一個很棒的數據庫連接框架。 使用對象關系映射(ORM)工具(Hibernate和其他工具),可以很容易地從數據庫中獲取數據,將數據放入對象中,對其進行操作並將其放回數據庫中。 ORM工具還可以輕松地將數據對象直接連接到GUI,並使用這些對象中的規則來保護數據免受損壞。
跨平台支持將為您提供很多幫助。 唯一的大問題是在機器上為文件提供Java運行時。 有辦法解決這個問題(最好的是安裝人員把它放在那里)。
顯然沒有一種解決方案,但兩種解決方案都存在利弊,甚至還有第三種解決方案:帶Qt的Java。
首先,我對C ++和Qt的經驗已有幾年歷史了,所以可能不那么准確,而且當我看到開發工具時,我對java GUI開發的興趣在一兩年前結束了。 我通常使用Java,但不使用Swing。
也就是說,Java和C ++之間的主要區別似乎是部署。 Java總是依賴於安裝的java環境,而C ++則更加獨立。 如果您可以在兩個平台上管理部署,我會在這方面略微偏愛C ++。
至於GUI開發,Qt工具非常好,只是變得更好。 該框架還非常緊密地匹配GUI過程,並且非常適合這種工作。 Swing似乎有點低級,並且需要相當數量的樣板代碼。 我知道自己沒有真正好的開發工具,雖然我聽到了mantisse的好東西。
如果您認為Java是部署或后端邏輯的方法,但Qt的GUI工具太好了,無法忽略,請查看有關Java Swing或Java Qt的stackoverflow問題。 值得一讀。
在您的特定情況下,我會使用C ++ / Qt,因為您有使用C ++的經驗,並且正確構建Java Swing應用程序並不是那么簡單。
沒有並發? 它只在本地數據庫上? 我發現這令人驚訝地限制了一個新的軟件項目。 我很驚訝您沒有考慮使用Web服務后端的AJAX瀏覽器GUI。
編輯:速度不是問題,你認為你可能需要將其移植到網絡上? 從網絡上開始,讓自己避免很多麻煩。
我建議使用Groovy而不是Java。 這是Java ++,幾乎Java中的所有東西都在Groovy中,但Groovy提供了許多好處。 Groovy語言提供了許多輔助方法。 默認情況下數學是否正確(沒有雙重數學問題)。
至於網絡與桌面,您可以使用Grails進行網絡訪問,使用Griffon進行桌面訪問。 再一次,基於Groovy。
對於IDE,如果你選擇Groovy,那么IntelliJ(雖然做網絡,價格昂貴)或SpringSource Tool Suite,它是Eclipse的衍生產品。 基本上Eclipse帶有許多插件,包括Groovy。
我正在使用NetBeans在Java中開發GUI工具,到目前為止沒有任何問題。 完全不依賴於NetBeans GUI編輯器,我只使用它來設計我的對話框和面板。 我已經體驗過,如果你采用MVC方式,使用NetBeans GUI編輯器會更加容易。 然后,您可以完全將設計部分保留給NetBeans。 查看新的SwingSet3演示 ,並確定Java Swing控件是否足夠(在外觀和可用的GUI控件方面)。 另外,看看SwingX組件 ,其中一些非常棒,看起來很棒,比如ShadowBorder,TitlePanel等。我一定會建議你使用JXTable代替JTable。 鑒於Java的流行,我不認為BigDecimal問題尚未得到解決。 關於DB,Java捆綁了自己的功能完整的JavaDB ,它的大小非常小 - 只有2.5 MB。 如果您不想安裝重量級的DBMS(如MySQL),這將非常方便。 這也將是另一個抽象級別恕我直言 - 您的客戶很難看到任何外部數據庫被使用。 永遠不要被愚弄,便攜式意味着您的Java軟件將自動在不同的平台上工作。 它肯定需要更多的努力,但如果你的初始設計工作,並建立你的軟件保持不同的平台(不僅是操作系統,桌面/網絡等)在你的腦后,很容易調整它一點點有點讓它完全便攜。 走MVC的方式,它不會受到傷害。 我的2美分。
如果你需要跨平台Java是一個相當不錯的選擇。
請記住,出於會計目的,請使用適合金額的數據類型。 Double / Reals / Floats等都基本上代表二進制分數乘以指數的數字,導致舍入誤差。 據報道,Java BigDecimal運行良好。
好吧,如果你對C ++有所了解,那么這就是使用C ++的首要原因。 QT是一個非常好的工具包,你會比使用Java更有效率(因為你熟悉C ++)。 此外,由於這種體驗,您制作更好的應用程序的機會也更大。
所以,除非你非常渴望獲得Java的經驗(現在它不像過去那么大),堅持使用C ++ / QT並建立一些跨平台技能。
就個人而言,如果我從頭開始尋找新的應用程序,並且我想學習一些新東西,那么它就是一個帶有一些新的HTML5 / js好東西的webapp。 對於厚桌面客戶端上的應用程序而言,花哨的Web功能更有可能成為未來(在更多移動平台上也是友好的)。
我肯定建議使用C ++和Qt。 特別是如果您使用Qt Creator或Qt Designer進行UI布局。
如果您需要或者只是想使用Java(或JVM語言),我會使用Qt Jambi。 無論哪種方式,Qt(恕我直言)都是一個非常優越的平台,無論使用何種語言。 如果您之前沒有進行任何Swing或SWT開發,我會在您想要吃子彈前約兩小時給您。
為了解決問題2,Java在使用浮點數時會有點痛苦,但是從版本1.5和1.6開始,它已經變得更好了。 如果確實沿着Java路徑前進,請確保使用最新版本。
本文詳細解釋了所涉及的問題: http : //www.ibm.com/developerworks/java/library/j-math2.html 。
正如其他一些人指出的那樣,webapp可能正常工作。 我認為RubyOnRails非常高效,您可以在兩個平台上或使用任何本機Ruby在JRuby上運行它。 你必須考慮安全性,但它不應該是一個大問題。
如果你不懂Java,你也可以查看Mono。 您可以使用它創建WindowsForms應用程序並在Mac和Windows上運行,或者如果您使用Web路由並在Mono上使用ASP.NET。 我仍然認為RubyOnRails會比ASP.NET提供更短的開發時間,但它是一個選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.