Hacker News new | past | comments | ask | show | jobs | submit login
Java is Dead; Long Live Python (elharo.com)
74 points by Anon84 on Dec 10, 2008 | hide | past | favorite | 62 comments



I read an article on slashdot about eight years ago (antitrust trial era after the first major ruling against) that Microsoft was dead. This reminds me of that. I'd like to believe but this guy make a poor case.

Java is everywhere, and the VM is high performance. Its library range is the best, except for C in some settings. The operating system wars are long over and the language ones are becoming irrelevant - it's about VMs now and JVM is a strong contender. One of the links off here: http://www.malhar.net/sriram/kilim/ show it nuking erlang under high loads for similar concurency patterns.

I wish it were dead. I've moved myself out of the core development team at work in order to avoid dealing with the frustrating lethargy of developing with it. What development I now do is tooling which I do entirely in python, using django, web2py and base libraries when I need web stuff. Python allows me to prorgam with all the power of the unix platform even though my C is weak and unpracticed.

But Java still has outright strengths. When support issues come up for the main product our java source code is very readable, the team thrives in spite of being distributed, the product is stable, those customers who need library compatibility with us can get it with Java. Some of the python libraries are in the lead across the board, but others are weak. Nothing in the python world comes close to cayanne for combining simplicity and power for object relational modeling (most of the offerings are less powerful and more difficult to install, sqlalchemy is extremely inaccessible).

I'm expecting the classy rollout of Python 3 to kill off the other mainstream scripting languages. But it still has large flaws. Twisted is magnificent, but if you need to do threading python stinks even more than standard java. Also, the 'self' problem and syntactic separations that prevent you from creating functions inline point to a weaknses in the settlement. I think iolanguage is the next step in the right direction. There are some areas I don't think even that could challenge Java though - java wins when you have teams working on a project.


You misunderstand the technical meaning of the jargon term dead. In a discussion like this one dead means in stasis.

It certainly does not mean "dead" as in "not being used". Such a term -- let's call it "the True Death" -- would be nigh-useless in a discussion of computer languages, because very few successful languages reach that state. The code doesn't rot. COBOL lives. FORTRAN most definitely lives. Lisp is older than everything and it is very much alive. Pascal might be an exception: You really never hear of anyone writing new Pascal code. Perhaps it is approaching the True Death. Or perhaps some of the more obscure assembly languages of decades past are Truly Dead. But I wouldn't be surprised if they weren't. There are people writing Atari 2600 assembly language right now. Maybe even more than there were in 1982.

The discussion is complicated by the evolution of languages and the desire to rehabilitate old trademarks. Applesoft BASIC is far closer to the True Death than "Basic" is, because Microsoft stole the name and applied it to a rather different creature. "Lisp" cannot die, but you could point to one of the thousand dead dialects of Lisp and call that dialect a "Truly Dead language". Eventually you get trapped in a pointless semantic debate, like the one you flirt with here: If the JVM is alive but Java is dead, is Java alive?

At any rate, now that we've established what we mean: Yeah, Java is arguably "dead". It has reached an equilibrium where anything you might do to change the design creates more problems than it solves: It breaks back compatibility, or it creates an impenetrably complex monster that only a relatively small number of people can understand. It's also very easy to argue that Microsoft Windows "died" around the release of Windows XP: Since then, the company has devoted uncounted thousands of programmer-hours to create an OS that much of the market has concluded is no improvement over XP. That's what static equilibrium looks like.

But this doesn't mean that we won't have Java and Windows to complain about for years and years, if not decades and decades. In software the dead do not truly die. They just stalk the earth as vampires. (I originally wanted to say "zombies", but that's wrong. Zombies are slow and stupid. Undead languages, on the other hand, are often amazingly competent and smart despite being technically dead. They've got a lot of experience.)


The two variables are:

* Current usage - how much of it is deployed.

* Growth - how much it's being used for new projects, worked on, written about, etc...

For instance, Cobol is still fairly widely deployed in some environments, but growth is probably negative, as it's being replaced by Java. Java is very widely used, and is still probably growing, although probably not as much as things like Ruby, which have grown a lot; which is easy when you start from a small base.


I am going to be interviewing at a job where there are New Smalltalk Projects

If dead = in stasis, then computer languages are like popular comic book characters. They may die, but someone will eventually bring them back.


Actually, from a friend who actually specializes in COBOL: the number of lines of COBOL in production use are actually increasing due to regular maintainance.


  <pedantism>
12% of that sentence was the word "actually." In all but the shortest sentences, it's strange to see an adverb as the most common word.

Edit: Thought about this more, and some people almost certainly say "like" more than any other word. (Un)surprisingly, your sentence loses little meaning if the actuallies are replaced with likes, commas optional.

  </pedantism>


