In graphical programming terms, dirty rectangles are areas of a computer screen that change from one moment in time to the next - for example, when a character moves in a 2 dimensional game, imaginary boxes that bounds his entire body in his/her/its old position and his/her/its new position have to be recalculated.
This is a form of optimization, but only results in a more or less constant speed increase. As such is highly discouraged in this day of insanely fast personal computers, as it leads to strange and frustrating bugs and difficult to read code, with no perceivable gain in satisfaction or increased productivity for the end user.
Update:When you're using Java, you have no choice. Core10k resigns himself to using dirty rectangles... one... more... time.