10
votes

Utilise Java la langue / plate-forme appropriée pour développer une application comptable basée sur une interface graphique?

Je sais que c'est partiellement subjectif, mais j'espère avec suffisamment de détails, je peux avoir une bonne réponse.

Je cherche à développer une application comptable ciblée sur un segment de marché spécifique (pensez QuickBooks, mais modifié). La majeure partie de l'application sera des tableaux modifiables liés aux données DB et à certaines fonctionnalités de base et graphique de base.

Il doit être multiplate-forme (OS X et Windows).

Il s'interfacera avec une DB locale. (Sqlite ou derby ou autre)

La vitesse n'est pas un problème "énorme". Il doit être raisonnablement réactif (je ne connais pas la vitesse Java par rapport à C / C ++).

Je l'ai réduit vraiment entre C ++ avec Qt et Java. Je connais seulement une très petite quantité de Java, mais travaille régulièrement avec C ++. Cependant, Java semble jusqu'à présent sur la meilleure solution globale et la quantité de livres / documentation est énorme qui est un plus.

  1. Quelle est la facilité l'intégration avec Java Gui et une DB? NetBeans fait-il que ce processus est facile ou devrais-je utiliser Eclipse à la place? Je cherche une expérience similaire à c # avec Visual Studio.
  2. est l'ensemble de la «grosse décimale» d'arrondi à Java un problème majeur ou est-il facile de travailler? (Désolé si je sonne sans éducation sur le sujet, mais je ne suis vraiment pas familier avec Java)
  3. Y a-t-il un véritable showstopper avec Java que je ne pensais peut-être pas ici ou une raison forte réelle que je devrais utiliser C ++ avec QT dessus?
  4. Si je voulais finalement porter tout ou partie du Web sur le Web, Java sur le bureau facilite-t-elle le portage plus tard?

0 commentaires

13 Réponses :


5
votes
  1. Je ne connais pas Netbeans, mais j'aurais fait plusieurs applications Java avec accès à la base de données. Je l'ai trouvé assez facile même quand j'utilisais Gvim au lieu d'une IDE.
  2. Quel problème "grand décimal" parle-t-on? Toutes les langues informatiques ont des problèmes avec la cartographie entre binaires et décimales, mais si vous savez ce que vous faites, vous pouvez y faire face quelle que soit la langue. Enfer, j'ai fait des applications d'ingénierie à Fortran-h.
  3. Autre que le fait que vous connaissez C ++ mieux, il n'y a aucune raison de ne pas utiliser Java. Il convient bien à vos besoins.
  4. Écrire quelque chose de sorte qu'il peut éventuellement être porté sur le Web, c'est plus utile de vous assurer d'utiliser des modèles de contrôleur de modèle et de garder à l'esprit que votre vue peut finir par être quelque chose de tout à fait différent. C'est une philosophie de design plutôt qu'une exigence linguistique.

2 commentaires

Quant à # 2, ce que je parle de ce que je fais référence n'est vraiment qu'un double problème que j'ai lu. - Javaranch.com/journal/2003/07/moneyinjava.html


Chaque langue a les mêmes problèmes de nombres de points flottants. BigDecimal est une solution, pas un problème.



1
votes

Si vous avez besoin de Java multi-plate-forme, c'est un bon choix.

N'oubliez pas de comptabilisation, utilisez un type de données adapté aux montants. Double / Reals / Floats, etc. Tous représentent essentiellement des nombres comme une fraction binaire multipliée par un exposant, ce qui entraîne des erreurs d'arrondi. Pour Java BigDecimal aurait bien fonctionné.


0 commentaires

10
votes

première chose que je devrais dire est "Il n'y a pas de bonne réponse ici".

Java peut faire exactement ce que vous voulez. La boîte à outils de l'interface graphique, après des années de retouche, est très avancée. Il existe également de nombreux outils, cadres et extensions que vous pouvez utiliser pour que l'interface graphique soit très avancée.

Java dispose également d'un excellent cadre de connexion de base de données. Avec les outils de mappage relationnel (ORM) d'objet (hibernate et d'autres), il est assez facile d'obtenir des données à partir d'une DB, de la mettre dans des objets, de le manipuler et de la remettre dans la base de données. Les outils Orm facilitent également la connexion d'objets de données directement à l'interface graphique et utilisent les règles de ces objets pour protéger les données de la corruption.

Le support croisé vous aidera beaucoup. Le seul grand point de collage est d'avoir un runtime Java sur la machine pour les fichiers. Il y a des moyens autour de cela (le meilleur étant d'un installateur le met-il là).


0 commentaires

