Что означает p в javap?

Что означает «p» в «javap»? («c» в «javac» означает компилятор)


person instantsetsuna    schedule 01.02.2011    source источник
comment
Я думаю, вопрос в том, что означает p в javap?   -  person Luciano Fiandesio    schedule 01.02.2011
comment
Принтер -- Java-принтер.   -  person Dan Grossman    schedule 01.02.2011
comment
@Luciano: я изменил название, спасибо! :)   -  person instantsetsuna    schedule 01.02.2011
comment
Я всегда думал, что это означает «профилировщик», но просмотр комментариев и других ответов «принтер» кажется правильным.   -  person Sudip Bhandari    schedule 30.10.2017


Ответы (7)


По умолчанию javap выводит объявления незакрытых членов каждого из классов, указанных в командной строке.

Ссылка: http://docstore.mik.ua/orelly/java/javanut/ch16_08.htm

person Adeel    schedule 01.02.2011
comment
Я тоже сначала так подумал, но нигде не упоминается. Мы просто делаем предположения здесь. - person instantsetsuna; 01.02.2011

p = печать

javap является частью официальных инструментов Java и позволяет дизассемблировать один или несколько файлов классов.

«p» в данном случае означает print, как в официальной документации сообщается, что:

... команда javap печатает пакет, защищенные и общедоступные поля, а также методы переданных ей классов. Команда javap выводит вывод на стандартный вывод.

person pfmaggi    schedule 22.08.2018

это означает java-принтер ....

person user2963126    schedule 07.11.2013

Он печатает объявления методов в вашем классе, и это очень хороший способ увидеть, как ваш компилятор интерпретировал ваш код, и преобразовать исходный файл в формат .class.

person Aniruddha Paul    schedule 23.09.2014
comment
Вы неправильно поняли вопрос. Он не спрашивает, что такое javap. - person gvlasov; 12.07.2015

Команда javap дизассемблирует один или несколько файлов классов. Его вывод зависит от используемых опций. Если никакие параметры не используются, javap выводит пакеты, защищенные и общедоступные поля и методы переданных ему классов. javap выводит вывод на стандартный вывод.

person Bijesh Sheth    schedule 13.04.2015

Официальная документация (Java 13) .

Помимо того, что было дано, давайте проанализируем javap:

Как вы можете видеть, из параметров описание, p в javap, скорее всего, означает печать (поскольку описание состоит БОЛЬШИМ ОБРАЗОМ из напечатайте это, напечатайте это, покажите это, покажите это ...).

javap -help
Usage: javap <options> <classes>
where possible options include:
  -help  --help  -?        Print this usage message
  -version                 Version information
  -v  -verbose             Print additional information
  -l                       Print line number and local variable tables
  -public                  Show only public classes and members
  -protected               Show protected/public classes and members
  -package                 Show package/protected/public classes
                           and members (default)
  -p  -private             Show all classes and members
  -c                       Disassemble the code
  -s                       Print internal type signatures
  -sysinfo                 Show system info (path, size, date, MD5 hash)
                           of class being processed
  -constants               Show final constants
  -classpath <path>        Specify where to find user class files
  -cp <path>               Specify where to find user class files
  -bootclasspath <path>    Override location of bootstrap class files

Пример использования и вывода (на стандартный вывод):

public class CheckoutJavaP{ 
    private static int i = 1;
    protected static String s = "string";
    public static void main(String[] args){
        InnerClass iC = new InnerClass();
        iC.show();
        System.out.println(s + i);
    }
}

class InnerClass{
    protected int count;
    public InnerClass(){ System.out.println("In InnerClass Constructor");}
    public void show(){ System.out.println("In InnerClass.show()");}
    public int getCount(){ return this.count;}
}

(Примечание. В соответствии с определением в приведенном ниже выводе не упоминается InnerClass, только класс, который он изучает, и не упоминается свойство private):

Команда javap дизассемблирует один или несколько файлов классов. Результат зависит от используемых опций. Когда параметры не используются, команда javap выводит пакет, защищенные и общедоступные поля, а также методы переданных ей классов. Команда javap выводит вывод на стандартный вывод.

 javap CheckoutJavaP.class
    Compiled from "CheckoutJavaP.java"
    public class CheckoutJavaP {
      protected static java.lang.String s;
      public CheckoutJavaP();
      public static void main(java.lang.String[]);
      static {};
    }

Подробный javap (если вам интересно):

javap -v CheckoutJavaP.class
Classfile /C:/Users/jumping_monkey/CheckoutJavaP.class
  Last modified 9 Feb, 2020; size 822 bytes
  MD5 checksum fb7f219851715ef4489ebf7a47800d47
  Compiled from "CheckoutJavaP.java"
