I've read that one of the reasons Java is so popular is that it's promoted as being platform independent. But wouldn't one just need to write one program for Windows, another for Mac, etc? It seems like Java has to do this anyway. I know I'm missing something here.