web-dev-qa-db-fra.com

Quel est l'avantage de définir Java.awt.headless = true?

J'ai traversé

  1. Définition de Java.awt.headless = true par programme
  2. http://www.Oracle.com/technetwork/articles/javase/headless-136834.html et
  3. Quelques autres liens aussi.

Nulle part il n'est expliqué l'avantage d'utiliser ce drapeau.

Est-ce un avantage de performance? Si oui, existe-t-il même une estimation approximative des avantages en termes de performances? (Je sais que les réponses aux questions de performance dépendent totalement du cas par cas, mais il serait bien de savoir si quelqu'un a signalé un bon avantage à le faire).

18
user2250246

Les modes sans tête et sans tête sont différents, ils ont un ensemble de fonctionnalités différent. Si vous avez seulement besoin de faire des choses simples comme le rendu des polices, alors oui, vous pourrez le faire en mode sans tête.

Vous pouvez toujours vérifier les tripes des sources JDK et voir par vous-même quelles méthodes dépendent du mode sans tête. Mais à mon avis, même si le gain de performance est négligeable, il est préférable de passer Java.awt.headless de toute façon (si vous n'avez pas besoin du mode GUI "complet").

Tout fournisseur peut utiliser cette propriété. Vous ne savez jamais s'ils vont faire quelque chose si vous avez l'interface graphique complète. Donc, ma règle de base est: utilisez toujours Java.awt.headless pour les applications de console et les serveurs. Ça ne fera pas de mal.

11
BaRoN

Un avantage possible est que si vous appelez l'application tout en essayant de faire autre chose dans une fenêtre en invoquant peut-être l'application plusieurs fois, cela ne perturbera pas le focus de votre clavier/souris si l'application s'exécute en mode sans tête.

Au moins sur un Mac, j'ai eu d'énormes problèmes pour exécuter un script qui exécute à plusieurs reprises une application Java toutes les quelques secondes tout en essayant de modifier dans une autre fenêtre. Le mode sans tête corrige cela.

1
C. Grant