[Java] Projet en Java pour une entreprise

Je dois développer pour le compte d’un magasin de ski, un programme qui doit s’occuper de la gestion de la location des skis, chaussures, …

J’ai décider de faire un programme Java qui sera installé sur 3 postes et qui se connectera à une Base Access via JDBC/ODBC sur des postes Windows XP.

Comme il ne s’agira pas d’une base de données gigantesque, Access fera l’affaire car il est simple a mettre en place (une des priorités de mon logiciel).

Ma première question concerne la manière dont mon programme doit gérer les informations.
Jusqu’à aujourd’hui, j’ai toujours codé les requêtes à exécuter directement en SQL. Mais voila, dans un autre thread, on m’a dit que ce n’était pas la meilleure façon de programmer en m’envoyant sur le site de www.hibernate.org. A vrai dire, je n’ai pas vraiment compris la manière dont je doit intégrer cette bibliothèque dans un projet. Quelqu’un pourrait-il m’expliquer les bases ? Je recherche à développer le plus proprement possible.

Ma deuxième question concerne les licenses. Je suis suceptible d’utiliser des bibliothèques sous license LGPL (comme hibernate) ou sous license BSD. Je crois savoir que la BSD est très permissive et me permet de distribuer mon logiciel sous la license que je souhaite mais qu’en ait-il pour le LGPL ? Puis-je faire un programme propriétaire en utilisant des bibliothèques LGPL (et BSD) même si je pense plutôt faire un programme Open Source. Et dans ce cas quelle license me conseiller-vous entre la GPL, BSD ou CPL ? Quels sont les avantages et inconvéniant pour chaque license dans un projet de ce type ?

Sais pas pourquoi je me sens visé :-p

En fait, ça fait partie d’un éternel débat sur la séparation des couches d’une application. Hibernate est un truc permettant au programmeur d’oublié comment on fait du SQL, et de mapper automatiquement les informations entre la DB et les classes Java.  Déjà qu’on avait droit à JDBC qui permettait de faire des applications portables entre DB, sans devoir recompiler etc… vu que chaque driver dévait suivre un minimum de norme, maitenant on a droit à des librairies qui permette de ne même plus faire du SQL. Et éventuellement remplacer la persistance SQL par des fichiers XML, ou autres…

Maitenant il y a plusieurs « courant » qui se sont développé, entre le jdbc simple et les entreprises objects de J2EE on a aussi du JDO,

Maintenant, quand je vois ça dans le  tutorial :
Query query = session.createQuery(« select c from Cat as c where c.sex = :sex »);

Il y a de quoi se poser des questions sur l’utilité du truc :-p
En lecteur assidu du newsgroup java (enfin le français), les pros sont aussi partagés que moi.
Et en général, ils préconisent d’utiliser un marteau pour enfoncer un clou, et pas un rouleau compresseur. Comme tu le dis toi même, ton application ne sera pas très grosse, pas trop complexe. Donc, pour rester simple, faire du JDBC c’est pas saaaaale™  !!  Du moment que les classes d’accès sont bien séparées de la logique applicative, tu garantit la maintenabilité de l’application, sans en compliquer le développement.

C’est un peu comme J2EE (la partie entreprise object), une grosse usine à gaz, très bien foutue, mais qui demande un investissement temps/énergie/apprentissage assez conséquent. Et dans bien des cas, totalement inadaptée. Faut être un banque, une boite d’assurreur, une multi-nationale ou microsoft pour avoir besoin de ça :-p

Pour la question sur Access (quoi y a pas de question ? ), jetes donc un oeil sur FirebirdSql , digne héritier d’ Interbase (de borland), qui est aussi simple, puissant, pratique que acces (la partie « graphique » en moins),. Si j’en parles, c’est uniquement pour pouvoir utiliser un driver jdbc directe (sans passer par l’odbc quoi) (En .NET j’aurais évidemment parlé de MSDE, mais je pense pas que Microsoft fournisse un driver JDBC pour sql-server, j’ai pas vérifier non plus)

Enfin, pour les licences, j’en ai lu tout autant que sur « comment accéder à ma db ». Et c’est aussi peu clair :-p
Normalement, une application peut utiliser des librairies LGPL sans devoir être elle même en gpl ou lgpl (un peut comme la BSD) MAIS il faut quand même citer les trucs en LGPL, citer la licence LGPL (un lien vers un site web suffit), Et s’il y a modification de la librairie, mettre a disposition les sources des modifs (là la grande différence avec la BSD je pense).
Si tu distribue en BSD, n’importe qui pourrait récupérer, changer 1-2 trucs, et revendre ton application sans jamais citer l’origine du truc. En LGPL, il devrait y avoir quelque part un lien vers ton projet/site qui permettrait à l’utilisateur de se rendre compte qu’il existe une autre version, peut-être meilleur, gratuite, mieux suivie, etc…
Mais bon, ça c’est mon interprétation de ce que j’ai lu, et je suis pas avocat :wink:

