JFrame
is a normal window with its normal buttons (optionally) and decorations. JDialog
on the other side does not have a maximize and minimize buttons and usually are created with JOptionPane
static methods, and are better fit to make them modal (they block other components until they are closed).
But both inherit from Window, so they share much functionality.