Является ли использование Java подходящим языком / платформой для разработки бухгалтерского приложения на основе графического интерфейса? - PullRequest
10 голосов
/ 05 февраля 2010

Я знаю, что это частично субъективно, но, надеюсь, с достаточным количеством деталей, я смогу получить хороший ответ.

Я хочу разработать бухгалтерское приложение, нацеленное на определенный сегмент рынка (подумайте о Quickbooks, но подправили). Большинство приложений будут редактируемыми таблицами, которые связаны с данными БД и некоторыми базовыми функциями отчетности и графики.

Он должен быть кроссплатформенным (OS X и Windows).

Он будет взаимодействовать с локальной БД. (SQLite или Derby или любой другой)

Скорость не является "огромной" проблемой. Он должен быть достаточно отзывчивым (я не знаком со скоростью Java по сравнению с C / C ++).

Я действительно сузил его до C ++ с QT и Java. Я знаю только очень немного Java, но регулярно работаю с C ++. Тем не менее, до сих пор Java представляется наилучшим общим решением, и количество книг / документации огромно, что является плюсом.

  1. Насколько проста интеграция с графическим интерфейсом Java и БД? Делает ли NetBeans этот процесс простым или я должен вместо этого использовать Eclipse? Я ищу опыт, похожий на C # с Visual Studio.
  2. Является ли проблема округления "большим десятичным числом" в Java серьезной проблемой или ее легко обойти? (извините, если я звучу необразованно по этой теме, но я действительно не знаком с Java)
  3. Есть ли какой-нибудь реальный showtopper с Java, о котором я, возможно, не думаю здесь, или какая-либо реальная причина, по которой я должен использовать C ++ с QT поверх него?
  4. Если я в конечном итоге захотел перенести часть или все это в Интернет, сделает ли Java на настольном компьютере более легким портирование позже?

Ответы [ 13 ]

10 голосов
/ 05 февраля 2010

Первое, что я должен сказать: «здесь нет правильного ответа».

Java может делать именно то, что вы хотите. Инструментарий GUI, после многих лет переделки, очень продвинутый. Есть также много инструментов, платформ и расширений, которые вы можете использовать, чтобы сделать графический интерфейс очень продвинутым.

Java также имеет отличную структуру подключения к БД. С помощью инструментов Object Relational Mapping (ORM) (Hibernate и др.) Довольно легко извлечь данные из БД, поместить их в Objects, манипулировать ими и вернуть их в базу данных. Инструменты ORM также позволяют легко подключать объекты данных непосредственно к графическому интерфейсу и использовать правила в этих объектах для защиты данных от повреждения.

Кроссплатформенная поддержка вам очень поможет. Единственный большой камень преткновения - наличие на компьютере времени выполнения Java для файлов. Есть способы обойти это (лучше всего, чтобы установщик поместил его туда).

7 голосов
/ 05 февраля 2010

Очевидно, что не существует одного решения, но есть преимущества и недостатки обоих решений, и даже есть третье решение: Java с Qt.

Прежде всего, мой опыт работы с C ++ и Qt уже несколько лет, так что, возможно, он не совсем точен, и мой интерес к разработке Java-GUI закончился год или два назад, когда я увидел инструменты для разработки. Я обычно работаю на Java, но не с Swing.

Тем не менее, основное различие между Java и C ++ заключается в развертывании. Java всегда зависит от установленной среды Java, а C ++ немного более автономен. В этом отношении я бы отдал предпочтение C ++, если вы можете управлять развертыванием на двух платформах.

Что касается разработки графического интерфейса, инструменты Qt были очень хорошими и стали только лучше. Фреймворк также очень близко соответствует процессу графического интерфейса и подходит для такой работы. Swing кажется немного более низким уровнем и требует значительного количества стандартного кода. И я не знаю ни одного действительно хорошего инструмента разработки, хотя слышал хорошие слова о богомоле.

Если вы считаете, что Java - это путь к развертыванию или серверной логике, но инструменты GUI для Qt слишком хороши, чтобы их игнорировать, проверьте вопрос stackoverflow о Java Swing или Java Qt . Это стоит прочитать.

В вашем конкретном случае я бы использовал C ++ / Qt, поскольку у вас есть опыт работы с C ++, и это не так уж просто для правильной сборки приложения Java Swing.

5 голосов
/ 05 февраля 2010
  1. Я не знаком с Netbeans, но я сделал несколько Java-приложений с доступом к базе данных. Мне было довольно легко, даже когда я использовал gvim вместо IDE.
  2. О какой проблеме «большого десятичного числа» вы говорите? Все компьютерные языки имеют проблемы с отображением между двоичным и десятичным, но если вы знаете, что делаете, вы можете справиться с этим независимо от языка. Черт, я делал инженерные приложения на Фортране-Н.
  3. Кроме того, что вы знаете C ++ лучше, нет причин не использовать Java. Хорошо соответствует вашим требованиям.
  4. Написание чего-либо, чтобы в конечном итоге его можно было перенести в Интернет, - это больше вопрос уверенности в том, что вы используете шаблоны Model-View-Controller и имейте в виду, что ваш View может оказаться чем-то совершенно другим. Это философия дизайна, а не требование языка.
