Cherche meilleure option (langage-IDE)

Bonjour à tous,

Je travaille actuellement dans une petite-moyenne entreprise (60 employés), et je suis co-résponsable d’un départament d’à peu-près 20 personnes.
Nous faisons une application pour Tour-opérateurs/receptifs, avec technologie Oracle / PL-SQL et Delphi. C’est une assez grosse application, qui a été commencée il y a 6/7 ans, et en production depuis 5/6 ans. Elle suit un modèle assez archaïque et basique (PL-SQL pour les Business process, je ne sais pas comment vous dites ça en français, et Delphi pour la présentation), pas fait pour le monstre qu’elle est devenue (plus de 970 paquets PL/SQL, 1000 tables et 850 écrans).

Actuellement, nous cherchons à changer notre modèle, nous allons sûrement passer à Java pour construire une API avec les business process, séparée de la base de données, et nous nous demandont quelle est la meilleur option pour la couche de présentation.

Delphi est très rapide pour certaines opérations, mais certains clients ont demandé d’avoir une interface Web (par exemple). Vu que je suis assez à la rue en question de nouvelles technologie (je pense à .NET par exemple), et que j’ai programmé presque toujours en Delphi, je me demandais si vous trouvez qu’un langage est spécialement fait pour:

  • Faire une interface rapidement.
  • Avec des composants qui permettent une personnalisation assez poussée de l’aspect visuel.
  • Pas rébarbative à programmer.

Et éventuellement, qui permette faire un design à la fois utilisable avec un browser et côté client comme un applicatif normal.

Hier j’ai downloadé et installé Visual Studio Express 2008 pour tester, je n’ai pas passé des heures dessus, mais j’ai déjà vu que les composants proposés étaient assez basique (normal, c’est une version Express), et d’autre part, j’ai vu des choses comme le XAML (dont j’ai vu quelques démos), dont je n’ai aucune idée si c’est utilisable pour un projet comme le notre. L’idée est de trouver un combo Langage / IDE / Composants tiers si nécessaire qui nous permettent de faire ça.

Le plan est de commencer à faire certaines intérfaces dans un nouveau langage, en utilisant une base « saine », et petit à petit migrer tous les modules.

Voilà, la question est peut-être très simple ou très compliquée, ou je n’ai peut-êre pas assez expliqué, n’hésitez pas à poster toutes vos recommendations / questions.

Merci d’avance :slight_smile:

Hum je preche pour ma chapelle mais je essaie si tu as le temps et si personne ne propose mieux python,
trois tonnes de modules pour faire tout et n’importe quoi,
et surtout le framework django.
De plus si tu as besoin de vitesse en python tu peux utiliser psyco.
Pour l’ide Eclipse avec le plugin pydev est juste genial.
Mais perso avec django tu peux construire une interface web potable en deux heures.

Bussiere

C’est une question rethorique hein ?

Java et .Net peuvent faire le boulôt.

Java est plus mature, dispose de nombreux frameworks gratuits et open-source reconnus et largement utilisés dans de grands groupes comme dans des PME. L’IDE la plus répandue (Eclipse) est gratuite. La quantité de docs/tutoriaux/exemples dispos sur le net est sans commune mesure avec ce qu’on peut trouver sur le .Net. Les compétences en Java sont beaucoup plus faciles à trouver sur le marché de l’emploi que les compétences en .Net.

Vu ta situation, je pense que le Java est la plateforme la plus adaptée pour la refonte de ton soft.

GWT.

et business process c’est pas ‘couche application’ ?

[quote=“Twin, post:4, topic: 48104”]Java est plus mature, dispose de nombreux frameworks gratuits et open-source reconnus et largement utilisés dans de grands groupes comme dans des PME. L’IDE la plus répandue (Eclipse) est gratuite. La quantité de docs/tutoriaux/exemples dispos sur le net est sans commune mesure avec ce qu’on peut trouver sur le .Net. Les compétences en Java sont beaucoup plus faciles à trouver sur le marché de l’emploi que les compétences en .Net.

