By using this site, you agree to our Privacy Policy and our Terms of Use. Close
Grey Acumen said:
are you talking about the fact that you have access to all the preprogrammed libraries and stuff? I have to admit, I agree that's covered up alot more in java, but at the same time, I think it's best to use java to start, so you can understand programming languages in general well enough to recognize what is going on with those libraries when you finally start to see them in languages like C++

 He is referring to the fact that Java applications work inside of a virtual machine rather than being run directly through the operating system/hardware. This has 2 major advantages. Firstly, applications are (theoretically) portable to any platform that has a virtual machine running on it. Secondly, it allows for the virtual machine to handle exception, overflows and memory management, rather than the programmer needing to worry about all this.

 This second part, while it is extremely useful, unforunately makes for lazy programmers. Someone who has only ever programmed in Java is in for a world of hurt if they go and program anything significant in C++ (or any unmanaged language). Being required to check bounds, make sure you are freeing memory and having to check for exceptions are things which even the most seasoned programmer still has problems with. If you've seen lately that the Wii has been hacked to run homebrew code, this was possible because the programmers did not do any bounds checking while loading the save. While it isn't impossible to do in Java, even if this occurs, the best the hacker can hope for is extra access to the VM, rather than access to the underlying OS/hardware (assuming the VM itself doesn't have exploits).

 While it is nice not to have to worry about this type of stuff, any serious programmer needs to understand it. So while Java might be a good choice initially, you need exposure to the lower level stuff before the bad habits start to stick.