Há algumas maneiras de se fazer isto.
Você pode usar o fato da classe java.util.Date armazenar os dados internamente como um valor do tipo long que representa os milisegundos (se não me engano, a partir de 1970).
Suponha que você tenha duas instâncias de data: data1 e data2 representando as horas.
Você pode fazer o seguinte: a diferença entre elas é
long diferenca = data2.getTime() - data1.getTime();
1000 milisegundos equivalem a um segundo.
Sendo assim, você pode colocar como fator de segundos o seguinte:
1000
pegue o resultado da diferença e divida por este valor.
Finalmente, crie uma nova instância com o resultado.
long diferenca_em_segundos = diferenca / 1000;
Depois, basta converter para o valor que você quiser. Se for para, por exemplo, minutos, basta dividir por 60, e por ai vai.
Ou, pode seguir o caminho mais tranquilo, usando a classe java.util.GregorianCalendar pra te auxiliar
Este link no stackoverflow pode te ajudar também: http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instances