Forum Programmation.java JRE allégés ?

Posté par  (site web personnel) .
Étiquettes : aucune
0
3
août
2006
Bonjour,

Y a t il un moyen de trouver toutes les classes requises pour faire tourner un programme java ? Le but est d'alléger JRE et de l'embarquer avec l'application.

J'ai pensé a un script parsant toutes les lignes d'import des sources de l'appli, puis remontant ensuite dans les sources du jre, mais ca me parait fastidieux... (d'autant que certaines classes ne sont pas forcément mis en import, notamment si on les utilises avec leur fullpath dans le code)

Je suis preneur de toute idée :)

Merci.
  • # classloader

    Posté par  (site web personnel) . Évalué à 1.

    implémente ton classloader et trace les classes loadées.
    • [^] # Re: classloader

      Posté par  (site web personnel) . Évalué à 2.

      Admettons, mais comment ensuite faire pour remplacer le classloader par défaut dès qu'on rentre dans la méthode main ?

      Existe-il une méthode genre setClassLoader() ? :-/

      Merci pour l'idée en tout cas, je n'y aurai pas pensé...
  • # jvmpi

    Posté par  (site web personnel) . Évalué à 1.

    C'est une bonne occasion d'apprendre à utiliser jvmpi (Java Virtual Machine Profiler Interface). C'est fait pour ça, et t'évitera d'écrire un classloader particulier

    http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html

    et l'évenement qui t'interesse sera surement
    http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html#c(...)

    Et bien sur dans les exemples de code, il y a exactement ce que tu cherche: un traceur d'utilisation des classes
    http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/jvmpi.html#e(...)
    • [^] # Re: jvmpi

      Posté par  (site web personnel) . Évalué à 2.

      C'est fait pour ça, et t'évitera d'écrire un classloader particulier

      Je pige pas grand chose à ce truc de jvmpi, dans l'exemple ya un vague fichier cc à compiler (j'ai pas de compilo sous la main), et c'est laid ce qu'il y a dedans.

      C'est pas plus simple de faire un ptit ClassLoader ?

      j'voyais un truc du genre :

      public class MonClassLoader extends ClassLoader{

      protected synchronized Class loadClass(String arg0, boolean arg1) throws ClassNotFoundException {
      System.out.println("Chargement de la classe : " + arg0);
      return super.loadClass(arg0, arg1);
      }

      }


      Mais bon, il faudrait que je remplace le ClassLoader par défaut avec celui là...
      • [^] # Re: jvmpi

        Posté par  (site web personnel) . Évalué à 2.

        je ne vois pas ce qu'il y a de dufficile à faire
        gcc -c -I/mes/include/java/include myprofiler.cc -o myprofiler.so

        puis, avec un LD_LIBRARY_PATH correct,
        java -Xrunmyprofiler MonAppli
  • # -verbose

    Posté par  (site web personnel) . Évalué à 3.

    il me semble qu'il y a plus simple: il suffit d'utiliser l'argument "-verbose" de la commande java pour avoir la liste des classe chargées...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.