A “camera” would be the best way to go and it offers the most flexibility.
I have never coded this type of thing in Java, but I did make an RPG in Flash MX using action script. I think the same basic principles apply.
In most cases you will want the location of the camera to equal the location of your character (making your character look like he is in the middle of the screen all the time). Thinking back to the old RPGs I played years ago here are the exceptions:
-When you character is in a small room the character does not stay in the center of the screen, he moves around and the building stays in place. (For this you will want want the camera to stop or just turn off, have the character move around. These controls are pretty simple and you probably know how to do them. Also, make these types of rooms a class, because they all share the control. Make different types of rooms (if you will be repeating them often with or without slight variations in color and texture) subclasses. An example where subclasses like this would be appropriate is if you were in a maze or a very box like castle where the only thing that changed from room to room was placement of furniture/artwork and where the doors are. Otherwise you just need this type of room as a class and have you different rooms stored as data. In the olden days designers had to limit the size of their games (it’s still a good idea) so lots of rooms (as well as other things in the game) looked similar with other variation. If you write you game like this it will be far less tedious than having to design hundreds of rooms and more educational as well.
-Characters sometimes look ahead during cinematic sequenes or they have an ability to look ahead. A camera is very usefull here. The camera location does not equal the character location here. Either have controls move the camera (if you have the ability to look ahead) or have it done automatically if it is a cinematic sequence.
Other than that I cannot think of instances that I have seen where the character is not in the center of the screen (in RPGs where the chracter is usually in the center of the screen).
For regular situations you will want the cameras location to equal the characters location. When you press a key it changes the character’s location and because the camera’s location is equal to the characters location it “follows”.
You can also have the camera lag behind in situations where the character is moving extremly fast (i.e. sprinting away from something, or riding a mine car) but now that I think of it, that sounds nausiating to have to watch.
Basically you want you camera to be responsible for drawing everything. What the camera draws is dependent on the camera’s location.
Having a camera (if it is written correctly) will allow you to zoom in and out. When your character is in a dungeon or something the camera should be zoomed in so you can see within a reasonable distance. You wouldn’t want to be able to see the entire dungeon on the screen upon entering it, would you? For different areas you might want a slightly different zoom. If you are using 8-bit looking sprites it probably would be best to have only 2 zooms, one for the world map, and one for places like towns, dungeons, caves, ect…
You might also want to do fancy things like rotation. The only way I can think of doing this is having the program recalculate the point of everything on the loaded map using basic trig x degrees. However this sounds like it would slow down the system a lot. I don’t think the result would be pretty considering answers will not be exact and rounding could result in pixil overlap, having some locations where one pixil is assigned several different colors and other locations where a pixil is not being assigned a color… confused… better stick to 90 degree rotations unless someone here can explain to you how this would be done.
Anyway, using a camera and allows it to display things differently in your 2D game (zoom, rotation, to keep character in center of screen, to let character move around screen) will develop camera skills and an understanding of the role of a camera in a game. This would probably make the learning transitions from 2D graphics to 3D graphics easier for you.