s/pedantism/pedantry/


It's a word, just an obsolete one: http://dictionary.reference.com/browse/pedantism


Pascal is not an exception. Do you know what language Skype is written in?


No... Is it Pascal? Because that would be pretty weird. I always assumed it was C++.


At least Windows GUI is written in Delphi, that is Object Pascal.

Edit: also, there are many new Delphi/Pascal projects, just check out http://www.lazarus.freepascal.org/ the "True Death" is highly exaggerated.


I read this as "Java is dead" in the sense that it isn't evolving any more in any useful way.


That's why volcanologists make the distinction between "dormant" and "extinct."


"Java has gone stagnant" makes for a much less punchy headline.


How does it need to evolve? Unlike a lot of languages, they got some things right from the start - Unicode for example.


That's what this article was talking about, and the article the author wrote a few years ago (linked in this article) give even more reasons.


I think the article makes sense. But I don't see why inner classes would have to go in the face of closures - they are simply a nested version of a existing structure - not really a new structure.


re SQLAlchemy: How is it inaccessible? Are you referring to the docs which even after a year of using I find frustrating? What does SQLAlchemy it lack compared to Cayanne?

I'm not trolling. I've only used raw SQL and SQLAlchemy so I'm basically orm blind atm. I'd like to know what I'm missing :) tia


I'm confident that SQLAlchemy has the potential to be the best database abstraction layer out there. However, I found the docs impervious and frustrating. Some of the examples are given in a way that's quite unhelpful - they could be constructed to distinguish the way it works from other assumptions you could make and generally they're not. When things break, the error messages are unhelpful.

I eventually got to the stage where I had a product built on top of it, working, but I still didn't feel like I knew the framework fluently. I've never been in that position before. Frustating, because it means if I do more work on that codebase I'll either have to struggle through again or else throw it away and write on top of something else.

ORM is supposed to be good for nailing the right schema and then abstracting it away without a performance hit. That's what I get with Cayenne. I found the opposite with sqlalchemy - it's more difficult than it would have been for me to have just written the queries inline, or rolled my own simple ORM. I think it's because it's just too thick - unusual for a python framework - usually they're the opposite.

It's been a year since I looked at it so I'm a bit vague above, but I gave it a go for over two years on and off.


I am also confident that SQLAlchemy is the best ORM out there (though I'd like to try LINQ). The documentation has been improving rapidly, you should give the .5 branch a try.

I agree that it needs to be improved, but that's largely because the product is so powerful and complex, writing sufficient documentation is a herculean effort in and of itself.


thanks, I agree with you on all your points. I just assumed all ORMs were like that :)


"SQLAlchemy: How is it inaccessible? Are you referring to the docs which even after a year of using I find frustrating? "

If you have significant experience with Hibernate, you can pick up SQLAlchemy very fast. One of my friends wanted to switch from Django ORM to SQLAlchemy but was being frustrated by lack of SA documents. I had him build a couple of throwaway systems (just domain model and databse - no web framework gymnastics - which are very painful in Java) with Hibernate and also read through Martin Fowler's "Enterprise Patterns" book to pick up some of the terminology (e.g:- Unit Of Work). This seemed to work. Just throwing it out there, fwiw.


C++ seems to have survived it's own death, as has C, why, even VB6 has come back for another drink after you're sure you saw it dead in the snow.

Languages don't die till everyone using them is dead. And you better burn the books too, because some hobbyist will come along and resurrect the language if you wait long enough.

So, however stiff it may look, ASM will continue to MOV, we'll continue to see C around, and goto is not going anywhere.


Lame article. One of the strengths of Java is the very conservatism that the author bashes. Generics may have broken backwards compatibility if you opt to use that language feature, but the VM and compiler preserved forward compatibility of all previously-written code, an extremely important and considerate design goal. Just ask all the Python developers who now have to port their 2.x code to run on the V3 engine. And what is the big benefit of that porting effort? "A much saner string processing model based on Unicode." Oh, you mean like the one Java has had since its 1.0 release? This article, like most language-cheerleading flamebait, shows a deep misunderstanding about what has kept Java so popular for so long. Keep breaking compatibility, Pythonistas -- you'll be able to brag about the nimbleness of your language on blogs, and you will see your language continue to be passed over by developers who don't want to periodically rewrite their applications for marginal benefit.


Except that there is no plan to "keep breaking the language", it is a one-time now or never thing.


That's great. Just don't write blog posts trying to convince me that breakage is something that makes Python better than Java when in fact the opposite is true.


I'm glad Python 3.0 has come out, but that's no reason to revive the language war. Every language has it's own strengths, weaknesses, toolkits, frameworks, and developers. Let people use what they want.


