Johan ble født i Ribeirapalasset i Lisboa, som sønn av kong Pedro II og dronning Maria Sofia av Neuburg. Johan var ikke farens førstefødte sønn, men den eldre broren som han ble oppkalt etter døde kort før Johan ble født.