簡體   English   中英

使用Java是開發基於GUI的會計應用程序的適當語言/平台嗎?

[英]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似乎是最好的整體解決方案,書籍/文檔的數量是巨大的,這是一個加號。

  1. 與Java GUI和DB集成有多容易? NetBeans是否使這個過程變得簡單,還是應該使用Eclipse? 我正在尋找與Visual Studio類似的C#體驗。
  2. Java中的整個“大十進制”舍入問題是一個主要問題還是易於解決? (對不起,如果我對該主題聽起來沒有受過教育,但我真的不熟悉Java)
  3. 是否有任何關於Java的真正的showstopper,我可能沒有想到這里或任何真正的強大理由我應該使用C ++和QT嗎?
  4. 如果我最終想將部分或全部內容移植到Web上,桌面上的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應用程序並不是那么簡單。

  1. 我不熟悉Netbeans,但我已經完成了幾個具有數據庫訪問權限的Java應用程序。 即使我使用gvim而不是IDE,我發現它也很容易。
  2. 您在談論什么“大十進制”問題? 所有計算機語言都存在二進制和十進制之間映射的問題,但如果你知道你正在做什么,你可以處理它,無論語言如何。 見鬼,我在FORTRAN-H做過工程應用。
  3. 除了你更了解C ++之外,沒有理由不使用Java。 它很好地滿足您的要求。
  4. 寫一些東西,最終可以移植到網絡更多的是確保你使用模型 - 視圖 - 控制器模式,並記住你的視圖可能最終是完全不同的東西。 這是一種設計理念,而不是語言要求。
  1. 我會避免使用標題中包含bean的任何東西,但java在DB和GUI中運行良好。
  2. 我不確定你的意思,但你可能想做自己的錢課。 幾乎不需要它做很多工作,然后它會完全按你喜歡的方式進行。
  3. 在Java中實際工作比C ++更有可能,但如果你有一個非常復雜的GUI,Java GUI的東西比大多數C ++應用程序更容易使用,但對其他東西來說更難。
  4. 並不是的。

沒有並發? 它只在本地數據庫上? 我發現這令人驚訝地限制了一個新的軟件項目。 我很驚訝您沒有考慮使用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運行良好。

這可能對你有用

Ajaxswing

雖然我希望其他人聲明從頭開始將其作為Web應用程序開發。

好吧,如果你對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM