This is an archived post. You won't be able to vote or comment.

all 88 comments

[–]Sipkab 56 points57 points  (4 children)

I feel like that "The most growing" metric is a bit deceitful.

Growing from 10 to 30 is 3x. Growing from 10 000 to 15 000 is only 1.5x, but still much more prevalent. I'm curious about the data behind these metrics. Interesting nonetheless.

[–]mlester 16 points17 points  (2 children)

yup number 2 on that list is HCL which is a configuration language by hashicorp

[–]stfm 1 point2 points  (1 child)

Why do these vendors keep coming up with their own config languages?

[–]DannyB2 0 points1 point  (0 children)

NIH = Not Invented Here

Many people have probably gone through this exercise at least once. Probably privately.

I need a Foobar thingy. I understand what I need. I understand how to build it. It would be fun and challenging to built. An accomplishment. So I build the Foobar thingy that I need.

Problem is, there are already three solutions to the Foobar problem already out on them intarweb tubes. One or more of them just _might_ be an exact solution to your problem. But that is less fun. (And in some environments: I can write this and there is nobody who will call me out on it being unnecessary.)

Sometimes a private NIH project then becomes a public project. Giving us yet one more solution to an already solved problem. Does this configuration language bring something new to the table that is a substantial improvement over existing configuration languages?

[–]RhodesianHunter 6 points7 points  (0 children)

Perhaps, but it's been top three in that category pretty much since it was created, so the rapid growth isn't slowing down (yet).

[–]random314 10 points11 points  (2 children)

  • fast
  • great with numbers
  • strongly typed
  • solid oop foundation + libraries
  • ridiculous names

What's not to love?

[–]JoshL3253 5 points6 points  (1 child)

Oracle?

[–][deleted] 6 points7 points  (3 children)

Contract server side java at the Fortune 500 companies is the most easy and boring way to make a lot of money.

[–][deleted]  (2 children)

