6 ms·
Java is dead, but you'll learn to love it
- jacquesm 17y agoGreat article. Incidentally, that other 'dead' language (Latin) is still very much in use, precisely because it is dead. Being 'dead' (as in no longer under aggressive development) can actually be an advantage. Plenty of branches of industry prefer stability over sexiness any day.
- jriddycuz 17y agoI think that's true in some instances. But if you want to keep the Latin analogy going, you have to acknowledge that Latin stuck around because an entrenched organization continued to use it long after it had lost vulgar relevance. And Latin's high status fooled the intellectuals of the day into thinking that it was the pure, holy tongue, and had undue and sometimes destructive influences on the development of other languages. This happened precisely because people tried to apply the grammatical patterns of Latin to languages that were structurally different. I'm not saying that Java (or Latin, for that matter) doesn't have a place in the future, but I just hope that it doesn't continue to have undue influence on the evolution of programming language and methodologies simply because it is a revered institution.
- jacquesm 17y agoI was actually thinking of the medical profession, but yes, your point is well taken (I take it you refer to the church).
- jriddycuz 17y agoOkay, that analogy makes sense. As a technical and taxonomic language, yeah something really stable like Latin or Greek (also used a lot in medicine) is probably best. And yes, I was referring to the Church. Fortunately, Sun doesn't have that kind of influence or power, even if developers as a group can be quite dogmatic.
- snth 17y agoI wouldn't say that the medical profession uses as a "dead" language that is "no longer under active development". In fact, they invent new words in it all the time.
- jerf 17y ago"but I just hope that it doesn't continue to have undue influence on the evolution of programming language and methodologies simply because it is a revered institution." I would tweak that to "... programming language and methodologies accepted by the mainstream...". Java is already not stopping many very different streams of development from existing at all, but the question is whether anything that isn't Algol-derived can be the next big mainstream language. That syntax is really starting to creak under the load of all the stuff that even C# loads onto it, and the Next Big Enterprise Language really needs to not be that way. (I make no claims as to what it should actually be, though.)
- jriddycuz 17y agoGood point. I don't have a good idea either what the Next Big Enterprise Language should be, but I'll bet that it will not be what it should be. I think an "Enterprise Language" is bound to be disappointing because it's a solution to an ugly problem: "How do we make developers interchangeable?" I guess the rest of us will just continue along doing what we do with whatever tool we need for the job.
- ilyak 17y agoBrilliant developers are interchangeable to some extent - the result is descent every time regardless of who's doing it this time. But I'm afraid they want something different.
- weavejester 17y agoThe problem with using the JVM is that it has been designed around the Java language. This doesn't make it a great fit for languages that don't use Java's object model, or that require functionality like tail call optimisation. It's possible to work around these problems, but for implementing languages, it's less flexible than something like LLVM The advantage with using the JVM is that you get a lot of libraries for free, which may be worth coping with a Java-centric design.
- jacquesm 17y agoThere are actually many 'underwater' efforts at making the JVM play nice with other programming languages besides java. For instance, for java 7 there is supposed to be support for dynamic languages.
- donw 17y agoinvokeDynamic is already part of Java7, via OpenJDK, as of M3. You can see the milestone list here: http://openjdk.java.net/projects/jdk7/milestones/ http://openjdk.java.net/projects/jdk7/milestones/ I've been running M4 on a Debian box for awhile now, and it's surprisingly stable for an 'in-development' product.
- jacquesm 17y agoI'll wait for a bit, we're kind of scared of the bleeding edge :) As soon as it hits the mainstream and people have been testing the hell out of it we'll surely follow though. Second best is good enough for production.
- arohner 17y agoInvoke dynamic is a nice start, but it too is geared towards Ruby/Python style dynamism. It does almost nothing for Clojure.
- megaduck 17y agoTrue, but it's hugely significant as a signal that "the JVM isn't just for Java". Languages like Ruby and Python have large mindshare right now, so InvokeDynamic floated to the top. Clojure will have it's turn. Things like tail recursion are already on the radar. Check out the Da Vinci Machine project for details. http://openjdk.java.net/projects/mlvm/subprojects.html http://openjdk.java.net/projects/mlvm/subprojects.html
- deleted 17y ago[deleted]
- masklinn 17y agoNo it's not. JIL might be, but Java isn't anything for "the next X new programming language" except a curse those languages were created to flee from.
- ninjac0der 17y agoThis is something I keep bringing up with my fellow PHP developers. I like the simplicity of PHP in some respects, however the syntax and various frameworks seem to be constantly evolving around my projects. I have friends who are constantly having to adjust their code to comply with the newest release of CakePHP. I find some syntax (pseudo-)rules and best practices in PHP have changed enough to make it a constant struggle just to keep on top of these changes along with trying to improve my abilities in other areas. I'm all for new features but I'm beginning to grow weary of the time spent staying on top of trendy languages (PHP vs Python or Rails, SVN vs git). I would much rather spend this time learning better security practices along with design and architecture. I would never state that change is bad, I'm merely stating what I now see as a drawback of these constantly evolving languages. ... I really hope I'm not becoming one of those really old dinosaurs who refuse to learn anything new. ;)
- jrockway 17y agoI really hope I'm not becoming one of those really old dinosaurs who refuse to learn anything new. You've recognized PHP's shortcomings, but you haven't switched to a language with solutions to those problems.
- ninjac0der 17y agoYes, only short of touting the new 'best' programming language. Thanks for the demonstration. Name a programming language without horrid drawbacks, I dare you.
- weavejester 17y agoAll programming languages have drawbacks, but PHP has more than its fair share.
- jerf 17y agoDo you know anything other than PHP? If you don't, you are in a bad place. It almost doesn't matter what else you pick up, stop looking for a language without "horrid drawbacks" and pick something up. Anything. Even Java, and it pains me to say that. By the way, specifically PHP isn't important here; the question is really "Do you only know one language?"
- yesimahuman 17y agoI'm doing a lot of python lately...but yesterday I compared one of my python lucene search programs with the java equivalent...and the Java one was considerably faster. Also, the fact that I could write the same program with Scala is enticing. I feel like I am being drawn back to the JVM after pushing it away for so long. It really is an impressive system.
- cema 17y agoJVM not Java. Sounds right!
- req2 17y agoHow does an accelerated (e.g., psyco enabled) version of the python compare? The Java one would probably still win, but an easy two lines may bring them closer to parity.
- mbreese 17y agoDoesn't PyLucene call into normal Java Lucene anyway? If so, why would you expect that the Python version would be faster?
- yesimahuman 17y agoI wouldn't expect it ever. Rapid development not rapid execution. However, I didn't expect the difference in speed to be so large, considering it is calling into the Java lucene.
- mbreese 17y agoThis might be overkill, but would it be possible to setup a mini-Java Lucene process to handle the indexing and queries, and talk to your Python process over a socket? Like I said, overkill, but it could be worth it. I say this being in the same boat: coming from the JVM to Python and looking back at some of the things I'm missing.
- wallflower 17y agoDislike it or hate it, Java is the COBOL of modern times. Java won - it's firmly entrenched in Fortune 500 Enterprise companies.
- cema 17y agoYes, Java is strong. And JVM is good. So, instead of fighting the big guy, a smart way is to coopt it (see Scala, Groovy, Clojure, etc).
- geebee 17y agoI'd much rather use Ruby (with Rails) than Java, and for future learning, I'm interested in Scala. Obviously, the JVM figures heavily into all this, though that isn't the same thing as Java. But still, GWT, Guice and Grails are pretty active and relevant projects. Even if you don't plan to use them (I don't), it's pretty hard to see a language as "dead" when the community still draws this level of talent and innovation.
- 10ren 17y agoSite is dead, and I've learnt that google cache and wayback machine don't have it. EDIT it's not just me http://isitup.org/muckandbrass.com http://isitup.org/muckandbrass.com Mirror anyone?
- cemerick 17y agoNot dead, just resting. The server that hosts that blog only has 2mbit up at the moment. That'll change soon. Check back in a bit? :-)
- akrymski 17y agoWhat I find quite unfair is how everyone compares "lines-of-code" for a Java app vs PHP/Python/Ruby. IMO there's a big difference: A Java IDE like Eclipse probably writes half of the lines of source code for me - the tedious bits that are simply structure/sugar. PHP/Python guys write every single one in vim/e-macs. Perhaps "unnecessary boiler-plate" Java code gets in the way, but yet my IDE hides most of that for me automatically. And most importantly, when I do want to edit that getter - it's right there in my source code for me already. I believe IDEs and compilers should become more powerful, rather than the languages, because you often want to drop down a level of abstraction to improve things. For the record I use java, c#, php, python, etc.
- jrockway 17y agoThis attitude scares me. If the programmer does not need to write the code, it has no business being in the source code. Nobody wants to find all their slightly-modified boilerplate and modify it because the boilerplate generator had a bug. Sane programmers will fix the bug in one place, upgrade the library, and be done with it. The less code to maintain, the better. The less repeated code, the better. This is what many programmers strive for, and why they eschew "my IDE will write it" in favor of more powerful abstractions. Relying on your IDE is like using a shopping cart to carry around a portable generator, tower CPU, and CRT monitor instead of carrying a laptop. It's pretty easy to push around that shopping cart, right, so why bother with a laptop? The laptop doesn't have a 21" screen, after all, so it seems like a total waste of money compared to the shopping-cart-and-50"-TV.
- HeyLaughingBoy 17y agoeschew "my IDE will write it" in favor of more powerful abstractions But he specifically said that this breaks down when you need to pierce the abstraction and he's right. You can often accomplish the same thing by doing the "non-abstracted" code in a lower level language and linking to it, but that's not always convenient or safe. I'm of two minds on this topic. I like the "smarts" of a good IDE that hides stuff that I don't care about. But at the same time, I'm afraid that if it breaks (bug in the IDE or library), I don't have the ability to find the broken part and fix it or work around the problem. This was exactly how I felt when I started playing with WCF.
- deleted 17y ago[deleted]
- fleitz 17y agohttp://isjavadeadyet.com http://isjavadeadyet.com
- jrockway 17y agoHilarious, persuasive, constructive, and insightful. Oh wait, none of those. (And I say this as someone who thinks Java is the second-worst programming language available today.)
- ilyak 17y ago<link rel="alternate" title="Is Perl Dead Yet?" href="/rss.xml" type="application/rss+xml" />