2
votes
  1. n'importe quoi avec des haricots dans le titre que j'éviterais, mais Java fonctionne bien avec DB et Gui.
  2. Je ne suis pas sûr de ce que vous voulez dire, mais vous voudrez peut-être faire votre propre classe d'argent. À peine comme ça fait beaucoup de travail, puis il va t'arquer exactement comme vous le souhaitez.
  3. Il est beaucoup plus probable de fonctionner correctement en Java que C ++, mais si vous avez une interface graphique vraiment compliquée, le truc d'interface graphique Java est plus facile à utiliser que la plupart des applications C ++ pour certaines choses, mais plus difficiles pour les autres.
  4. pas vraiment.

1 commentaires

Netbeans n'a rien à voir avec Javabeans. C'est l'un des meilleurs Ides Java disponibles.



2
votes

Pas de concurrence? C'est seulement sur une base de données locale? Je trouve que cela limite étonnamment pour un nouveau projet logiciel. Je suis surpris que vous ne pensez pas l'interface graphique de navigateur Ajax avec le service de service Web.

Edit: La vitesse n'est pas un problème et vous pensez que vous pourriez avoir besoin de le porter sur le Web? Commencez sur le Web et épargnez-vous beaucoup de maux de tête.


3 commentaires

+1, une application Web n'est pas significativement différente en termes de complexité à une application Swing. Aucun point fait les deux.


Ce que vous dites a définitivement un sens. J'ai commencé à penser à aller avec une solution PHP / JavaScript / MySQL, mais le World Web n'est qu'un pas plus loin de mes domaines de connaissances, notamment Ajax et le service de service Web. La sécurité n'est pas quelque chose que je connais et du point de vue du développement, il est plus facile pour moi de travailler sur une version de bureau maintenant (situation actuelle et heure). J'y penserai plus.


Les 2 dernières applications "Swing" que j'ai faites ont été conçues comme hybride: Client pivotant parlant à Soa / Server Backends. Rend beaucoup plus facile à porter sur le Web. Plage définitivement cela dans votre architecture, même si vous n'écrivez pas à un "Web".



1
votes

Ceci peut-être intéressant pour vous

Ajaxswing

Bien que j'aimerais que les autres indiquent le développent de la terre en tant qu'application Web.


0 commentaires

2
votes

Je suggérerais Groovy plutôt que Java. C'est une sorte de Java ++, en ce que presque tout à Java est également à Groovy, mais Groovy procure un certain nombre d'avantages en plus de cela. La langue groovy fournit un certain nombre de méthodes d'assistance. Fait des maths correctement par défaut (pas de double problèmes mathématiques).

Autant que Web VS Desktop, vous pouvez accompagner des greils pour web et Griffon pour le bureau. Encore une fois, groovy basé.

