In Old English, only the proper name Boia has been recorded. ME boi meant 'churl, servant' and (rarely) 'devil.' In texts, the meaning 'male child' does not antedate 1400. ModE boy looks like a semantic blend of an onomatopoeic word for an evil spirit (*boi) and a baby word for 'brother' (*bo). [Liberman]Used slightingly of young men in Middle English; meaning "male negro slave or Asian personal servant of any age" attested from c. 1600. Exclamation oh, boy attested from 1892.
A noticable number of the modern words for 'boy', 'girl', and 'child' were originally colloquial nicknames, derogatory or whimsical, in part endearing, and finally commonplace. These, as is natural, are of the most diverse, and in part obscure, origin. [Buck]