Nil (./174) :
D'une part, les usages changent, et la création d'applications universelles (tous OS) est un réel besoin, parce que les gens veulent pouvoir utiliser la même application sur leur ordinateur fixe, portable ou leur téléphone mobile, mais de façon à ce que ladite application sache tirer parti des spécificités de chaque environnement.
Qt sait faire ça très bien, tu peux coder une application et elle marchera partout. Même QtWidgets est supporté sur Android et iOS. Sinon, en QML, tu as par exemple Kirigami, développé par le projet KDE pour automatiquement adapter ton application aux conventions PC et mobile.
- Java propose une UI très riche, mais visuellement déprimante pour l'utilisateur (très 80's). Ca peut éventuellement être supportable dans un environnement pro, mais c'est impensable dans un environnement domestique où les écrans sont partout. Et même aujourd'hui, le rapport à l'outil informatique dans le milieu du travail a changé : les utilisateurs veulent un confort d'utilisation et un look'n feel qui soit au moins au niveau de ce à quoi ils ont accès chez eux.
Utiliser le look&feel natif en Swing est une seule ligne de code. (Je ne comprends pas pourquoi ce n'est pas le choix par défaut.)
Sinon, il y a aussi SWT et Qt Jambi (mais ce dernier n'est plus très actif, il y a un portage Qt 5 fait par une seule personne et qui n'a toujours pas été intégré à la version "officielle"). Mais le Java n'est pas non plus le centre du monde.
Du coup, la souplesse d'HTML+CSS (qui vient en fait de son absence de socle de base et où, du coup, on doit tout faire) apporte un plus. En fait, c'est un défaut qui a amené une qualité
En HTML+CSS, tu dois coder tout ton look&feel à la main et ça ne s'intègrera à rien. Tu peux avoir ça aussi avec Swing, il suffit de coder ton propre look&feel Swing. Ou même avec Qt si tu veux absolument casser l'intégration native de Qt, Qt permet même d'utiliser du CSS pour modifier le style.
- HTML/CSS/JS permet au plus débutant des débutants de faire une page simple et d'avoir l'impression de pouvoir communiquer au monde entier. Java ne permet pas ça. Du coup, tu vas avoir un taux de pénétration des outils qui sera différente, des compétences qui vont se développer autrement, etc.
Il est trivial d'écrire un Hello World en HTML statique, mais ça ne t'apportera aucune connaissance de tout le bordel de technologies JavaScript.
Après, pour devoir me plonger dans le dev frontend un peu plus que d'abitude, je trouve ça assez chiant, mais c'est surtout parce que je ne maîtrise pas la moitié de la souplesse (puissance ? faiblesse ?) offerts par le JS. Je viens de langages beaucoup plus "traditionnels", donc je suis vite dépassé. À tel point que, parfois, j'ai juste envie de mettre à jour mes div avec des innerHTML reçus du serveur plutôt que de travailler avec de l'XML à traiter
(mais je me retiens ˆˆ)
Pourquoi te retenir? C'est la solution la plus compatible et qui consomme le moins de ressources côté client.