As promised, here is my report about the changes!
ClickerMonkey, I thank you very much! It was no complicated thing, but I just didn't have the idea to put all the quads in one buffer and then let them be rendered. Now I put the tilerendering in the Map class where all tiles are put in one buffer. Et voilá!!
It works like a charm, now the FPS is back to 400! Which is really awesome and exactly what I aimed for!
@davedes: thank you for your help!
You need to write a sprite batcher; something that will accumulate all of the sprite data and only render them when necessary, i.e. in large batches. Ideally you will then end up with a single VBO draw call per frame.
Ahhh, interesting! This reminds me of libGDX. There is also a SpriteBatch. Well I have seen now what happens if I don't use batching and the difference in performance is really huge. So this is a point I will definitly take advantage of.
I'd also recommend getting used to GL_TRIANGLES since quads are deprecated.
Is this really true?! I didn't know that...
Furthermore, you should part from the old school SlickUtil and learn to write your own texture loaders.
This is something that I wanted to do sometime but is not important enough to me right now. You know, I like figuring out how things work inside and this is another nice challenge. I will then definitly take a closer look at your tutorials, they look really great!
So again, thanks for your help and now I have new motivation! I am looking forward to finishing my little programming project.
EDIT: Ah, I forgot!
EDIT: Regarding your game loop, where is Display.sync and Display.update? Huh
I have no Display.sync, but update is hidden in render().