SpazzAttack wrote:
When I said "a few days" I was exagegrating to make a point.
Of course. As was I... sortof. =)
SpazzAttack wrote:
Once you know C++, you have 90% of Java's syntax under your belt. The Java programming language itself is not huge (syntax, structures, etc). The whole API is more like an abstraction of an entire operating system API. The whole idea behind Java is to write once and then debug everywhere.
True. I just get really frustrated when people either 'recreate' or don't use the API correctly. Often I think this is because the Java API is very object oriented and people don't always grasp what is going on.... "why encapsulate a File inside of a FileReader?" or "why is there both a FileReader and BufferedReader? Are they different?" type of thing.
And of course, "What is an immutable object?".

I guess my point is that learning Java should not only mean learning the Java language, but also the Java API as well as understanding how Java works - virtual machine, runtime, etc.
SpazzAttack wrote:
I developed in C++ for ten years before getting into a rather large cross-platform Java project. It was a video conferencing sytem based on the Java Media Framework. Needless to say, I ended up re-writing most of the JMF. Don't ask me to explain why, that is, unless you want me to launch into a tirade about how crappy the JMF is and how slow Java in general is when you really need as much speed and data throughput as possible.
Please, that was not meant as a flame towards Gadget! 
We'll have to compare notes in another thread later. I was planning on writing a media player and encoder using the JMF later this summer because I had a positive review about it in JDJ.
Also, I think that C programmers sometimes get frustrated w/ Java because the performance of average C code is often quite good, but when you do the same thing in Java you sometimes hit a brick wall (I realize that your team probably didn't do this - this is more for other readers here). A common example being console output performance....
Code:
public class ConsolePerformanceTest {
public static void main(String[] args) throws IOException {
int size = 75;
long start = System.currentTimeMillis();
for (int i = 0; i < size; i++)
System.out.println(i);
long normal = System.currentTimeMillis() - start;
System.out.println();
start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < size; i++)
sb.append(i + "\n");
System.out.println(sb.toString());
long stringBuffer = System.currentTimeMillis() - start;
System.out.println();
System.out.println("times...");
System.out.println("normal: " + normal);
System.out.println("StringBuffer: " + stringBuffer);
System.out.println("note: times are in ms");
System.exit(0);
}
}
Where the times for size = 75 are 32ms using the normal sout method and 0ms (ie a fraction of a ms) for the StringBuffer method. A huge difference in performance! If size is increased to 1000, there is still 4 to 5 times performance increase when using the StringBuffer (the relative performance dropped because the StringBuffer eventually filled and had to be allocated more memory. Of course, I could have tuned this some, but a 400% increase is fine for this example).
And the difference between slow methods and faster methods in file and network tests is often as large.
SpazzAttack wrote:
If you want to get into performance-oriented software development with a high-level language that lets you get down into the bare metal, then C or C++ is really the best game in town
True - it is hard to improve upon C for bare metal apps.
Of course, you can always build on that C strength w/ JNI.

SpazzAttack wrote:
I would advise staying away from Stroustrup's book to learn C++. It's a great reference once you already know C++, but as a learning tool it is too confusing IMHO.
I should have probably put a disclaimer on that comment. I've gotten a little tired of 'rebuying' books because the beginner book was too shallow or occasionally just wrong. Personally, I like the way Bjarne breaks things down in his book and only used small code examples - I really hate 200 loc examples!
Probably a better idea to use a library book and then buy Bjarnes book after you have enough experience. Either way, everyone should read up at his website! There is some really good stuff there.