De acordo com seu primeiro requisito, você está procurando uma estrutura em vez de uma biblioteca.
O jMonkeyEngine é uma estrutura para jogos 3D (ou seja, fornece o loop principal conforme solicitado, semelhante ao XNA), mas não seria uma boa opção para 2D.
No entanto, um loop de jogo não é algo difícil de escrever , e as bibliotecas Java existentes atendem aos seus 2º e 3º requisitos, por isso sugiro pesquisar em uma biblioteca / mecanismo 3D de gráfico de cena ou em qualquer biblioteca 2D, dependendo se você estiver criando um jogo 2D ou 3D.
Aviatrix3D , Ardour3D , Java3D e jMonkeyEngine são minhas recomendações para os motores 3D de cena gráfica.
Para bibliotecas 2D, você possui o JGame ou pode optar por usar o OpenGL para obter a velocidade máxima e usar LWJGL ou JOGL . Você também pode simplesmente usar a biblioteca Graphics2D integrada do Java , o que seria uma opção especialmente boa se você planeja implantar seu jogo como um applet.
Para seguir a rota Graphics2D embutida, observe o código-fonte da Metagun (clique para reproduzir no formato de applet). É um jogo Java 2D pequeno, mas muito bem escrito, e acho que é um excelente exemplo de jogo pequeno; copie sua estrutura e você terá seu loop / estrutura ideal para o jogo.