Friday, November 21, 2008

Java Is Dead

These days, I have the feeling that Java is dead. Even if, or maybe because I have used Java so much in the past 10 years, I have this feeling.

In 1998 Java was revolutionary. It was a very simple to learn object oriented language with modern concepts and familiar syntax. Furthermore the standard library had neat features like internet networking and it could be integrated in the browser. All this at a time when the internet just started to be popular.

Today we have very few evolutions, a huge library (with lots of useful and useless stuff in). Some good stuff has been added like concurrent utils, but not many things changed overall. Open source languages like Python are much more dynamic in their library maintenance. The language does not seem to provide anything interesting when compared to the alternatives, like .NET or even with the "scripting languages" like Python. In the browser it has failed where Flash has succeeded.

Lots of things are too complicated to build in Java when compared to other languages. I feel Swing, database access (JDBC), JSP could be vastly improved to help developer productivity. Why is ORM less important in the Microsoft world? because the standard database layer of Microsoft is not as crappy as JDBC. Why don't they have tons of web frameworks? because ASP.NET is decent, does more than JSP and does not get too much in your way at the same time. Microsoft finds the right balance between library complexity, power and developer friendlyness.

Browser applications are less popular, and desktop apps integrated to a "3-tier" architecture more popular. Java on the desktop is really weak. Give me .NET or QT anytime. There are still no big Java desktop apps on everyday people desktops except Eclipse (IBM has really done an impressive job with it). It is almost 2009 and I still have no Java app except the dev environment for my Java programmer job on my Linux desktop. I know that in my everyday job, I would be more productive with a .NET environment, just because Java sucks so much on the client side. Borland Delphi was more productive 10 years ago!

Java on the Mobile is a failure. Almost nobody uses it and is plagged with compatibility problems. However there is hope here, with Android from Google.

The only advantage of Java compared to .NET is that it is free. You have Tomcat, Glassfish for free. You can deploy on Linux. If you are a poor developer that's quite an advantage. But most company pay for Java, they want the "security" of an IBM and they deploy on Windows machines. It does not make sense, those companies should buy the better Microsoft stack instead of IBM. And I am sure more and more will. Vista might be the big Microsoft failure, I am sure it will be fixed with Windows 7, and Microsoft dev tools are just getting better and better.

Scala, Groovy, JRuby don't fix anything, they are just toy programming languages and are based on the JVM, on the Java libraries. In the lot, Scala does better because it has the concept of library, and they do try to build more interesting libraries than Sun. But it is too complex to be ever popular.

All the open source libraries in Java are fine but who needs to choose between 20 web frameworks, 5 loggers, etc.. There are very few really useful ones: hibernate, lucene, jmeter, junit.

If Java has no logical place in most companies, if it does not provide anything more than the alternatives, and is very weak on the desktop, what's left to Java? the code base and the developers? That's about it. It sounds a lot like Cobol in the early 90s. Java is dead.

21 comments:

Neil's netbeans stuff said...

Are you sure ?

Believe me I came to Java from a VB6 background a couple of years ago and I wish, oh how I wish I had discovered Java along long time ago.

Dont give up on Java now my friend it has a long way to go yet I am sure. I for one wouldnt use anything else now.

Abeer Dey said...

Java/J2EE isn't dead yet but it might become a niche language in the future like C/C++ (in the embedded space) for developing flexible and optimal big business applications. It appears to be overkill for smaller enterprise applications for which .Net and LAMP/RoR seem more appropriate as of now.

I don't think Java/J2ME is a failure in the mobile space at all. I don't see any other format in which applications are prevalent across brands, models and operating environments. Of course it can be argued that there's not much to earn in mobile apps since most of them are free and they in turn drive down the profit margin for those apps that are actually retailed! But then that's true for any platform for mobile apps, not just Java.

Nacho Coloma said...
This comment has been removed by the author.
javanus said...

Hi,

I have developed my application in Oracle Forms, PowerBuilder and VB.

Java is much better then vb. I liked datawindow object in PB, I have not found something similar in java. Oracle forms are useful only for "ugly" applications...

Regards,
Javanus blog
www.javanus.com/blog

Fabien said...

To Nacho Coloma: GXP is fine but is not Java specific. And my point was even if you do have some ok web frameworks (Stripes, Struts2, Tapestry5), they are less important today than they were a few years ago and are nothing revolutionary compared to ASP.NET.

To Neil and Javanus: VB6 was not very good. And at that time Borland was reigning in the MS world. Today lots has changed, .NET is very good.

Peter Lawrey said...

Have a look at google trends for the languages you mentioned.
http://www.google.com/trends?q=java%2CScala%2C+Groovy%2C+JRuby
You can see Java is in decline, possibly as there is more support in your IDEs. But the other language, while more exciting, are not clearly going to dominate.

Anonymous said...

I am not a Java programmer at all and even I recognize this post and most of the comments as uninformed garbage.

Java become a niche language like C? Java and C make up the top two most used language!

Google trends shows Java declining against Ruby, et al,? Don't you know how to read charts?!

This post is beyond dumb.

Wiki (ev)Angel(ist) said...

Java is dead? You forget in the big java applications SAP-stuff for example. This alone will help people for Java jobs a long time.

Also, quality of java desktop applications is often crapy, but sometimes great. Try TVBrowser :)