The language war is important because deciding on a language for a project is one of the most important decisions. I can only use so many languages myself, so I rely on the ongoing language wars to produce enough discussion for me to figure out what's useful for new projects. So, keep up the language wars!


I'd argue that a good idea, and smart people to execute on it matter more than the language. You can write the same web-app using Cake/PHP, Seam/J2EE, or RoR, and if it's a language/framework you know and like, it'll probably go about the same.

My big issue with language wars is everyone who jumps in pretty much brings their own experience and past projects to the table. It's all anecdotal. It's like asking all your friends what kind of car you should buy.

Even your hardcore gear-head friends will have non-rationally based biases. Audi and BMW makes pretty similar cars in most respects, but you almost always find die-hard Audi fans or die-hard BMW fans who will happily tell you at length why brand A is the best and brand B sucks, when the reality is brands A and B are both pretty good.

My day job is, and has been for 10 years, working with the commercial ATG E-Commerce framework built on J2EE. It's typically implemented by Fortune 500 type companies. There's no equivalent personalization, B2C/B2B commerce, marketing, reporting, etc... framework with the same maturity and proven scalability available in Ruby or Perl or Python or PHP. Does that mean Java is better than Ruby? No, not at all. It means for a certain type of site for a certain type of customer I'd whole heartedly recommend a Java based solution.

Because my day job is spent with Java, I tend to gravitate toward other Java based work in my spare time (I really like the Seam framework from JBoss). I learn things that are applicable back and forth all the time. For me, Java is my preferred language. It doesn't mean it's better or worse than any other language for you or for Tim or whoever. It also doesn't mean it's better or worse for project X, without knowing what project X is.

I haven't seen a language war that wasn't 99% really strong polar opinion based almost exclusively on individual anecdotal experience.


I agree the idea and the people are more important. After that which language you use is still pretty high up there!

You can have an intelligent language argument, and you can learn something even from an unintelligent one. One of the most telling things is, are there languages that you thought were reasonable that nobody even bothers chipping in to defend. Nobody jumps in to advocate C++ for a quick regex-heavy text file manipulation job, or quick webserver development. Nobody jumps in to advocate Python for mobile applications, or for massively parallel programming. Nobody jumps in to advocate Javascript for offline image processing.

Sure, usually the two sides of a language war talk past each other. You can still learn a lot from the talking points.


Some languages have more strengths (or more weaknesses) than others.

If you want to claim that every language is useful and good in its own special way, you may have to accept that COBOL is primarily good at being compatible with old systems based on COBOL, and Pascal is useful mainly for failing to teach computer programming in the 1980s.


