

Why everybody love/hate Java? - ronbeltran


======
latch
It's too verbose, it relies on DI to be testable, it has a weird type system
(Integer vs int), the generic support is superficial, it lacks lambdas,
releases are slow, it lacks a good web framework (yes, I've used play), some
of it's behavior (checked exceptions, package-directory matching) are failed
experiments.

Essentially, it hasn't evolved the way it probably should have. I am no fan of
Microsoft, but, if you're going to have a general-purpose class-based static
language using C-like syntax, C# is now as far ahead of Java as mutants are
ahead of humans.

Also, there's a stigma attached to Java: code is over-architected, slow and
eats memory like crazy. My experience certainly leads me to believe that this
is true, though it seems to say a lot more about Java developers than Java
itself.

------
warrick
Pure Hate:

1\. Division of primitive datatypes and objects is ungodly annoying.

2\. System.arraycopy(), where is the camelCase Java standards fascists?

3\. .length vs .size() really, why does a primitive have an attribute anyways?

4\. Date, Time, Calendar are a colossal cluster-f __* unless your favorite
word is Deprecated.

5\. System.out.println, this is one of the most common output and debugging
methods, why is it 18 characters? NO, static imports don't mitigate the
idiocy.

6\. HashMap<String,String> map = new HashMap<String,String>(), seem repetitive
to anyone?

7\. No unsigned data types?

8\. Everything has to be a class.

9\. Anonymous inner classes are no alternative to lambdas.

10\. Generics are broken and Type Erasure for backwards compatibility is
simply ridiculous.

11\. No operator overloading?

Besides all these petty annoyances Java isn't fun to code, period. If you
think it is you should have a go with Python or better yet Ruby.

IMHO Java suffers from two fundamental impairments:

    
    
      1. It is too easy.
    
      2. It is an enterprise programming language.
    
    

Because it is so easy the community is inundated with nonsense. Because it is
burdened by the expectation of massive enterprises it can never change and
therefore it can never improve.

~~~
spicyj
Java 7 fixes 6:

    
    
      HashMap<String, String> map = new HashMap<>();
    

I believe that it has lambdas as well.

~~~
warrick
That declaration has an unchecked conversion which generates a compiler
warning.

No, their are no lambdas in Java.

------
genbattle
The huge upside/downside for me is the sheer power of Java.

It has a huge amount of capability and speed, and it forces you into a very
structured programming model that works well for large projects. The same
applies to eclipse.

But for small projects it really is a ten ton hammer. The overhead of setting
up full class hierarchies, GUIs, etc. for even the simplest application is
huge. Again, the same more or less applies to eclipse.

------
CyberFonic
Love: Eclipse, libraries, garbage collection, run anywhere

Hate: Eclipse, libraries, Oracle, debug everywhere, accidental complexity, etc

Depending on your background and the environments you use, your experience may
vary ... Greatly !

------
traveldotto1
There is no reason to love or hate a language. Every language has its
strengths and weaknesses. C/C++ has its performance advantage but may require
more skills and training. Php and Python is simple and fun, but you can't
really use Php to write a search index. Java is somewhere in between, but the
beauty of Java is its proclaimed "write once, at least test everywhere", which
allows it to build up a large developer community very quickly. But that is
also the downside of Java for its portability, and that is why many platform
has to customize Java for speed such as IBM.

------
dlitz
It's too damn slow and chews up way too much memory unless you're writing a
single, long-running, multithreaded process. So, it forces you to write all
applications as single, long-running, multithreaded processes.

Memory-mapped shared libraries? No. Copy-on-write fork()? No. Memory
protection? Basically, no. Can be reasonably used to implement ls(1)? No.

Another reason why I hate Java is that there are going to be at least 3 people
who reply to this saying that Java isn't slow.

------
dack
+1 Type safe, autocomplete let me write code quickly.

-1 Has lots of boilerplate that requires an IDE to stay sane

+1 Pretty fast, good JVM

-1 encouragement from the Java community to write slow code

+1 Easy-to-understand code through interfaces

-1 Unnecessary interfaces and failing unit tests (for stupid reasons) cancels out productivity increases

------
ekm2
I used to like Java until i took a data structures and Algorithms class in
that language.The syntax was terribly verbose and totally clouded my
understanding of the course.After end of semester exams,i switched to python,C
and C++.I have no plans of going back such an ugly language.

------
Sato
free from hardware details / disconnect from hardware details

and, JNI is like an affair

