For better or for worse, most of that tooling is implemented as an IDE command/plugin. Command-line refactoring tools are way rarer. For example, <http://stackoverflow.com/questions/704062/are-there-any-open...; was asked a year ago, but the top answer lists software that, according to it's website, was Last released seven years ago.
So, IMO, that 'require' may not be absolute, but it certainly is pragmatic.
What makes you think you are effective in Java? Do you know what you are missing?
The argument I've heard many times before is that you must use an IDE with Java because Java is overly verbose.
I'm effective in Java in that I achieve what I want to achieve. The bottleneck has never been speed of typing/refactoring etc.
For Java, you can take a function in isolation, search its source file for import statements, and tell me what the variables, statements and expressions are. C# was in the same boat, but with LinQ, I think it gave up that idea. Now,
Nonsense. A very small category of behavior exists where static parsing of Perl 5 cannot determine whether a given program is valid. That's all. It's possible to write a pathological program which has two valid and working parses, but I've never seen it and it's an intellectual game, not a trap waiting to snare an unwary programmer.
(I have no idea what "an identifier or a function name" means, as Perl uses sigils to distinguish between variables and function names.)
See http://www.modernperlbooks.com/mt/2009/08/on-parsing-perl-5.... for details.
I've never understood that statement (I've programmed Java for 10 years, using a text editor). I think I'm effective.