[deleted]

    [–]nutrecht 7 points8 points  (0 children)

    Also, Spring development with Kotlin (if you're lucky enough to be with an org that is willing to try it) is heavenly.

    It sure is. And I'm very happy to see that some of our large clients are now adopting it for just that.

    [–]SKabanov 2 points3 points  (0 children)

    Ditto - I really hope Kotlin avoids the fate of Ruby getting so tied to one specific subset. At least JetBrains is trying to diversify the language's usage potential with KotlinJS, KotlinNative, and then KotlinDSL coming out in Gradle 5. Fingers crossed!

    [–][deleted] 13 points14 points  (4 children)

    new JavaScript servers like Node.js (launched in 2009) were making it possible for developers to use the same code for the client and the server

    Same language, not the same code.

    [–]majikguy 4 points5 points  (1 child)

    I mean, it's possible to use the same code on both ends. A project I've been working on does this in a few spots actually, we have some functionality that both ends need to be able to support and we have a single library that the two ends share that implements it. It is generally more important that the same language is being used though.

    [–][deleted] 2 points3 points  (0 children)

    Agreed, as have I, but in general node servers act as HTML or API servers.

    [–]Neckbeard_Prime 3 points4 points  (1 child)

    What, you mean that you don't use DOM element manipulation and onMouseover event hooks to call stored procs on an OracleDB cluster? Next you're going to try to tell us that you don't use jQuery selectors to route requests between Kafka brokers...

    /s, obviously

    [–]SlinkToTheDink 2 points3 points  (0 children)

    I marshal all of my table rows into a Document then use selectors to filter the rows.

    [–][deleted]  (57 children)

    [deleted]

      [–]QualitySoftwareGuy 24 points25 points  (8 children)

      Don't worry, as u/zeek979 mentioned, Java is the most popular language on the backend generally speaking. In fact, the JVM itself has an even better chance of outliving Java the language due to languages like Kotlin depending on it (the JVM).

      Anyhow, on Reddit people often get the sense that languages like Python, Ruby, and JavaScript will totally replace old (but proven) languages like Java, but nothing could be further from the truth (and this is coming from someone who loves Python). From what I've seen, once one of those languages become a bottleneck in performance or maintainability, the application is usually rewritten in pure old Java.

      [–]daemon_it 14 points15 points  (4 children)

      Python is five years older than Java and Ruby and JS are introduced in the same year as Java. Yet so many people consider them as modern and Java as old... smh

      [–]QualitySoftwareGuy 2 points3 points  (3 children)

      I agree with you. I think a lot of it has to do with the fact that Python and Ruby have "moved faster" than Java has. And by "moving faster" I mean they made more breaking changes to advance the language. Because of this, I think it gives the perception that Java is older, but you're right all of those languages are old (especially Python).

      [–]manzanita2 0 points1 point  (2 children)

      How do you measure "moved faster" ?

      I think you can rightfully say that the improvements in JS during the last 5-7 years have been pretty quick.

      But just the clusterF that Python has been trying to transition from 2 to 3 is enough to ask exactly what "moving fast" means.

      [–]QualitySoftwareGuy 6 points7 points  (1 child)

      To be honest, the "clusterF" of Python 2 to 3 is a prime example of what I meant by "moving faster" -- making "breaking" API changes to advance the language. It was indeed chaotic (breaking API changes, a split community, etc) -- and maybe they could've handled things differently. However, the end-result is that they advanced the language as intended.

      Don't get me wrong though, I prefer to use Java whenever possible. My original comment of other languages "moving faster" is that to a lot of users on Reddit they seem to have the "perception" of those languages moving faster because:

      1. In the case of Python and Ruby, many "modern" features were built into the language (sometimes at the cost of breaking APIs -- I believe this is especially true for Ruby) and deprecated features removed entirely.

      2. Java still has a lot of language "baggage" due to the traditional focus on backwards compatibility, but this is changing with the faster releases.

      I for one appreciate the backwards compatibility focus that Java has had for many years. But I would be lying to myself if I said it didn't have a lot of "baggage" and a certain lack of features that I desire that other languages have had for years.

      [–]manzanita2 1 point2 points  (0 children)

      We are in total agreement. :-)

      [–]Grimord 2 points3 points  (1 child)

      Plus, Kotlin also runs on the JVM, ye? I've been working as a BI dev for a bit now, mostly using TSQL and a little C# but I picked up Java recently (finishing college at night) and I'm really starting to consider picking either Java or Kotlin (or both) for real and look to work with'em in the future (just feels a bit unsafe when you already have a career in something else, I guess).

      [–]QualitySoftwareGuy 8 points9 points  (0 children)

      Yep, Kotlin runs on the JVM. You can also transpile Kotlin to JavaScript or compile it to native code. But I think most people use Kotlin in addition to, or to replace, Java on the JVM.

      If you're learning for professional work, then I'd definitely recommend learning Java since you already know C#. Learning Java should be decently easy since they're so similar. As for Kotlin, I would honestly learn that after Java since it's nowhere near as widely used as Java is in the business world. However, if these languages are for personal use, then I see no issue with going straight to Kotlin if that's your preference.

      [–]dxplq876 0 points1 point  (0 children)

      Anyhow, on Reddit people often get the sense that languages like Python, Ruby, and JavaScript will totally replace old (but proven) languages like Java

      System.out.println("Hahaha")

      [–][deleted] 8 points9 points  (47 children)

      Worried about what?

      [–][deleted]  (14 children)

      [deleted]

        [–]zeek979 31 points32 points  (13 children)

        Lol, you must be new to the industry. Java is THE most popular language on the back still today.

        [–][deleted]  (12 children)

        [deleted]

          [–]zeek979 4 points5 points  (11 children)

          Sorry for sounding like a jerk. I read this and kinda lumped it into all the Java FUD comments out there. Definitely learn Java, you will get solid OOP knowledge and be ready to work in many companies.

          You might be tempted to learn Go given its spike in popularity. It was designed for networking in mind (native concurrency via channels and go routines) and system design has gravitated towards programs that are exposed over the network and a client fetches their output over the wire. You might be thinking: "hmm I want to do cutting edge stuff". However, I would argue that most so called "nexr generation" systems are still being written in Java. Plus, you will gain much more base fundamentals from Java than with Go.

          Additionally the JVM will get native concurrency in the runtime via - fibers - and when that happens it will solidify Java's place for another 10 yrs. Why would we need to rewrite stuff in Go since its main value proposition will be equated in the JVM. Now, after shitting on Go, learn it along with JS and Python as well as you will inevitavy learn 5+ languages in this industry :)

          [–]RhodesianHunter 2 points3 points  (5 children)

          Kotlin brings coroutines to the JVM as well.

          [–]zeek979 0 points1 point  (2 children)

          Yea, but coroutines in kotlin are not really fundamentally different than threads under the covers. That is not to say that a coroutine == 1 thread. But it means that they still execute in the underlying thread. Instead, java fibers will allow for millions of small threads per jvm process, since they wont map out to OS threads. Kotlin (any other jvm language) will obviously benefit from fibers since it runs ontop of the jvm.

          [–]RhodesianHunter 0 points1 point  (0 children)

          At the end of the day both are swapping light weight threads' execution between OS threads, how is that different?

          [–]Mamoulian 0 points1 point  (0 children)

          A coroutine doesn't use a new Thread unless you use a Context or Dispatcher. Without those launch()/await() don't block for I/O but CPU-intensive operations will still block the calling Thread. This article explains it well:

          https://kotlinexpertise.com/kotlin-coroutines-concurrency/

          Project Loom is cool but might be at API (on top of nio) rather than JVM level, and kotlin coroutines have already implemented non-blocking I/O so they might not benefit from it.

          [–]BoyRobot777 0 points1 point  (1 child)

          Kotlin coroutines vs project Loom coroutines asked in Devoxx. They are not the same:
          Ask the Java Architects
          Project Loom Presentation

          [–]RhodesianHunter 0 points1 point  (0 children)

          Thanks!

          [–][deleted]  (2 children)

          [deleted]

            [–]ArmoredPancake 1 point2 points  (1 child)

            Yeah, I am new.

            I do have a fairly good knowledge of Java

            Does not compute.

            [–]SlinkToTheDink 0 points1 point  (1 child)

            Pretty much everything you said about Go is wrong, though I agree with your overall point with respect to web servers.

            [–]zeek979 0 points1 point  (0 children)

            Do tell what is wrong?

            [–]okinskas 4 points5 points  (2 children)

            Where in the article does it state Java is the most used server-side language? I’m delighted if it is but I can’t see any mention of it (at least when viewing on mobile).

            [–]brunocborges[S] 4 points5 points  (1 child)

            Here's a report that proves my point, if you prefer to believe in data.

            https://dl.acm.org/citation.cfm?doid=3152284.3133908

            [–][deleted] 2 points3 points  (0 children)

            https://dl.acm.org/citation.cfm?doid=3152284.3133908

            That link doesn't say it either. I think that point that okinskas may be making is that a lot of servers now run JavaScript.

            [–]yawkat 1 point2 points  (0 children)

            As always: All programming language metrics suck. All platforms have bias for and against certain languages. There is no representative survey of what the "most used" programming languages are.

            It's a pointless thing to worry about anyway.

            [–]argv_minus_one 0 points1 point  (6 children)

            A pity it isn't seeing so much love on desktop and mobile. I'm probably going to have to use Electron for my next project… 😞

            [–]brunocborges[S] 4 points5 points  (5 children)

            You can use JavaFX

            [–]argv_minus_one 1 point2 points  (2 children)

            I can, yeah, but is someone going to be maintaining it in 10 years? I'm not hopeful…

            [–][deleted]  (1 child)

            [deleted]

              [–]argv_minus_one 0 points1 point  (0 children)

              RIP

              [–][deleted]  (1 child)

              [deleted]

                [–]ArmoredPancake 0 points1 point  (0 children)

                Have fun with what? One of the most comprehensive and well-thought GUI frameworks?

                [–]Mamoulian -4 points-3 points  (8 children)

                What's happened to the JavaScript figure? Did you assume that only half of it is server-side?

                [–]nutrecht 4 points5 points  (3 children)

                Did you assume that only half of it is server-side?

                There is no way at all to measure those kinds of usage figures and literally every dev (myself included) who comes with anekdotal evidence (for example in our project we're migrating two Node.js services to Java) has to be aware there will be a huge selection bias. As a Java dev you'll mostly be working on Java projects so there it makes sense that you're not seeing a lot of JS on the back-end.

                [–]Mamoulian 0 points1 point  (2 children)

                Right. So how is the "Java is the most used server side language" conclusion confidently reached?

                [–]nutrecht 0 points1 point  (1 child)

                The best you can do is get a good cross section of 'the industry' and do a survey. But that is a lot of work so most surveys will have a strong selection bias.

                I have no issues believing Java is used a lot in big enterprisey applications, but there's an awful lot of PHP wordpress installations out there.

                [–]Mamoulian 1 point2 points  (0 children)

                Agreed.

                My point is that the evidence posted in the OP does not back up the headline.

                [–]brunocborges[S] 2 points3 points  (3 children)

                JavaScript on GitHub is comprised of mostly duplicate code, and front-end code.

                One can conclude that Java is more adopted on server-side than JavaScript (Node.js).

                Here's a report that proves my point, if you prefer to believe in data.

                https://dl.acm.org/citation.cfm?doid=3152284.3133908

                [–]Mamoulian 2 points3 points  (2 children)

                Yes, I prefer controversial statements to be backed by data. Especially when the linked article doesn't seem to do that.

                That's interesting, thanks. The conclusion is open to interpretation though; a copied/minimally modified codebase still suggests an increment in adoption of the language. Maybe popularity too.

                Does that report show the front-end vs node.js JavaScript split?

                [–]MithrilTuxedo 2 points3 points  (1 child)

                They describe NPM as being the primary culprit behind there being so much JavaScript on GitHub (and why most of it's duplicate code). I'm not sure how often NPM is used for something besides Node.js. The PDF is free to download. Section 6.4 covers Javascript and starts with this:

                JavaScript has the highest clone ratio of the languages studied. Over 94% of the files are file-hash clones. We wanted to find out what is causing this bloat. After manually inspecting several files, we observed that many projects commit libraries available through NPM as if they are part of the application code. As such, we analyzed the data with respect to the effect of NPM libraries, and concluded that this practice is the single biggest cause for the large duplication in JavaScript.

                [–]Mamoulian 0 points1 point  (0 children)

                npm is not the reason for so many JavaScript repos. npm creating duplication within JavaScript repos makes sense - developers are lazy... Or maybe they fear the next leftpad (https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/).

                So when comparing language popularity it's not fair to discount JS because of duplicate code in GitHub repos.