Best 2D library to use.

Currently I’m using Swing and Java2D to develop my games, but after I’ll make one or two more games, I’m planning on starting to use a library.

I’m looking for a library to use. What I’m looking for is:

Most importantly: I want the knowledge and abilities aquired while working and studying with this library, to stay useful and beneficial, also when using a different library and maybe even a differnet language. I always want to keep progressing and advancing as a game developer and programmer, also when using an external library. Spending time on studying and creating games with a library, but in general not advancing as a game developer because my new knowledge and abilities will have no relevance outside of this library - is a waste of time. I want the work with the library to still advance my abilities and make me a better developer, in general and not only inside the boundaries of the specific library.

  • I want the library to be common and mainstream.

  • I want the library to have a good balance between low-level accesability (in the sense that I will have to understand some of the low-level machanisms of the library), and ease of use.

What is the best library in your opinion, to fit all of these requirments (especially the first one)? Thanks