Forgot your password?
typodupeerror
Java Programming

If Java Is Dying, It Sure Looks Awfully Healthy 577

Posted by timothy
from the is-someone-brewing-another-pot? dept.
Hugh Pickens DOT Com writes "Andrew Binstock writes at Dr. Dobb's that a recurring prejudice in the forums where the cool kids hang out is against Java, often described as verbose and fading in popularity but Binstock sees little supporting evidence of Java being in some kind of long-term decline. While it is true that Java certainly can be verbose, several scripting languages have sprung up which are purpose-designed to spare developers from long syntactical passages to communicate a simple action, including NetRexx, Groovy, and Scala. As far as Java's popularity goes, normally, when technologies start their ultimate decline, tradeshows are the first to reflect the disintegrating community. But the recent JavaOne show was clearly larger and better attended than it has been in either of the last two years and vendors on the exhibiting floor were unanimous in saying that traffic, leads, and inquiries were up significantly over last year. Technically, the language continues to advance says Binstock. Java 8, expected in March, will add closures (that is, lambda expressions) that will reduce code, diminish the need for anonymous inner classes, and facilitate functional-like coding. Greater modularity which will be complete in Java 9 (due in 2016) will help efficient management of artifacts, as will several enhancements that simplify syntax in that release. 'When you add in the Android ecosystem, whose native development language is Java, it becomes very difficult to see how a language so widely used in so many areas — server, Web, desktop, mobile devices — is in some kind of decline,' concludes Binstock. 'What I'm seeing is a language that is under constant refinement and development, with a large and very active community, which enjoys a platform that is widely used for new languages. None of this looks to me like a language in decline.'"
This discussion has been archived. No new comments can be posted.

If Java Is Dying, It Sure Looks Awfully Healthy