Vu ta situation, je pense que le Java est la plateforme la plus adaptée pour la refonte de ton soft.[/quote]

  • Oui, alors la, je suis pas sur que ca soit un argument recevable.
  • Euh, t’y vas fort la. - Vraiment tres fort.
  • Encore une fois, des dev java, tu vas en trouver, de qualité ? hum, un bon dev, qu’il soit sur java ou .net, ca reste un bon dev, pareil pour un mauvais dev.

Sinon, +1, tu as commencé avec java, ca semble tres adapté, pourquoi ne pas continuer. Je vois pas le souci a priori.

Si les devs doivent bosser sur une plateforme qu’ils ne maîtrisent pas et apprendre sur le tas (ce qui est souvent le cas en entreprise), la quantité et la qualité de la littérature disponible sur le sujet est très importante.

Pour ce qui est du nombre de devs en activité, si tu as plus de devs dispos dans une techno, tu en trouve plus facilement et moins cher (à compétence égale). C’est mathématique.

Tout ceci est discutable et j’ai conscience que ça fait un peu vérité péremptoire assenée à la masse cloutée, mais je n’ai pas le temps nécessaire pour développer sur des pages. Mais ce sont les conclusions auxquelles j’arrive après avoir bossé sur ces deux technos. (et pas deux semaines hein)

Tu peux t’orienter vers du lourd avec Java/.NET ou tu peux t’orienter vers du plus léger : Perl/Python/Php/Rail plus rapide à mettre en place mais attention quand ton application grossie. Les 2 solutions ont leurs avantages et leurs désavantage, idem pour les langages.

Au vu des informations que tu me donnes, il te faut plutôt du lourd soit Java ou .NET avec une préférence personnelle pour Java.

D’abord, merci à tous pour vos réponses.

Après, pour Java, c’est sûrement qu’on a des gros préjugés qui datent d’il y a 5 ans comme quoi « pour faire une couche visuelle avec Java, ça prend des plombes et c’est pas intuitif pour un sou, et en plus c’est lourd ». Alors je suis convaincu que ça a évolué et que maintenant on a des outils pour faire des jolies interfaces légères facilement. Dans ce cas, vers quoi il faut se tourner? Swing?

Nous utilisons actuellement Java en interne que pour des bussiness process, et nous n’avons jamais fait d’interfaces avec. Si je posais la question de .NET, c’est parce que d’après ce que j’ai pu voir, l’interface de Visual Studio était assez proche de Delphi pour que nos programmeurs puissent faire le saut plus facilement.

Enfin, je ne sais pas si vous avez travaillé avec Delphi, mais si je dis qu’un gosse de 8 ans pourrait faire une interface avec, je suis pas loin de la realité. C’est vraiment très simple, et je ne voudrais pas switcher vers quelque chose de plus compliqué, vu les programmeurs dont on dispose pour la partie intérface (comprenne qui pourra :)).

Pour faire une IHM en java relativement simplement il y a (à ma connaissance) 2 options :

  • un plugin pour eclipse (visual editor je crois)
  • netbeans

Personnellement (pour les IHM j’entends) je m’en suis toujours mieux sorti avec netbeans qu’avec visual editor mais apès c’est une question de goût hein… Et puis si t’es pas tout seul dessus tant qu’à faire demande aussi l’avis de tes comparses :slight_smile:

Tu fais une interface en web, tu t’emmerdes pas et tout le monde sait coder du web.

Bussiere

Pour avoir un peu pratiqué java, C# et delphi, les ihm, c’est clairement le point faible de java, et le gros avantage de C# et delphi sur Java.
Encore une fois, j’ai pratiqué les ihm qu’en amateur (les projets javas sur lesquel j’ai bossé en pro n’avait pas d’ihm graphique), mais je trouve que c’est vraiment la galere, et que ce soit netbean ou les plugins visualX, c’est toujours de la bidouille …
Et je trouve que les IHM client (je parle pas des appli web) ont toujours un coté cheap, mais ca c’est plus du ressenti.