How did Pascal fail to teach computer programming in the '80's? (While we're at it, how does a programming language teach at all?) My impression is Pascal got replaced by Java in intro to CS courses.


How does a programming language teach at all?

Well, it doesn't alone however the concepts that are available in a programming language constrain your thought process. Java/Pascal is much more constraining than something like Oz/Scheme.


Teaching languages are stripped down on purpose, so I don't consider that a valid criticism. Pascal was fine for teaching structured programming in its day.


Apple had a lot of Pascal code that worked well. It's still used for a lot of embedded code and there is a strong argument for using a flavor of Pascal when building operating systems.


Every language has it's own strengths, weaknesses, toolkits, frameworks, and developers. Let people use what they want.

I recently visited a webapp thru HN whose developer wrote it in Sleep. http://sleep.dashnine.org/ :)


The google timeline of "java dead" is kinda funny:

http://www.google.com/views?q=java+dead+view%3Atimeline&...

Looks like it has been dead since 1997, and was most dead in 2003, but not by a whole lot.


If you set the time line filter correctly you'll see it is getting deader by the year.

http://www.google.com/views?q=java+dead+view%3Atimeline&...


That's not really true - this is mostly a reflection of there being more and more internet content every year. For example [foo bar] appears to be growing just as much in popularity.

http://www.google.com/views?q=foo+bar+view%3Atimeline&vw...


Thanks. Do you know why the two views are different?

On a related note, I've been growing in popularity at a similar rate.

http://www.google.com/views?q=I+view%3Atimeline&vwdr=Jan...


I thought people knew it. People have been killing since the day it was popular.

This is just like procrastination. You say that it's dead and don't want to use it, "but then what the heck just one last project"


I did not know about this feature. This will come in handy.


The island of Java is getting mixed into the timeline results but cool feature.


Java is still the best programming language for some problems (and I say this as primarily a C++ and Python developer). For some larger-scale projects, performance requirements mean that scripting languages aren't going to cut it. The decision is then between C++ and Java, assuming you are not developing on Windows and you want a reasonably popular language. And between those two, everything you say about how Java sucks is correct, but C++ is arguably worse. In particular the combination of crashes without stack traces and the pain of maintaining separate .c and .h files.


Java is "unpopular" with people who follow the hyped languages.

That's in no way the same as it being dead. It's everywhere.


What's wrong about backward compatibility. When MS had to make lots of changes to .NET 2.0 and broke pretty much every application that was implemented for .NET 1.0 that was a major turn off, so many people found another excuse dismissing MS. So if MS aren't backward compatibility that's bad, but if Python that's good?

Dead languages are actually good, you can extend them while keeping the core stable and extending them with other flavours (e.g. J2ME, Android, JSP) making them easy be adopted to new uses.

BTW Delphi is the most backward compatibility language that I know,


I'm not a Java programmer, at least at the moment. But if what the author writes is accurate about Java keeping all sorts of cruft because Sun doesn't want to break backwards compatibility, then it's interesting to note that one of Java's alleged strengths when it came out was that it kept all the good parts of C and C++, without having to maintain backwards compatibility by keeping the ugly parts.


We use jython in our project (thats python implemented in java). For us it has the advantage that it easily coexists with java.

To put it bluntly: it is a mess. Indentation breaks, if you use different editors. It is terrible not to have a compiler, because we discover so many bugs during runtime. Not to speak of typelessness...

Loop performance of jython is a factor of 50 behind java. If the use of jython taught me one thing it is this: Never use a scripting language for a serious project!!! It is alright for interactive debugging (although its better to write unit tests right from the start).

And - breaking backward compatibility is a serious step towards extinction. Its alright for hackers, but not for projects that build on top of a large and growing codebase.


Wow. That makes me glad that for my own JVM work I stuck with Kawa Scheme: http://ourdoings.com/


I know what's going on behind the scenes, but I still find it funny that an article praising Python just a tiny bit and then bashing Java is surrounded by advertisements for Java books.


Java remains is the most popular programming language out there but the number of Java programmers exceeds the number of jobs for available to those Java programmers. That is not true for c++, Python, Ruby. I know because the career center at the university I work for tells me so. The question is: do you what to be a small fish swimming in a shrinking large pond or a big fish swimming in a growing small pong?


Oh no, it is dead again !?


I think the death of Java is long overdue. It will happen as soon as it loses it corporate backing from Sun (which has its own problems nowadays). Who else can maintain such an ugly beast as the JVM?

A nice point in the article is that many (most?) people that like Java started programming at the time it was created. Younger people think it is too clumsy, older people prefer C or C++. I personally started programming with Pascal and C, and hate the way Java downplays the capacity of its users. C#, although inheriting many of the problems in Java, is a much more interesting and inclusive language.


The article misses the point of backward compatibility for java. Consider a company that has desktop (Swing) applications that were written in the 1.2 or 1.3 era. That company can upgrade to 1.6, and use 1.6 applications alongside those 1.3 applications. However, a java that wasn't backwards compatible would either have to keep some way to identify legacy code and run the old JVM, or they would have to force the new language into the backwards compatible JVM, where cruft has also developed.

BTW, I haven't looked at python 3 yet. How have they adapted to two pythons on the system?


lol

# "python rocks" Says:

5y ago I switched from Java to C and Python, I’ve never regretted the decision.”

# "Jason" Says:

Congrats… 5y from now you will still be jobless.


Orange is dead, long live apple!


Orange is dead, long live apple!


Please rephrase:

"Java is Dead; Long Live the JVM."


Annakin: You mean using this 'Java' and 'C or C++' he could actually . . . command . . . IBM Cell Processors. Bring multi core programming to life?

Chancellor Palpatine: 'Java' and 'C or C++', Annakin, are pathways to many abilities SOME would consider to be . . . UNNATURAL.

Annakin: Is it possible to learn these skills?

Chancellor Palpatine: NOT from a Jedi.

or, if you choose . . .

Annakin: You . . . KNOW 'Java' and 'C'?

Emperor-Imminent Palpatine: If we wish to understand the FULL nature of the coding universe, we must embrace a . . . a LARGER view of hacking Annakin. Not just the DOGMATIC assertions of the Jedi.

Annakin: <Draws his lightsaber> YOU"RE the hacker everyone's been looking for. You represent 'Java'!

Emperor-Imminent Palpatine: Are you going to kill me?

Annakin: I would certainly like to!

Emperor-Imminent Palpatine: Yeeesssss . . . I can FEEL your anger. It gives you FOCUS!


I thought this was funny, I'm surprised it was downmoded so much. Granted it isn't as relevant as other high thoughts expressed on news.yc--such as the history of bagels. But... still funny.


Y!Hacking is serious business, friends.


Am I reading Slashdot?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: