Many Java features are tailored to allow splitting a project in many submodules, and distribute tasks among a lot of coders with a spec. Many dynamic languages features are made to allow the quickest development by only a handful of developers.
Working in large teams with Ruby is harder than with Java. Getting a web app online in a week at 2 people is easier with Python than with Java.
Don't you agree that different languages are more or less adapted to various workflows, teams, applications, or environments?
Then about taste : passionate programmers learn by themselves. They may learn any language, Java, Python, C or Delphi. However the kind of people programming without passion mostly use Java, or C#, because the only matter of choice is language marketability. Therefore there many more poor, bland Java programmers than Python, Perl or Ruby programmers. There are many more Java programmers anyway :)
Working in large teams with Ruby is harder than with Java. Getting a web app online in a week at 2 people is easier with Python than with Java.
Don't you agree that different languages are more or less adapted to various workflows, teams, applications, or environments?
Then about taste : passionate programmers learn by themselves. They may learn any language, Java, Python, C or Delphi. However the kind of people programming without passion mostly use Java, or C#, because the only matter of choice is language marketability. Therefore there many more poor, bland Java programmers than Python, Perl or Ruby programmers. There are many more Java programmers anyway :)