I think Java is one of the best programming languages around. I think also Java has one of the most complete runtime collection libraries including containers, database connectivity etc.

I recently worked on PEGASUS, a load balancing system that was completely implenented in C. I don't know if i had too much time to practice my skills, but i felt like a fish out of the water. :) No classes for the first time in 3 years, no abstraction ... by hand memory management, that resulted in a hysteria of me, tracing memory leaks (suspected all my memory allocations :)).

I implemented a single linked list by hand (wow, i had almost 10 years to do that) and debuged it. But my forte was flow control with select and poll. I had to do I/O multiplexing.

I have to say that in a strange way i liked it, and i realized that i have become lazy ... really lazy and expect the language and the runtime libraries to do all the work for me. I am programming Java the last six years, in various projects, from web applications to compilers. I think that Java made me lazy, and i was distracted from reality in more low-level languages.

Also Java changed my way of thinking ... just consider that in my C program i has a function that is named iterator() :).