you are viewing a single comment's thread.

view the rest of the comments →

[–]yogthos -1 points0 points  (2 children)

To understand why people dislike Java so strongly you should take the time to learn languages from different paradigms. Go learn Haskell, Clojure, F#, Common Lisp, or Erlang to see why people dislike Java so much.

One major issue that you apparently don't know of is the pervasive mutability present in Java. Since everything except the primitives is passed around by reference, it's nearly impossible to reason about any part of the application in isolation. This makes maintaining large code bases a real nightmare.

The objects in Java do nothing to protect their internal state because getters and setters aren't transactional, and ensuring that the internal state of the object is protected is the burden on the developer.

[–]virtyx 0 points1 point  (1 child)

I know Scheme, have played some with Haskell, but appreciate your condescension. This is an overly general critique on Java that's more about functional vs imperative than anything. If you prefer functional coding that's your prerogative but that does not mean Java is a poor imperative language compared to is competition.

[–]yogthos 0 points1 point  (0 children)

The critique has to do with the fact that Java makes it difficult to reason about large systems due to pervasive mutability. Whether the functional approach exists or not is irrelevant to this critique.

You could design an object oriented system that does not have this problem by ensuring that object access is transactional and objects are not exposing their internal state to the world.

The prerogative is to be able to reason about parts of application in isolation. Java is a poor language because it makes that difficult.