Comment créer une application de bureau Java «moderne»?

Des questions similaires sont posées périodiquement, mais beaucoup de ces réponses sont obsolètes.

Je dois créer une application de bureau multi-plateforme en Java avec une interface graphique de qualité comparable aux applications de bureau contemporaines.

Swing est le choix par défaut, mais je n’ai pas encore rencontré une application Swing qui ne semblait pas, à tout le moins, assez désuète et maladroite (subjective, je sais, mais avec les interfaces graphiques, il est difficile d’éviter les jugements esthétiques).

Je remarque que le nouveau client Bitcoin utilise désormais QT avec les liaisons Java et possède une interface utilisateur attrayante, mais cela présente l’inconvénient qu’il ne s’agit plus de Java pur.

Une grande partie de ce que je trouve lorsque je recherche des bibliothèques liées à Swing a 5 ans ou plus, même si l’esthétique des applications de bureau a considérablement évolué depuis.

Si vous deviez créer une application de bureau Java à partir de zéro, que feriez-vous pour son interface graphique?

Regardez dans la modification de l’apparence de votre programme Java. Cela vous permet de personnaliser le “thème” global de votre programme. Voici des informations sur la modification du LAF.

Je peux également vous proposer un nouveau LaF à examiner – WebLaF . J’y travaille actuellement pour apporter de nombreuses fonctionnalités d’interface utilisateur et rendre le travail avec Swing beaucoup plus facile pour tout le monde en utilisant simplement les fonctionnalités de base de la bibliothèque WebLaF.

Quelques exemples montrant à quoi ressemblent certains composants WebLaF: Certains composants WebLaF

Certains des principaux objectives que je cible:

  1. L & F à la fois moderne et élégant, compatible avec tous les composants Swing
  2. Un ensemble complet de composants supplémentaires que vous ne trouverez pas dans Swing standard
  3. Un grand ensemble de classes utilitaires pour vous aider à écrire le code

La bibliothèque WebLaF suggère également quelques autres avantages et caractéristiques uniques:

  1. C’est un projet open source (sous licence GPLv3)
  2. Stylisation facile des composants à l’aide du système des peintres (en particulier avec les fichiers à 9 patchs)
  3. Personnalisation simple et rapide du style “Web” par défaut
  4. De nombreuses fonctionnalités pour accélérer et simplifier la création de l’interface d’application Swing

Vous pouvez essayer l’ application de démonstration pour voir si elle est assez simple et moderne 🙂

Avez-vous examiné JavaFX 2.0 ? Il est conçu pour interagir facilement avec Swing, et dispose de nombreux contrôles «esthétiques» modernes.

En outre, comme lrAndroid le mentionne, une application Swing peut ressembler à une application native si vous définissez l’apparence du système avec:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

Les frameworks Javascript modernes (ExtJS, Dojo, etc …) offrent la même richesse de widgets ou plus (Excel comme les grids par exemple), une plus grande variété de L & F et correspondent généralement mieux au système d’exploitation de l’utilisateur. Les utilisateurs sont également très à l’aise avec leurs navigateurs et, hé, les “trucs modernes” sont sur le Web, et le Web moderne est aujourd’hui HTML + Javascript.

La surcharge de la conversion d’une application en “Web like” est minime. Une jetée intégrée peut restr très petite et l’espace disque est devenu beaucoup moins problématique.

Des avantages supplémentaires vont suivre cette voie pour les évolutions futures de l’application.

  • Soudainement, l’application de bureau devient une application serveur, accessible depuis un autre poste de travail. Nous avons réussi à promouvoir une application de bureau sur «portail» en quelques semaines.
  • La réécriture de l’application en termes de services Web (Ajax) facilite la transition vers la création d’une stack de services REST (ou SOAP …) complète. L’application peut ensuite être intégrée à d’autres applications, facilement surveillée en externe, etc.
  • La prise en charge d’autres périphériques (smartphones, tablettes, …) devient beaucoup plus simple, en se concentrant uniquement sur la couche d’interface utilisateur.
  • Au fur et à mesure de la croissance de l’application, la séparation des préoccupations est plus nette. Les développeurs travaillant sur l’interface utilisateur n’ont pas à se soucier du code de bas niveau.
  • Il y a beaucoup d’excellents concepteurs et développeurs JS / HTML qui ne programment pas en Java.

MODIFIER

3 ans plus tard, cela est devenu extrêmement facile grâce à Electron

Essayez l’un de ces:

  1. JTattoo
  2. JGoodies
  3. Quaqua

Qu’en est-il de Nimbus? Oracle Link Jetez également un oeil à SO-Question

Je sais que cette question est ancienne, mais si vous ne voulez pas utiliser FX et que vous voulez toujours utiliser Swing, essayez MacWidgets , je l’ai utilisé sur quelques projets. C’est très léger et très beau. Ci-dessous est un ancien projet sur lequel je travaillais, au fil du temps, j’ai perfectionné en utilisant macwidgets et maintenant l’utiliser en interne dans mon entreprise.

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png

QT est assez vaste mais aussi très grand et complexe. La bibliothèque SWT est également utilisée par les bureaux ouverts, par exemple. SWT utilise des widgets d’interface utilisateur natifs pour les boutons, les tables, etc., dans lesquels Swing les émule.

Cependant, la tendance est clairement à l’écriture d’applications client riches pour le navigateur en utilisant HTML et Javascript. Les deux ont fait d’énormes progrès ces dernières années.

HTML5 cible spécifiquement les applications clientes riches avec des fonctionnalités telles que de meilleurs formulaires et une firebase database locale pour prendre en charge des scénarios déconnectés (notez que cette dernière fonctionnalité n’est pas encore standardisée, mais est implémentée par tous les derniers navigateurs).

Javascript a maintenant des bibliothèques puissantes avec jQuery et ses nombreux plugins. Il existe même des langages comme Coffeescript qui peuvent être utilisés pour produire du Javascript avec une syntaxe plus simple et plus puissante.

Il n’y a pas non plus besoin de telles applications pour se connecter à un serveur externe. Des serveurs locaux de faible encombrement (ex: jetty, node.js, …) et des bases de données (SQLite, H2, …) peuvent être installés sur le client pour créer une application totalement autonome.