C#, j’ai essayé de me faire des petites appli perso, avec des ihm, et on dirait vraiment du delphi : tu poses tes block sur ton panel, et ca te genere du code clair. Et surtout, si tu tapes dans le code, ca modifie l’ihm dans l’autre sens. Bref, c’est super intuitif, et super simple. Ca ressemble vraiment beaucoup a delphi de ce coté la, mais avec un vrai gros langage derriere.

Apres si tu pars sur des technos web, Java a peut etre plus d’argument.

Donc je dirais :
. appli client à deployer sur des postes : C# parce qu’ihm super simple a pondre.
. appli orienté web : java

Mais je pense pas que tu puisses faire une erreur en choissant un de ces deux langages.

Vrai. A condition de se contenter des contrôles (éléments graphiques) existant sans vouloir les customizer de manière trop poussée. Sinon c’est la mort (c’est du vécu, oui oui, la mort vécue). Je parle pour du Winforms, WPF je connais mal.

Le ticket d’entrée est plus élevé pour du Swing que pour du Winforms. Mais une fois maîtrisé, Swing offre une architecture beaucoup plus ouverte et modulable que du Winforms. Pour caricaturer: Swing c’est dur au début, plus facile et plus puissant à la fin. Winforms c’est facile au début, frustrant et difficile à la fin. Après pour des applis relativement standard, rien ne dit que tu ais besoin d’aller au delà des composant stadard des Winforms. Auquel cas l’IHM sera plus vite faite en Winforms qu’en Swing en effet.

Reste que pour un projet qui mélange du web et du client lourd, je partirai quand même sur du Java pour toutes les raisons que j’ai exposé dans mon premier post.

[quote=“Bussiere, post:11, topic: 48104”]Tu fais une interface en web, tu t’emmerdes pas et tout le monde sait coder du web.

Bussiere[/quote]Non (j’en suis la preuve vivante). C’est d’ailleurs pour ça que developpeur web est un metier a part entiere.

Ensuite, le plus souvent, les problématiques ne sont pas les memes entre du dev web et du dev client lourd (appli MFC, swing ou winform).

Enfin tu ne peux pas te permettre de jeter 7 ans de dev d’ecrans, testés et utilisés depuis 1 a 6 ans comme ça. Budget, gestion de projet, tout ça tout ça.

Twin: Ta sagesse illumine ma soirée, je n’aurais pu dire mieux.

je t’offre donc mon plussoiement force 150000 et engages ZeKiller à suivre tes conseils.

J’édite ce message en ajoutant quelques précisions si le dev du client s’oriente vers du java:

Si un client léger est envisagé, je conseille de jeter un œil sérieux sur GWT, ca se code comme du swing (cablage d’écouteurs sur des évènements) et ca fonctionne plutôt bien. Par contre, coté communication client serveur, c’est RPC maison de google ou JSON, mais ya moyen de gagner en souplesse avec le serveur de service en ajoutant une couche de facade… genre :
SERVER <-[WS,JAXP,RPC,…]-> SERVER FACADE <-[JSON,GoogleRPC basé sur servlets]-> GWT

Sinon, en client lourd, swing évidemment est la premiere idée qui vient, mais je conseille de regarder SWT qui apporte du confort a l’utilisateur et évite de le déboussoler avec des widget étranges et des skins a la c** et offre un gain de réactivité.

Et je conseille de plus d’essayer EclipseRCP !!! Eclipse n’est PAS un simple editeur de texte ou un IDE conventionnel, c’est avant tout une plateforme qui gère nativement des workspaces, des environnements et des vues (ce qui comme par hasard est pile poil ce qui convient pour la plupart des clients lourds).
L’avantage est que l’on code alors ses fonctionnalités comme des plugins ou des features qui se greffent sur eclipse. On peut alors évidemment déployer son application comme un executable bundlé, mais on peut aussi se servir de la flexibilité de la gestion des plugins d’eclipse: mettre en place un site pour les updates, laisse l’utilisateur choisir d’utiliser eclipse et d’ajouter votre plugin plutot qu’avoir un bundle, …
Passée la phase de mise en place du plug, on code le tout comme on code du SWT, mais on s’intègre sur des classes du RichClientPlatform d’eclipse, on étends des vues, on les regroupe en environnements, …
On peut aussi aggréger des plugs 3rdparty histoire de pas réinventer la roue.
Bref, à envisager et peser.

