the blog for developers

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.

You can leave a Reply here. Of course, you should follow me on twitter here.

You can share this post!
Do you want to tell others about this article? Use the social bookmark icons to submit this artice to the service of your choice. Thanks.

About the author: Stephan Schmidt has more than 15 years of internet technology experience and 10 years experience in agile. He was head of development, consultant and CTO and is a speaker, author and blog writer. He specializes in organizing and optimizing software development helping companies by increasing productivity with lean software development and agile methodologies. Want to know more? All views are only his own.
Leave a reply.

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

What people wrote somewhere else:

Additional comments powered by BackType

Guide to CodeMonkeyism

Over the last 4 years I wrote many articles on this blog. To make it easier for you to find the relevant ones, I've organized them into topics.

Top 10

6 reasons why my VC funded startup did fail

Go Ahead: Next Generation Java Programming Style

Java Interview questions: Write a String Reverser

The dark side of NoSQL

7 Bad Signs not to Work for a Software Company or Startup

Is Java dead?

Scala vs. Clojure

Never, never, never use String in Java

No future for functional programming in 2008 – Scala, F# and Nu

Clojure vs Scala, Part 2

Java Developer

Is Java Dead?

Go Ahead: Next Generation Java Programming Style

Be careful with magical code

All variables in Java must be final

Never, never, never use String in Java

Bending Java: More readable code with methods that do nothing?

NoSQL Guy

NoSQL: The Dawn of Polyglot Persistence

The dark side of NoSQL

Essential storage tradeoff: Simple Reads vs. Simple Writes

Sharding destroys the goals of your relational database

The unholy legacy of databases

Startup/CTO

Development Dream Teams

6 reasons why my VC funded startup did fail

American vs. European style of Software Development

12 Things to Reduce Your Lead Time and Time to Market

The high cost of overhead when working in parallel

Essential storage tradeoff: Simple Reads vs. Simple Writes

Job Seeker

Another Good (Java) Interview Question

7 Bad Signs not to Work for a Software Company or Startup

Java Interview questions: Write a String Reverser (and use Recursion!)

Java Interview questions: Multiple Inheritance

As a Manager: What I value in developers

Top 10 Tips (+1) to Get a Pay Raise

Agilist

What Developers Need to Know About Agile

5 Practices Better to Change in Your Scrum Implementation

Scrum is not about engineering practices

ScrumMaster and ZenMaster: The joke of certification

What is Trans-Scrum?