Bonjour

Je suis en train de réaliser un projet perso qui consiste en la réalisation d'un chat.
Pour vous donner une idée du type d'application, voilà quelques éléments :

Au niveau des fonctionnalités :
  • Il n'y a qu'un channel.
  • Chaque utilisateur a un profil
  • Chaque utilisateur peut voir qui est connecté ou non
  • Chaque utilisateur peut voir le profil d'un autre
  • Chaque utilisateur peut :
    • Poster un message
    • Commenter un message
    • Poster un lien
    • Poster une pièce jointe
    • Télécharger une pièce jointe
  • Chaque utilisateur est notifié en temps réel :
    • D'un nouveau message
    • D'une connexion / déconnexion d'un utilisateur
    • D'un changement dans le profile d'un utilisateur
  • Chaque utilisateur peut configurer certains paramètres
  • Un utilitaire de mise à jour est disponible

Au niveau de l'architecture et des technologies :
  • L'application est de type client lourd / serveur
  • Je compte utiliser Qt pour plusieurs raisons :
    • Faire le rendu des messages en HTML / CSS grâce au moteur HTML de Qt car je veux un rendu assez spécifique
    • J'aime beaucoup le système signal/slot (je le trouve super élégant)
  • Le protocole de communication est en JSON ou en XML, je n'ai pas encore décidé
  • L'application tourne sous Windows, Linux et Mac


J'ai réalisé une ébauche d'architecture côté client.

Voilà, je me demande maintenant quel langage utiliser pour le développement.
J'hésite entre trois principalement : Python, C++ et Java. Voilà ce que je me dis sur chaque solution. Je tiens à préciser que ce sont des réflexions totalement subjectives, je ne veux pas lancer de trolls !

C++
  • J'aime le langage en lui même
  • Je pourrais développer en Qt5 (il offre des possibilités qui m'intéressent, notamment les nouveaux singaux/slots et le support du JSON) alors qu'il risque de mettre du temps à arriver pour python et java
  • La productivité est réduite par rapport aux deux autres (pour moi en tout cas)
  • Il y a moins de fonctionnalités embarquées de base
  • La compilation est toujours un peu laborieuse et il faut compiler pour chaque plateforme mais qmake facilite grandement les choses


Java
  • Je trouve le développement en java très rapide
  • Il y a de bons outils (comme maven pour la gestion de projets)
  • Le déploiement est très facile (jar)
  • Il y a énormément de fonctionnalités embarquées nativement
  • Je n'aime pas le système d'exceptions vérifiées
  • Je trouve qu'on se perd dans toutes les classes disponibles
  • J'ai parfois un peu de mal avec la logique des API natives
  • QtJambi me semble un peu à la traîne


Python
  • Le langage est très élégant et bien conçu au niveau des API
  • Il y a beaucoup de modules disponibles
  • J'aime la syntaxe courte qui permet de regrouper dans un fichier les divers éléments d'un module plutôt que de faire une classe par fichier
  • La productivité est plus élevées que pour les deux autres
  • Les performances sont moins bonne (mais est-ce important vu le type de logiciel que je veux réaliser ?)
  • Tout ceux que j'entends parler de python le trouve très bien pour réaliser un prototype mais n'envisagent même pas de l'utiliser pour la version finale d'une application. Je n'ai jamais trop bien compris pourquoi


J'ai aussi pensé au D mais je ne connais absolument pas le langage même si je n'en ai entendu que tu bien.

Donc voilà, j'aimerais avoir votre opinion sur le langage le plus adapté sur mon projet. N'hésitez pas à donner des arguments subjectifs.

Merci par avance