Minor e Major Version

5 respostas
leonardootto

Alguém sabe me dizer qual é o minor e o major version do Tiger( java 1.5)?
Existe alguma lista com estes dados?
Valew

5 Respostas

louds

Não seria 1.5? Se você está falando da versão do arquivo .class, é 49.0

leonardootto

Então eu estava lendo o livro do Addison Wesley:Programming for the Java Virtual Machine.

Neste livro ele faz uma descrição da estrutura do arquivo .class.
Que é assim.

000000 cafebabe     magic = ca fe ba be
[telefone removido]           minor version = 3
000006 002d           major version = 45

Onde o primeiro é o numero mágico que identifica o arquivo e depois vem as versões.
Fiz um programa pra ver isso e recebi em binario.

11001010 | ca
11111110 | fe
10111010 | ba
10111110 | be
01101011 |-----> minor version 
01010001 |----->  major version

Sera que mudaram a estrutura do .class para o Tiger?
Por isso perguntei qual era a major e a minor version do Tiger.

Valew.

leonardootto

Bom descobri mais algumas coisas.

O compilador do eclipse e o javac geram codigos diferentes.

Eclipse:

11001010|ca
11111110|fe
10111010|ba
10111110|be

01101011
01010001

javac

11001010
11111110
10111010
10111110

00011000
10111011

Desconsidere isso.
:oops:

Estrutura de um ClassFile na jvm:

ClassFile {
     u4 magic;
     u2 minor_version;
     u2 major_version;
     u2 constant_pool_count;
     cp_info constant_pool[constant_pool_count-1];
     u2 access_flags;
     u2 this_class;
     u2 super_class;
     u2 interfaces_count;
     u2 interfaces[interfaces_count];
     u2 fields_count;
     field_info fields[fields_count];
     u2 methods_count;
     method_info methods[methods_count];
     u2 attributes_count;
     attribute_info attributes[attributes_count];
}
louds

Leia o “The Java Virtual Machine 3rd” para ver esse tipo de informação. Não é leitura facil, mas é razoavelmente bem explicado.

leonardootto

Fala galera.
Consegui entender, era um erro meu na criação do binario.

File file = new File("DumpTest.class");
        BufferedReader reader = new BufferedReader(new FileReader(file));

        StringBuffer sb = new StringBuffer();
        int n;
        while((n=reader.read())!=-1){
            String str = Integer.toBinaryString(n);
            sb.append(str);
        }

        File file2 = new File("Dump.txt");
        BufferedWriter writer = new BufferedWriter(new FileWriter(file2));
        writer.write(sb.toString());
        writer.close();

Quando eu transformava em binario por exemplo o numero 0 ele me retorna 0 e não completava o resto do inteiro com zeros.No caso(00000000).
Se eu completar agora da certinho.

Valew galera.

Criado 5 de abril de 2006
Ultima resposta 6 de abr. de 2006
Respostas 5
Participantes 2