There's a lot of FUD going on here.
The ASA's flagrant misunderstanding of W3C standards notwithstanding, the lack of Adobe Flash -- Apple don't get to produce their own version without being sued -- and Java are hardly showstoppers.
The lack of Java is, frankly, no great loss. It serves little purpose other than to annoy and it has so many "standards" of its own that complaining that a phone doesn't run one of them is hypocritical to say the least: which version of Java would you like it to have? J2ME? J2EE? (The iPhone runs on OS X, not Symbian or WM6.) How about one of the umpteen variants that still exist on embedded platforms? Or perhaps one or two of the older JVMs that are still installed by default on desktops?
Would the real "Java" PLEASE stand up!
@James Bassett: Javascript (officially known "ECMAScript") *is* supported on iPhone. Javascript has nothing to do with Java other than looking a bit like it at times if you squint your eyes a little and view it from a distance.
As for accessing the whole Internet: yes it can.
Just because you don't get FTP, WebDAV and other Internet apps supplied by default, it doesn't mean they can't be written. There's a full, proper OS in there with a *complete* TCP/IP stack. None of it is limited and there are plenty of third-party apps that let you do whatever you want. The only reason you can't run VOIP apps on it (in certain territories) is because Apple won't put them on its App Store, not because the iPhone can't handle it.
(FYI: I'm the proud owner of a Nokia 2630.)