Question: i know that java programs are first compiled and a bytecode is generated which is platform independent. But my question is why is this bytecode interpreted in the next stage and not compiled even though compilation is faster than interpretation in general??

Answer: 
The basic premise of your question is not true. Most modern Java virtual machines do compile frequently-executed parts of the code into native machine code.

This is known as [just-in-time compilation](http://en.wikipedia.org/wiki/Just-in-time_compilation), or JIT for short.

A pretty good introduction to relevant Sun's (now Oracle's) technology can be found [here](http://java.sun.com/products/hotspot/docs/whitepaper/Java_Hotspot_v1.4.1/Java_HSpot_WP_v1.4.1_1002_4.html).
The JVM uses **Just in time compilation** <http://en.wikipedia.org/wiki/Just-in-time_compilation>, so it's much faster than pure interpretation.