Slashdot Mirror


The Struggle To Keep Java Relevant

snydeq writes "Fatal Exception's Neil McAllister questions Oracle's ability to revive interest in Java in the wake of Oracle VP Jeet Kaul's announcement at EclipseCon that he would 'like to see people with piercings doing Java programming.' 'If Kaul is hoping Java will once again attract youthful, cutting-edge developers, as it did when it debuted in 1995, [Kaul] may be in for a long wait,' McAllister writes. 'Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol.' And, as McAllister sees it, 'Nothing screams "get off my lawn" like a language controlled by Oracle, the world's largest enterprise software vendor. The chances that Java can attract the mohawks-and-tattoos set today seem slimmer than ever.'"

117 of 667 comments (clear)

  1. Groovy by goombah99 · · Score: 2, Interesting

    THe thing that makes me think Java has a huge path forward is groovy.

    in theory groovy has all the advantage python has and more. Plus unlike python it has a path forward to a statically typed quasi compiled and generally close-to-c speed when you need it without much effort.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Groovy by Jurily · · Score: 2, Informative

      Java got drowned in four letter acronyms on top of yet another layer of XML. I say let it die.

    2. Re:Groovy by FlyingGuy · · Score: 2, Insightful

      With syntax like this:

      amPM = Calendar.getInstance().get(Calendar.AM_PM)

      No thanks.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    3. Re:Groovy by simoncpu+was+here · · Score: 4, Funny

      I was about to mod you funny when I realized that "groovy" is a programming language, not something that describes Java.

      Oh well, I also realized that I'm starting to grow my own lawn...

    4. Re:Groovy by Bill,+Shooter+of+Bul · · Score: 2, Informative

      That's not an advantage to python. Java is nearly as fast as c, easier to write, no chance for manual memory screw ups. I prefer python, myself, but not for your reasons.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    5. Re:Groovy by sjames · · Score: 3, Interesting

      Because C is the new assembly language! It has a huge existing codebase. I like having the option of implementing the performance critical bits in C if it proves necessary (often, it doesn't). The way C is called from another language also tells me a lot about the underlying structure of that language.

    6. Re:Groovy by IntlHarvester · · Score: 4, Insightful

      The history of Java is very instructive for any aspiring professional coder.

      Management: Damn these irreplaceable "programmers"! Look at their goddamn salaries. We need to standardize technology, remove the sharp edges, and train people who understand! Sun has got the thing.

      Programmers: Heh. We're going to be spinning out gotta-haveit ETLA frameworks faster than your Indian developers can say 'Yes sir! Right away sir!". Good luck with that. Now bend over and take another load of XML. *cracks-knuckles*

      Live by the marketing hype, die by the marketing hype, Sun Java.

      --
      Business. Numbers. Money. People. Computer World.
    7. Re:Groovy by jb_nizet · · Score: 3, Informative

      Oh - bonus points if you store the Calendar instance in a static variable, and never require the getInstance() call again.

      This would introduce a bug in your application, since Calendar.getInstance() always returns a new instance, containing the current time at the moment it is created. Storing it in a static variable and reusing it would return the same time forever.

      Moreover, Calendar is not thread-safe and is mutable, so storing it in a shared static variable is a really bad idea.

    8. Re:Groovy by kobaz · · Score: 2, Interesting

      C integration with Groovy is the same as C integration with Java... since Groovy uses the JVM, which means making some definitions in Java for the external functions handled by C, adding some extra build options and writing the C module itself. It's the same as any other language... it's fairly easy to write C modules for tcl, perl, python. java, etc... you just need to look up the bindings library and off you go.

      --

      The goal of computer science is to build something that will last at least until we've finished building it.
    9. Re:Groovy by mcvos · · Score: 2, Interesting

      With syntax like this:


      amPM = Calendar.getInstance().get(Calendar.AM_PM)

      That's not Groovy's fault. That's Sun's fault for writing a retarded Date library and refusing to replace it with something sane.

      Groovy has TimeCategory, which is what you want to use. With it, you can just do:
      2.months.ago
      and get what you'd expect to get.

    10. Re:Groovy by Z00L00K · · Score: 2

      That's not the point I was trying to make - the point is that there is yet another syntax that has to be coped with for programmers.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
  2. the best programmers? by Anonymous Coward · · Score: 2, Insightful

    Maybe he's barking up the wrong tree. The best young programmers I know don't have any piercings or tattoos that I can see.

    I have no data to support this, but I have always thought the best of the tech crowd were too busy being into their tech to get into the body modification scene. I don't think this is different now than it was 30 years ago.

    On the other hand, there's a lot I can't see (and in many cases, thank goodness!)

    1. Re:the best programmers? by Unoti · · Score: 2, Insightful

      I'm gonna go out on a limb here and guess that you don't live or work in the San Francisco area.

    2. Re:the best programmers? by spiffmastercow · · Score: 5, Insightful

      I have tattoos, and I used to have piercings. I'm also a damn good coder. I seriously doubt the two are related.

    3. Re:the best programmers? by Alex+Belits · · Score: 2, Insightful

      I'm gonna go out on a limb here and guess that you don't live or work in the San Francisco area.

      I do, and STILL the best programmers I know have neither piercings nor tattoos.
      Attention whores with dubious amount of talent, on the other hand...

      --
      Contrary to the popular belief, there indeed is no God.
    4. Re:the best programmers? by Trepidity · · Score: 2, Insightful

      I do, and don't see much of that from top coders. If you go to cultural events like SuperHappyDevHouse, meetups at the Hacker Dojo, etc., there are a handful of mohawked/pierced types, but not many. Maybe up in SF proper (as opposed to Silicon Valley) there are more, but I haven't seen 'em.

      Now if you're talking web designers, yeah, there's lots of those.

    5. Re:the best programmers? by keeboo · · Score: 3, Funny

      I have tattoos, and I used to have piercings.

      According to people with piercings and tatoos that is "+4 Insightful".

      I'm also a damn good coder.

      Thanks for your unbiased opinion.

      I seriously doubt the two are related.

      I seriously doubt a person who uses him/herself as a positive example to prove a point.

    6. Re:the best programmers? by spiffmastercow · · Score: 3, Funny

      I'm often amazed at the level of hostility on /. to anyone who claims they are good at what they do. In comparison to the programmers/developers/software engineers/architects/whatever title inflation demands a coder be called, I'm pretty good. And I should be, since I've been coding for 15 years. Judging someone's coding ability based on their appearance is utterly retarded, as is believing in stupid rules like 'only people who suck at something will claim to be good at it'.

  3. Re:Just let it die by zappepcs · · Score: 2, Interesting

    I agree with this. Oracle will have to do some serious sucking up to the world to convince anyone they are not out to destroy everything that MS licensing was unable to touch. I'm not saying that Oracle sucks, just that their business model is not really where the world has been migrating to lately. For more or less all the reasons that MS products are not looking so good these days to many people, Oracle products (including the products they buy) will also not look good. There is reason to think this looks like a sinking ship taking on ballast weights.... IMO

  4. Cutting edge == Johnny Rotten? by Vellmont · · Score: 5, Insightful

    Someone emulating the punk movement of 40 years ago is "cutting edge"? If that's his idea of "cutting edge, hot talent", he needs to stop thinking he's in the movie "hackers" and he's looking for Angelina Jolie. Associating dress or style with talent is stupid no matter if it's "you wear a suit, you're smart" or "you've got 3 piercings and drive a crotch rocket you're the next big thing"

    Demanding innovation never works. Innovation just happens from a need, not a demand from some Oracle guy who desires it and thinks it'll be good for marketing. There are interesting things happening in Java. Scala is certainly interesting. I haven't used it myself, but I'd love to try it if I had a good project to use it in.

    --
    AccountKiller
    1. Re:Cutting edge == Johnny Rotten? by Vellmont · · Score: 2, Interesting


      He wanted to convey the idea of 'cutting edge', and to be honest it seems like both you and I understood what he meant even if his example is a bit cliche.

      I understand what he meant, I just think it's kind of stupid. Call me crazy, but I'd rather focus on keeping a language relevant to the kinds of problems people are trying to solve, not trying to maintain some level of trendiness like the latest cool band.

      All languages have a useful lifetime, and Java is no exception. Languages have come a long way since the abomination of something like COBOL, so the comparison is more than a little stupid. As an industry advances the tools become more advanced and long lived. I don't see anyone worrying that circular saws are going to "die" anytime soon in carpentry.

      --
      AccountKiller
  5. um by Anonymous Coward · · Score: 5, Informative

    um google app engine? spring? android? gwt? groovy?

    Please it's evolving and even finding new uses.

    All those "java is going to die" people are silly and not grounded in reality. Plenty of talented developers see its power and use it.

    1. Re:um by Jurily · · Score: 2, Insightful

      All those "COBOL is going to die" people are silly and not grounded in reality. Plenty of talented developers see its power and use it.

  6. tattooed love boys program? by skyler_fox · · Score: 2, Insightful

    let me get this straight... Java needs tattooed programmers to be relevant? Snarky comments about Cobol aside, Java is the current programming workhorse. It provides the greatest infrastructure and options for scalability. Since when does fashion dictate what technology is best for the job?

  7. Re:What is out there right now? by Macrat · · Score: 4, Funny

    So what do people with piercings do now?

    Work at Starbucks.

  8. good coders will follow the money by ilmdba · · Score: 5, Informative

    piercings and mohawks somehow make someone 'cutting edge' or a better coder?  i think not.

    good developers will follow the jobs.

    i'll save you the trip to monster.com, here are some search results from there:

    search  results
    ------  -------
    java    5000+
    .net    4581
    c++     3706
    c#      3369
    perl    2569
    python  1035
    ruby    547
    cobol   286

    - 5000 is apparently the limit for the number of results a query can provide at monster.com (weak) so there are most likely far more that 5000 java jobs in their database
    - couldn't figure out how to search for C reliably, but it's probably up over 5000 as well.

    1. Re:good coders will follow the money by pushing-robot · · Score: 4, Funny

      So true. Popularity is one of the worst ways to measure interest.

      --
      How can I believe you when you tell me what I don't want to hear?
    2. Re:good coders will follow the money by abigor · · Score: 2, Insightful

      Popularity isn't a good measure of relevancy?

    3. Re:good coders will follow the money by Hurricane78 · · Score: 2, Interesting

      Actually, if you look at smaller data sets (regional ones), and data from other job sites that have language categories, you will notice, that Java tops out even C by a good bit.

      --
      Any sufficiently advanced intelligence is indistinguishable from stupidity.
    4. Re:good coders will follow the money by moosesocks · · Score: 3, Funny

      - 5000 is apparently the limit for the number of results a query can provide at monster.com (weak) so there are most likely far more that 5000 java jobs in their database

      Yeah. Apparently their java-based search engine runs out of memory at around 5000 results....

      --
      -- If you try to fail and succeed, which have you done? - Uli's moose
    5. Re:good coders will follow the money by noidentity · · Score: 2, Funny

      Yeah. Apparently their java-based search engine runs out of memory at around 5000 results....

      It's evolved beyond those other languages that don't limit population growth, and later crash due to overconsumption.

    6. Re:good coders will follow the money by _newwave_ · · Score: 2, Insightful

      No, GOOD developers will follow the GOOD jobs. Now try resorting the list by both the average quality of job and the most elegant syntax offered to do just that with the given language.

    7. Re:good coders will follow the money by _newwave_ · · Score: 2, Funny

      Actually, it's a cached page from google, because this stupid end user (aka, comment author) didn't have the sense that the JVM takes 5 hours to start and set is browser timeout settings appropriately. the last time this article was actually worked it stopped at 5k results when the dinosaur that "engineered" it thought that 10 minutes of up-time with results he liked meant that the http request to MSSQL Reporting worked.

    8. Re:good coders will follow the money by AtlantaSteve · · Score: 2, Interesting

      Ding ding ding! We have a winner! The problem I have with most Java-bashing is that it seems so utterly disconnected with the real world and the marketplace.

      I read comments in this thread, and they sound like, "Last night I was analyzing differences between Erlang and Smalltalk, and while pondering the merits of Lua vs. Forth I realized that Java doesn't support true closures...". Hey, do you even work as a programmer? I mean, programming professionally... do you get PAID to write code? Enough to support a mortgage and retirement savings and all that livelihood stuff? Have you ever kissed a girl?

      I enjoy tinkering with scripting languages and "new" (or at least repackaged from Lisp) programming concepts myself. But when I need drivers to connect to a database (other than MySQL!!!), or to an inventory system on an old IBM midrange box, or just about anything else used in the business world, I need Java. When I need mature toolsets and continuous integration systems, such that I can work in a team of two dozen or more programmers and keep everything straight, I need Java. When I need my credibility with management tied to figures who don't go by names like "Why The Lucky Stiff" and who don't make a childish ass of themselves every time they open their mouths, then I need something like Java. When I need to post my resume on the major job hunting sites, have recruiters call ME, and have my next gig nailed down within two weeks... I need Java.

      With Java, I'm even able to "sneak in" some things like Jython or JRuby here and there... so that if indeed the "paradigm shift" occurs during my career, I'll be able to hype those experiences in my resume and have a foot in that door. However, I'm not holding my breath. There are so many factors which come into the picture when doing large-scale enterprise development, and such a different skillset and mindset required. Where a project uses one of these scripting languages, it would wind up LOOKING LIKE Java development anyway. It takes years to get used to that mindset, whereas it took me about an hour and a half to get the hang of closures... so I feel pretty comfortable no matter which way the industry goes.

  9. Re:Just let it die by abigor · · Score: 2, Interesting

    Can you be specific about these inconsistencies? I'd like to hear about them.

    As for "letting it die", Java is the default language of enterprise everything. Outside of the embedded world, there's probably more lines of Java currently deployed than anything else. And I have to say, Spring 3.x is actually pretty neat.

  10. JVM keeping it alive by godofredo · · Score: 5, Interesting

    Java will remain relevant because of the large number of languages being built for the JVM: scala, erjang, clojure, groovy etc. Thus writing libraries in java has significant appeal.

    JJ

  11. Nothing screams get off my lawn like this comment by jason.sweet · · Score: 3, Funny

    like to see people with piercings doing Java programming.

    The amount of drugs involved in the decision to get said piercings is not conducive to good software engineering.

  12. Here's how to make Java again by grepya · · Score: 5, Funny

    The problem with Java today is... it's syntax looks too much like C. And as everybody knows, C is for geezers. Can't we write java code as follows:

    <class>
    <classname>MyPony</classname>
    <method>Run</method>
    <code>
    <if><condition>IsExcited</conditon>
    <if_block>walkFaster </if_block>
    </if>
    <method>trot</method>
    <method>gallop</gallop>

    .
    .
    etc...
      Once the java manufacturing association fixes the syntax to my satisfaction, I'd give up on my 10 GL super auto functional metaprogrammers language (Saufml) and start writing java code. Until then, I'll keep working on my latest NoSql data-store for my soon to be mobile-social-media-empire (leveraging P2P crowd-sourcing) in my beloved Saufml.

  13. Oracle has some work to do by hedrick · · Score: 4, Interesting

    Java isn't about to become irrelevant. There's no chance it's going to be the latest thing, because that opportunity only comes once. But if you want a language for doing major projects with long lifetimes, there's really Java, .NET and C++. For a lot of things, Java or .NET makes more sense, and realistically .NET limits you to Windows. For that class of things, the limiting factor in Java now is that Sun does't support the same range of APIs that MS does. Particularly desktop APIs needed for things like multimedia and games. If I wanted to make Java as useful as possible I'd put some manpower into that, and find ways to put some of the newer interpreted languages on top of the Java JVM. That would give them access to a good compiler and to the range of packages available in Java. (Despite a more limited set of APIs than .NET, there's still more than a newer language would otherwise have available.)

    1. Re:Oracle has some work to do by TheTurtlesMoves · · Score: 3, Insightful

      Despite what a lot of people think. The games market on PC/servers etc is pretty small. Sun was wise not to push it really. For games you would need Xbox..etc to support a jvm for it to really make sense. And that will not happen for a number of reasons.

      However there is lwjgl (opengl/openal binding for java), and most common higher level languages can run on top of a JVM these days. (Jython, JScheme, Kawa, lua, ....)

      --
      The Grey Goo disaster happened 3 billion years ago. This rock is covered in self replicating machines!
  14. Tempest, meet teacup... by neiras · · Score: 5, Insightful

    I make a lot of money working with Java. I have piercings. I've been known to have hair in a primary color.

    Seriously though. Android applications. Eclipse. Adsense, GMail, Wave - in fact, just about every big Google web application (yes, even the client side stuff is written in Java and translated to Javascript). Openfire XMPP. Tomcat. Geronimo. ActiveMQ. Azureus.

    You can badmouth Java all you want, but performance and tooling are excellent and there seems to be an infinite supply of libraries and sample code. It runs in lots of different places. There are 100% open source implementations. You can compile it to native code. You can run it in the CLR.

    I know it's trendy to play with Ruby and Python, and that's fine. I'm a big fan of Scala, which runs on the JVM. I believe Twitter's backend is at least partially built on Scala. El Reg, I know, I know.

    Anyone who thinks Java is fossilizing needs to give their head a shake. It's everywhere, and it's being used in very diverse ways.

    If that doesn't excite this mythical "pierced programmer", then said idiot is too busy practicing the Hipster Doctrine - studied disinterest.

    1. Re:Tempest, meet teacup... by Sarten-X · · Score: 5, Interesting

      I just recently got a job at an all-Java shop. I might, if I feel the need, write a shell script or two. From what I can tell, Java's still accepted in the "real world", but it doesn't have the hype it used to.

      Java's Big Thing was its ability to be written once, and run on VMs on any platform. That advantage was promptly killed by the rise of AJAX and all its cross-platform happiness. The same buzz Java once enjoyed is now held by cloud computing, for much the same reason: it allows programmers to write something once, and not worry about the future as much. As languages have progressed, we've consistently moved away from hardware-specific details. Today, I see Java as a sort of middle ground between using the "edgy but immature" languages like Python, and the "old but crusty" languages like C and C++. It has enough libraries and tie-in packages that any modern technology can be easily implemented.

      Programmers today don't want to (and shouldn't need to) deal with memory allocation, pointers math, or any such arcane matters. They also don't want to have to refactor as their chosen language tries to stabilize itself. This is why C rose to such prominence. It allowed programmers to stay away from the processor. Java currently allows programmers to stay away from the operating system. Eventually, I expect we'll move toward even more abstract languages, where we just need to specify what we want, and the compiler (or something) will figure out the steps needed to reach that goal. It'll be an automatic software engineer, just as compilers are automatic replacements for the grad students who used to translate programs into machine code.

      Here's to the future, where I, too, will be obsolete.

      --
      You do not have a moral or legal right to do absolutely anything you want.
  15. I've.never.used.groovy.so.I.have.a.question. by Daniel+Dvorkin · · Score: 3, Insightful

    Does.it.allow.you.to.do.useful.things.without.typing.a.classpath.fifteen.layers.deep?

    If.so.it.might.be.exactly.what.is.needed.to.make.Java.an.appealing.language.for.programmers.with.fresh.ideas. Else.it.won't.do.the.trick.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    1. Re:I've.never.used.groovy.so.I.have.a.question. by MichaelSmith · · Score: 2, Insightful

      Would you prefer not to have name spaces? C is pretty crap you know. "import" is pretty easy in Java too.

    2. Re:I've.never.used.groovy.so.I.have.a.question. by Daniel+Dvorkin · · Score: 3, Insightful

      Namespaces are useful, and custom namespaces cut down on a lot of the clutter in Java, but they shouldn't be necessary for basic functionality. The way I see it (YMMV, of course) K&R C provides pretty much the functionality that any language should have as part of the core language spec; if I can do something in n characters in C but it takes me 10n characters to do it in some newer and supposedly better language, I'm hard-pressed to consider that an improvement.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    3. Re:I've.never.used.groovy.so.I.have.a.question. by Daniel+Dvorkin · · Score: 2, Insightful

      See my reply to the previous answer to my comment; the workarounds you describe are effective, but they shouldn't be necessary. One of the main things that distinguishes a good language from a bad one, IMNSGDHO, is that the former doesn't make you feel like you're fighting the language to get things done.

      Ah, pay me no attention, youngdev -- I'm just a grumpy old man, one of the get-off-my-lawn crowd that is supposedly the only group of people using Java these days. ;)

      And no, I don't use Notepad for development. Or for anything. Dear God. I may be old (by /. standards, anyhow) but I'm not senile.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    4. Re:I've.never.used.groovy.so.I.have.a.question. by Abcd1234 · · Score: 5, Insightful

      Uhuh... so you determine language quality by the terseness of it's text.

      Interesting.

      Well, you have fun writing your terse programs with inexplicably named, but I'm sure very compact, variable and function names, while the rest of us move on to writing code other people can actually, you know, read and understand while putting up with the horrible hardship of having to type a little bit more.

      Oh, and BTW, any language that has namespaces has an import keyword. Maybe you should try it out sometime.

    5. Re:I've.never.used.groovy.so.I.have.a.question. by forkazoo · · Score: 2, Interesting

      Uhuh... so you determine language quality by the terseness of it's text.

      Interesting.

      It's certainly not a complete measure of a language, but they are certainly worse ways to look at it. Java has some inconveniences, like famously deep class hierarchies which lead to very long lines of code. OTOH, Java has support for generics, and some inherent safety mechanisms which would need to be handled manually in C. In C, it's normal to have a set of similarly named functions that operate on floats, doubles, int, shorts, etc., which are all basically copy-pasta, which is a bad thing about C. Like most bad things in a language, it really does directly correlate with the fact that you have to write more C.

      Nobody ever sold a language feature on the fact that it was hard to use. Every language prides itself on the fact that you don't have to write more of it.

    6. Re:I've.never.used.groovy.so.I.have.a.question. by Anonymous Coward · · Score: 2, Informative

      Odd criticism. I've written tens of thousands of lines of Java over the past decade +, and I can't remember the last time I manually typed in a fully-qualified class name, or even an import statement. Eclipse (and presumably the other Java IDEs) take care of this for you. The only time you'll see a fully-qualified class name in the body of reasonably-written Java code is when you've got two classes of the same name. And even then, you don't have to type it in - autocomplete will still take care of it.

    7. Re:I've.never.used.groovy.so.I.have.a.question. by peppepz · · Score: 2, Insightful

      Namespaces are useful, and custom namespaces cut down on a lot of the clutter in Java, but they shouldn't be necessary for basic functionality.

      In fact they aren't. Java automatically imports the java.lang package, so for "basic functionality" all you might have to import are the java.net or java.io packages. Which is quite reasonable since Java is designed to work (and does work) on systems which might not have access to either the network or the file system. And a string like "java.net" is pretty far from the "fifteen layers deep classpath" you were grieving about.

      The way I see it (YMMV, of course) K&R C provides pretty much the functionality that any language should have as part of the core language spec; if I can do something in n characters in C but it takes me 10n characters to do it in some newer and supposedly better language, I'm hard-pressed to consider that an improvement.

      Leaving aside any considerations about the quality of C's standard library, which is apparent to anyone wo has used it, let's do a comparison.

      In C, in order for your program to do any kind of interaction with the external world, you have to #include <stdio.h>. In Java, you don't import anything.

      In C, in order to allocate some memory, you have to #include <stdlib.h> (otherwise, you won't even get NULL!), and <string.h> if you want to do anything useful with that memory. In Java, you don't import anything.

      In C, if you want to use a socket, you #include <sys/types.h> and <sys/socket.h>. And <unistd.h> if you want to be able to read() from it. In Java, you import java.net, which is not only much shorter than that, but will also provide much nicer names for the imported symbols: and while you might like the terseness of names such as "fcntl", you'll agree that at least for higher level functionality, more informative names are needed, which is why all C-based high level libaries tend to have extremely long, reverse-polish names such as gtk_file_chooser_get_preview_filename_utf8. And unlike Java, where you can get away with importing the "namespace" just once, in C you'll have to repeat that stuff for every single use of your imported symbol.

      Moreover, in Java, if you use a plain IDE, which is provided for free by the same people who develop the language, you can just right click the source code and select "fix imports" to have it automatically add import clauses for every external class you've been using.

    8. Re:I've.never.used.groovy.so.I.have.a.question. by peppepz · · Score: 3, Informative

      import static java.lang.System.out;

      class Test {
      public static void main(String[] args) {
      out.println("Hey");
      }
      }

    9. Re:I've.never.used.groovy.so.I.have.a.question. by ls671 · · Score: 3, Insightful

      > ArrayList myList = new ArrayList();.

      Then just use the construct from the "founding fathers" if it bothers you that much, it still works you know :-)

      ArrayList myList = new ArrayList();

      More seriously, how much time does a developer spend typing compared to what he should be spending thinking ?

      The fact that java forces you to type more also forces you to type basic documentation as you code and in my opinion, this is a good thing. In the end, you get easier to maintain code at almost no extra cost ;-)

      I have never understood developers saying that a language was superior because you can write code using less key strokes using it.

      --
      Everything I write is lies, read between the lines.
    10. Re:I've.never.used.groovy.so.I.have.a.question. by u17 · · Score: 2, Insightful

      For all practical purposes, Java doesn't have namespaces. If it did, you would not see class-name prefixes floating around all the time in java code. Say, javax.swing.[J]Button, org.odftoolkit.odfdom.dom.element.table.[Table]TableRow, etc. If the only way to resolve name clashes is to type out the full package-name of the class whenever you refer to it in a source file, then this is not using a namespace, and the presence of class-name prefixes only confirms that this is how developers view it. Compare to C++, where you can do "namespace thr = boost::thread;". With aliases like these, you don't have to worry about class name clashes at all, since you could easily translate something like "org::odftoolkit::odfdom::dom::element::table::" into "tbl::", making the use of namespaces convenient and practical. While I would love Java to be more popular, it's full of half-assed features like this, and it's no surprise to me at all that it's being pushed back into being a niche language for "enterprise" developers.

    11. Re:I've.never.used.groovy.so.I.have.a.question. by ardor · · Score: 4, Insightful

      No. K&R C lacks the following things:
      * first class functions, lambda, closures
      * comprehensions
      * coroutines
      * proper generics/templates (no, macros are _not_ a replacement)
      * painless string handling
      * module system
      * namespaces
      * reflection
      * support for common oop patterns and tools, like class definitions, dynamic dispatch etc. it has to be manually constructed, which is quite time consuming

      Now, of course it is a valid point that these things do not necessarily belong in C. It is a system programming language, after all. But these features are very important for other domains, such as application development. Right tool for the right job, please. C is _not_ the shiny hammer, and not everything is a nail.

      --
      This sig does not contain any SCO code.
    12. Re:I've.never.used.groovy.so.I.have.a.question. by owlstead · · Score: 2, Informative

      How are generics a good thing? They are a band aid for the fact that not everything in Java is an object.

      Bollocks, auto-boxing is a band aid for that. Generics *require* the use of objects instead of basic types.

      I would say that is the most serious defect of Java, apart from the lack of closures (yes, I know they are coming, but when?).

      Generics are hard to add, since they require specific support on the language level, it's not just adding syntax and be done with it.

      Plus any JVM I have seen is a piece of shit. Sorry, but if the official JVM takes several seconds just to start, that disqualifies it from a lot of perfectly good uses.

      And there am I, replying to a fucking troll. Applets still have pretty bad startup times, but the JVM? Seriously?

      Initial startup time:

      real 0m0.928s
      user 0m0.080s
      sys 0m0.030s

      second startup time (things are in cache now)

      real 0m0.109s
      user 0m0.070s
      sys 0m0.000s

    13. Re:I've.never.used.groovy.so.I.have.a.question. by mcvos · · Score: 2, Insightful

      Java is readable, it's just not very expressive, which means you need a lot of code to get anything done. Often you need a couple of classes to get the structure of your code right. Perl is indeed the polar opposite: expressive but unreadable.

      Good languages have both. Ruby, Python and Groovy are readable, but also very expressive. You can do stuff in a single very readable line that would take a page of Java, or a very arcane line of Perl.

    14. Re:I've.never.used.groovy.so.I.have.a.question. by owlstead · · Score: 2, Funny

      But you would still have to type "out.", what are you thinking?

    15. Re:I've.never.used.groovy.so.I.have.a.question. by isorox · · Score: 2, Informative

      Initial startup time:

      real 0m0.928s
      user 0m0.080s
      sys 0m0.030s

      Yes, similar numbers on my 4 year old laptop running linux, although "ffmpeg -version" is 25 times faster.

      I'm not sure about windows in general, but the corporate windows we have at work, on similar hardware, takes 10 seconds to run java -version the first time.

    16. Re:I've.never.used.groovy.so.I.have.a.question. by Javagator · · Score: 2, Funny
      I think you are too quick to put people posting here in boxes

      You're probably right. Maybe I should have added a Cowboy Neal box.

    17. Re:I've.never.used.groovy.so.I.have.a.question. by ardor · · Score: 2, Interesting

      * first class functions, lambda, closures
      First class functions are primarily the realm of functional programming languages, not procedural ones.
      Lambda's, combined with ways to refer to them (C++ std::function, templates, auto) are a type of first class function.
      Closures provide an interesting alternative way to code some things, but seriously who really misses them in C/C++?

      Have you been living under a rock? Just about every major language out there is implementing these features. Python, C#, C++, Ruby, Javascript among others. (Java doesn't, and it is sorely missed.)
      And, I do miss closures in C++. Right now I can think of several factory pattern implementations that would be greatly simplified if I could return closures instead of objects. Closures are objects are closures, sure
      but they do differ in practice.

      * comprehensions
      Use a libary.

      Good luck writing and/or finding one in C that doesn't end up requiring hundreds of lines for what can be done in at most 5 in other languages, like in Haskell.

      * coroutines
      Use a library.

      Forget it. Coroutines work completely against the abstract machine that C models. It is a different control flow, and screws with the stack. You *may* be able to do this with Assembler code inside, but this would necessarily apply to every coroutine you write. Not good.

      * painless string handling
      Use a library.

      No amount of C string libraries will be as convenient and easy to use as strings in other languages. C++ std::string is a good example. It is by far not the best out there, and still looks like heaven compared to the things that are usual in C. Guess why so many people use fixed char buffers for strings (and therefore cause potential buffer overflows): because proper string handling is a real PITA in C.

      * module system
      To do what? You've listed namespaces and classes separately, so what's left that you can't do in C? Most C programmerss use paired .h/.c module definition/implementation pairs, and #ifndef/#define to allow module definitions to be blindly included.

      The .h/.c stuff is exactly what has to go. Headers are used as interfaces 99,999% of the time, and are an ugly hack. I want _proper_ modules/packages, like the ones in Python, Ruby, C#, Java, ObjC. ONE file (.cpp). Intelligent dependency tracking. The pimpl idiom, the need for include guards, and having to manually find circular #includes are some examples why this obsolete cruft has to go, and is gone in every single major programming language except for C and C++.

      * reflection
      C's a low level language. There is nothing to inspect. Feel free to build layers on top of it.

      Oh come on. This is _exactly_ what I've said already: "Now, of course it is a valid point that these things do not necessarily belong in C. It is a system programming language, after all. But these features are very important for other domains, such as application development. Right tool for the right job, please. C is _not_ the shiny hammer, and not everything is a nail."

      Of course C has evolved into C++ which has the useful items on your list, and is aquiring others (lambdas in c++0x).

      I thought we were talking about K&R C....

      --
      This sig does not contain any SCO code.
  16. The VM is decent. The language sucks. by SanityInAnarchy · · Score: 4, Informative

    I remember taking a long, hard look at the state of various VMs awhile back, and here's what I came up with: .NET isn't a bad design, but it's entirely controlled by Microsoft.
    Rotor doesn't change that at all.
    Mono changes it a little, but Mono (at least back then) wasn't really a great platform in its own right -- not enough tools, not enough reason to use it, always playing catch-up. Plus, there's the whole patent issue.
    On top of all of that, it was never really designed to be cross-platform, and instead seems to be primarily aimed at creating native apps.

    The various "scripting" languages have been moving towards VM architectures, and some are quite good, but none that I know of actually feature any kind of ahead-of-time compilation, even to bytecode. That includes Perl, Python, Ruby, JavaScript, and plenty of others.

    Lisps are better, but they generally don't compile to an intermediate form -- if they compile at all, it's to something platform-specific, likely machine code.

    Smalltalk is interesting, but is even more closed off than Java, and basically requires an entirely different set of tools for working with. It's not really designed to work as a text-based language.

    The closest would seem to be Erlang, but it's radically different. While I know of at least one other language trying to target the Erlang VM, it's something that's really designed to work with Erlang. I'm also not entirely sure if the performance is there.

    LLVM looks very, very good, but very few languages actually target it, beyond, say, C. It seems to be targeting runtime optimizations, not portability.

    I probably looked at a few others I'm forgetting now...

    Basically, the top two are still Java and .NET. Both present a VM that supports multiple real languages. In Java, this is by accident, it's hackish, but there are plenty of robust, mature languages other than Java which target it -- Scala, Groovy, Clojure, JRuby... In .NET, this is by design, but the more interesting other languages targeting it seem to be in an alpha state.

    So Java is pretty much it. And it means we can take our fun, dynamic languages, and (eventually) compile them to Java bytecode, and create entirely cross-platform apps with no local dependencies other than Java. It means we get much of the work that's been put into optimizing Java for free -- for example, the Java garbage collector. It also means that even when designing a native app, well, Ruby just got threads in 1.9, and there's still a GIL, so no support for multicore. Python has and probably will always have a GIL. JRuby has had real, native Java threads almost as long as it's existed. Ruby has plenty of options for concurrency, but if you want to take advantage of multicore, your options are either JRuby or a unix fork(), and Ruby's GC is not COW-friendly, so fork() is potentially much more expensive than in other languages.

    I don't know if Java is the way forward. I hope someone builds something cool on top of LLVM. I certainly hope Java the language dies. But the JVM is about the best we have in terms of open-source, cross-platform, compile-once-run-anywhere VMs.

    --
    Don't thank God, thank a doctor!
    1. Re:The VM is decent. The language sucks. by devent · · Score: 3, Insightful

      I don't get it, why you want the java language to die? I programming Java now for 4 years and the only thing I'm missing are closures.

      The core of Java is very robust, you have class, enums and interfaces. Generics are do what they are suppose to do (and they are backwards compatible). Threading is integrated in the Java with synchronized and the threading API. In addition, Java have neat features like annotations and anonymous classes.

      Reflection is very easy to use, but the exception model is perhaps debatable.

      The tools and the libraries are top class. Maven is my favorite killer-tool for Java.

      If Java get closures, what are you missing in Java? It's maybe not the future but Java is a very robust and consistent language.

      --
      http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
    2. Re:The VM is decent. The language sucks. by Just+Brew+It! · · Score: 4, Informative

      Google has been working on a version of Python that targets LLVM instead of the Python bytecode interpreter. They're also planning to attempt to tackle the GIL issue, but that may be wishful thinking...

    3. Re:The VM is decent. The language sucks. by deblau · · Score: 2, Informative

      Perl has bytecode. Yes, it's experimental, but I've played with it and it works.

      --
      This post expresses my opinion, not that of my employer. And yes, IAAL.
    4. Re:The VM is decent. The language sucks. by peppepz · · Score: 3, Interesting

      I find no appeal in dynamic typing. It just makes programs harder to read and debug. Have you tried Scala? With type inference, it manages to get the type-safety of static typing along with the reduced verbosity traditionally associated to dynamically typed languages.

    5. Re:The VM is decent. The language sucks. by chromatic · · Score: 2, Informative

      ... none that I know of actually feature any kind of ahead-of-time compilation, even to bytecode.

      Parrot does, and thus so does Rakudo Perl 6.

    6. Re:The VM is decent. The language sucks. by shutdown+-p+now · · Score: 2

      The .NET VM is no less "hackish" than other languages targeted to Java. They both essentially follow the same model for their bytecode.

      .NET gives you more primitives, though - byref, unmanaged pointers, structs, unions etc - enough so to write, say, a fully conformant ANSI C implementation targeting it, with practically no dirty hacks (I think you'll need to use exceptions to simulate setjmp/longjmp, but that's pretty much it). Try that for JVM.

      Or, say, tailcalls. It's why ML/F# is doable on CLR, but not on JVM.

      If anything, the blatant Windows-isms make the CLR far more clunky.

      The multitude of references to Win32 concepts in the base CLR spec is definitely annoying, but a portable IL generator can pretty much ignore them.

    7. Re:The VM is decent. The language sucks. by owlstead · · Score: 2, Insightful

      Both are a problem for code maintainability. Java will never have dynamic typing. It's not that it is hard to implement (e.g. look at bsh an interpreter that is still, basically Java), it's that it has way to many drawbacks. If you want to have that, use a scripting language (and don't use it for large programs).

    8. Re:The VM is decent. The language sucks. by u17 · · Score: 4, Insightful
      A couple of reasons why Java sucks:
      1. No proper support for namespaces (see my other comment)
      2. No support for storing members in-place. If you want a Vector3d class, (i.e. an array of 3 doubles with an associated set of functions), and you want it to be fast, without referring to the members by pointers, you have to enumerate the members: {double x; double y; double z;}. If you wanted to have an array of doubles, you could only store a pointer to the array, and with an extra allocation: {double[] data = new double[3];}. For a Vector3d this is not so bad. But imagine the code for Matrix4x4d. This is a real shortcoming, if you look at Java3D, it actually uses a matrix with members defined like this: {double m00; double m01; double m02;... etc, 16 times}, instead of a double[][] array. If you do it this way then in functions you have to manually unroll loops, you can't just iterate over the values.
      3. No support for proper templates. The "generics" are only syntactic sugar. You can't have something like template <int N, int M> Matrix<N, M> for faster code. ArrayList<int> doesn't work. When you write "arraylist of integers", you expect an object with a tightly packed array if ints. But the only way to do this in Jave is to box them, and if you do, think of the waste: the array actually holds pointers and each Integer is separately, individually allocated. Additionally, each Integer not only holds an int, but also a mutex, which leads to the next problem.
      4. Every object has a mutex. WTF? Why endure such a huge waste, why increase the size of every object, when only very few of their mutexes are actually used?
      5. No operator overloading. OK, this can be abused like everthing else, but when you're working with a custom number class or with BigInteger, you don't want to clutter your code with method names that represent operators.
      6. No unsigned types. Of course there are conversion issues when mixing signed/unsigned in expressions. Normally you're fine with just signed, but what about, say, file formats that have uint64_t in them? Should you store them in BigIntegers?
      7. The standard library is a mess. They keep putting more and more stuff into it, never deprecating anything, and the result is pretty bad in many places. The library is over-engineered and in many places the implementation shines through the interface. They keep shooting themselves in the foot by having to maintain crap code like Swing for eternity. Coding in Swing is horrible when compared to, say, Gtk.
      8. Missing lambda functions/closures, 'nuff said
      9. No function pointers. This leads to one-function interfaces which only clutter your code whenever you use them.
      10. No typedefs. Especially when using generics, you don't want to type Map<String, List<Integer>> all the time, you want to type MyFancyMap instead.

      There are more things, these are just those that irk me most. I love the idea of applets, webstart, and portable bytecode, and I'd love to see Java succeed, but the language is so badly done I can't see this happening.

    9. Re:The VM is decent. The language sucks. by SanityInAnarchy · · Score: 2, Insightful

      If Java get closures, what are you missing in Java?

      Others have listed other reasons, but let's see...

      It's statically typed. Understand, I don't mind strict typing (Ruby is strictly typed), I just get annoyed at having to declare variable types all the time.

      The generics is a mess -- as u17 says, it's a hack, and it's also incredibly difficult to understand, and requires a lot of heavy thinking and planning about types and interfaces. Compare to what you get for free from a language like Ruby.

      And most of that mess is in the name of backwards compatibility. Excuse me, but do we care that much about backwards compatibility? I suppose it made sense at the time, and I suppose I can't blame them, but it cripples the language today.

      Java's threading API sucks. Aside from the overhead u17 pointed out, it's still the same old threading API. Compare to something like Erlang.

      Reflection? Easy to use? You've obviously never used a language where it's actually easy to use, like, say, Ruby.

      Aside from closures, it's missing Lisp's macros, which take that idea to a whole other level.

      And the syntax is brittle -- no operator overloading, for one -- it'd be very difficult to correct any of what I've just said with a library. For example: In most sane languages, a == b has well-defined semantics of comparing the values of a and b. In Java, it compares the values for numerical primitives, and the references for everything else. Because of this, you end up with Object.equals(), which is much more verbose and cumbersome to use, and incurs boxing/unboxing overhead when used with primitives.

      Yet despite all that, Java does do some overloading of its own with Strings -- it overloads +, but not ==.

      So you can imagine, just about anything interesting I'd want to add to the language, which would be an internal DSL in smarter languages like Ruby and Lisp, would be a mess of verbose library calls in Java.

      Similar problems: You can use enumerations and integers for a switch statement, but you can't use strings. Because Java lacks any meaningful way to modify the primitive types, and isn't flexible enough to override case itself, you can't fix this to do what you'd expect, which is for it to use Object.equals(), or even a more verbose version that allows you to pass a Comparator.

      What else...

      No keyword arguments, and no sane way to add syntax for them. No built-in hash type, and thus no hash literals. Ruby doesn't have keyword arguments either, but its syntax is loose enough that you can use the builtin hashes to replace them.

      No symbols/atoms, either.

      No good interactive shells. Then again, do you really want an interactive shell in a language that's that friggin verbose?

      Hell, verbosity deserves a category of its own. Just look at Hello World in Java. Compare to Hello World in pretty much any other language.

      The built-in array type, aside from having an unnecessarily verbose literal, is also a fixed size. I suppose it's useful to have a fixed-size array, but 99% of the time, that's not what you want. Make ArrayList the default array type, have things accept Lists (or better yet, Collections) rather than arrays, and provide syntactic sugar for creating ArrayLists instead of Arrays, then tuck the actual Array type deep in some system library so programmers don't have to bother with it again... but like so many of these problems, you can't actually solve it that way without breaking the language.

      Then again, u17 points out a potential problem with that -- ArrayLists, like all Collections, must store objects (and thus references) rather than the actual values. That means ArrayList<Integer> is necessarily slower and bloatier than int[] (by much more than it should be), and there's again nothing you can do about it. Contrast to Ruby -- you'd expect a construct like [1, 2, "three", 4] to be even worse, but it's actually better than an ArrayList of [1,2,3,4] in Java -- I believe it uses a

      --
      Don't thank God, thank a doctor!
  17. Re:Just let it die by Vellmont · · Score: 2, Insightful


    As for "letting it die", Java is the default language of enterprise everything.

    He's just part of the Java backlash because it's popular. It's like the people 15 years ago saying "Let C die" because there's C++ or Java now. An essentially useless comment and nothing more than a troll.

    --
    AccountKiller
  18. TFA misses the point about Java by Anonymous Coward · · Score: 2, Insightful

    Java is described in TFA as a cutting edge language from the 90's having somewhat lost its edge since them. Java was never cutting edge. It's always been technology from the 70's - mostly a Smalltalk derivative. Java always has been about been about compromise between being more advanced than its mainstream predecessors (C, Delphi/Pascal...) and keeping accessible to the average programmer.

    If anything, in the last 10 years Java has succeeded, turning from a questionable language for client-side applets to a stable and widely used environment for serious server-side apps. Unless Oracle are totally braindead they will keep it moving in the same direction, slowly moving forward and not confusing the average programmer with too much Haskell/Lisp/Perl-like complicated stuff.

  19. Re:Just let it die by visualight · · Score: 2, Interesting

    You're mostly right. Back in the 90's Sun was so successful in hyping Java I remember VC's funding software companies _just_ because they were focusing on Java. Got it into a lot of (maybe all?) schools too. So damn near every young developer knows Java now and as a result that language gets chosen over others.

    So yeah, letting it die might not work, we'll have to be more proactive.

    --
    Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
  20. SmallTalk by Anonymous Coward · · Score: 2, Insightful

    Java was brain-dead at birth. SmallTalk is the cleanest of object-oriented programming languages with a simple, clean syntax. A good programmer can develop an interpreter for a language using SmallTalk in a weekend. Try that in Java and your head will explode due to the inherent complexities of the language. Java, at best, is C with bytecode execution rather than native machine code.

    1. Re:SmallTalk by binarylarry · · Score: 2, Informative

      Wow, you don't know anything about anything do you?

      Java has been executing native machine code for well over a decade!

      Are you some kind of unfrozen coder who was accidentally frozen in the mid 90's and was recently unthawed?

      --
      Mod me down, my New Earth Global Warmingist friends!
  21. Oh, now what the hell is this? by Marrow · · Score: 3, Interesting

    Ok, so they want to get the love back and show that java is still relevant. Maybe they want some people to expand their skillsets and add java to their toolbox. Well I thought, lets see how heavy this thing has become. I found the necessary magic words to install it on ubuntu from apt. And then: SPLAT! Upon trying to install it, I get this very unfriendly looking licensing message during the install!

    Sun is willing to let you install this under the condition that you accept the terms of this 15 PAGE! licensing agreement! In order to install, you must accept the terms, do you accept the DLJ license terms? YES or NO?

    If you say NO, then the installation -crashes- and you get prompted again, in a loop asking you to accept the terms again! Ok, after 3 declines, it bails out completely.

    You know what? I dont remember that kind of love when I installed PYTHON. Maybe this is what they mean by tough love.

  22. Re:Well this is awkward by AuMatar · · Score: 5, Insightful

    None. Learn algorithms, data structures, and theory. You can and will change languages a half dozen or more times in your career. Theory works for everything. And the good employers know that.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  23. I know how *not* to make it more relevant by hedrick · · Score: 4, Insightful

    What they had better NOT do: treat it like Solaris. You're only allowed to use it in production if you have support, and the only support they sell is a site license which costs $25 * the number of people in your company + the number of users for your application.

    I'm not being entirely silly. I have an application for which I would have been willing to pay for Java support. But the only support Sun would sell us (late 2009, when they had already started Oraclizing) was an unreasonably expensive site-wide support contract.

  24. the cutting edge itself has moved on by anomalous+cohort · · Score: 4, Interesting

    It's no longer language constructs, data structures, or algorithms that are cutting edge. Innovation has moved on to more fertile pastures. Yes, those who build software tools, libraries, IDEs, and compilers will continue to innovate. They have and will continue to come up with some brilliant stuff. But cutting edge developers don't pick a shop because they write in groovy or whatever the language-de-jeur is. Cutting edge developers go where they believe the next killer app is going to be born.

    The best developers are multi-lingual. They don't identify with a single programming language. They're not VB developers or Java developers or even Rails developers. They can pick up any language/library/environment quickly. They don't really get off on curly braces versus colons. What feeds the best developers is the challenge of world domination through innovation.

    Change the world, right?

    1. Re:the cutting edge itself has moved on by Vellmont · · Score: 2, Insightful


      It's no longer language constructs, data structures, or algorithms that are cutting edge. Innovation has moved on to more fertile pastures. Yes, those who build software tools, libraries, IDEs, and compilers will continue to innovate.

      Hmm.. language conststructs, data structures, or even algorithms are simply much harder to innovate in since they're so basic to software.. but I just don't agree there's no innovation happening in these areas. It just happens with less frequency because it's harder. The payoffs are likely of much higher impact though than anything of what you listed.

      The rest of your post I think I agree with. The idea of the article seems to be something to to with trendiness or "cool". That's great and all, but I rather agree with your approach that it's about the interesting problems, not the technology.

      --
      AccountKiller
    2. Re:the cutting edge itself has moved on by Tablizer · · Score: 2, Interesting

      Cutting edge developers go where they believe the next killer app is going to be born.

      I can tell you what that is: a "GUI Browser" that can deliver desktop-like GUI behavior without the problems of buggy bloated version-sensitive AJAX and JavaScript libraries. HTML browsers were designed for eBrochures, not real GUI's, and have resisted successful retrofitting for real GUI's.

      Base it on an XML GUI markup language. It will be the next Mosaic: build it open-source and they will come. Everybody wants it because they are tired of rocket science to get basic GUI elements to work together.
               

    3. Re:the cutting edge itself has moved on by jez9999 · · Score: 2, Informative

      whatever the language-de-jeur is

      I believe you mean language-du-jour.

    4. Re:the cutting edge itself has moved on by arjan_t · · Score: 2, Insightful

      Agreed. If you have the second most popular website in the world serving over 400 billion dynamically generated page views per month from a backend of over 30,000 servers, you absolutely do not want to rely on PHP to serve those pages for you.

      This is the same old argument over and over again. Facebook and a couple of other large sites building on PHP don't work the way they do because of PHP, but despite being build on PHP. There's a lot of engineering effort put into those sites, with a not unimportant share of that devoted to things having nothing to do with what PHP handles. With such engineering effort being poured in, Facebook could have been developed in assembly or COBOL, neither of which would have been prove that they are inherently suited for such environments.

      Also, don't forget that Facebook is migrating to their C++ based hiphop toolchain and have build their own internal framework, a framework that resembles the Java EE stack in a couple of ways and is NOT available to the general public. The kind of PHP that Facebook does is NOT your typical 'phpfreakz' kind of PHP that is most commonly practiced.

      I've also personally talked to the lead developer of Hyves -- the Dutch version of Facebook with some 12 million users -- and he said 'PHP is a little shit language' (PHP is een kut taaltje). I understand that out of context this may not mean much, but he did said that. Additionally, Hyves, Tweakers (a Dutch news site) and a couple of other companies I know that use PHP professionally, some of which I know people working there, almost all seem to agree on that it's very difficult to find really skilled PHP programmers. There is an abundance of programmers that are of the Joe's Burgers variety and have hacked on some PHP script, but that's a completely different category really and not at all what a professional organization is looking for.

      So, even though a select few companies are using PHP very professionally, the norm in the PHP market is that it's used by people who barely know the difference between a while loop and an if statement, let alone that they know anything at all about data structures, algorithms, or efficiently structuring their code.

      Does PHP offers anything like that? Does the standard PHP library already comes with an MVC framework? Is unicode already natively supported? Is there any name spacing support? Is there ..

      Those aren't real problems unless they are actively preventing you from developing your website, which is probably only the case about 2% of the time. The other 98% of the time you never need consider them.

      And that's precisely where it all goes wrong. We don't need no education anymore, we don't need no knowledge about CS theory, we don't need no transactions, we don't need no unicode, we don't need no MVC... PHP is so easy... a baby can now program any web site. .... Until it all comes falling down.

      It's the typical Visual Basic kind of mindset. A mindset about which you can read everyday on thedailywtf. Sure, idiots can produce crap in any language, but for some reason both PHP and VB seem to produce a disproportionate amount of that.

      You sound like you did very well in school, and maybe even graduated at the top of you CS class. You also sound like you may have little real world experience.

      I did okay in school and CS went well too, thank you. I'm currently the lead developer of a 12 person strong development team I've worked with for about 7 years. We're building an enterprise application consisting of several 100k LOC and every day have to deal with an infuriating amo

    5. Re:the cutting edge itself has moved on by arjan_t · · Score: 2, Insightful

      Right, the "Java is needed for advanced stuff" argument. Fact: If your web application is "too advanced for PHP" you are doing it wrong and should simplify your design.

      For the love of god, wake up man. Not every web application is Joe's Burgers. Not every web application is essentially a web site with some dynamics. Some web applications are simply enterprise applications where the front-end happens to be rendered via HTML accessible via a web browser. They do heavy computations, processing, reporting, run simulations and yes, they DO NEED concurrency, and yes they DO NEED transactions.

      If a web application is "too advanced for PHP" then mark my words "it's too advanced for PHP". The model of fetching parameters from the request at the top of the page, feed them into an SQL query, and iterate over the result set while spitting out some HTML is fine for those 4 page web sites, and maybe even the 20 page ones, but it does not fit every possible application out there.

      Are you the same kind of person who walks up to a civil engineer designing that bridge over a large river telling him al his or her schooling and techniques are wrong, and the design needs to be simplified, and that it all can be done in an afternoon instead of 3 years, since that 16 year old kid just threw an old shelf over a ditch and he had a bridge?

      And I'm not sure how many times I have to explain this, but there is nothing complicated about USING some of this 'advanced' stuff. Yes, it's quite complicated to implement this under the hood, but guess what, the guys who bring us Java EE implementations have already figured out the hard stuff. I can simply use it, and with 'simply' I really mean 'simply.

      But okay, Mr Einstein, let me play along a little. Tell me how 'simplifying' my design magically gives me transactional semantics for non trivial operations.

      Any web app will be IO bound anyway.

      Good one. Take an app, ANY app. Slap a web interface on top of it, and any part of the app that was CPU bound suddenly becomes IO bound. Really?

      Dependency injection is a kludge you only need because Java is static and not dynamic.

      Dependency injection is about separation of concerns mister, and has very little to nothing to do with typing.

      Transactions should be handled by the framework

      Which is precisely how it is done in Java, via the very stable and mature Java Transaction API, that one can either use programmatically or declaratively via enterprise bean. Your point again?

      the transaction decorators always been misused by overzealous developers creating huge transactions slowing the application down to a crawl.

      Maybe you're referring to some home grown 'transaction decorator' as may typically attempted to be made in PHP by programmers who have a basic understanding of stuff, yet overestimate their abilities and think they can just build transparent transactions themselves. I mean, what could possible go wrong, right? If you're referring to the default declarative transaction support in Java EE, then really this is rarely a problem. If you don't know your stuff and simply do too much work in a transactional method, then you're simply doing too much work. That would have been a problem regardless of using a transactional method or not. Like so many other things, it's a professional tool that's utterly simple to use, but you do have to know what you're doing. Just as you should not blindly make each and every method asynchronous or each and every method synchronized etc.

      It proves that you are one of those Java only developers too stupid to learn new languages.

      I think it actually proves you are someone who jumps a little too fast to a conclusion. For the record, I started programming when I was 6 in C64 BASIC, quickly moved on to assembly, then C on an Amiga and later Apple, C++ on an SGI

  25. Re:Here's how to make Java again by travisb828 · · Score: 3, Funny

    To get buy in from the geezers, you should get in the habit of formatting your code. It makes things easier to read, and it just looks more professional. CamelCase also is helpful in improving readability, and to enforce proper code formatting you should make formatting part of the syntax.

    Doesn't this look so much nicer? I almost forgot. You will need a declaration.

    <?saufml version="1.0" encoding="UTF-8" ?>
    <Class>
            <ClassName>MyPony</ClassName>
            <Method name="Run">
                    <Code>
                            <If>
                                    <Condition>IsExcited</Condition>
                                    <If_Block>walkFaster </If_Block>
                            </If>
                    </Code>
            </Method>
            <Method name="trot" />
            <Method name="gallop" />
    </Class>

  26. Who cares? by Foredecker · · Score: 2, Insightful

    This question is ask as if Java is somehow imporant in and of itself. It isnt. Neither is perl, or PHP, Phython or gasp - C++ or even C. Throw C#, F# and VB into that group as well.

    These are tools. We (as in devleopers) should simply use the right tool for the job. If thats Java - then okey-dokey. If its C#, then groovy, if its C++ then thats ok to. Hey, I still use assembly language for a few things.

    Do real engineering work folks! Pick the right tools for the job based on the business and technical requirements.

    -Foredecker

    --
    Jibe!
    1. Re:Who cares? by shaka · · Score: 2

      If thats Java - then okey-dokey.
      If its C#, then groovy, if its C++ then thats ok to.

      This doesn't make sense. If Java is the right tool, then I should use "okey-dokey", if C# is the right tool, I should use Groovy, and if C++ is the right tool (is it ever, though?) then it would be ok to use Thats?

      --
      :wq!
  27. Re:What is out there right now? by nitehawk214 · · Score: 4, Funny

    So what do people with piercings do now?

    Work at Starbucks.

    Java engineers.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
  28. What the... FUDFUDFUD by Hurricane78 · · Score: 2, Interesting

    As far as I know, pretty much every “enterprise” server software still in written in Java, and hence the developer base is gigantic. I mean just look at the job offers. 9 out of 10 say Java, the last time I looked.

    What is he talking about?? Does he even know anything about what he is supposed to manage?

    --
    Any sufficiently advanced intelligence is indistinguishable from stupidity.
  29. Punks don't care about type inference by powerpopolon · · Score: 2, Interesting

    I for one would like geeks to be like the lab girl in NCIS but in fact they are not. Most "punks" in IT are just doing their programmer job to get some money at the end of the month. They do not care about advanced computer language theory.

    Anyway if you're one of the few geeks with piercings and really want your language to be "cutting edge" as TFA puts it, Scala, Clojure, Groovy, SISC, you name it, are available in the Java ecosystem. I'm sure you can even find some Forth dialect if you look hard.

    As for most people with piercings they'll be glad to use a language that is neither too cumbersome like C or Cobol or Pascal or VB, neither too hard to understand or organize like ML or Perl or Scheme. Java is nice for them and will stay so even now Oracle has bought Sun.

  30. Lemmings by Animats · · Score: 5, Insightful

    I was just by the Apple Store in Palo Alto, CA. There are people lined up for the iPad launch, some sleeping in tents. Three TV stations are covering the waiting line. Reminds me of Apple's "Lemmings' video.

    Actually, the state of the art in programming languages still sucks. The mindset that "it has to be unsafe to go fast" is so deeply entrenched in the C/C++ community that fixable problems aren't fixed, and as a result, millions of programs still crash every day. The "virtual machine" thing has resulted in ".NET", a virtual machine for x86 only. The "scripting language" approach is useful, but fanatical late-binding coupled with naive interpreters makes for very slow execution, as with Python. Few mainstream languages do concurrency well; the notion that concurrency is the operating system's problem results in pain for all concerned.

    Looked at that way, Java isn't bad. Memory safety is good. There are efficient compilers. There's some language support for concurrency. It's not too weird, and not too theoretical. Java is mediocre, but better than most of the alternatives when you need to get large amounts of work done.

  31. Young developers by sjames · · Score: 4, Interesting

    Java attracted the young developers because more experienced ones had already watched the "new next thing" come and go too many times to be blinded by the hype. Many of them realized that the whole bytecode, write once run anywhere was done in 1969 (p-code) and that if those hyping Java didn't know that, they didn't have enough experience to know if it was good or not. If they did know that then they were liars. Of course, the p-code interpreter fit on a single sided floppy with room to spare and ran acceptably on a 6502....

    It is amazing to me the way the hype machine strapped JATOs on that pig and sorta made it fly, but that can only last so long.

    Now with Java in the clutches of the enterprise people who are the leading source of anti-cool, it doesn't stand a chance.

    1. Re:Young developers by MemoryDragon · · Score: 3, Interesting

      Java got off because of several reasons, system became so complex and distributed that C++ simply was a sure tool to make such a project fail, and java was very simple back then but could pull off things which C++ was not able to in a decent matter of time only with a few locs.

      The other issue was Smalltalk, ParcPlace single handedly killed with a stupid business move the entire Smalltalk market, they bought the most popular Smalltalk vendor on the PC side, Digitalk promised to unify their apis and the Digitalk ones and what happened was that they killed digitalk never fullfilled their promise, it did not help either that Digitalk was the cheap kid on the block why ParcPlaces Smalltalk did cost a fortune. Add to that some infighting at ParcPlace which drove important people away and a load of Smalltalk programming companies gotten burned and you had the perfect fiasco, which even IBM with their Smalltalk could not fix anymore.

      Java was just heavens sent for those companies, while not as powerful as Smalltalk and in its infancy, it was the perfect next choice.
      Funny thing is, that Smalltalk already had most things in place which languages like Ruby etc... try now to achieve, but in my opinion in a leaner and more thought out manner.

  32. Help keep C relevant in the modern era! by symbolset · · Score: 2, Funny

    Why is noone asking to examine the C programming language, to adapt it to modern programming processes and methods? Why is noone speaking out to defend C as a useful language, to update the aged methods of Kernighan and Ritchie?

    Oh, wait. Never mind. That was a stupid question.

    --
    Help stamp out iliturcy.
  33. Re:Groovy + other languages by crowne · · Score: 2, Interesting

    I would say that the future popularity of the JVM is pretty secure with groovy, jruby, scala and the myriad of other languages that are now available on the JVM, see wikipedia List_of_JVM_languages.

    There is a huge advantage to java programmers by staying within the familiar JVM world when changing a language rather than jumping to a completely new and foreign environment - familiar stacktraces, reusable libraries etc.

    The "primary" language on the JVM - java will inevitably evolve slower (JCP = design by committee) and will therefore struggle to remain at the cutting edge.

    --
    RTFM is not a radio station.
  34. Java isn't pure OO by elgee · · Score: 2, Insightful

    I went from Smalltalk to Java in 1996 and didn't like its implementation. In Smalltalk, EVERYTHING inherited from TOFU (Top OF Universe). Not so in Java. Haven't done it for some years, but I thought it wasn't very elegant.

    1. Re:Java isn't pure OO by WeirdJohn · · Score: 3, Insightful

      The thing I hated most about Java is that I can't just create a new class and implement a few messages and use it in existing code, unless I somehow shoehorn it into an existing class hierarchy, or implement an interface. If the existing code was done without interfaces in mind, I have to edit a few hundred methods in dozens (if lucky) of files, and not break anything.

      To avoid this I have to over-engineer prototype code, and increase production cost estimates by at least a factor of 4, or else use a generating framework that leaves me with no idea what any of the generated code does, which makes fixing subtle bugs so much fun.

      At least smalltalk works. And the smalltalk debugger is possibly the most elegant and efficient ever.

    2. Re:Java isn't pure OO by mwvdlee · · Score: 2, Insightful

      Personal pet peeves for Java:

      1. int/float are not treated as classes. Okay, only a minor peeve.

      2. Classes wrapping the basic datatypes and string are finalized. This one is a major peeve.

      3. Operator overloading is not allowed and the designers of Java clearly stated it never will because operator overloading is just pure evil and no sane programmer should ever, ever want to do operator overloading, for no reason whatsoever. The standard String class uses operator overloading.

      4. The library is an inconsistant mess. Not quite upto PHP levels of messiness, but a mess nonetheless.

      Any others?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  35. The same is true of Cobol by Rix · · Score: 4, Insightful

    The enterprise sector is spectacular at painting itself into corners. Java isn't the first instance of that, and it certainly won't be the last. So yeah, Java isn't going anywhere as far as enterprise is concerned. But neither is Cobol or Fortran or many other moribund technologies.

    The rest of us can sensibly let all of that die.

    As for inconsistencies, how many mutually incompatible versions of Java are there? How many revamps compared to languages stewarded by standardization bodies or other neutral actors? (C has, what, 3 over it's 40 years of history?)

    I'd say that the best thing Oracle could do for Java would be to give it to ISO, but I think it's 10 years too late. I'd love to be surprised, though.

    1. Re:The same is true of Cobol by Prof.Phreak · · Score: 3, Insightful

      The enterprise sector is spectacular at painting itself into corners.

      What are some of the alternatives? Is .Net not worse of a corner? And at ``enterprise'' level, pretty much everything turns to crap anyway, and as far as crap is concerned, Java is usually easier to deal with than say... poorly written Perl (I'm a big Perl fan, but I've seen the code written at a fortune500 corp, and... well... it's unmaintainable crap written by a cobol programmer).

      Would C/C++ be a better alternative for internal apps? Unlikely!

      Would Python? Perl? PHP? I doubt it. Primarily 'cause nobody who writes such enterprise apps would really know what they're doing (consider folks who've worked at a corp for last 15 years).

      Yeah, everything most enterprises need should be web-based anyways---but the guts behind that would still be... what? VB.NET? Heh!

      Obviously there are different definitions of ``enterprise.'' But if YOU had to pick a language for some internal app with a dozen or so existing developers (all of whom know Java, some of whom know other languages), which language would you pick? [throw in assumption that you need to run it on a unix-like platform]

      --

      "If anything can go wrong, it will." - Murphy

    2. Re:The same is true of Cobol by peppepz · · Score: 3, Insightful

      As for inconsistencies, how many mutually incompatible versions of Java are there?

      Isn't extreme backward compatibility the reason Java gets most often bashed for? For what I know, any 1.1 source code should compile fine under java 1.7 (unless you used something like "assert" as a symbol name, but even then you should get away by using the -source switch for the compiler).

      How many revamps compared to languages stewarded by standardization bodies or other neutral actors? (C has, what, 3 over it's 40 years of history?)

      I'd say that the best thing Oracle could do for Java would be to give it to ISO, but I think it's 10 years too late. I'd love to be surprised, though.

      To be honest, every single C compiler out there defines its own incompatible implementation of C. That's because the standards move so slowly that every manufacturer tends to put its own custom features in his compiler. I don't recall this happening with Java, only MS tried to do that with J++ IIRC, but Apache Harmony, the Eclipse compiler, OpenJDK, GNU Classpath and Sun's JDK all implement the very same language if I'm not wrong.

      That said, I'm favorable to an independent standardization of Java, but I don't think it will solve any problem of Java.

  36. improve the JVM bytecode by basiles · · Score: 4, Insightful

    I believe what would be significant is to improve the JVM bytecode, to add some additional instructions. Tail-recursive calls is an example. There are some others. If the JVM specification was improved (and implemented by Oracle & other major JVM sources), several new languages (or language feature) could flourish. And the important part is not the Java language; it is the JVM. Better languages (Clojure, Scala) can be implemented for the JVM, and if the JVM was improved, even better languages could be experimented, all able to use the legacy of Java. Regards.

    1. Re:improve the JVM bytecode by basiles · · Score: 4, Insightful

      I was serious. Tail recursive call is one of the major feature lacking in the JVM. See http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm http://openjdk.java.net/projects/mlvm/ And there is no way to implemnent tail-recursive call in its full generality (including tail-call optimisation to statically unknown code, e.g. thru virtual methods...) without a proper support from the JVM. This has nothing to do with addressing modes (which you don't need in a VM offering garbage collected values). And the Ocaml virtual machine bytecode does indeed show that other kind of bytecodes can be useful. JVM is not the perfect VM; it could and should be improved.

    2. Re:improve the JVM bytecode by MemoryDragon · · Score: 2, Insightful

      Actually I personally think the bytecode level is in need for a serious overhaul, while it is not bad, it has served us well with gradual improvements it has some weak points.
      One is being addressed with J7, invokedynamic.
      But its weakest point still is a missing real class hotplugging system, they wanted to tackle it for J7 but could not because of hotspot.
      In the meanwhile we have to live with workarounds, like dynamic class recompilation in the runtime which introduces unwanted proxies, workarounds on classloader level by introducing throw away classloaders, various framework hooks etc...
      Just to get something out of the box which is needed by every developer!

  37. Eheh by SmallFurryCreature · · Score: 2, Insightful

    And you are aware most job offerings tend to take the kitchensink approach? "Lets include every word we ever read and then demand 4 years experience with it. iPAd, senior engineer!".

    Also (java) matches javascript.

    I know you are blowing smoke because PHP is not listed. Oversight or some other reason?

    Oh and wouldn't your query also match "Need highly skilled X developer who knows enough Java to migrate us away from the steaming pile of crap?".

    Or indicate that there are no good Java developers to be found?

    What about companies that offer you a nice cup of java every morning?

    I know that a job count for PHP has to discount those companies with .php in their url.

    In fact, does posting a few queries to Monsterboard not tell you anything more then that you have to much time on your hand?

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  38. Re:Here's how to make Java again by Tablizer · · Score: 2, Insightful

    Congratulations, you reinvented ColdFusion.

  39. Re:What do you mean "Keep"? by sgt101 · · Score: 2, Insightful

    It's all about Balls - risk taking, competition, innovation.

    The computer is a new and novel device. It is probably more important than the wheel, perhaps less important than fire (with all the chat about cooking being a primary driver for evolutionary change in humans). Your view of the correct set up and instruction set for computing may be correct, but surely you would be the first to admit that if it is then you have been strikingly prescient. In my view the use cases for computers are far from decided, and while it is true that complete equivalence of all Turing complete instruction sets would enable any language to be used to do what any other language does I think that we want tools that are convenient and efficient for a particular task.

    So, 70, 80, 100 years of diversity and then convergence; at least! The more that the energy of change is put into the system the more diversity in the ecosystem. Eventually it will settle down and a standard set of tools will emerge, but not yet.

    --
    --------------------------------------------- "In the end, we're all just water and old stars."
  40. but but but by toby · · Score: 2, Interesting

    Guido says you don't need it! (/me ducks)

    Erlang programmers might disagree ;-)

    --
    you had me at #!
  41. I don't care what you say by toby · · Score: 2, Interesting

    The One True Instruction Set was the PDP-11's.

    la-la-la-la-la-la-la...

    --
    you had me at #!
  42. Re:What is out there right now? by mrjb · · Score: 2, Funny
    "I would like to see people with piercings doing Java programming,"

    Never mind the people. I just want to see those piercings doing Java programming.

    --
    Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
  43. Modern-day COBOL by mwvdlee · · Score: 2, Insightful

    'Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol'

    So Java has gone from immature, constantly changing and buggy to stable, reliable and fast? I can see how that would be a problem for somebody that wants to attract unexperienced scriptkiddies to a programming language.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  44. The whole point by shutdown+-p+now · · Score: 3, Insightful

    Java has evolved from a groundbreaking, revolutionary language platform to something closer to a modern-day version of Cobol.

    The whole reason why Java enjoys the widespread popularity that it has is precisely because of that. Most projects aren't made by "trendy" guys in a basement somewhere - they're made by corporations, most of them not exactly small, who value predictability and the peace of mind that comes with it over new & trendy.

    The advantage of Java there is that it is a well-known quantity, and it has been in that state for a while, with few changes. There are many development tools, all top-notch, with code editing features unmatched by IDEs for any other language. There is a huge amount of useful code in third-party libraries, most of them under liberal (free, non-copyleft) licenses. There is a large workpool, and it's going to remain that way for some time to go.

    There's nothing wrong with that. It's a niche that has to be filled, and Java is doing remarkably well in doing so. Don't fix what's not broken.

    And in the meantime, the trendy guys always have Groovy, Scala etc to play with.

  45. Java aint going anywhere by jonwil · · Score: 3, Insightful

    Java (specifically J2EE with an Oracle or similar database back-end) seems to be second only to .NET/ASP.NET/C#/VB.NET with SQL Server in terms of jobs I see when I look on the job sites here in Australia.

    Plus Java is still the #1 mobile language. Not just on Android but on the 1000s of feature phones out there running various incompatible versions of J2ME for applications (I have owned 3 feature phones, all of which have supported Java apps in some form)

    Java on the desktop is dead (if it was ever anything but stillborn in the first place). Java for client side web development died and got replaced with ActiveX, Flash and other technologies.

    But Java in the enterprise and mobile spaces is far from dead.

    If anything, Oracle should be pushing J2EE even harder (Oracle is the dominant choice of database to use alongside J2EE)

  46. Re:Just let it die by mcvos · · Score: 2, Interesting

    My University only has two programming courses: C++ and Java

    That's terrible. No Prolog? No Lisp? No functional programming language at all? No assembly, for that matter? And what about parallel programming languages? I must have learned about a dozen languages at my university (not all of them very thoroughly, mind you).

  47. Re:groundbreaking? revolutionary? by owlstead · · Score: 2, Insightful

    "It was never groundbreaking and revolutionary."

    Of course not, it was not because it was explicitly designed not to be all that. It was supposed to be a small well defined language that brought good OO practices and GC to the mass market of C/C++ programmers - hence it syntax. For this to happen, it needed also to be relatively fast during execution.

    As for all the politics, I am highly surprised by the way you think the market moves. The development market moves because it sees something useful. After that it looks at the license yes, and Java never had much to scare away developers except hard core purists (read: the linux crowd - and they certainly had good reasons for shunning it).

    "But betting on Sun was the wrong move: Sun screwed up the language, screwed up the toolkits, screwed up the implementations, and made Java one of the most proprietary languages in existence.
    In the end, all Sun managed to produce was the only thing they have ever been able to produce: bloated server side software.
    Good riddance, Sun, you won't be missed."

    Now that's just trolling. I'm very surprised that you get modded up when that kind of junk is in your post.

  48. Who cares? by kaffiene · · Score: 2, Insightful

    Who cares if Java is cool or not? It's getting a lot of actual work done. In fact, there's a crap load more stuff getting done in Java than Ruby or 'The Cloud' or whatever is supposed to be cool these days. In the end, 'coolness' has absolutely no engineering benefits whatsoever.

    The fact that Java has lasted as long as it has and is as prevalent as it is now is testament to its ability to GetShitDone(tm). ...along with a lot of other useful languages which are useful regardless of whether some hack or slashdot group-think thinks it's trendy or not.

  49. Never Revolutionary, but Still Relevant by RAMMS+EIN · · Score: 3, Insightful

    Java is not and never has been groundbreaking and revolutionary. All the features people used to tout about Java back in the day were things that existed before it. A lot of smart people have poured a lot of effort in research related to Java, and the platform has grown stronger as a result, but even most of that seems to be just re-implementing existing ideas for Java.

    However, that by no means implies that Java isn't relevant. It has certainly taken the software world by storm, and, as far as I can see, Java is still going strong. People are taking Java courses left and right, either to learn it for the first time or to deepen their understanding. There are so many Java projects that it's hard to find something for those in our company who would prefer to use something else. Even with .NET being backed by a company whose products usually get adopted as a matter of course, I don't see nearly as much demand for .NET knowledge as for Java. Java irrelevant? It sure doesn't seem that way to me.

    --
    Please correct me if I got my facts wrong.