public class CheckoutJavaP
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #16.#30        // java/lang/Object."<init>":()V
   #2 = Class              #31            // InnerClass
   #3 = Methodref          #2.#30         // InnerClass."<init>":()V
   #4 = Methodref          #2.#32         // InnerClass.show:()V
   #5 = Fieldref           #33.#34        // java/lang/System.out:Ljava/io/PrintStream;
   #6 = Class              #35            // java/lang/StringBuilder
   #7 = Methodref          #6.#30         // java/lang/StringBuilder."<init>":()V
   #8 = Fieldref           #15.#36        // CheckoutJavaP.s:Ljava/lang/String;
   #9 = Methodref          #6.#37         // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  #10 = Fieldref           #15.#38        // CheckoutJavaP.i:I
  #11 = Methodref          #6.#39         // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
  #12 = Methodref          #6.#40         // java/lang/StringBuilder.toString:()Ljava/lang/String;
  #13 = Methodref          #41.#42        // java/io/PrintStream.println:(Ljava/lang/String;)V
  #14 = String             #43            // string
  #15 = Class              #44            // CheckoutJavaP
  #16 = Class              #45            // java/lang/Object
  #17 = Utf8               i
  #18 = Utf8               I
  #19 = Utf8               s
  #20 = Utf8               Ljava/lang/String;
  #21 = Utf8               <init>
  #22 = Utf8               ()V
  #23 = Utf8               Code
  #24 = Utf8               LineNumberTable
  #25 = Utf8               main
  #26 = Utf8               ([Ljava/lang/String;)V
  #27 = Utf8               <clinit>
  #28 = Utf8               SourceFile
  #29 = Utf8               CheckoutJavaP.java
  #30 = NameAndType        #21:#22        // "<init>":()V
  #31 = Utf8               InnerClass
  #32 = NameAndType        #46:#22        // show:()V
  #33 = Class              #47            // java/lang/System
  #34 = NameAndType        #48:#49        // out:Ljava/io/PrintStream;
  #35 = Utf8               java/lang/StringBuilder
  #36 = NameAndType        #19:#20        // s:Ljava/lang/String;
  #37 = NameAndType        #50:#51        // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  #38 = NameAndType        #17:#18        // i:I
  #39 = NameAndType        #50:#52        // append:(I)Ljava/lang/StringBuilder;
  #40 = NameAndType        #53:#54        // toString:()Ljava/lang/String;
  #41 = Class              #55            // java/io/PrintStream
  #42 = NameAndType        #56:#57        // println:(Ljava/lang/String;)V
  #43 = Utf8               string
  #44 = Utf8               CheckoutJavaP
  #45 = Utf8               java/lang/Object
  #46 = Utf8               show
  #47 = Utf8               java/lang/System
  #48 = Utf8               out
  #49 = Utf8               Ljava/io/PrintStream;
  #50 = Utf8               append
  #51 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;
  #52 = Utf8               (I)Ljava/lang/StringBuilder;
  #53 = Utf8               toString
  #54 = Utf8               ()Ljava/lang/String;
  #55 = Utf8               java/io/PrintStream
  #56 = Utf8               println
  #57 = Utf8               (Ljava/lang/String;)V
{
  protected static java.lang.String s;
    descriptor: Ljava/lang/String;
    flags: ACC_PROTECTED, ACC_STATIC

  public CheckoutJavaP();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 1: 0

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
         0: new           #2                  // class InnerClass
         3: dup
         4: invokespecial #3                  // Method InnerClass."<init>":()V
         7: astore_1
         8: aload_1
         9: invokevirtual #4                  // Method InnerClass.show:()V
        12: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;
        15: new           #6                  // class java/lang/StringBuilder
        18: dup
        19: invokespecial #7                  // Method java/lang/StringBuilder."<init>":()V
        22: getstatic     #8                  // Field s:Ljava/lang/String;
        25: invokevirtual #9                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        28: getstatic     #10                 // Field i:I
        31: invokevirtual #11                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
        34: invokevirtual #12                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        37: invokevirtual #13                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        40: return
      LineNumberTable:
        line 5: 0
        line 6: 8
        line 7: 12
        line 8: 40

  static {};
    descriptor: ()V
    flags: ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: iconst_1
         1: putstatic     #10                 // Field i:I
         4: ldc           #14                 // String string
         6: putstatic     #8                  // Field s:Ljava/lang/String;
         9: return
      LineNumberTable:
        line 2: 0
        line 3: 4
}
SourceFile: "CheckoutJavaP.java"
person jumping_monkey    schedule 09.02.2020

В нем перечислены все методы и переменные, содержащиеся в указанном классе. Вам просто нужно указать имя класса с помощью команды javap в командной строке. например C:\jdk1.3\bin> javap java.lang.Object в нем будут перечислены все методы, содержащиеся в классе Object.

person aishwaryt    schedule 12.07.2015
comment
Вы неправильно поняли вопрос. Он не спрашивает, что такое javap. - person gvlasov; 12.07.2015