Bonne continuation.

Ce message a été édité par mccricri le 09/06/2004

[quote](En .NET j’aurais évidemment parlé de MSDE, mais je pense pas que Microsoft fournisse un driver JDBC pour sql-server, j’ai pas vérifier non plus)[/quote]Juste pour confirmer qu’il existe bien un driver JDBC pour SQL Server/MSDE. J’ai donné la le lien vers le driver officiel de MS, mais il en existe bien d’autres développés par des entreprises tierces.

Sinon, je plussoie le texte de mccricri, qui résume bien le problème de la persistance des données et de l’utilisation des librairies d’abstraction en rapport avec l’investissement que cela représente.

Je vais me renseigner sur JDO, j’ai pas mal d’article dans Login intéressant, peut-être que ca serait une bonne solution aussi.

Pourrais tu me donner l’adresse de la newsgroup Java ? Ca m’intéresse à mort.

Pour la BDD, je connais firebird mais je ne l’ai jamais utilisé (j’ai déjà testé MySQL et PostgreSQL). Ce qui me plait dans Access c’est justement cette partie graphique pour les non connaisseurs en informatique qui n’est pas présente dans firebird.
Je vais quand même étudier la question et faire différents tests. Est-ce que la version Win32 de ce soft est vraiment performantes car MySQL et PostgreSQL sous Windows, c’est pas top du tout ?

[quote]Ma deuxième question concerne les licenses. Je suis suceptible d’utiliser des bibliothèques sous license LGPL (comme hibernate) ou sous license BSD. Je crois savoir que la BSD est très permissive et me permet de distribuer mon logiciel sous la license que je souhaite mais qu’en ait-il pour le LGPL ? Puis-je faire un programme propriétaire en utilisant des bibliothèques LGPL (et BSD) même si je pense plutôt faire un programme Open Source.[/quote] Oui, la LGPL n’impose rien sur la licence des programmes qui utilisent la librairies.

[quote] Et dans ce cas quelle license me conseiller-vous entre la GPL, BSD ou CPL ? Quels sont les avantages et inconvéniant pour chaque license dans un projet de ce type ?[/quote]Le principal avantage de la GPL c’est de t’assurer que si quelqu’un cree une version amelioree de ton programme qu’il distribue alors tu pourras recuperer les ameliorations qu’ils a fait. Si tu le distribues sous licence BSD alors des gens pourrons recuperer tes sources et en vendre une version amelioree sans te faire profiter de ce qu’ils ont ajoute.
Il faut savoir aussi que distribuer tes sources sous GPL ne t’interdit pas de les redistribuer plus tard sous une autre license a quelqu’un d’autre (par exemple pour pouvoir les integrer a un logiciel non GPL), tu restes proprietaire du code que tu as ecrit.

Je vais me renseigner sur JDO, j’ai pas mal d’article dans Login intéressant, peut-être que ca serait une bonne solution aussi.
Oui le p’tit gars qui écrit dedans est un bon :wink:

Pourrais tu me donner l’adresse de la newsgroup Java ? Ca m’intéresse à mort.

c’est simple : fr.comp.lang.java

Pour la BDD, je connais firebird mais je ne l’ai jamais utilisé (j’ai déjà testé MySQL et PostgreSQL). Ce qui me plait dans Access c’est justement cette partie graphique pour les non connaisseurs en informatique qui n’est pas présente dans firebird. Je vais quand même étudier la question et faire différents tests. Est-ce que la version Win32 de ce soft est vraiment performantes car MySQL et PostgreSQL sous Windows, c’est pas top du tout ?

Oui, les performances sont plutôt très bonnes, et surtout sous windows. A l’origine (du temps d’interbase donc), la DB était beaucoup utilisée par les programmeurs Delphi, et était par conséquent développé sur windows. Ce n’est qu’après qu’il y a eu portage vers linux (pour une fois que c’est dans ce sens :wink:
Il existe plusieurs outils qui permettent de faire du graphique aussi sous firebird (et d’autres db comme mysql, postgresql, etc…) ces outils sont en général concentré sur la partie administration (définition des tables, index, etc…) , et ne prosposent pas la partie "application d’access (formulaire de saisie complexe, report designer, etc…). Mais vu que ton appli est en java, je vois pas l’interet d’access dans ce cas-ci, sauf si tu veux permettre aux utilisateurs d’accéder à la DB (très dangereux ça…)

Edit : grrrrrrrr, saleté d’undefined :P)

Ce message a été édité par mccricri le 10/06/2004