java code : ,
byte a_b = 12;
short c_d = 14
replaces in bytecodes with
bipush 12 // expands byte1 (a byte type) to an int and pushes it onto the stack
sipush 14 // expands byte1, byte2 (a short type) to an int and pushes it onto the stack
Why jvm does that expansion, and not use byte & short ?
Also when i open bytecode of my file
EDIT : short var = 14 is replaced by bipush 14 rather than sipush 14
Is my understanding is not clear or is there a bug ?

I am using following version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)