Code Monkeyism

Programming is hard by Stephan Schmidt

There will be no next Java

Reading the post at contekst.org about “Why did Java succeed ?” I thought to myself, there will be no next Java. The post mentions some ideas people have about why Java succeeded. Copying Smalltalk, the J2EE standard, Java is mediocre (Paul Graham is so funny sometimes), WORA or Eclipse.

My comments on why did Java really succeed?
1.) Java worked
2.) Java was good enough
3.) There was a sufficient complete JDK not something buggy like Delphi, something incomplete like STL, something alpha like CPAN or nothing like ST. In the end, programmers want to get things done. The easier the better. Language syntax is only a small part of that equation (Hello Anders! Hello Betrand! Hello Bjarne!). And implementing OO the wrong way doesn’t matter at all.
4.) Paul Graham is most often wrong
5.) It was free

Coming to the conclusion: Face it people, there will be no next Java. Either the industry changes disruptly and a new language will rise with the change or Java - the plattform and the language - will absorb (as was proven by the ecosphere) the best ideas and adopt.

Thanks for listening.

About the author: Stephan Schmidt is currently a team manager at ImmobilienScout24 in Berlin. Stephan has been working as a head of development and CTO. He has used a lot of different technologies in the last 20 years including Java, Rails and Python. Stephans main field of interest is maintainablity and productivity in software development. Want to know more? All views are only his own.

If you did like this article but you don't want to subscribe to new articles with your reader, you can follow me on Twitter or subscribe to new posts with your email:

Comments

Eh; no language retains its dominance forever. There will be another Java, just as there was another C, even if I don’t think anyone can accurately predict when. It will take disruptive change, but disruption is already upon us in several ways: manycore concurrency, media, rapid development. I’m not yet sure that any of these will mark the beginning of the end, but I’m not sure that they won’t either.

I’m not sure if it was you, but if it was, thanks for putting the radeox site back up, I was starting to get worried since a bunch of our stuff uses it. :)

stephan

@Steven: Yes it was me.

@Geoffrey: C solved different problems than Java and wasn’t fit for the internet, hence noone uses it. The same with Delphi, their ‘CGI’ stuff was horrible.

I guess Java works fine for concurrency, it may be not the best solution (Erlang!) but works good enough. That’s no disruption. Rapid development - well there isn’t that much difference between Rails and Seam :-)

I’m sure COBOL programmers thought exactly the same thing in the 80’s.

stephan

@Charles:

First, COBOL hadn’t the Java ecosphere and no JCP, it wasn’t able to absorb ideas and adapt. Second, COBOL is still there where it belonged - in business applications. Then there came disruptive changes, the end of the mainframe. With the arrival of desktop computers and unix there was a new language rising which solved the new problems better than COBOL. This language was C.

I didn’t say there will be no new language after Java.

I said there will be no new Java. Which means not a new language which fills the gap for server side internet wev applications for enterprises.

jc

Unfortunately I’ll only ever be satisfied with the “Next Java”. I was happy with Java until it became the “Java” and then I went looking for the next Java.

pico

Yeah, just like no one will ever need more than 640K.

Java succeeded for these reasons:

1. There’s only one way to do it in Java. There isn’t a lot of flourish or syntactic sugar.
2. Because it’s so straightforward, companies like it because it makes engineers “pluggable” .
3. It had a big company with a huge marketing machine behind it (which companies also liked).
4. XML.

I use Java. It’s a decent language. It’s great in a corporate environment because its syntax is so straightforward and simple that everyone does it pretty much the same way. Java programmers can be swapped out with relative ease on a project. These days, Idea and Eclipse can do 80% of your coding for you, and XML specifications for J2EE, Spring, and Hibernate are pretty restrictive–how creative can you really be?

And would any of us be using Java if it hadn’t been for Sun? You probably would have never heard of it. What version of Java did you start with? Probably 1.1. If it’s so great, why start so late. 1.0 was out for quite a while. I tried it. Applets sucked, wasn’t good for anything else, so I stuck with Perl and FastCGI. But that big booth at InternetWorld in LA, and Corel rewriting WordPerfect as an applet? Very impressive, and I was young and impressionable.

But I think the most significant reason for Java’s success, and the primary indicator that Java is far from a perfect language is XML. If you took XML away from Java, you’d be doing a lot more work to get applications out the door. Other languages use XML for configuration files and documents, but XML in Javaland has to be more. It becomes a means to write domain specific languages around your business cases, to simplify the tedious in Java. “Languages” like Ant, Spring, J2EE are all required to get your web app working. You have to use XML to build these little languages to augment what’s missing in Java. Probably 60-80% of any Java web application these days is the XML glue that is holding it together: web.xml, spring.xml, ejb.xml, build.xml, project.xml, hibernate.xml, etc.

