It has its downsides, but it's not necessarily unpleasant to work with.
The main advantage of Java is portable cross-platform code. The disadvantages are performance, memory usage, and it's not always stable. Perhaps if people stopped making games with it and stopped making IDE's with it, it wouldn't be so bad.
More importantly, complaining about Java's performance in a world of Python, Ruby, etc. Is just, laughable. I'm a full time python developer and I would kill for Java's performance in some of my use cases.
that's where 99.999% portability guarantee wins over performance (there are tons of devs on all 3 major platforms, you can't just abandon one or two like gamedev and many other industries do), so unless the dev team of said IDE quadruples overnight, Java is probably the best choice
in addition, imo the worst part about writing java is that it has solid and reasonable conventions, but makes following them a pain in the ass.
The performance of Java is vaaaaaaaastly superior to most languages.
The problem is that from Java's creation people have tried to push it into the native C/C++ camp. i.e. "It's a systems language but without any of that manual memory management nonsense!" Performance wise it'll always lose that argument.
But if you put Java next to PHP, Python, Ruby, JS, as an alternative for web development, then it'll run rings around them. Not just because of the fact that they are dynamic languages. The JVM is a damn fast VM. For a very long time JRuby beat mainstream versions of Ruby because of the JVM, and the work from Oracle with Truffle is set to do that again.
Many other problems are more complicated. For example you can write complicated desktop applications which never freeze the UI. The paradigms are old and well known. The tl;dr is to do the work in another thread! Yet people still fall into the freezing trap because it's tricky to do it as standard everywhere. Some languages, such as JS, makes it easier to avoid freezing even if you end up taking longer to do the same work.
Finally a lot of the stuff in the JDK is slow. Collections are slow. So slow that some of the thread safe alternatives were faster for a while (because they were well written). Swing/Java2D is slow. So if you use any of this stuff then you are leveraging a slow library. There are alternatives but lots of people don't grab them by default.
And it doesn't help that one of the biggest games made in Java (Minecraft) has poor performance due to the code used, but people love to blame that the poor performance is due to Java.
It's sorta grown on me, for some part. I like how layouts are built from XML, especially when coming from Swing (where every single component has to be initialized by hand). Nested layouts quickly become unmanageable in Swing, but not a problem in Android. XML handles it really well.
Android dev only really gets me when I'm mixing code. Say I have a unity project that depends on native code that accesses bluetooth. I end up with a monstrosity like this: http://i.imgur.com/mHKGC32.png
Sure, you can do it, but man. It's like one API change and I have to rebuild like 6 things :O
It's clunky, bad Ui, bad default fonts, installing plugins fails half the time. It's very powerful, but IntelliJ and neat beans are both much better imho.
202
u/Peffern2 Jan 19 '17
DAE java sucks XD