BOnjour si je suis là c'est pour reclammmez l'aide sur ce propos
Veuillez m'accorder l'honneur de voir vos reponses
BOnjour si je suis là c'est pour reclammmez l'aide sur ce propos
Veuillez m'accorder l'honneur de voir vos reponses
Alors :
- Java2D : le concept qui forme la base du rendu logiciel / 100% pure Java dans AWT et Swing. Basiquement on doit dessiner de manière passive* dans une surface de rendu via un contexte (le Graphics) ; des que le dessin est effectué, le pixel est "mort" c'est dire que tu ne peux plus interagir avec : si tu as un rectangle et que tu le bouges ou change sa couleur alors tu dois demander un rafraîchissement de l'affichage et le redessiner pour que le changement apparaisse a l’écran.
Le rendu en lui-même peut être accéléré par le système sous-jacent (ex : anciennement Direct Draw, mais de nos jours Direct 3D, Open GL), mais dispose d'un mode rendu logiciel (très lent) si le système ne propose pas le support de l’accélération.
*c-a-d tu dois bien lister tes instructions de rendu certes, mais ce n'est pas toi qui contrôle en général le moment ou tu dois rafraîchir l'affichage: tu dois donc surcharger une méthode callback (ex : paint() ou paintComponent()) qui est invoquée par Java.- AWT : c'est le système de fenêtrage d'origine de Java depuis Java 1.1. Il repose sur le concept de "pair" (un composant AWT correspond a un composant natif du système d'exploitation sous-jacent. Si tu as un bouton AWT alors Java va créer un bouton natif Windows pour afficher la chose. Resp sous Linux, macOS, Solaris, etc). Ca marche bien mais souvent l'affichage est limite voir moche car ça repose sur les widgets de base des OS et certains datent d'avant les jolies UI . AWT peut aussi faire du Java 2D une abstraction de rendu un peu plus récente et qui est une manière de faire du rendu 100% Java plutôt que de passer par des pairs. Ca permet de customiser un peu plus l'affichage pour sortir de l'aspect d'origine et de faire des choses bien jolies mais avec un surcoût de boulot pour tout customiser. Il est possible de mélanger AWT et Swing sous certaines conditions. On parle de composants de poids lourd car ils sont natifs s'affichent par dessus les composants Swing quand on mélange les deux.
Basiquement, AWT est disponible sur toutes les plateformes disposant de Java avec un affichage graphique / système de fenêtrage / système de widget graphique.- Swing : créé initialement par Netscape sous le nom de JFC (Java Foundation Class - un nom similaire au MFC - Microsoft Foundation Class permettant de faire de l'UI sous Windows) puis cédé a Sun et intégré dans Java depuis 1.2 sous le nom de Swing. C'est un surcouche de AWT entièrement réécrite en Java 2D donc sans pair a part les composants racines (ex : JFrame). Swing a aussi le concept de Look and Feel pour changer intégralement l'apparence des controles sans changer le code (par contre creer un nouveau LnF complet est un projet assez long). La plupart des composants Swing héritent de AWT et sont compatibles avec. Il est possible de mélanger AWT et Swing sous certaines conditions. On parle de composants de poids léger car ils sont en Java et s'affichent par-dessous les composants AWT quand on mélange les deux.
Swing est disponible sur pratiquement tous, sinon tous les système supportant AWT puisqu'il a juste besoin d'une fenêtre native et que tout le reste du rendu est fait en Java2D.- JavaFX : a l'origine ça devait être une sorte de Swing 2, c'est a dire un Swing avec des méthodes de conception et fondamentaux plus modernes en laissant tomber l’héritage AWT puis au cours du développement c'est devenu un truc nouveau sans lien de parente directe avec Swing avec une architecture graphique bien plus moderne et complètement différente. De part la conception, il ressemble plus aux défunts Flash d'Adobe ou Silverlight de Microsoft ou encore a la manipulation de DOM sur le web de nos jours : c'est a dire ici que les objets sont organisés dans un graphe de scène hiérarchique sur lequel tu peux faire des manipulation qui ont un impact immédiat (comme un DOM pour une page web). Ici si tu as un rectangle et que tu le bouges ou change sa couleur alors l'affichage se met automatiquement a jour a l’écran sans que tu ais besoin de faire quoi que ce soit. Parmi les choses nouvelles totalement absentes de AWT et Swing : le binding et les collections observables ; outre le support de l'accélération graphique, JavaFX supporte la 3D ou encore les animations et meme les feuilles de style (CSS) pour changer l'apparence. Il est possible de mélanger JavaFX et Swing (mais pas AWT) sous certaines conditions.
- 1 : Mais a un moment durant la bêta Sun a décidé de le mélanger avec un DSL (Domain-specific langage - c'est dire un langage de prog a usage restreint dans un domaine très particulier); langage de scripting qui avait été prévu pour créer des UIs pour Swing sans taper des tonnes et des tonnes de code Java (on était en plein boom des langage de script sur la JVM). Ça a donné JavaFX 1.x qui reposait sur le langage JavaFXScript (il était impossible d'utiliser JavaFX 1.x directement depuis Java).
- 2-13 : mais les développeurs Java n'ayant pas envie d'apprendre un nouveau langage de scripting, Oracle a décidé que JavaFX 2 proposerait donc une API Java a la place qui permet d'utiliser directement le langage Java pour créer des UI FX (même si du coup le code est beaucoup plus long qu'avec JavaFXScript).
JavaFX est disponible sur moins de système que Java2D/AWT/Swing, car son pipeline graphique est différent et doit être porté sur les autres plateformes. Il supporte principalement Windows (Direct3D), Linux x86 et macOS (OpenGL) mais aussi Linux ARM (frame buffer, bien que le support de X soit aussi d’actualité je crois) ainsi que des nouveaux iOS et Linux Android (via des pairs dans les premières version, via un port du pipeline graphique dans les prochaines versions)
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Bonjour,
Je rebondis sur ce post.
Je commence une formation de développeur.
Est-ce encore utile de bien savoir manipuler AWT, ou peut-on faire l'impasse et aller directement sur JavaFX ?
Merci de vos avis,
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager