Forum Programmation.autre Quel langage choisir ?

Posté par  .
Étiquettes : aucune
3
4
avr.
2010
Bonjour,

J'ai développé pour une PME un logiciel pour gérer leur activité (c'est un parc d'attraction d'intérieur). Il y a 4 postes, relié à une base de données, faisant chacun fonctionner une imprimante à ticket de caisse (type EPSON) et une imprimante à code barre (ça sort des autocollant avec un code barre dessus). Ces deux types d'imprimantes fonctionnent sur des ports séries. Sur certains postes il y a parfois en plus une imprimante "normale" en USB).

La BDD : HSQLDB
Techno : Java (moitié swing, moitié QTJambi, j'avais commencé à réécrire le swing en jambi).
Le déploiement en jws (ça c'est génial pour la maintenance à distance, il suffit de changer le "binaire" sur un serveur http et de demander à ce qu'ils relancent le raccourci sur le bureau).

Aujourd'hui je dois réécrire cette application avec un nouveau cahier des charges:

Base de données sur Linux parce que mon client croit en sa fiabilité pour les données.
Postes clients en écrans tactiles sous Windows (en effet, tout au long de ces années nous avons eu pas mal de problème avec les pilotes des imprimantes "normales", un peu galère à installer sous Linux parce que mon client ne veut pas choisir son matériel en fonction de Linux).

L'aide que je recherche est quelle techno choisir pour la réécriture de cette applis :

1er contrainte : Les ports séries, rare maintenant sur les pc, en particulier sur les écrans tactiles, je vais être obligé de passer à l'usb pour les imprimantes à ticket de caisse et à code barre. Problème Java ne supporte pas l'USB sous Windows et très mal sous Linux (en tout cas je n'ai pas trouvé assez d'informations rassurantes sur le sujet, au contraire). Donc à priori exit Java.

2ème contrainte : Mon client tient à ce que les postes clients soient sous Windows (avant ils étaient sous Linux).

Pour la bdd j'ai l'embarras du choix (à priori mySQL, hsqldb c'est bien mais les bases commencent à grossir et je suis plus rassuré par mySQL).

Pour le langage j'ai pensé à C++ & QT mais je ne connais pas le C++ et quand on a surtout fait du Java on flippe un peu avec la gestion de la mémoire (mais bon je peux m'y mettre). Mais je vais regretter le système de déploiement à la jws.

Pourquoi pas python mais je ne suis pas un fana du dev tout à la mano. Quel toolkit graphique utiliser ? Existe t-il un environnement de dev pour les écrans (type QTDesigner) ?

Voilà n'hésitez pas à me faire part de vos expériences persos, de vos avis etc...

Ah oui et un dernier truc, la 1ère fois j'avais développé ce logiciel à l'oeil, pour rendre service (et ça m'a pris bien plus de temps que ce que j'avais prévu au départ). Là mon client compte me demander une facture. C'est très bien, ça me fera des sous, mais moi actuellement je suis salarié et je n'ai aucune envie de démissionner pour créer une boite d'édition. Quelqu'un connait-il un statut juridique "ponctuel" qui me permettra d'émettre une facture (et donc de déclarer glups...) sans me prendre la tête avec une création d'entreprise ?

Merci pour vos aides.
  • # Quelques réponses...

    Posté par  . Évalué à 3.

    Python me semble adapté, il répond à tes attentes en terme de gestion de la mémoire et la programmation d'application métier en C++ me parait pas être une très bonne idée.

    Pour les périphériques USB, je vois pas trop soit le problème, soit la solution... Dans tout les cas Python permet l'utilisation de bibliothèques écrites en C avec le module ctypes.
    [http://docs.python.org/library/ctypes.html]

    Pour GTK, tu peux faire l'interface avec Glade en utilisant Gtk.Builder.
    [http://www.pygtk.org/docs/pygtk/class-gtkbuilder.html]

    Pour QT, tu peux utiliser QTDesigner.
    [http://www.riverbankcomputing.com/static/Docs/PyQt4/pyqt4ref(...)]

    Si tu as besoin d'un ORM: SQLAlchemy. [http://www.sqlalchemy.org/]

    Pour la base de donnée, j'aurai tendance à conseiller Postgresql face à MySQL suite au rachat de Sun par Oracle, mais avec l'utilisation d'un ORM ça ne devrait pas poser de gros problèmes de passer de l'un à l'autre.

    Pour la compatibilité Windows et Linux, je pense qu'il suffit de vérifier que toutes les bibliothèques que tu utilise soit compatible avec les deux systèmes d'exploitations.
    • [^] # Re: Quelques réponses...

      Posté par  . Évalué à 1.

      Merci pour tes réponses.
      Je vais me pencher sur Python (qui fonctionne sur Windows et Linux). Je connais bien Qtdesigner et ça m'arrange d'utiliser des fichiers .ui.
      Je suis plus circonspect sur l'utilisation des ports USB, je vais creuser un peu.

      Est-ce qu'un mécanisme équivalent à JWS existe en python ?
      • [^] # Re: Quelques réponses...

        Posté par  . Évalué à 3.

        Pour le problème de l'USB, tu peux regarder du coté de PyUsb... Même si pour moi ce n'est pas la solution. Les lecteurs de code bar que j'ai vu fonctionnaient en émulant un clavier. Ce n'est plus le cas aujourd'hui ?

        [http://sourceforge.net/apps/mediawiki/pyusb/index.php?title=(...)]

        Pour le problème du déploiement, je connais pas d'équivalent en Python. Il en existe peut être un. Mais si tu veux éviter tout déploiement, pense client léger, application web...
        • [^] # Re: Quelques réponses...

          Posté par  . Évalué à 1.

          Je n'ai pas de problème avec les lecteurs de code barre, effectivement ils se connectent en T sur un port PS2 et fonctionne comme des claviers.
          Non mon problème porte sur des imprimantes de code barre (ce sont de petites imprimantes professionnelles qui sorte des étiquettes, sur laquelle se trouve un code barre).
          Aujourd'hui je les fait marcher en Java sur un port série.
          J'ai commencé à regarder PyUsb, mais j'ai l'impression que si le série et parallèle sont très bien maîtrisé dans la plupart des API de la plupart des langages, ce n'est pas le cas de l'USB (sans doute à cause de la complexité du protocole).
          • [^] # Re: Quelques réponses...

            Posté par  . Évalué à 3.

            Le standard OPOS et le nouveau Unified POS sont là pour t'aider :-)
            Tu auras l'avantage d'être indépendant du matériel. Google regorge d'informations à ce propos.

            Si tu sais comment dialoguer avec un TPE USB (Terminal de Paiement Electronique), je te file du code qui utilise OPS. C'est du VB, codé avec deux pieds gauche en interne, mais pour une mise en route c'est largement suffisant.

            Et si n'importe qui d'autre sait comment dialoguer avec ces fichus TPE, il y a des milliards de brouzoufs à gagner. Un message privé et vous voilà millionnaire.
            • [^] # Re: Quelques réponses...

              Posté par  . Évalué à 1.

              Il y a une API OPOS en java (de IBM ou EPSON je sais plus) mais je n'ai jamais réussi à la faire fonctionner, c'était aussi simple de communiquer directement avec le tpe.
              Mais je prends quand même ton bout de code en VB !! si tu peux me l'envoyer ce serait super sympa.
              • [^] # Re: Quelques réponses...

                Posté par  . Évalué à 2.

                Mais je prends quand même ton bout de code en VB
                Je n'ai pas le code tout prêt. Il me faut demander aux programmeurs de l'extraire (ils ne vont pas fournir le logiciel complet). Ils le feront volontiers si je leur dis que ça va résoudre leur problème de TPE. Sinon ils vont me voir venir avec mes gros sabots, et je vais m'en retourner bredouille :-)
                • [^] # Re: Quelques réponses...

                  Posté par  . Évalué à 2.

                  Bon ne te met pas dans la gêne pour moi ;)
                  De toute façon je commence à lorgner du côté des convertisseurs USB -> Série, ça pourrait être la solution à mon problème et du coup je pourrai revenir à Java.
                  Merci pour ta proposition quand même
                  • [^] # Re: Quelques réponses...

                    Posté par  . Évalué à 3.

                    Si tu as 4 postes, les convertisseurs c'est parfait. Tu économises un temps monstrueux.
                    De notre côté, nous avons 60 et quelques magasins donc bon, j'évite les bricolages :-)
      • [^] # Re: Quelques réponses...

        Posté par  (site web personnel) . Évalué à 2.

        Est-ce qu'un mécanisme équivalent à JWS existe en python ?
        Ça va pas répondre à la question mais ...
        Une fois ton appli client développé en python, tu peux même créer un exe pour ton appli qui inclu toutes les dépendances. donc même pas besoin d'installer python, pyqt etc ... avec py2exe.
        Tu peux même créer un installeur avec Innosetup qui installe ton exe et ces fichiers. Ça peut aider au déploiement.
        J'ai testé que sur un petit projet.
      • [^] # Re: Quelques réponses...

        Posté par  (site web personnel) . Évalué à 1.

        Effectivement, le C++ me semble être un très mauvais choix. En effet, tu ne sembles pas avoir de problèmes de performances, donc autant utiliser un langage qui en automatise le plus possible, tel que python. Tu gagneras beaucoup de temps.
  • # Création d'entreprise

    Posté par  (site web personnel) . Évalué à 6.

    Quelqu'un connait-il un statut juridique "ponctuel" qui me permettra d'émettre une facture (et donc de déclarer glups...) sans me prendre la tête avec une création d'entreprise ?

    Je crois que le statut d'auto-entrepreneur est fait pour ça. Au lieu de faire ce travail au black, tu as peu de paperasse à faire et tu peux (généralement) cumuler avec ton vrai emploi.
    • [^] # Re: Création d'entreprise

      Posté par  . Évalué à 3.

      Je suis sur leur site, effectivement ça a l'air assez simple.
      Je continue à chercher si le paiement des charges est suffisant ou s'il faut en plus que je déclare sur mon foyer fiscal le revenu de la "vente".
      • [^] # Re: Création d'entreprise

        Posté par  . Évalué à 4.

        pour l'auto-entreprise, tu choisis la maniete dont tes impots sont calculés.

        1°) prelevement liberatoire : tu paies un % en plus de tes charges, directement sur ton chiffre d'affaire (tous les mois ou tous les trimestres)
        il faudra faire apparaitre ce revenu sur ta feuille d'impot, mais il ne sera pas pris en compte pour calculer ton impot sur le revenu

        2°) declaration sur les revenus : tu ne le paies pas tout de suite, mais tu devras le declarer sur ta declaration de revenu, et ca viendra s'ajouter aux revenus de ton foyer fiscal

        perso j'ai choisis 1°)
        comme ca je paie chaque mois :
        - mes charges X%
        - mes impots Y%

        je sais donc combien je dois facturer au client
  • # convertisseur USB/SERIE

    Posté par  . Évalué à 5.

    perso j'utilise quelques appareils en port Serie,
    et je dois dire que les convertisseurs à base de PL2303 marchent tres bien.

    tu branches sur le port USB
    - linux reconnait directement et te creer un port qui va bien
    - windows necessite un driver, mais un fois installé, c'est comme si tu avais un port serie dans la machine
    • [^] # Re: convertisseur USB/SERIE

      Posté par  . Évalué à 1.

      Humm ça c'est très intéressant par contre.
      PL2303 je vais regarder ça de près.
      Merci.
      • [^] # Re: convertisseur USB/SERIE

        Posté par  . Évalué à 2.

        attention, PL2303 c'est la puce ou le driver

        mais y a beaucoup de fabricant qui sont PL2303 inside ;)
  • # Propositions pour ne pas tout réécrire.

    Posté par  . Évalué à 3.

    Apparemment tu as une bonne base qui tourne, tu pourrais peut être t'en sortir en :

    - migrant la base de données : je te conseille postgresql plutôt que mysql dont le destin après le rachat de Sun par Oracle semble incertain.

    - contribuant à l'une des API USB Java pour ajouter le support Windows.

    Ainsi tu éviterais de réécrire ton application et tu rendrais service à la communauté.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.