(A bit of a long post but if you didn't read the articles yet you'll save time by quickly realising how pointless they are)

In part 1:

"The problem is that most of the anti-Java rhetoric is simply invalid, it involves a variety of most logical fallacies, ego fluffing, appeasing an all-powerful god, revisionist history, and (most often of all) downright lies."

s/anti/pro

I've never seen anyone make the "Java applet revisionism" so I suspect that's a strawman...

"It's more of a controlled dynamism which uses interfaces, or inheritance, or generics to control what can be assigned to what."

s/controlled/constrained. If you're imprisoned then you're in a more controlled form of freedom?

"Dynamic typing isn't a feature, it's a lack of a feature, it saves a few keystrokes but it also loses valuable metadata."

False. In fact I'd say in a dynamic language you gain metadata because the program can inspect itself better at runtime, because it needs that information anyway for things like type-checking.

"Quite why modern languages are all expected to be dynamic, I do not know, it makes little sense; while they all have modern features (well not really modern, but only recently mainstream) like closures, continuations, metaprogramming, etc. they're expected to throw out an old useful feature at the same time."

HAHAHA. How clueless. What "useful old feature" did I throw out by adopting closures already? or continuations, or macros.

"You see, in any part of a function, class, etc. a variable can only legitimately be a certain type (or type of types), you can't pass a String to a function called average and expect it to work, etc. Java allows you to enforce this with ease. Why is getting rid of such a feature supposed to be a good thing?"

Is he not aware that dynamic languages do type-checking? Also, it sure doesn't make sense to invoke (+ "Hello") but first a good compiler (even for a dynamic language) will warn about that kind of obvious error where the type inference and the code don't agree, second there's always lots of functions that takes an argument and passes it right down to other functions without caring at all what it is so it makes sense not to declare the type (less assumptions = more decoupling).

"It seems that many people don't understand static typing, and even more don't want to understand static typing."

s/static/dynamic/g

"Generics aren't easy, that much is granted (which again blows the 'Java is designed for stupid programmers' argument out of the water)"

Proud because you're stuck dealing with a bad solution to what shouldn't even have been a problem in the first place?

"And, of course, static typing allows other benefits, like making method overloading possible."

... 1. Common Lisp is a dynamic language. 2. Common Lisp supports overloading and in a much more powerful way (multiple dispatch)

Part 2:

"The problem is that easy languages are almost always more productive too."

I can certainly agree with that. But the easy languages are not the ones he thinks. What language lets you easily sort a sequence of arbitrary items in an order dictated by an arbitrary predicate? Not Java.

"The people who have had their pointer-arithmetic tricks taken away from them have moved straight in to Python one-liners with lambdas nested ten-deep. A certain kind of developer is addicted to mental masturbation more than gaining satisfaction by solving problems."

What bullshit. I've never seen lambdas (lexically) nested even 3 levels deep. Complete strawman here.

"Same with Java, if you already have a Java server infrastructure, job done; even if you haven't, it's still the only practical choice for any software which needs to be cross-platform and high performance."

At this point I'm realising I'm wasting my time replying to such total nonsense. Yes, I know, I'm slow sometimes.

"It's only a matter of time until [C#] paints itself into a corner; in fact, it might have already happened. The newer "dynamic" bits don't sit well with the old C++ bits. They would have been better off sticking with Java syntax at the outset and going from there."

?! First he says the semantics of C# don't work well with the more dynamic stuff, then he says they should have stuck with Java syntax, but the former has really nothing whatsoever to do with the latter...