Programming in the large
Many traditional languages have built-in limitations to program size and complexity. BASIC, for example, can be great for pulling together quick solutions for certain classes of problems, but if the program gets more than a few pages long, or ventures out of the normal problem domain of that language, its like trying to swim through an ever-more viscous fluid. Theres no clear line that tells you when your language is failing you, and even if there were, youd ignore it. You dont say, My BASIC program just got too big; Ill have to rewrite it in C! Instead, you try to shoehorn a few more lines in to add that one new feature. So the extra costs come creeping up on you.
Java is designed to aid programming in the largethat is, to erase those creeping-complexity boundaries between a small program and a large one. You certainly dont need to use OOP when youre writing a hello, world style utility program, but the features are there when you need them. And the compiler is aggressive about ferreting out bug-producing errors for small and large programs alike.