It has always been trendy to make fun of Java, and wax poetic about how superior someone’s language of choice is. The fact of the matter is, whether or not you wish to acknowledge it, more users run Java applications on Linux than any other language1.
In the past few years, I have had the opportunity to code multiple enterprise web applications in any language I chose. I made a few in Symfony (php), Django (python), and recently I used Play (java). All of them were fantastic frameworks and languages in their own respect (the only thing people make fun of more than Java is PHP, again generally baseless).
I have used vim for as long as I can remember, but for the Play project I switched over to Eclipse, and that was also a great IDE. A lot of nice features where it would automated a lot of typing, and I found managing multiple files slightly easier.
Point being the language and the tools around it are there, well tested, and ready for prime time. Given the right coder, they are just as effective as any of the trendy languages, and to dismiss that based on outright false statements on most comment threads is absurd.
Performance: Java in no way, in any application I wrote, was limited by the language or jvm in performance. This is generally affected entirely by the coder, not the language.
Adoption: Java is all over my business, and is the clear leader in the enterprise technology stack2
Tools: Tools for Java are abundant, feature rich, and more than adequate to develop complex projects
Criticisms: The only valid criticism is that Java apps are slow to load up initially, for user apps. I think with the innovation we see with respect to JVM performance improvements (JIT compilation etc)3 continuously make that point not even legitimate, but clearly you can make applications load slowly. With that in mind, I have the ability to write a C app that loads slow also.
This post more than anything is to encourage breaking the mold of the group think, “None of us is as dumb as all of us” mentality. No matter how many points you get on reddit for a snarky comment, those points won’t pay your bills, nor give you respect among legitimate coders.
- http://www.electronista.com/articles/10/05/26/admob.april.2010.study.has.android.near.even/ [↩]
- http://www.forrester.com/rb/Research/of_strategic_languages%2C_javas_adoption_is_highest/q/id/37356/t/2 [↩]
- http://www.h-online.com/open/news/item/Android-s-Dalvik-to-be-JIT-boosted-861870.html [↩]
Related posts:
#1 by JD on May 27, 2010 - 5:39 am
Quote
Very good point…
Not cool any more but it is just amazing the amount of libraries and tools that you can find
#2 by Jesper Jarlskov on May 27, 2010 - 6:15 am
Quote
Sweet.
It’s nice to finally see something other than just random bashing at the others too.
Bashing languages you don’t know how to use seems to be really popular these days.
Jesper Jarlskov
#3 by Jeremy Bicha on May 27, 2010 - 6:51 am
Quote
I’m pretty sure that more Linux users run apps written in C/C++ than Java apps. A majority of Linux users don’t have an Android phone. While I have quite a few programs installed on my computer, none except for the JRE as far as I know are Java apps. And I have several programs written in Python on my computer.
#4 by Bruno Girin on May 27, 2010 - 6:53 am
Quote
Absolutely right! A computer language is a tool to create software and like the physical tools you have in a DIY toolbox, different tools are designed for different jobs. A hammer is not better than a screwdriver, both are best at the job they were designed for and a poor substitute for the other.
A good developer understand this and is able to use different tools to do different jobs.
When it comes to Java, the language itself is designed to solve some of the programming and debugging issues that C++ has, in particular memory management and the dreaded segmentation fault; while being more pragmatic than pure OO languages like Eiffel.
Another aspect of Java that people who have never programmed with it tend to overlook is the huge software API that comes with it. You have a standard API to do virtually everything and some of them are shining examples of excellent OO design. That concept was then taken further with enterprise APIs like JDBC and everything else that is part of JEE. And that’s where Java managed to become the de-facto standard for server side development because it has been a route out of vendor lock-in for a lot of companies. On the other side of the coin, it has enabled smaller companies to create software that were vendor neutral thus enabling them to pitch to a much larger client base.
This is why I’ve always been surprised at the level of Java-bashing in the open source community. For all its faults and quirks, Java has been instrumental in driving vendor locking out of server rooms. 20 years ago, when pitching to a customer, you would never have heard them ask for a vendor neutral solution; now they all do. And that can only be a good thing for open source and the wider IT community.
#5 by Ralf on May 28, 2010 - 5:10 am
Quote
I think people hate Java so much is because of the mandatory teachings of it on college.
It’s one of the few languages everyone is forced to learn. Some people may not like Ruby or C, but few of them will be forced to use it against their will; at least in college.
So with that comes a lot of hate.
I don’t think it’s being popular. I think it is literally some sort of negative energy people need to vent.
As to the language vs the toolchain. You seem to be confusing the advantages of the language with the toolchain. The JVM and the whole java ecosystem is quite completely and powerfull toolchain. But that doesn’t mean we have to like Java. Many of the original authors of the Java language don’t even like their creation these days.
That doesn’t mean Java isn’t a great choice for many projects. It’s just not a very fun choice. It’s extremely verbose and it’s main qualities lay with project management and collaboration.