Pour IDE, si vous choisissez Groovy, alors Intellij (bien que de faire du web, c'est cher) ou Springsource Tool Suite, qui est un dérivé Eclipse. Essentiellement éclipse avec un certain nombre de plugins, y compris groovy.


3 commentaires

La question semble se concentrer sur le développement de l'interface graphique. Groovy a-t-il des avantages sur l'interface graphique Java?


Non, c'est la même chose que Groovy peut utiliser toutes les mêmes bibliothèques. Le cadre de Griffon a l'air intéressant, car je pense que c'est une enveloppe autour du SWT, afin que ce soit un avantage. Je comprends juste si vous allez apprendre une nouvelle langue, pourquoi ne pas apprendre un plus puissant, et plus productif ...


Griffon est principalement une enveloppe autour de la balançoire, car elle prend en charge cette boîte à outils par défaut. Toutefois, si vous prenez également en charge SWT et JAVAFX si vous installez les plugins appropriés.



0
votes

Je recommanderais certainement de partir avec C ++ et Qt. Surtout si vous utilisez soit QT Creator ou Qt Designer pour effectuer la mise en page de l'interface utilisateur.

Si vous avez besoin ou si vous voulez vraiment utiliser Java (ou une langue JVM), j'utiliserais Qt Jambi. Quoi qu'il en soit, Qt est (IMHO) une plate-forme lointaine supérieure quel que soit la langue utilisée. Si vous n'avez rien fait de swing ou de développement SWT auparavant, je vous donnerais environ deux heures avant de vous sentir comme manger une balle.


0 commentaires

7
votes

Il n'y a évidemment pas une solution, mais il y a des proches et des services aux solutions, et il y a même une troisième solution: Java avec Qt.

Tout d'abord, mon expérience avec C ++ et QT est déjà âgée de quelques années, ce qui pourrait ne pas être aussi précis, et mon intérêt pour le développement de l'interface graphique Java s'est terminé il y a un ou deux ans lorsque j'ai vu les outils de développement. Je travaille habituellement à Java, mais pas avec balançoire.

Cela dit, la principale différence entre Java et C ++ semble être le déploiement. Java dépend toujours de l'environnement Java installé et C ++ est un peu plus autonome. Je donnerais une légère préférence à C ++ à cet égard si vous pouvez gérer le déploiement sur deux plates-formes.

Quant au développement de l'interface graphique, les outils QT étaient très bons et ne sont que mieux obtenus. Le cadre correspond également au processus d'interface graphique de près et est un ajustement naturel pour ce type de travail. Swing semble être un peu plus bas niveau et nécessitait une bonne quantité de code de la chaudron. Et je ne connais pas de très bons outils de développement moi-même même si j'ai entendu de bonnes choses de Manjusse.

Si vous pensez que Java est la voie à suivre pour une logique de déploiement ou de back-end, mais les outils d'interface graphique pour QT sont trop beaux pour ignorer, consultez la question Stackoverflow sur Java Swing ou Java Qt . Ça vaut la peine de lire.

Dans votre cas particulier, j'irais avec C ++ / QT, car vous avez de l'expérience avec C ++, et ce n'est pas tout ce qui est trivial de construire correctement une application Java Swing.


0 commentaires

1
votes

Eh bien, si vous connaissez C ++ Eh bien, alors c'est la raison numéro un pour y aller. QT est une très belle boîte à outils et vous aurez beaucoup plus productif avec cela que vous le ferez avec Java (comme vous le savez C ++). De plus, les chances de vous faire une meilleure application sont plus importantes en raison de cette expérience.

Donc, à moins que vous ne souhaitiez d'obtenir de l'expérience avec Java (et que de nos jours, ce n'était pas si important que cela soit aussi important que possible), collez-vous avec C ++ / QT et construisez certaines compétences inter-plateforme.

Personnellement, si j'allais chercher une nouvelle application à partir de zéro, et je voulais apprendre quelque chose de nouveau, ce serait une webApp avec de nouveaux goodies HTML5 / JS. Les fonctionnalités Web fantaisistes sont plus susceptibles d'être l'avenir des applications sur des clients d'un bureau épais (et des différentes plates-formes mobiles).


0 commentaires

2
votes

Je développe un outil d'interface graphique en Java en utilisant Netbeans et n'avait aucun problème jusqu'à présent. Ne dépendez pas de NetBeans GUI Editor Totalement, je ne l'utilise que pour la conception de mes boîtes de dialogue et des panneaux. J'ai vécu que si vous allez la voie MVC, il devient beaucoup plus facile d'utiliser l'éditeur d'interface graphique NetBeans. Vous pouvez ensuite totalement quitter la partie de conception aux Netbeans. Regardez dans la nouvelle Swingset3 Demo et décidez si les commandes de swing Java seront suffisantes pour vous ou non ( en termes d'apparence et de contrôles d'interface graphique disponibles). En outre, consultez composants Sweangx Certains d'entre eux sont vraiment géniaux et beaux tels que Shadowborder, TitlePanel, etc. I vous suggérera certainement que vous utilisez jxttable pour vos tables au lieu de jtalis. Compte tenu de la popularité de Java, je ne pense pas que la question de BigDecimal n'a pas été déjà abordée. En ce qui concerne la DB, Java est livré avec sa propre fonctionnalité complète Javadb , qui est vraiment de petite taille - juste 2,5 Mo. Cela viendra utile si vous ne voulez pas installer des dbses de poids lourds tels que MySQL. Cela constituera également un autre niveau d'abstraction IMHO - vos clients ne verront à peine aucune DB externe utilisée. NE JAMAIS ÊTRE VÉRÉMENT QU'être PORTABLE signifie que votre logiciel Java fonctionnera automatiquement dans différentes plates-formes. Il aura certainement besoin d'autres efforts, mais si vous travaillez sur votre conception initiale et construisez votre logiciel en gardant les différentes plates-formes (non seulement du système d'exploitation, mais de bureau / Web, etc.) à l'arrière de votre tête, il sera facile de le modifier un peu peu pour le rendre totalement portable. Go MVC Way, ça ne va pas mal. Mes 2 cents.


0 commentaires

0
votes

Pour résoudre la question 2, Java peut être un peu douloureux dans le traitement des numéros de points flottants, mais il s'est bien compris comme des versions 1.5 et 1.6. Si vous descendez dans le chemin Java, assurez-vous de vous la version la plus récente disponible.

Les problèmes concernés sont expliqués assez bien dans cet article: http: //www.ibm.com/developerworks/java/library/j-Math2.html .


0 commentaires

0
votes

Comme certains autres ont signalé une webApp pourrait fonctionner bien. Je pense que RubyonRails est très productif et vous pouvez l'exécuter sur Jruby sur les deux plates-formes ou avec n'importe quel rubis natif. Vous devriez examiner la sécurité mais cela ne devrait pas être un gros problème.

Si vous ne connaissez pas Java, vous pouvez également consulter Mono. Vous pouvez créer des applications Windowsforms avec et exécuter sur Mac et Windows, ou si vous allez suivre la route et utilisez ASP.NET sur Mono. Je pense toujours que RubyonRails vous donnera une durée de développement plus courte que ASP.NET, mais c'est une option.


0 commentaires