I hire contractors for Java development in a web-sphere environment. I also hire them to perform business analysis or testing of java code.
The large majority are Indians. They have the skills, the training, and the motivation to do the job.
Perhaps it is because they work for the contracting company at lower rates than US born developers, thus giving the contracting companies a better margin. I pay the same hourly rate regardless of who the person is or where they are from.
I believe we would be hard pressed to find qualified workers if we were restricted to US only applicants. Perhaps it is the training/college coursework that is lacking. We just do not see that many qualified US born candidates.
This is not hiring a laborer type of work. Steel workers do not become Java (or COBOL) programmers.
Additionally, I have found that only about 10% of the older COBOL programmers make the jump to light speed (Java). I am an older COBOL programmer/ BAL programmer and I understand the problem, it is a paradigm shift in thinking.
If we train our young people in new development languages, new testing techniques, and new business analysis techniques than we can have more native born technical folks and less need to import talent.
Additionally, I have found that only about 10% of the older COBOL programmers make the jump to light speed (Java).
Java and COBOL are not the only languages (fortunately). You can't find any assembler, C, pascal, etc. programmers?
I have found that some employers are prejudiced against US citizens and older workers.