Voila qui conclue “my 5 cents”

[quote=“Twin, post:4, topic: 48104”]Java et .Net peuvent faire le boulôt.

Java est plus mature, dispose de nombreux frameworks gratuits et open-source reconnus et largement utilisés dans de grands groupes comme dans des PME. L’IDE la plus répandue (Eclipse) est gratuite. La quantité de docs/tutoriaux/exemples dispos sur le net est sans commune mesure avec ce qu’on peut trouver sur le .Net. Les compétences en Java sont beaucoup plus faciles à trouver sur le marché de l’emploi que les compétences en .Net.

Vu ta situation, je pense que le Java est la plateforme la plus adaptée pour la refonte de ton soft.[/quote]
Marf ouai alors si on va par la, apres avoir bosse avec les deux en pro depuis 11 ans on peut aussi le faire a l’envers. J’ai rien de special contre Java mais quand on fait des comparaison a l’arrache sans meme parler d’opinion personelle je vais pas me gener…


Java et .Net peuvent faire le boulot.

.Net est plus mature car developpe apres sans les erreurs de Java et est pas compose de 500 composants et revisions qui sont conflictuelles, ou payants (et pas $20…) pour avoir des composant de qualite equivalente a ce qu’on trouve de base dans le framework en .Net 3.5 pour certains domaines. Il y a des tonnes de choses dans le framework de base avec une API constante et des paradigmes standard appliques a tous les concepts.

.Net a une tres nette superiorite sur les technos de presentation (Winforms/ASP.Net/Silverlight/WPF) ou de communication (WCF) qui sont maintenues et evoluent constament car supportes profesionellement par une societe qui y a un interet commercial. Le deploiement, la maintenance et les performances sont aussi en faveur de .Net (et je le prouve quand on veut ayant ramé pour faire et maintenir des projets avec 50k users en Java et passé des nuits a deployer dans le datacenter et ayant bossé sur des projets avec des millions de users en .Net deployes sur des farm de centaines de machines). L’IDE la plus repandue (Visual Studio) est reconnue comme le meilleurs IDE et a toujours ete pour moi bien bien plus productif que Eclipse. Les doc/tutoriaux/exemples dispo sur le .Net a rien a envier avec les tonnes de mauvais conseils et de tutoriaux depasses sur lesquels on tombe trop souvent en Java (pas que ca existe pas en .Net mais la doc MSDN et les milliers d’articles ecrit et approuve par MS promet un certain niveau de qualite et a rien de comparable avec quoi que ce soit qu’on peut trouver chez Sun de pres ou de loin). Je suis extremement dubitatif sur la soit disant plethore de dev Java, un bon codeur ca reste dur a trouver et quelqu’un qui connait bien son metier, quel que soit le language ca va etre chaud a trouver vu que la liste de competence pour faire un bon dev a plus a voir avec le domaine (backend/database/views) qu’avec la techno.


Donc bon… a faire dans l’emporte piece on peut en faire dans tous les sens. Je veux bien que chacun voit midi a sa porte mais faut prendre les choses avec des pincettes aussi parceque si on en reste a ce niveau la, ca vole pas bien haut…

My two cents :

  • Faire ton interface et ton backend avec deux technos différentes : mauvaise idée.
  • Tu peux utiliser .net coté backend aussi. Ca s’interface aussi très bien avec oracle.
  • Mis a part ma préférence pour .net, sache que si t’es devs sont habitués a bosser avec delphi, ils se retrouverons sans doute beaucoup mieux, d’une part sur le modele objet d’une maniere générale, mais surtout en terme d’UI sur du .net (Winforms que sur du java (SWING ou autre api UI java).
  • Le language le plus proche du pascal objet delphi est sans doute VB.NET, c’est largement envisageable, coté UI, mais pas vraiment coté backend.

Bref, si les devs on pas de compétences prononcées vers java, je choisierais plutot .net.

Ah oui mais non, on en est bien conscients … euh, je vais essayer d’expliquer.

On a un gros .exe qui fait ouatmille trucs du genre:

  • Gestion d’hôtels
  • Gestion de services aériens
  • Gestion de circuits
  • Gestion de transports
  • Gestion de croisières
  • Gestion d’excursions
  • Gestion de rent-a-car
  • Gestion de musées
  • Gestion de blabla.

Donc contrats, produits, réserves, opération, facturation, etc. Pas tout à fait trivial (enfin, ça reste de la gestion, mais bon).

C’est bien joli tout ça, seulement ça a commencé par être petit-moyen projet, et ça a fini par être gros-gigantesque, tentaculaire et dur à modifier (oui, c’est ce qui arrive quand 20 personnes développent sans trop de coordination et sans suivre un standard bien clair, en plus du recyclage de personnel, et des deadlines HA-HA).

Là, on a un gros client qui veut qu’on développe un nouveau module pour la gestion de quelques-uns de ces services. On a le fric, on a moyen le temps. Du coup, on se tâte, on se dit que c’est une bonne idée pour essayer de faire un petit module (qui continuera à fonctionner avec l’autre comme « base ») avec un nouveau langage, et ne pas continuer à développer sur une base « pourrie » pendant 5 ans de plus.

Mais tant qu’on y est, autant essayer d’établir les bases pour, petit à petit, moduler et passer toute l’application à ce nouveau format. Du coup, ça doit être quand même capable de faire tout ce que fait actuellement Delphi. La question est si .Net ou Java le fait mieux.

De toutes façons, on est pas suicidaires, on s’est pas dit du jour au lendemain « youpi, on va passer 7 ans de dév’ à la poubelle, on refait tout en 6 mois ».

Pour Twin, quels problèmes as-tu eu avec Winforms? Hier j’ai essayé de faire la partie graphique d’un de nos écrans les plus compliqués, et je me suis retrouvé avec certaines réstrictions, mais j’ai pensé que c’était parce que les composants de VS Express devaient être plus basiques que ceux du Professional (que j’espère essayer prochainement). N’y a-t’il pas des composants tiers plus puissants (du côté graphique / personnalisation) pour VS?

Chez EA, ca commence a limite devenir un probleme, la plethore de codeurs C#. En terme de CVs recus par les ressources humaines, ca explose le plafond, alors que les codeurs C++ sont en baisse. Les codeurs Java sont pratiquement inexistants, mais d’un autre cote, peut etre qu’ils n’envoient pas leurs CVs dans les boites de jeux parce qu’ils savent que Java n’y est pas utilise.
Enfin tout ca pour dire que MS qui vise les universite et les etudiants, ca paie :slight_smile:

Sinon, pour le sujet du debut, perso je suis biaisé vers .NET, que tu peux utiliser du cote presentation soit en client loud (WPF/WinForms) soit en client web (ASP.NET et consorts). Tu peux meme si tu veux faire un backend .NET qui expose des web services que tu consommes avec des clients en Python ou PHP. C’est ce que fait par exemple MindTouch, meme qu’en plus leurs serveurs tournent sous Linux/Mono.

hehe Zekiller, pas besoin de te justifier, je répondais juste a Bussiere, qui a le chic pour assener ses vérités de façon assez gonflée. Cela dit, on a une vision un peu plus claire du projet en cours là, je pense que ça ouvre de nouvelles perspectives de discussions.

Et pour ce qui est des composants Winforms, il existe un ecosysteme assez impressionnant de composants tiers, tants gratos / opensource / choubidouwa que payants (check Infragistics ou google pour t’en convaincre)