Использует ли Java правильный язык/платформу для разработки приложения для учета на основе графического интерфейса?

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

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

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

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

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

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

  • Насколько легко интегрироваться с Java GUI и DB? Делает ли NetBeans этот процесс простым или я должен использовать Eclipse? Я ищу опыт, похожий на С# с Visual Studio.
  • Является ли целая проблема "большого десятичного разряда" в Java важной проблемой или ее легко обойти? (извините, если я озвучу необразованную тему, но я действительно не знаком с Java)
  • Есть ли какой-нибудь реальный showstopper с Java, о котором я, возможно, и не думаю, или о какой-либо реальной сильной причине, я должен использовать С++ с QT над ним?
  • Если мне в конечном итоге захочется перенести некоторые или все из них в Интернет, делает ли Java на рабочем столе проще переносить позже?

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

  • Я не знаком с Netbeans, но я сделал несколько приложений Java с доступом к базе данных. Мне было очень легко, даже когда я использовал gvim вместо IDE.
  • В чем проблема "большого десятилетия"? Все языки компьютера имеют проблемы с отображением между двоичным и десятичным, но если вы знаете, что делаете, вы можете иметь дело с ним независимо от языка. Черт, я делал инженерные приложения в FORTRAN-H.
  • Кроме того, что вы знаете С++ лучше, нет причин не использовать Java. Он хорошо соответствует вашим требованиям.
  • Написание чего-то, что в конечном итоге можно портировать в Интернет, - это больше вопрос о том, чтобы использовать шаблоны Model-View-Controller и помнить, что ваш взгляд может оказаться чем-то совершенно другим. Это философия дизайна, а не требование языка.

Ответ 4

  • Что-нибудь с beans в заголовке, которого я бы избегал, но java отлично работает с DB и GUI.
  • Я не уверен, что вы имеете в виду, но вы можете сделать свой собственный денежный класс. Вряд ли это очень много, и тогда он будет округлен, как вам нравится.
  • Похоже, что на самом деле правильно работать в Java, чем на С++, но если у вас действительно сложный GUI, то Java GUI-материал проще в использовании, чем большинство приложений на С++ для некоторых вещей, но сложнее для других.
  • Не совсем.

Ответ 5

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

EDIT: скорость не является проблемой, и вы считаете, что вам, возможно, нужно будет перенести ее в Интернет? Начните в Интернете и спасите себе массу головных болей.

Ответ 6

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

Что касается web vs desktop, вы можете пойти с Grails для Интернета и Griffon для рабочего стола. Опять же, Groovy.

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

Это может быть интересно для вас

Ajaxswing

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

Ответ 10

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

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

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

Ответ 11

Я бы определенно рекомендовал использовать С++ и Qt. Особенно, если вы используете Qt Creator или Qt Designer для создания макета пользовательского интерфейса.

Если вам нужно или просто просто хотите использовать Java (или язык JVM), я бы использовал Qt Jambi. В любом случае, Qt (IMHO) намного превосходит платформу независимо от используемого языка. Если раньше у вас не было разработки Swing или SWT, я бы дал вам около двух часов, прежде чем вам захотелось есть пулю.

Ответ 12

Чтобы ответить на вопрос 2, Java может немного болеть за счет чисел с плавающей запятой, но с версиями 1.5 и 1.6 он значительно улучшился. Если вы перейдете по пути Java, убедитесь, что у вас установлена ​​самая последняя версия.

В этой статье достаточно подробно описаны проблемы: http://www.ibm.com/developerworks/java/library/j-math2.html.

Ответ 13

Как некоторые другие указали, что webapp может работать нормально. Я думаю, что RubyOnRails очень продуктивен, и вы можете запускать его на JRuby на обеих платформах или с любым родным Ruby. Вам нужно будет изучить безопасность, но это не должно быть большой проблемой.

Если вы не знаете Java, вы также можете проверить Mono. Вы можете создавать приложения WindowsForms с ним и запускаться как на Mac, так и на Windows, или если вы идете по веб-маршруту и ​​используете ASP.NET для Mono. Я все еще думаю, что RubyOnRails даст вам более короткое время разработки, чем ASP.NET, но это вариант.