With a bit of Java arrogance and shortsightedness, you also assume that server side web apps in the enterprise will always be browser based and always have the same hardware and networking requirements. That the web will continue to work as it has for the past ten years. Sure Java will be around for a long time, just like COBOL is still around. But that doesn’t mean that new languages and tools won’t rise up to fill voids in the server-side the same way Java did. .NET and Ruby on Rails seem to be taking a nice chunk out of Java’s armor these days. I know lots of enterprises using these tools rather than pure Java.

Java is just another language that currently fills a role in some web-based situations.

stephan

Well I’ve been developing web applications since the beginning of the 90s, with lots of crude tools like Delphi and C. Because there were no web frameworks, just the bare bone CGI interface, we had to do lots on our own. Then came Perl, which with the first CGI interface was better than C but a pain. Then the first blessing: Python! A great and easy CGI interface. After some time we moved to Java, partly because of the performance, partly because of the JDK.

“What version of Java did you start with? Probably 1.1.”

I used 1.0, from the beginning. Applets were a pain and I was sure they didn’t take of. Some people wrote their own CGI interface for Java - noone talks about them anymore. So we started big time Java development with the first servlet container (jigsaw?). The JDK even with 1.1 (1.0) was so much better than other solutions for other languages. The JDK just felt bug free and complete. What did really impress me though back then was WebObjects from NeXT. An eye opener and the grand father of all frameworks which came after.

“With a bit of Java arrogance and shortsightedness, you also assume that server side web apps in the enterprise will always be browser based and always have the same hardware and networking requirements. [...] That the web will continue to work as it has for the past ten years.”

While I wrote: “Either the industry changes disruptly and a new language will rise with the change or Java - the plattform and the language - will absorb (as was proven by the ecosphere) the best ideas and adopt.”

Perhaps it’s best you do the diff yourself and see that your comment is a strawman argument. I didn’t say that.

“With a bit of Java arrogance and shortsightedness, …”

I’ve been programming for 25 years now, in more than 30 languages, I feel I’m prepared to change and after 25 years I don’t show much shortsightedness anymore.

“Ruby on Rails” is still irrelavant and the hype cycle seems to ebb off. Not a winner. I did a lot of Ruby in the 90s and did some Rails projects. Nice stuff but in the end it has too many problems. Some companies I know people responsible for choosing the technology for development have problems with scaling Rails and maintaining the code. We’ll see how that plays out.

And it’s probably Grails - running on the VM and the Java plattform - which gains massive momentum. Where ever I look there are Grails projects starting. I’ve started my own ;-)

Peace
-stephan

stephan

“If you took XML away from Java, you’d be doing a lot more work to get applications out the door.”

I have been using PicoContainer and Spring without any XML. I use Gant and Guice, both without XML. JPA is usable without XML and my current favorite is Grails - without XML. When doing Java web stuff next time I’m going to use Seam - without XML.

“Java is just another language that currently fills a role in some web-based situations.”

Did I say anything else?

Peace
-stephan

good one!

I agree to the first three point to 100%!

I’m not sure if point five is a critical one.

And to point four: as it’s often said here in germany: ‘Wer ist Paul’? ;o)

Greetings

Mario

When I was a kid my mom always told me not to thrust people that would come with claims that was “absolute truths”…. ;)
There IS a cure you know, right…?

stephan

@Mario: Point five was quite important for us back then. We were used to Delphi which if my memory serves me right costed $3000 per enterprise developer license, $1500 for each upgrade. Noone could sell IDEs today for that price. Open source and - yes - free Java have helped driving prices down.

@Thomas: Zen finds absolute truths amusing.

Nicolas Santa

There is a new JAVA. Ruby. Thanks

stephan

@Nicolas: As Ruby is older than Java, didn’t take off, the Rails hype is over and there are maintenance problems for most Rails app on the horizon I beg to disagree.

Peace
-stephan

Nat

Did you take a look at seaside as a web framework?

Well, Smalltalk was born in the 60s and has features that Java is still dreaming of… I don’t say it’s a better language, there’s no better languages cos each of them is used for different stuff, the discussion about which is the best language only has a valid argument involving the usage of your fists and other convincing instruments.

But if you want object orientation and easy interfaces… I think Smalltalk takes the whole pie :)

stephan

@Nat: The idea of web continuations which Seaside brought into web development are a great idea. Nevertheless I don’t think it will take off. But my Smalltalk/Squeak/Seaside knowledge is quite limited and dated :-)

Leave a Reply