2 голосов
/ 05 февраля 2010

Я занимаюсь разработкой инструмента с графическим интерфейсом на Java с использованием NetBeans, и до сих пор у меня не было проблем. Не полностью зависит от редактора графического интерфейса пользователя NetBeans, я использую его только для разработки своих диалоговых окон и панелей. Я понял, что если вы пойдете по пути MVC, гораздо проще будет использовать графический редактор NetBeans. Затем вы можете полностью оставить часть дизайна для NetBeans. Посмотрите новую демонстрацию SwingSet3 и решите, будет ли вам достаточно элементов управления Java Swing (с точки зрения внешнего вида и доступных элементов управления GUI). Кроме того, взгляните на компоненты SwingX , некоторые из них действительно великолепны и хорошо выглядят, такие как ShadowBorder, TitlePanel и т. Д. Я определенно рекомендую вам использовать JXTable для ваших таблиц вместо JTable. Учитывая популярность Java, я не думаю, что проблема BigDecimal еще не решена. Что касается БД, Java поставляется в комплекте с собственной полной функцией JavaDB , которая действительно небольшого размера - всего 2,5 МБ. Это пригодится, если вы не хотите устанавливать тяжелые СУБД, такие как MySQL. Это также будет другой уровень абстракции ИМХО - ваши клиенты вряд ли увидят использование какой-либо внешней БД. Никогда не обманывайте себя, поскольку переносимость означает, что ваше программное обеспечение Java будет автоматически работать на разных платформах. Это определенно потребует дополнительных усилий, но если вы работаете над своим первоначальным дизайном и строите свое программное обеспечение, сохраняя различные платформы (не только ОС, но и рабочий стол / сеть и т. Д.) В затылке, вам будет легко немного его настроить. немного, чтобы сделать его полностью портативным. Иди MVC, это не повредит. Мои 2 цента.

2 голосов
/ 05 февраля 2010

Я бы предложил Groovy, а не Java. Это своего рода Java ++, в котором почти все в Java также есть в Groovy, но Groovy предоставляет ряд преимуществ в дополнение к этому. Язык Groovy предоставляет несколько вспомогательных методов. Правильно ли работает математика по умолчанию (нет проблем с двойной математикой).

Что касается веб-десктопа, вы можете использовать Grails для веб-сайтов и Griffon для настольных компьютеров. Опять же, на основе Groovy.

Для IDE, если вы выберете Groovy, то либо IntelliJ (хотя для веба это дорого), либо SpringSource Tool Suite, который является производным Eclipse. В основном Eclipse с несколькими плагинами, включая Groovy.

2 голосов
/ 05 февраля 2010

Нет параллелизма? Это только в локальной базе данных? Я нахожу это удивительным ограничением для нового программного проекта. Я удивлен, что вы не думаете о браузере AJAX с веб-сервисом.

РЕДАКТИРОВАТЬ: Скорость не проблема, и вы думаете, что вам может потребоваться перенести его в Интернет? Начните в Интернете и избавьте себя от множества головных болей.

2 голосов
/ 05 февраля 2010
  1. Что-нибудь с бобами в заголовке, которого я бы избегал, но java отлично работает с БД и GUI.
  2. Я не уверен, что вы имеете в виду, но вы можете захотеть сделать свой собственный класс денег. Вряд ли это будет много работы, и тогда он будет округляться так, как вам нравится.
  3. Гораздо правильнее работать в Java, чем в C ++, но если у вас действительно сложный графический интерфейс, то в некоторых вещах интерфейс Java проще, чем в большинстве приложений C ++, но сложнее для других.
  4. Не совсем.
1 голос
/ 05 февраля 2010

Что ж, если вы хорошо знаете C ++, то это причина номер один для этого. QT - очень хороший инструментарий, и вы будете гораздо более продуктивным с ним, чем с Java (как вы хорошо знаете C ++). Кроме того, благодаря этому опыту у вас будет больше шансов сделать лучшее приложение.

Итак, если вы не отчаянно хотите получить опыт работы с Java (и в наше время это не такой большой плюс, как раньше), придерживайтесь C ++ / QT и приобретите некоторые кроссплатформенные навыки.

Лично, если бы я собирался создать новое приложение с нуля и хотел узнать что-то новое, это было бы веб-приложение с некоторыми новыми вкусностями HTML5 / js. Модные веб-функции, скорее всего, станут будущим для приложений через толстые настольные клиенты (и удобны для более мобильных платформ).

1 голос
/ 05 февраля 2010

Это может вас заинтересовать

Ajaxswing

хотя я хотел бы, чтобы другие заявили о разработке с нуля как веб-приложение.

1 голос
/ 05 февраля 2010

Если вам нужна кроссплатформенная Java, неплохая ставка.

Помните, что для целей бухгалтерского учета используйте тип данных, подходящий для сумм. Double / Reals / Floats и т. Д. Все, по существу, представляют числа, такие как двоичная дробь, умноженная на показатель степени, что приводит к ошибкам округления. Сообщается, что BigDecimal для Java хорошо работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...