Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question sur le fonctionnement de Java

    21 janvier 2011 à 1:01:15

    Salut,

    Ma question concerne en faite comment Java fonctionne.

    Prenons en exemple le code suivant:
    public class Main {
        private static void createAndShowGUI() {
            JFrame frame = new JFrame("Title");
    
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 400);
    
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
             createAndShowGUI();
            
        }
    }
    


    Dans le code précédent, qu'est-ce qui empêche le code de s'arrêter après que le main est exécuté la fonction createAndShowGUI(). Je veux dire par la qu'il n'y a rien en dessus comme par exemple une boucle qui ferait boucler l'application.

    Deuxième question, dans la fonction static createAndShowGUI(), le JFrame qui me sert à créer ma fenêtre ne se détruit pas car les variables sont détruit après une fonction (bref, je crois :P). Es-ce parce que c'est une adresse que le new renvoie, et que seul la variable frame est détruit mais par l'objet lui même?

    Donc c'est les deux questions que j'avais. Je veux juste bien comprendre comment sa marche exactement.

    Merci :p
    Maniak07
    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2011 à 8:30:22

      Bonjour, ce que je vais répondre provient des cours que je suis durant mes études, je n'ai pas clairement les réponses, c'est juste une déduction.

      question1: ce qui doit empêcher le code de s'executer c'est que dans la class JFrame il doit y avoir une boucle dans la classe JFrame pour que le programme ne s'arrete pas, peut-être même avec un thread pour pouvoir executer le code suivant sans avoir besoin d'arrêter le programme.

      question2: alors apres une fonction les références sont détruites: tu ne pourras plus apellé tes objets, normalement après une fonction si tes variables locales ne sont plus référencés elles sont détruites par le ramasse miette. Mais vu que dans la JFrame il doit y avoir une sorte de boucle ou de thread il y a toujours du code en marche donc le ramasse miette ne supprime pas les instances d'objets.
      • Partager sur Facebook
      • Partager sur Twitter
        21 janvier 2011 à 15:32:26

        Question 1 : java démarre l'event dispatch thread (EDT) au moment où on lui demande d'afficher la première fenêtre. Techniquement, ça correspond à la boucle des évènements qu'on a dans un programme en C...

        Question 2 : tu ne sais pas quand les objets sont détruits, c'est le garbage collector qui s'en chage tout seul. Juste, ta référence vers la frame est perdue, c'est tout.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 janvier 2011 à 20:16:38

          Citation : QuentinC 2


          Question 2 : tu ne sais pas quand les objets sont détruits, c'est le garbage collector qui s'en chage tout seul. Juste, ta référence vers la frame est perdue, c'est tout.



          je ne suis pas d'accords ! Nous ne savons pas quand, d'accords mais nous pouvons prévoir quand un objet va être détruit. Je m'explique:
          si tu as des références statiques celle-ci et les obj liée a cette objt ne seront pas détruit.
          si aucun objet (groupe d'objet) n'ai rataché à un thread, alors ceux-ci seront détruit au prochain passage du garbage collector.
          • Partager sur Facebook
          • Partager sur Twitter

          Question sur le fonctionnement de Java

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown