Que isso amigo?
Parte 2? Toda vez que for fazer uma pergunta do mesmo assunto, faz no mesmo topico que voce acabou de criar… Deu tempo de 40 minutos entre um tópico e outro… 
Referente a aparencia dos sistemas em java, isso acontece devido ao look and feel. O java possui alguns por padrão, porém, caso precisar utilizar algum look and feel diferente, você precisará levar consigo a biblioteca para o outro sistema operacional.
Sobre usar bytecode que você falou, acredito que essa dúvida surgiu a partir da outra dúvida sua. Até onde eu sei, que já ouvi comentar, a JVM é feito em C. Porém, toda a JRE é em Java, ou seja, é necessário ser gerado um bytecode de cada classe da API nativa do Java.
Sobre a dúvida no outro post
Isso acontece porque a JVM é criado para cada sistema operacional de uma forma diferente. Por exemplo, para listar os arquivos e diretórios no cmd do windows voce digita a palavra ‘dir’. No linux, é ‘ls’. Cada comando desse funciona propriamente em seu sistema operacional. Se você for fazer um programa em C, que compila e gera um código executavel de acordo com o seu sistema operacional, você deverá compilar o código em cada sistema, sem contar que será necessário trocar o comando ‘ls’ por ‘dir’ e vice-versa. O que a JVM faz para você é isso. Ela sabe como funciona em cada sistema operacional, não necessitando você fazer isso por ela.
Abraços