And finally, to think java is dying is as limited as telling this for C++. Or is KDE a dead project? What language is used to develop your favorite browser?

Abeer said...

C++ is a niche language in that it is used to develop products, not custom business applications. Products are niche. Just check job ads and see how many C++ jobs you come up with v/s Java jobs. Similarly, I feel Java might become a niche in the future because it is used for big business applications which aren't that many in numbers.

Deniz said...

Lots of big companies like, IBM, Oracle etc. have heavy investments in Java. IBM and several other companies are pushing java to Real-Time world and Java gaining importance in Real-Time domain together with linux rt. In my country Java is used in most of the e-government and military projects. And it's usage is still increasing.

Anonymous said...

Don't worry. Java is not dead. It is still most popular programming language.
I believe that C++ & .NET will die before Java.

smackyou said...

hey guys. Guess what springsource.org is using to program their JAVA FRAMEWORK website? PHP. Yep. even the people who promote java are using an entirely different language. Drupal and PHPBB are the antitheses of java and j2ee.

Guess what else? The grails project, which claims to make web development easier and is based on spring framework (and bought out by Springsource) ALSO IS USING PHP FOR THEIR SITE.

What the heck? PHP is older than Java. People who claim Java is good are using an older technology. It's like I decide to drive a used 2001 civic instead of buying a crappy Ford F150 gas guzzler? Oh wait. look at America's car industry now. Full of "i need a heavy duty car for my unheavy duty lifestyle". Hrm. Can anyone see how similar this is?

How damning can this be?
But wait, there's more. An internal memo from a SUN employee discourages the use of Java for internal web projects.

Many of the banks which went belly up were using Java. Do you think the banks which will eventually take their place will say "YEA YEA I NEED JAVA TO BUILD MY BANKING SITE YEA!!!!". No way. People learned that EJB and Java Enterprise ANYTHING is garbage and time consuming.

Wake up you Sheep University Network citizens. Stop buying the enterprise crap. J2ee is on life support. It's dying.

smackyou said...

BTW, C++ won't die. The computer/console gaming industry which is as big as the movie industry in revenue (maybe 2 years ago i heard) will never ever abandon directx (yes windows controls a lot of gaming. there's a reason why it's called wintendo by linux fanboys) unless there's some gigantic natural/unnatural global catastrophe or holocaust that wipes out more than half of the world's population or something.you can even use c/c++ from php inline etc.
c/c++ dying before Java. HA.

Anonymous said...

HAHA SUN was bought out. They are a failure of a company. Full of hype and bloated up shitware. GOOD BYE GOOD RIDDANCE. The debate is OVER.

Anonymous said...

Reuters News Nov 28 2007

Popularity of .NET is Grinding Java's Market Share, Finds Info-Tech Research Group

"Info-Tech's research identified that almost half (49 per cent) of allenterprises focus primarily on .NET with an additional 12 per cent focusedexclusively on .NET. That is in comparison to only 20 per cent of enterprisesthat focus primarily on Java with a mere additional 3 per cent thatstandardize solely on it."


Dead as COBOL.

Max said...

I've been using Java since 1996. In finally decided to get out of it. It's just too painful to develop in. The mishmash of frameworks you need to configure a web application is a complete nightmare. What's worse is everyone uses a different combination. So just when you get a handle on Spring MVC with Ant, log4j, hibernate, EJB, Eclipse, and Tomcat, the next client will be using Struts, Maven, Sun logger, JDBC, Netbeans, and Weblogic. Or some other combo. It takes an awful lot of xml to do very simple things.

Max said...

ps. The other thing is that Java skills are not valued in the market place. A solid knowledge of APIs frameworks, tools, OOAD, agile, etc. can take years to develop. But hiring managers don't know the difference. Hundreds of thousands of Java developers are pouring out of universities every year. It's become the programming equivalent of Html. Remember back in the day... why should I pay for a web site? My friend's teenage daughter learnt Html at school and she says she'll make me one for free. etc. etc.

Anonymous said...

Hello my friend,
right on, everything you said.
ive invested a lot of time/effort/money into java and have to tell you, agree on all the things you said.

as a programming language, its fine, but as a framework, for serious enterprise development, Java programming language is not enough, you need JSP, Servlet, MVC web framework, more than dozen to chose from, you need ORM, Hibernate, Oracle has another product, iBATIS, Spring framework, look at Apache, there are 4-5 open source projects working on same issues. EJB and JSF, JBOSS SEAMS framework, you name it, dozens of testing frameworks ... and all these technology evolve in different direction, and you as a developer have to keep yourself uptodated. how can you keep uptodate with all these details, and the opensource framework of choice is different for each company, ... its insane ! and developers are not payed as much as they deserve.... right on, wish you best of luck

Anonymous said...

"Java Will Die" should be interpreted int he sense that its no longer the "hot/trendy" technology. developers will continue finding java related jobs, as there are many COBOL job posting these days.
but remember, Microsoft COM, CORBA, they are all, well almost on life support, Java is headed toward the same path.

Oksval II Sameie said...

Compare .NET (C#) with Java, php....

In practice you have to program on one platform (Microsoft) with C#. But if wou want more freedom and flexiblity to support Linux, Unix, apple...hell I schoose java...

Leeroy Jenkins said...

Java is only dead to those who gave up on it and/or are ignorant of reality.