Slashdot Mirror


Java Named Top Programming Language of 2015 (dice.com)

Nerval's Lobster writes: What was the most popular programming language of 2015? According to the people behind the TIOBE Index, Java took that coveted spot, winning out over C, Python, PHP, and other languages. "At first sight, it might seem surprising that an old language like Java wins this award," read TIOBE's note accompanying the list. "Especially if you take into consideration that Java won the same award exactly 10 years ago." Yet Java remains essential not only for businesses, it continued, but also consumer-centric markets such as mobile development (i.e., Google Android). That being said, even big languages can tumble. (Dice link) Objective-C tumbled from third place to 18th in the past 12 months, thanks to Apple's decision to replace it with Swift. In 2016, TIOBE expects that "Java, PHP (with the new 7 release), JavaScript and Swift will be the top 10 winners for 2016. Scala might gain a permanent top 20 position, whereas Rust, Clojure, Julia and TypeScript will also move up considerably in the chart." What has been your most-used (or best-loved) programming language of the last 12 months?

27 of 358 comments (clear)

  1. Really??? by scunc · · Score: 5, Funny

    Java topping the list of programming languages is like Donald Trump topping the polls for the Republican nomination: they both have their rabid, energetic fan-bases, but most of the rest of us are just sick to our stomachs wondering how it happened and waiting for it to be over ...

    1. Re:Really??? by darkain · · Score: 4, Insightful

      As TFS points out: ANDROID. That's why Java is #1. We're still stuck with this shithole as long as Android continues to dominate mobile and they continue to focus almost exclusively on Java.

    2. Re:Really??? by Anonymous Coward · · Score: 4, Insightful

      Hardly anybody is a "rabid fan" of Java. It's a mature, full-featured language with a healthy (perhaps leading) ecosystem of APIs, tools, developers, and training materials, that is considerably faster compared to scripting languages in many situations. This is reality, not fandom.

    3. Re:Really??? by knightghost · · Score: 4, Insightful

      Java is the new Cobol.
      On the good side, it's a general purpose language so can do anything.
      On the down side, it's a general purpose language so is bad at everything.

    4. Re:Really??? by Midnight+Thunder · · Score: 4, Informative

      It has puzzled me why reputedly intelligent people at google would handicap their platform by such an obviously slow, inefficient language. Android is C and NMI under the covers anyway. One wonders if James Gossling is behind it?

      Because it allowed them to be CPU architecture agnostic. I don't believe an ARM based CPU is a requirement for Android?

      --
      Jumpstart the tartan drive.
    5. Re:Really??? by lgw · · Score: 5, Informative

      Hardly anybody is a "rabid fan" of Java. It's a mature, full-featured language with a healthy (perhaps leading) ecosystem of APIs, tools, developers, and training materials, that is considerably faster compared to scripting languages in many situations. This is reality, not fandom.

      This.

      I don't like Java. It's the worst of the "curly brace languages" IMO. But I still find it vastly better than the scripting languages, even Python. The ability to find problems at compile time is very important indeed.

      I like C# better, but it's a hard sale for Linux server code. I like C++ better for my own code, but I have vastly more confidence in my ability to train a fresh college hire to write safe code in Java than in C++. Hell, I enjoy writing C code more than Java code, but it's not very productive where Java is used today.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    6. Re:Really??? by Junta · · Score: 4, Interesting

      Note that the 'language' is not slow, inefficient, etc. It's hard for a language to be anything.

      Now the de-factor *runtime* implementation of said language... Actually isn't that bad either for most people. Yes, if you are an idealized developer writing the most efficient code possible, there is more absolute potential in a C implementation, however in practice the potential delta is extremely small compared to doing a 'good' implementation, regardless of which runtime is executing. A lot of code out there can see an order of magnitude performance improvement through improvements to the code in-place.

      Java gets *particularly* a bad rap by being the first language to popularize the runtime as a 'performance friendly' strategy when their runtime was particularly bad, but mostly because by virtue of its popularity, all the less than best programmers are turning out code for it.

      Of course, while I recognize that the usual criticisms are not as bad or not JRE's fault, I still hate the wrangling of java runtimes on a system...

      --
      XML is like violence. If it doesn't solve the problem, use more.
    7. Re:Really??? by buddyglass · · Score: 5, Insightful

      Most Java "fans" I know are considerably less "rabid" than devotees of more trendy languages (I'm looking at you, Ruby). Just my experience.

    8. Re:Really??? by swilver · · Score: 5, Informative

      The runtime was actually never particularly bad. Java mostly got its bad rap from poor Swing performance (not as smooth, and not as good looking as the native apps). People perceived that "visual lag" as the language being slow, while in reality it has always been pretty damn fast.

    9. Re:Really??? by Penguinisto · · Score: 5, Funny

      Forget Java...

      Visual Basic jumped up - from #17 to #13, which leads me to ask one small question...

      ...what the hell is *WRONG* with you people!?

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    10. Re: Really??? by Anonymous Coward · · Score: 4, Insightful

      I hate Java but is a hardcore fan. Why? Because it's the language that sucks the least. Slow and buggy "native" runtime gets replaced by Bytecode in my systems as fast as I can manage.

      There are lots of people spewing shit on Java every time it's mentioned but not a single person I've talked to can point out a single disadvantage with choosing Java.

      Yeah in time there will probably be something better. I even have designs that many developers would prefer over Java. But until there are something available that can create as stable, fast and easy to debug executables as Java while providing at least as productive development environment...

      As for .NET it was unavailable for the hardware Google where targeting and still has to many bugs to be stable. And when it comes to servers and desktops same things... come back when it works as well as Java on SPARC/Solaris and various IBM platforms. To name a few targets most developers have to support.

      And when it comes to anything that doesn't JIT code. That increases development, deployment and maintenance costs. C++ binaries are to slow compared to C++ because SSE and other advanced CPU features they don't support. Yeah most code doesn't get recompiled with modern compiler's and redeployed. Bytecode however does. Therefore the average deployed Java code is way faster.

      And that even gets worse because native code optimized for old processor's may actually be a lot slower than non-optimized code.

      And when it comes to Android nothing beats Dalviks performance. Native code is super slow because it use more memory and OpenJVM can't run on android-supported hardware. Yeah that doesn't apply to my Samsung S3. But guess what, early android phone didn't have a fraction of that hardware. So to all of those saying that Dalvik was a bad choice, find some original Android phone and prove that you can make anything faster.

      So yeah I don't like Java at all. But people saying that it sucks without providing me with an alternative doesn't help me switch to another language.

    11. Re:Really??? by Kjella · · Score: 4, Informative

      The runtime was actually never particularly bad. Java mostly got its bad rap from poor Swing performance (not as smooth, and not as good looking as the native apps). People perceived that "visual lag" as the language being slow, while in reality it has always been pretty damn fast.

      The VM initialization time and memory consumption in early Java didn't help, even the smallest program felt like a 747 taking off. That the controls felt like one too didn't help. Now a 747 is obviously a very useful plane in the right place and all but most people just wanted a Cessna. I remember running things like Azureus/Vuze, thank god for uTorrent and later qBittorrent. Maybe it's possible to write good java code but it seems to encourage being a sloth.

      --
      Live today, because you never know what tomorrow brings
    12. Re:Really??? by Darinbob · · Score: 3, Insightful

      The attitude in the summary is just stupid. "Surprising that an old language"... but then ignoring that C is in second place. And really there have not been great languages coming out after Java and no realistic replacements for C. Sure, there are scripting languages but that's a different niche. Not everything that runs programs is on the Web or a PC.

      The new programming paradigm that Java excels at is to stop programming and just tie together existing frameworks and libraries like it's one giant lego monolith. Of course somewhere someone has to write the stuff in those libraries; which is more Java and if you get low level enough it's C.

      Python replaces some of this but comes with it's own headache (gotta make sure your customers can run it and are configured with the right versions, etc. C# has many problems and is a clumsy hybrid, and also never really caught on outside of the OSX/iOS/NeXT worlds. C++ is stuck in the middle, not quite being as easy as Java and too much feature creep to replace C. Swift is too new, not very portable, etc.

      What really happens is that people have a language that works, so stick with it. Why through out ten years worth of code base just because there's something newer? An utter waste of time. The vast majority of commercial programmers never start writing code from scratch but instead are fixing bugs or adding features to an existing product.

    13. Re:Really??? by IamTheRealMike · · Score: 4, Insightful

      Maybe it's possible to write good java code but it seems to encourage being a sloth.

      Correct. It is possible to write good java code and it does encourage inefficient practices. This stands in contrast to C++ which makes it rather difficult to write good code (assuming similar algorithms and data structures in both programs), but strongly discourages or even prevents things that cause sloth-like performance. By "good code" here I mean code that is secure and doesn't crash. Complex C++ codebases are invariably riddled with various kinds of exploitable overflows or code paths that trigger segfaults that tear down the entire process. It's especially unfair that Java got a bad rap for security partly due to bugs in the C++ code in the JVM!

      That said ..... things are changing. There are actually high frequency trading firms that use Java, believe it or not. Some of the things they make the JVM do are quite impressive. Java's poor perceived performance on the desktop has historically come from several areas. To name just 4:

      1) Excessive memory usage leading to swap hell. Garbage collection doesn't play nice with swapping either, due to lack of the right kernel support. A big offender here is the profligate use of pointers and especially inefficient representations of strings (always UTF-16). Also, garbage collectors that were tuned to look good in benchmarks by using larger and larger heaps didn't help.

      2) Poorly optimised graphics stacks. Note that if you use Linux you suffered from this very badly because you probably got OpenJDK which used an open source but much slower 2D rendering system, vs the proprietary Sun/Oracle JRE which used a proprietary but much faster licensed renderer called Ductus.

      3) Older JVMs weren't well optimised and did things that made them start slowly, like storing all their code as .class files inside zip files. Also, JVMs are huge downloads.

      4) Java code has historically not had access to things like vector instructions, advanced data layout and inline assembly, all of which can be exploited to give huge performance gains in things like multimedia apps.

      All of these things are being tackled quite energetically by the JVM team, however. The latest JVM can now do things like deduplicate strings in the heap, and in Java 9 (in development version) there's new code that switches the character encoding of strings between Unicode and non-Unicode depending on what's needed at the time. This change is especially impressive because it not only reduces memory usage but actually makes software go faster too due to better cache utilisation and less GC pressure. There's a long term project called Valhalla to upgrade the JVM with value types, which is where C++ gets a lot of its built-in advantage from, by giving the developer better control over data layout. There's also a project called Panama which is adding support for, amongst other things, inline assembly to Java. A prototype was recently posted to the OpenJDK lists. A new open source graphics rasteriser has been built that's faster than Ductus, so even the open source only OpenJDK users will soon have faster graphics, and a new UI toolkit to replace Swing has been developed called JavaFX. It uses hardware accelerated graphics everywhere via OpenGL and DirectX.

      Also, Intel have been contributing much more advanced auto-vectorisation logic to the JVM's compilers, the Jigsaw and "minimal JVM" projects are allowing developers to statically link optimised JVMs with their app which then pre-process JARs into special file formats so the loading process is much faster, and there's also work on ahead of time compilation being done to get rid of the slowness at startup before the JITC has compiled all the code.

      These are all projects that are either shipped already or in development now. The JVM guys do understand the causes of Java's slowness, they just aren't willing to sacrifice the convenience and robustness the platform offers developers in order to fix things. So, quite often, they find they have to develop new technology and do new research to find ways to have their cake and eat it.

  2. Re:Strange by Anonymous Coward · · Score: 3, Funny

    C++ and Scheme are where you want to be. Ideally your C++ program should use Scheme as an extension, or your Scheme should be implemented in C++.

    I program everything in Prolog, except when I need execution speed: then I switch to assembly.

  3. Old? by fahrbot-bot · · Score: 5, Informative

    Java took that coveted spot, winning out over C, Python, PHP, and other languages. "At first sight, it might seem surprising that an old language like Java wins this award," ...

    Interesting comparison, singling out Java as "old". Python is older. From Wikipedia:

    • Java - First appeared 1995; 21 years ago
    • C - First appeared 1972; 44 years ago
    • Python - First appeared 1991; 25 years ago
    • PHP - First appeared 1995; 21 years ago

    Age doesn't matter. Usefulness does. My top language: Perl - First appeared 1987; 29 years ago.

    --
    It must have been something you assimilated. . . .
    1. Re:Old? by fahrbot-bot · · Score: 4, Insightful

      Sure, Perl writes terse programs... but to me, valid Perl code is indistinguishable from line noise!

      They don't have to be terse / line noise and mine aren't. I learned that lesson a long time ago when I looked at some code I had written a few years prior and thought WTF does that do? All my code, regardless of language, is pretty well documented and structured, especially when I *have* do something weird or *want* to do something extra concise. I have a pretty consistent and logical style - which I think is important - to all my code and, in fact, many co-workers can tell it's mine just from looking at it.

      In short, one can write good and bad code in (almost) *any* language.

      --
      It must have been something you assimilated. . . .
    2. Re:Old? by Dutch+Gun · · Score: 4, Informative

      Age doesn't matter. Usefulness does.

      Age matters, because CS is a relatively young discipline. We've learned many things along the way, and capabilities continue to evolve, meaning that certain tradeoffs are more relevant than others.

      Would you design today C the exact same way as the original, even if the design goals were exactly the same? Of course not. You'd likely eliminate a lot of the blatant shortcomings, such as the ease in which memory is stomped, the way pointers and memory can be so easily corrupted or leaked, and the unsafe nature of many of its library functions. C++ has proven you can eliminate those faults with little to no runtime overhead. C was designed at a time when memory and run-time efficiency were given much more importance than runtime data integrity or safety. That's simply not the world we live in today, in which a set of flaws in a multimedia library can cause one of the biggest security holes of all time.

      Look at how vastly different C++14 looks than C++ 98. The addition of smart pointers, move semantics, lambdas, and a few other key features mean the language almost looks like a modern managed language like C#, albeit quite a bit uglier in the syntax department. And I *still* think that the ref-counted constructor-destructor paradigm is actually more practical in many situations than garbage collection, which is really only designed for a single type of resource (memory, obviously). These days, it's incredibly rare that I actively manage memory or raw pointers in my C++ programs. We've learned that doing so is a common source of bugs and security flaws, so these days we tend to ask the compiler or the runtime to do it for us.

      --
      Irony: Agile development has too much intertia to be abandoned now.
  4. Re:A bit disappointing by Junta · · Score: 4, Insightful

    Wheels on my car do the job and have improved a lot. However, it's a bit disappointing that there isn't something new in 2015.

    (Actually not that enamored of Java, but just feel like 'not new' should not be some automatic disappointment in a technology).

    --
    XML is like violence. If it doesn't solve the problem, use more.
  5. Larry Ellison's acceptance speech for the award by ClickOnThis · · Score: 4, Funny

    "I'd like to thank ... myself. I deserve it."

    --
    If it weren't for deadlines, nothing would be late.
  6. Ubiquity and Longevity by zapadnik · · Score: 5, Interesting

    Ubiquity and Longevity are important. It takes a while to create Big software projects, so fad du-jour languages have an Achilles Heel here. Java is pretty much ubiquitous and is very long-lived (so far).

    When you have large code bases and lots of people trained in a technology then you tend to use it even more. WORA (Write Once Run Everywhere) is a killer feature, and Java system written on architectures that are now less used (i386, Irix, AIX, Solaris, etc) work pretty much painlessly on new hardware. Java scales from the massive to the miniature and thanks to the talented people at Sun, Oracle and OpenJDK the performance of Java is pretty phenomenal.

    I personally am writing a jet combat flight simulator (which I'm mostly keeping under the radar, for now) in Java. I never have to worry about multi-threaded CPU performance. Seriously, never. I only spend time worrying about the bottlenecks in the GPU. Java and OpenGL (via JoGL) are a potent combination. I will never go back to C++ if I can help it - Java libraries and tooling (I love IntelliJ IDEA and the JDK's VisualVM) are so much better. Long live Java !

  7. Re:Why for new projects though? by Yosho · · Score: 4, Interesting

    If you need a performant, statically typed language, there are better alternatives.

    Sometimes you want a performant, statically typed language that also has a massive number of robust, mature open source libraries available for it. In general, if you want to do something that some other person conceivably may have wanted to do at some point in time, there's a Java library for it that has hundreds of users. Developing a load-balanced application server that uses websockets, communicates with a high-performance database, and uses PKI authentication? Heck, there's probably a maven stereotype that will take care of 95% of the boilerplate code for you. Not to mention the tools that are available -- there are few IDEs or profilers for any language that are as powerful as IntelliJ IDEA and JProfiler, for example.

    Plus, learning something new is hard. Learning a new language can be tough enough, but it's far worse if you're switching frameworks on top of that. It doesn't matter if an alternative is better if Java is good enough and it's what you know.

    --
    Karma: Terrifying (mostly affected by atrocities you've committed)
  8. Because it's the best by bigsexyjoe · · Score: 4, Insightful

    It won because it's the best programming language. You can go cry to your mama about that if you want.

    1. Re:Because it's the best by LQ · · Score: 3, Interesting

      It won because it's the best programming language. You can go cry to your mama about that if you want.

      And Java 8 has IMHO completely refreshed the brand from a programming perspective. I'm really enjoying Java again.

  9. Re:most used not so lovely by angel'o'sphere · · Score: 4, Informative

    If you are using Java for Sys-Admin tasks or similar "dev ops" stuff, you should check out Groovy.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  10. Re:Why for new projects though? by tsotha · · Score: 5, Insightful

    From a project management perspective Java is a pretty safe choice for a new project. On long projects people come and go - I can find replacement Java programmers in short order. As much as I love clojure, I would never do a large project with it at work because it's too difficult (and expensive) to find competent lispers.

  11. Java = Dead Language in 2009 by tgrigsby · · Score: 4, Interesting

    When it came time to build the next iteration of the company's flagship product I was overruled on moving to Java from Delphi for two reasons. First, because it was a Delphi shop, so it was considered a bad move because it was not our core competency. And second -- and this is what generated the most conflict -- was the notion Java was a dead language. I was confused and amused when this argument was first brought up and floored when it was seconded by the other lead programmer. And no matter how much I tried to point to Java's ubiquity and ratings I was voted down.

    I really hope those two developers got a chance to read this story.

    Mike? Todd? You there?

    --
    *** *** You're just jealous 'cause the voices talk to me... ***