Alguém sabe me dizer qual é o minor e o major version do Tiger( java 1.5)?
Existe alguma lista com estes dados?
Valew
Minor e Major Version
5 Respostas
Não seria 1.5? Se você está falando da versão do arquivo .class, é 49.0
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.
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];
}
Leia o “The Java Virtual Machine 3rd” para ver esse tipo de informação. Não é leitura facil, mas é razoavelmente bem explicado.
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.