Comments Filter:
  • by Anonymous Coward on Thursday October 10, 2013 @10:20AM (#45091203)

    Java had closures in the form of Anonymous classes. While it is true that lamda expressions will be much more concise, it is not correct to suggest that closures are being added with Java 8.

    I often hear that Java "doesn't have closures." Since anonymous methods can capture variables within the scope of their declaration, they are closures.

    I also frequently hear that Java is "interpreted," but that's a whole 'nother discussion.

    • by lgw (121541) on Thursday October 10, 2013 @01:27PM (#45093771) Journal

      That entirely misses the point. The conciseness is the entire point.

      If I have a list of strings, and want to append ".txt" to each, using a for loop is just one more annoying piece of COBOLesque boilerplate.

      fileNames = names.Map(n => n + ".txt");

      That's what you want.

      docFileNames = names.Where(n => n.StartsWith("Doc")).Map(n => n + ".txt");

      You can understand what that does even though I just make up the methods. That's the damn point.

    • by Hentes (2461350)

      Java doesn't have closures and it won't have any in Java8 either. A closure isn't the same as a lambda. In a closure, free variables are stored by reference, and their changes are reflected in the closure. Java8 lambdas require all free variables to be final.

  • by bendilts (1902562) on Thursday October 10, 2013 @10:20AM (#45091209)
    Funny, I thought Scala was a fully compiled, statically type-checked language (at least as much as Java is). A language is not a scripting language just because it doesn't suck.
  • by nimbius (983462) on Thursday October 10, 2013 @10:24AM (#45091277) Homepage
    I use it on mission critical applications at work and it does a very efficient job of testing all the functionality of Nagios to page me at 3:00 AM. I have other java applications that are designed to explore the limits of slab allocation and heap return in memory. Theres even a java application I wrote that calculates financial reports. I know what you're thinking, and yes, it performs well as it stress-tests VoIP bandwidth and the helpdesk ticket system.

    there are still so many uses for java. one of my earliest and oldest projects I still use to this day! its an application to help post Slashdot comme!####)))!%[NO CARRIER]
    • Re:javas not dead! (Score:5, Insightful)

      by lgw (121541) on Thursday October 10, 2013 @01:40PM (#45093909) Journal

      have other java applications that are designed to explore the limits of slab allocation and heap return in memory

      You remind me of far to many C programmers I've met (and projects I've been on).

      "Look I've reinvented that difficult plumbing built into C++ - my language is just as good as C++!"

      "Yeah. How much time did that take? How many nightmarish bugs did you overcome?"

      "Lots. And a few."

      "Time well spent then, I'm sure, and my best wishes that there's not one last plumbing bug that you'll find in the field".

      Different tools for different jobs. C++ isn't the right tool for much, but nothing else comes close for jobs that actually need the cruft that clutters C++. Taking over memory allocation is a perfect example. (Checking an object every time it's dereferenced to make sure it hasn't been freed or worse, re-used is another - man that's a stupid problem to solve in Java or C#.)

    • Re:javas not dead! (Score:4, Insightful)

      by RCL (891376) <`rcl.rs.vvg' `at' `gmail.com'> on Thursday October 10, 2013 @07:31PM (#45097281) Homepage
      Java abstracts away all the fun in programming. You cannot really target specific hardware with it, and it means you cannot get (close to) maximum performance on any given piece of hardware - you are deprived of control over processor cache, memory locality of data and code, or access to vector instructions. JIT, which "compiles" the code piecewise, is at obvious disadvantage compared to a proper compiler that has global view of the program (and JIT is also more time constrained, compiler can spend hours compiling the code), and uncontrollable garbage collector means that you will have hard time enforcing even "soft realtime" requirements.

      Different people may look differently, but for me, all that means that Java is suboptimal for games or other heavily performance-oriented stuff, and this is the only kind of software I enjoy programming. Making performance-insensitive backends full of "business logic" is for someone who is in the software industry for money only...
  • by idontgno (624372) on Thursday October 10, 2013 @10:25AM (#45091305) Journal

    The Dead Collector: Bring out yer dead.
    [a company puts COBOL on the cart]
    Oracle Corporation with Dead Body: Here's one.
    The Dead Collector: That'll be ninepence.
    Java: I'm not dead.
    The Dead Collector: What?
    Oracle: Nothing. There's your ninepence.
    Java: I'm not dead.
    The Dead Collector: 'Ere, he says he's not dead.
    Oracle: Yes he is.
    Java: I'm not.
    The Dead Collector: He isn't.
    Oracle: Well, he will be soon, he's very ill.
    Java: I'm getting better.
    Oracle: No you're not, you'll be stone dead in a moment.
    The Dead Collector: Well, I can't take him like that. It's against regulations.
    Java: I don't want to go on the cart.
    Oracle: Oh, don't be such a baby.
    The Dead Collector: I can't take him.
    Java: I feel fine.
    Oracle: Oh, do me a favor.
    The Dead Collector: I can't.
    Oracle: Well, can you hang around for a couple of minutes? He won't be long.
    The Dead Collector: I promised I'd be at Microsoft. They've lost nine today.
    Oracle: Well, when's your next round?
    The Dead Collector: Thursday.
    Java: I think I'll go for a walk.
    Oracle: You're not fooling anyone, you know. Isn't there anything you could do?
    Java: I feel happy. I feel happy.
    [The Dead Collector glances up and down the street furtively, then silences the Body with his a whack of his club]
    Oracle: Ah, thank you very much.
    The Dead Collector: Not at all. See you on Thursday.
    Oracle: Right.

  • Java won't die. (Score:5, Insightful)

    by sirsky (53613) on Thursday October 10, 2013 @10:27AM (#45091331)

    The reason Java is still alive and well is not because it's a good language. It's not because Oracle does a good job patching security faults with it. It's not because it may be able to run most of it's code on any given OS that can run its VM.

    The reason Java is still alive and well is because it is the OO language most schools, universities and colleges teach in their CS classes.

    • Re:Java won't die. (Score:4, Insightful)

      by Anonymous Coward on Thursday October 10, 2013 @10:38AM (#45091533)

      Uh huh. Maybe you're not old enough to remember PASCAL? Which was the overwhelming favorite of colleges and schools back in the late 80s and early 90s?

    • Re:Java won't die. (Score:5, Informative)

      by ausekilis (1513635) on Thursday October 10, 2013 @10:46AM (#45091665)

      The reason Java is still alive and well is because it is the OO language most schools, universities and colleges teach in their CS classes.

      Which is both a blessing and a curse. I went through my programming undergrad classes in the last round they offered C and C++. It worked out well because my employer needed those languages and for me to be able to learn others quickly, such as Java and C#. My experience with classes in C++ and lower level bit-bashing in C gave me the knowledge in being able to create custom libraries and handle oddly defined standard binary blobs, such as DTED data.

      This same employer stopped looking at my school afterwards simply because Java was the dominant language. The graduates being churned out had knowledge of data structures and libraries, but knew very little of the ins and outs of binary data streams, binary blobs, memory management, and all those other things that you need in C and C++ that Java gives you for free.

      Yes, it's good to have an approachable basis for such a complicated field as programming (computer science/software engineering/development/etc..). However, going from C/C++ to Java is a lot easier than the other way around. There's a reason my professor called Java a "Training Wheels Language"

    • Leaving aside its pros and cons, the biggest reason that Java initially caught on was Sun's marketing department.

      • Re:Java won't die. (Score:4, Insightful)

        by gtall (79522) on Thursday October 10, 2013 @11:56AM (#45092617)

        Nah, it caught on because you could do simple stuff simply without whacking away in C or C++ and that it was cross platform at a time when attempting to do cross platform development usually meant you had to shell out for proprietary pile of stuff which locked you in. Java was good for backends as well where you had a lot of horse power to apply to its programs. Java was also good for universities to use in teaching programming, not that it made for good teaching.

        Sun had a marketing dept? What were they marketing?

    • The reason Java is still alive and well is because it is the OO language most schools, universities and colleges teach in their CS classes.

      I transferred and finished my degree at a different school than I started at. I knew they were a good school when they refused to transfer any credits for any class that was taught in Java.

  • by bradgoodman (964302) on Thursday October 10, 2013 @10:30AM (#45091379) Homepage
    I think much of Java's *lack* of decline is attributable solely to it's "native support" (use) in the Android platform - just as the sudden rise of Objective-C (See Tiobe index) is obviously attributable to the iPhone and iPad devices.

    Outside of Android - I believe use and acceptance is waning heavily. As a client-side web tool (where it got most of it's early predominance) it has been cockblocked by iOS, and is becoming overshadowed by native HTML5 (JavaScript) stuff. As a server-side tool it has been getting taken over by Ruby/Rails, Python and the stuff mentioned in the OP.

    • by binarylarry (1338699) on Thursday October 10, 2013 @10:48AM (#45091685)

      I don't think Java and Rails, Python, etc actually compete much. They're very different technologies.

      Rails and Python are great when you don't have significant technical skills and just need to slap some shit together and throw in on a web server.

      Java is better in areas where you need high performance and scalability, but it's also much more costly to do anything with it.

      • by slim (1652)

        The smart thing to do is use Jython, JRuby, Groovy.

        Then you can write in Java when the problem demands it, and in something more expressive when you're gluing it together. And you have access to all the thousands of libraries Java has.

        I saw a JRuby presentation in which they said they expected JRuby to outperform native Ruby -- because the Ruby runtime is written by a few guys, whereas the JVM has half a campus full of incredibly clever people, just working on making it run Java Bytecode as fast as possible

      • by bill_mcgonigle (4333) * on Thursday October 10, 2013 @11:31AM (#45092259) Homepage Journal

        Rails and Python are great when you don't have significant technical skills and just need to slap some shit together and throw in on a web server.

        I've seen this from the other side. Java is a *great* language for the middle of the normal distribution. I'm not going to name the languages on the left side of the curve, because the point of this isn't to start a flame war, but if you have a large number of averagely competent programmers, then Java lets you (as architect/manager/etc.) have those programmers be productive for you, produce code that can be read in the future by the same segment of the population, and be reasonably sure the language will prevent them from making hidden catastrophic mistakes. Also there are a large number of existing tools that let you scale their work out both in depth and in breadth.

        The alpha geeks employing Ruby, Python, modern Perl, erlang, etc. are usually at the right side of the curve, doing very efficient, agile, but abstract and terse stuff that takes exceptional (not heroic, just unusual) sysadmin skills to get to work on a grand scale.

        Due to the nature of the available talent pool, it's natural to see projects start with the advanced scripting languages among the startup crowd and then migrate to the Java environment over time. Twitter would be a good example of this.

        • by binarylarry (1338699) on Thursday October 10, 2013 @11:51AM (#45092545)

          Twitter didn't switch to Java to take advantage of the mediocre "kind of a programmer" Java talent pool.

          They switched because their "alpha geeks" couldn't make Ruby/Rails perform adequately for the amount of traffic they get.

          • by gbjbaanb (229885)

            Why didn't they switch to C++ and do it properly!

            • Because they needed it to be fast AND secure AND fairly bug free.

            • by angel'o'sphere (80593) on Thursday October 10, 2013 @12:41PM (#45093197) Homepage Journal

              Because it would be a dozen times more efford in programming hours, because it lacks the relevant libraries, because the amount of capable C++ programmers is very low, because C++ is a dying language in the enterprise environment, because C++ is not truely portable across platforms, because in the end when it comes down to performance the C++ implementation (which costed you 5 times the money and 2 times the time to develop) will be only 5% faster than the Java implememtation.
              And all arguments above will kill you when you plan to maintain it for the next 15 years.

      • by ADRA (37398) on Thursday October 10, 2013 @02:16PM (#45094381)

        I agree that Rails / Python are definitely the more small scale / personal project side projects type solutions out there. Yes they can scale, but I'd argue that they're not good at it.

        Java SUCKS for small scale. EE containers are heavy and require a good set of knowledge to even take crack at a reasonable site, but once that painful layer has been passed, adding more and more to the service becomes as trivial as the business domain requires. The extra leveraging from well architected services and API's makes working on larger scale Java systems a dream in comparison to others (Currently working on a Java Web/Services project single deplyment EAR that's over 3 million source lines BEFORE all the libraries and server container features that we're also leveraging).

        I'd also argue that outside of hosting, you can easily get Java based web service tools/servers/etc.. for 0 dollars. You can't find much Java hosting in the zero dollar number (Redhat's cloud Jboss 7 or the non-standard Google appengine being a notable exceptions) which may be an issue to some enthusiasts who don't do their own hosting.

    • by JAlexoi (1085785)

      As a server-side tool it has been getting taken over by Ruby/Rails, Python and the stuff mentioned in the OP.

      I hope you are kidding here, because that is far from the case. Java is still the de-facto language for most server-side applications. RoR never outgrew it's hipster background. It has been 7 years since RoR had it's hype peak... The hype waned and RoR is still a rarity.

  • Java and the JVM (Score:5, Informative)

    by Kagato (116051) on Thursday October 10, 2013 @10:30AM (#45091387)

    People don't understand the difference between Java the Language, Java the Virtual Machine (JVM) and Java the Browser Plug-in.

    What do NetRexx, Groovy, and Scala have in common? They are all languages that are considered production stable running on top of the JVM. There are about a half dozen production ready languages that run on top of the JVM in fact. By running in the JVM these languages automatically pick up all sorts of performance and availability enhancements (JIT, Hotspoting, caching, etc.) the JVM offers. That's a lot of R&D the new languages don't have to invest in. It also allows new languages to be used in existing Java infrastructure with little to no change.

    The reason this is all possible is because Java the language is just an abstraction that compiles to Java Op Code. Java Op Code is very stable. Since Java 1.0 all that's changed with the opcode is a couple new operations and couple deprecations. There's still around 100 codes total.

    So why do people think Java is on the decline? Well the browser plug-in has been getting a bad name as of late. But that plug-in != Java. And frankly very few applications need a Java Plug-in. HTML5 and JS work just fine for the UI. It's not going to be a great loss if peopledisable it. You also get knee jerk reporting on this advising people to get all Java on their machines. Like it's somehow less secure than the VB runtime executors.

    As far as jobs, I work in the java space. There's way more need than people to fill the need. I make extremely good money java programmer.

    • Re: (Score:3, Informative)

      by Kjella (173770)

      Java Op Code is very stable. Since Java 1.0 all that's changed with the opcode is a couple new operations and couple deprecations. There's still around 100 codes total.

      This page [oracle.com] seems to indicate it's slightly over 200 in Java 7.

  • Which Java? (Score:5, Insightful)

    by i_ate_god (899684) on Thursday October 10, 2013 @10:30AM (#45091391) Homepage

    The JVM or the language?

  • by gregmac (629064) on Thursday October 10, 2013 @10:52AM (#45091727) Homepage

    It definitely doesn't help that the JRE installer tries to also install the Ask toolbar. Seriously? Even Microsoft doesn't try to install Bing with the .NET installers, and that's their own property they're desperately trying to push on everyone.

    How am I supposed to take a platform seriously if the fundamental piece that has to be installed by all developers AND users to use it is doing the same sneaky things that half the crappy freeware on the internet is doing?

    Just how much revenue does Oracle make from Ask anyway?

    • Larry Ellison is just another borderline personality disorder businessman who doesn't give a fuck about anything besides making himself richer and self-aggrandizement.

      He and Ballmer should go to some private island and never be seen again.

    • by IamTheRealMike (537420) <mike@plan99.net> on Thursday October 10, 2013 @02:22PM (#45094447) Homepage

      The Windows JRE installer is an obnoxious piece of crap. Fortunately modern JDKs ship with something called the JavaFX Bundler, which makes native installers (exe, msi, dmg, rpm, deb) for each platform that bundles a stripped down JRE with the app, so there is no need to install the JRE or keep it up to date. If you are distributing consumer software or don't want to handle the problem of keeping JREs up to date, it's useful.

      There are also tools that can eliminate the need for the JVM entirely, for instance by ahead of time compiling entirely to native (Excelsior JET is one such program), or alternative JVMs that sacrifice some performance for code size, like Avian.

  • by peter303 (12292) on Thursday October 10, 2013 @10:52AM (#45091733)
    Over datasets are in the terabytes. Calculations distribute over thousands of nodes and cores. Only in the 1990s was thre concern about efficiency. 64-bit JVMs have been a godsend. Formerly a FORTRAN-90/C++ shop.
    Java allows seamless GUI front ends and web-service control.
    The new features in Java-8 are very interesting.
    • Benchmarks?

      I've heard the "Java can be faster than C/C++" many times, but have never seen benchmarks that back it up.

      • by peter303 (12292) on Thursday October 10, 2013 @12:34PM (#45093085)
        Some here. [mines.edu]
        • From your link:

          The Mines Java Toolkit (JTK) is a set of Java packages and native (non-Java) code libraries for science and engineering.

          In other words, there is C/C++ wrapped in Java. That may be a good idea for many applications, but it's not a measure of Java's speed.

          Ye olde Computer Language Benchmarks Game [debian.org] has pure Java vs. pure C++. There is one test where Java is slightly faster than C++ (and even that advantage disappears depending on which of the four processors they tried). Otherwise C++ is up to 3x faster, and an average, from glancing at the graphs, of about 2x faster.

          I tend to trust these benchmarks because anyone

      • by benhattman (1258918) on Thursday October 10, 2013 @12:38PM (#45093149)

        Not just can be, it usually is faster. At least, once it's been JITed. We just ran some XML serialization/deserialization tests, and the java implementation was much faster than the C++ one...eventually. The first several hundred iterations it was slower, but after that the Just In Time compiler optimized it, and it easily won.

        For long running computations, like scientific calculations for instance, Java is really good. The problem is we perceive how fast something is based on our wait time. Every time you boot a java applications it takes a long time for it to get started relative to a C++ applications. A quick command line java application might be orders of magnitude slower than a comparable C++ one. And that delay kind of permeates our intuitions about which is faster.

    • Formerly a FORTRAN-90/C++ shop.

      Some of the big banks have been putting Java on top of COBOL backends. You think I'm kidding, but I'm not.

  • by engun (1234934) on Thursday October 10, 2013 @10:54AM (#45091763)
    Java's problem isn't verbosity IMHO. It's the general mindset and community that has grown around the language. Instead of simplicity, they've gone into massive over-engineering, with factory factory factories and the like. A combination of pattern mania, and "enterprise" java, has resulted in turning an otherwise simple language into a veritable nightmare. Contrast this with the python community for example. Language wise, compare Java with C#. C# has done things a lot better in general. It may help that newer versions of Java will achieve some degree of feature parity with it but in the long run, I think it also has to be accompanied by a shift in the general notion of what's "normal" design in the Java world.
  • Hooray! (Score:4, Funny)

    by Greyfox (87712) on Thursday October 10, 2013 @11:05AM (#45091921) Homepage Journal
    I'm looking forward to having to support crappily-engineered code in some other language! I'm going to slap the first in-house engineer who suggests we jump on the NetRexx bandwagon.
    • by slim (1652)

      I worked in Rexx on MVS and OS/2 in the early 90s. I'm astonished it's not dead and buried.

  • by kelemvor4 (1980226) on Thursday October 10, 2013 @11:08AM (#45091957)
    With Oracle doing everything possible to kill Java, it's shocking that Java persists.
  • update nagging (Score:5, Insightful)

    by csumpi (2258986) on Thursday October 10, 2013 @11:12AM (#45092021)
    I only have two issues with java:

    - the constant nagging from the java updater. (Although to be fair, the updater has been killed on any and all of my devices.)

    - the braindead way of keeping old version of the jdk and jre around. Words can't describe how freaking lame this is. I only want one java directory, with one jre and one jdk in it. The new versions need to replace the old ones and provide backwards compatibility.
  • by ErichTheRed (39327) on Thursday October 10, 2013 @11:16AM (#45092061)

    - Most CS programs train their graduates in Java.
    - Java is pretty much the enterprisey middleware language these days. I've seen so many J2EE applications alive inside organizations doing mundane but vital tasks.
    - Unless you're a web startup, Java is almost universally used for line-of-business application development. That ugly GUI that collects budget numbers from 500 databases and displays an "executive dashboard" was probably slapped together by an Accenture type outfit using offshore new grad coders and sold to companies for millions.

    It's just too prevalent now for people to say, "Oracle sucks, we're porting everything to C#." I can definitely see a market for Java talent similar to the COBOL market 30 years down the road. People won't need millions of Java coders anymore, but they'll need older expert types to go untangle messes.

  • by cascadingstylesheet (140919) on Thursday October 10, 2013 @11:16AM (#45092071)
    For whatever reason, Java seems to be popular with the work to spec, outsourcing shop types.
  • Java must be dying - when's the last time you saw an applet? Let's ignore that it's hugely popular on servers, for enterprise development.
  • by Animats (122034) on Thursday October 10, 2013 @01:47PM (#45093995) Homepage

    Java has had closures, with all the stuff that does to local variable lifespan, since Java 7. Lambda expressions are just syntactic sugar for writing small closures.

If computers take over (which seems to be their natural tendency), it will serve us right. -- Alistair Cooke

Working...