back to article Java? Nah, I do JavaScript, man. Wise up, hipster, to the money

A while back I answered my door bell - it was the pizza. After transacting for the hot pie, the older delivery man with a Just Like Dear Old Dad mustache asked: "Are you a programmer?" pointing to the OpenStack logo on my hoodie sleeve. "Yes," I said, "well, I used to be." He asked me what programming language he should learn …

  1. wolfetone Silver badge
    Pint

    We do see people saying "Well why don't you code it in Go/Swift/Anything Else", but really when and where are you every going to refactor code used by massive companies? If you were starting a project with a clean piece of paper, 6 months or however long, you could probably make the application in a different language.

    But most of the time you are given code that is already in use, that supports many different types of software (which could all be legacy software systems as well), and you're given 3 months to do it and it needs to work first time. There isn't room for a rolling release type of solution to fix all the bugs that come from new code.

    I've been 10 years working in development now, all of that time (except for a 6 month awful relationship with VB.NET) I've coded in PHP. I've hit my salary ceiling. I go on to the job boards and all I see are Junior PHP positions, or "Senior" PHP positions which pay no more than what I'm on now. But Java? You can't move for Java positions which pay a lot more than what I'm on.

    10 years is long enough to have spent with a language and I was looking around at what I could do instead. Teaching came up, moving in to Law also came up, but then I read this article and I'm thinking sod it. I'm going to learn Java.

    Thank you author! You've given me an idea to progress my career for another 10+ years. Have a pint.

    1. Sgt_Oddball
      Thumb Up

      I can't recommend this enough

      I've been doing web deving for getting on 10 years (on and off... there was the liquor merchant job for a year that gave me a different perspective and actively encouraged drinking on the job) and as a generalist jobs were pretty much static with not much head room for pay increases.

      Cue 6 months ago I changed to UI development on Java (from ASP/ASP.NET/.NET, a flirt with PHP and starting to tinker with node) and it's been the best decision I've made in a long time. Doubled my pay (seriously how often does that sort of opportunity come up?) and i'm enjoying working again as part of team rather than being a dogs body trying to cover everything. In the meantime ontop of UI/Front end duties I've been tinkering with Java as well and have been supported by other team members to learn more as well as being massively surprised with the volume of modern tooling that works well (mostly..YMMV) with Java considering it's vintage (I'm using it for web development, anything over 3 years is usually considered worthy of museums..apart from IE6/7/8/9/10.. there's a special place in hell reserved for that instead).

      So yes, anyone asks, Java. Everything else can be figured out along the way, and I truly wish I'd been taught it sooner.

    2. andy 103

      @wolfetone

      As someone who has been in your position I've got an alternative that involves no Java at all...

      In PHP roles you are correct that there is a ceiling salary which is lower than in other areas of development. These types of jobs are typically advertised by web agencies, and the market is frankly a little flooded, hence the lower than expected salaries.

      Look into web based Software Engineering roles. Make sure you know more than just PHP - look particularly at frontend development frameworks (Bootstrap, jquery), database management, and web server administration (Apache, etc). If you have all of those skills combined you will get a lot further than just being "a PHP developer".

      There is a bright future in web based application development, and Java-based technology is absolutely awful when it comes to web apps, IMO.

      1. Anonymous Coward
        Anonymous Coward

        Re: @wolfetone

        "Java-based technology is absolutely awful when it comes to web apps, IMO"

        What do you think all those new fangled hipster bootstrap/angular/ember/FOTM.js GUIs are querying? Protip: it ain't C. The back ends of huge parts of the web run on the JVM, whether Play or Spring or whatever they like. Cranking out REST APIs and abstracting out underlying datastores while providing audit/auth/etc. is *exactly* what Java and its cousins were designed to do.

        Proest of tips: Throw in Just Enough Scala/Java/SQL into the mix of JS techs and call yourself a "full stack" developer, stick another 0 on the end of your glorified graphic designer's salary.

        1. jeffdyer

          Re: @wolfetone

          "Cranking out REST APIs and abstracting out underlying datastores while providing audit/auth/etc. is *exactly* what Java and its cousins were designed to do."

          Rubbish. Java is way older than REST APIs. It was designed to be a general purpose language to replace C and Pascal etc. but specifically to run on all platforms through a virtual machine.

          Try again, youngster.

          1. Anonymous Coward
            Anonymous Coward

            Re: @wolfetone

            Because churning out REST interfaces is different from churning out any other industry standard API... how exactly? Of course Java predates REST, that doesn't mean it wasn't designed to solve exactly the challenge REST implementation presents.

          2. Matthew Brasier

            Re: @wolfetone

            Actually, Java was designed to be a language to program set top boxes, it was never designed to replace C/C++ etc. That just kind of happened along the way.

            I guess your younger than you think.

            1. Anonymous Coward
              Anonymous Coward

              Re: @wolfetone

              do you mean Java ME? At one point it was THE language for set top boxes ... just curious not being snarky.

              1. Chris Fox

                Re: @wolfetone

                "do you mean Java ME? At one point it was THE language for set top boxes ... just curious not being snarky."

                I think this was a reference to the original purpose of what is now called Java, going back to 1991 when it was part of Sun's set-top box project, and went by the name "Oak". The name was changed to "Java" in 1994/5. Jave ME came later, originally as J2ME in around 1998/9

        2. barbara.hudson

          Re: @wolfetone

          Actually, some of those back ends ARE written in c. The web server I had to write certainly was, we just hid it by having all queries end with a ".php" extension. Like to see anyone crack that by trying to exploit any of the known php or apache bugs.

          Same as if someone tried to do a windows directory list, send them one. After all, it's just a plain ascii file, not a real directory list (which would have revealed it was running on a *nix machine). Bored? Turn their attacks back on their machines, delete a few things ...

          Same as another place, all the queries were processed in c. Made it much easier to detect malformed data by examining it byte-by-byte as it was coming in over the network. Any parameter exceeding the maximum design length, immediately issue a redirect to goatse.cx, farmsex, or any one of 10 nasty sites in a round robin que, then immediately cut the connection without bothering to receive the rest of the data.

          Nasty AND nasty fast.

          Also, a lot of those back end services rely on databases written in c, or on runtimes written in c. And OSes written in c. Even the JRE. Don't knock c.

        3. Anonymous Coward
          Anonymous Coward

          Re: @wolfetone

          Java certified and +10 years experience here.

          npm beats the crap out of Java EE, srping, etc.

          Still, I am a full stack developer, a certified Oracle DDBB Admin with experience, Oracle J2EE, Jquery + sencha + vue.js ..

          ok, I kind of agree that the money spèaks java now.. but it is way too slow because frameworks are way too big.

          1. 20goto10

            Re: @wolfetone

            Worked with Java for the past 15 years, all around the stack. Also worked with Javascript for the past 5 years, mostly frontend but also some backend work. All in all, a pretty experienced developer with a full stack profile.

            Currently I work as a consultant and there is plenty of work. In that role, my Java experience is a very valuable asset for me. There are pretty of legacy Java projects to ensure me a steady stream of revenue for well beyond the timespan of my professional life. Also, Java tooling and "best practises" being what it is, they are often loaded with accidental complexity requiring high maintenance.

            For side projects of any kind I use nodeJS stacks. The node/npm ecosystem is just insanely productive compared to, say, Java EE. And Javascript, warts and all, stille provides a far less clunky experience than Java IMHO.

            But as a consultant, charging by the hour ... the bloatedness and clunkiness of Java is a very rewarding feature.

        4. Displacement Activity

          Re: @wolfetone

          "What do you think all those new fangled hipster bootstrap/angular/ember/FOTM.js GUIs are querying? Protip: it ain't C. "

          Errr.... protip++... yes it is. Maybe not for you but, in my case, Bootstrap/JS querying C++ and some plain-old-C. The code that implements the CGI/JSON/etc stuff is tiny and trivial compared to the rest of the app, and those SQL APIs generally start life as C anyway.

          And, if you want real money, you'll get twice as much with a Maths degree/C++/Matlab as you will with Java.

          And, if you're currently delivering pizzas, you're a lot more likely to make money with JavaScript than with Java.

      2. Mage Silver badge

        Re: web apps

        Plenty of software development doesn't involve web apps.

        1. Anonymous Coward
          Anonymous Coward

          Re: web apps

          "Plenty of software development doesn't involve web apps."

          True, but if it doesn't involve web apps or similar there's a fair chance it won't even involve "tool churn" - no new fangled languages, methods, and processes, no biennial throwing away of everything which is tried tested and proven.

          Where's the advertising and consultancy profit in an approach like that? What on earth would IT Departments, coin-op consultants, etc, do with themselves if people focused mainly on StuffThatWorks rather than mostly on stuff that's new and shiny? There'd probably still be relics like AIX and VMS around. Maybe they are still around ;) - how would we know?

    3. Ian Michael Gumby
      Boffin

      @Wolfetone .... Meh!

      There should be a Meh! Icon.

      Maybe you should go back to school and get an engineering degree. Its not about learning the language, but learning language theory. So you can pretty much pick of any language easily.

      I've never touched Javascript. Why? Because I do the heavy lifting on the back end. Pojo developers are a dime a dozen. Not much call for J2EE. What you need to learn are 3 languages if you don't know Java.

      1) Java

      2) Python

      3) Scala

      All the rest is noise.

      Now if you're really technical, there's C/C++ and Objective-C if your an Apple fanboi.

      Your choice.

      1. Philip Stott

        Re: @Wolfetone .... Meh!

        "All the rest is noise" - what a flippant remark!

        I'm sorry, I'm going to come across as a bit of a git here, but it's justified to prove what crock you're spouting.

        I've spent the last 20 years developing in C, Visual Basic currently C#/.NET. For the last 15 years my contract income hasn't dipped below £120K.

        The best advice I could give any aspiring developer is, yes, pick Java or a n other set of enterprise development tools. Doesn't really matter. What does is picking the type of enterprise you work in, and for the big bucks it has to be investment banks, trading houses, hedge funds, etc.

        That's assuming, of course, all you're interested in is income.

      2. heyrick Silver badge
        Meh

        There should be a Meh! Icon.

        What do you think this is? (except on mobile view) -------->

      3. Charles 9

        Re: @Wolfetone .... Meh!

        PS. There IS a Meh icon. It's the straight face.

      4. kmac499

        Re: @Wolfetone .... Meh!

        " Its not about learning the language, but learning language theory. So you can pretty much pick of any language easily."

        Now this is where I have to disagree. Maybe it's an age thing but I've always found it easy to adsorb principles rather than arbitrary definitions. The language theory is the relatively easy bit, which involves asking, in addition to sequence, selection and iteration, what the did the comp sci bods add into this that is useful?

        The useful things to learn are, of the myriad ways there are to build data structures with objects, inheritance , interfaces etc which ones will lead you down a blind alley into mazes of twisty turny passages. How easy is it to manipulate and navigate data structures? How easily does it allow cool features like some form of macro substitution on the fly?

        Finally is there a set of well established patterns to do the grunt work of reading and writing to datastores and MVC models

        For me the difficult thing is the vocabulary of the language, does this one need an 'Endif', how do I pass by ref, How do I set scope? What's the syntax for multi dimensional arrays? what's the character for a comment? etc etc.

        I would not expect anyone to memorise the nth parameter of every function but to be productive in any language requires fluency. There are undoubtedly people who are Prog-Lang Polyglots I ain't of them.

    4. Anonymous Coward
      Anonymous Coward

      @wolfetone

      " (except for a 6 month awful relationship with VB.NET)...

      ...but then I read this article and I'm thinking sod it. I'm going to learn Java."

      If you struggled with VB.Net (which for the last time is not VB6 or VBA!!) then you might struggle with Java. If you accept that C# and Java are conceptually similar then ditto VB.Net. Okay the syntax is very different to C# and Java (and more modern IMHO, no bloody terminating archaic semi-colons required!) but conceptually the three languages are very similar and C# and VB.Net are just different sides of the same coin - hence why there are a number of online converters that will convert C# code to VB.Net and visa-versa. Vb.Net basically matches C# feature for feature. Actually, the language syntax is the easiest part, it's understanding the frameworks, the relevant design patterns and all the bloody endlessly changing jargon that's the biggest challenge these days. And just when you feel on top of it, it's all chucked out of the door and something newer and supposedly better comes along - c'est la bloody vie!

  2. CAPS LOCK

    "And, you know, "...

    "And, you know, maybe it’s sometimes worth paying for something that your entire business relies on - just sayin’."

    O'Rly? My experience - FOSS more reliable than prop. software.

    1. Ian Michael Gumby
      Boffin

      Re: "And, you know, "...

      "O'Rly? My experience - FOSS more reliable than prop. software."

      Son, you must not have a strong engineering background, or have been programming for a long time.

      FOSS isn't more reliable. That's a fallacy.

      I've got some embedded code that I wrote for a client that's been running pretty much untouched for almost 30 years. Why? Because when they gave me a spec to design the OS (Custom, IP, and not FOSS) , I wasn't told how fast it had to run, so I was left to my imagination. It was over designed for the time. You don't see that with FOSS.

      Don't get me wrong. I use FOSS. But its no better or worse than today's prop software.

      The larger problem is the dumbing down of the industry.

  3. Elledan
    Coat

    Crippled C++

    After a number of years of programming Java, I have come to realise that Java is merely a regression in programming languages. It's essentially C++-with-only-classes-and-fewer-types. Oh, and you only get pointers (the basic type, no smart pointers) with no fancy pointer arithmetic to ease the pain.

    I can get why COBOL is still doing well today. It's a well-designed language which went through literally decades of improvements to add to its versatility. Much like with JavaScript I have no clue why Java is even popular, however, beyond it being pushed in an unrelenting fashion (oh hi, Oracle!) and having become part of the CEO Buzzword Bingo.

    But hey, C++ is just way too bloody complex (said whilst snickering).

    1. gv

      Re: Crippled C++

      "I can get why COBOL is still doing well today. It's a well-designed language which went through literally decades of improvements to add to its versatility."

      In what parallel universe is this even true?

      1. Ian Michael Gumby
        Boffin

        @GV Re: Crippled C++

        Its called reality snowflake.

        COBOL is something you can teach monkeys and it works well. Legacy systems still exist and if you want to have a skill that pays well, learn the mainframe.

        Also I have taught COBOL programmers OO techniques and they picked it up faster than a bunch of C coders who also didn't believe you could write OO code using C. (You can if you really know what you're doing.) [This was many moons ago. You probably were still in your nappies. ;-P

        Want to stump someone in an interview? If they claim to know C++ ask them what they like and what they hate about C++ versus Java or some other language.

        But Seriously, you need to get out more and look at the entire enterprise.

        In the Big Data space, a COBOL like language makes sense.

    2. Anonymous Coward
      Anonymous Coward

      Re: Crippled C++

      "Java, I have come to realise that Java is merely a regression in programming languages. It's essentially C++-with-only-classes-and-fewer-types"

      I think that was part of its raison d'etre. An OO applications programming language somewhat simplified. Though it does have its problems - the lack of an unsigned char IMO was a silly ommision as it makes bit twiddling and packet processing harder than it needs to be and the autoboxing hack has always been ugly.

      "But hey, C++ is just way too bloody complex (said whilst snickering)."

      They threw the kitchen sink into C++ around 10 years ago. Now they're throwing in the washing machine, fridge and next doors cat too. It is absurdly over specced and a good example of people not knowing when to leave well alone. And before someone says "Well you don't need to use all the facilities", well no, maybe not on a greenfield project. But if you're updating someone else C++ code you can always gaurantee some obscure usage of the STL or templates that make life a headache. Plus in job interviews they always ask about aspects of C++ buried away in the appendix of Stroustrups book so you need to know it all even if you never use it.

      1. Steve the Cynic

        Re: Crippled C++

        " Plus in job interviews they always ask about aspects of C++ buried away in the appendix of Stroustrups book so you need to know it all even if you never use it."

        Guilty as charged: "Discuss this line of code:" with a single line of code, two words and a semicolon:

        delete this;

        (Not my place to answer it here, and it's about their understanding of things, not about a right or wrong answer.)

        1. stephanh

          Re: Crippled C++

          It's legal, but you better return from the method (o sorry, member function) rather soonish and not access any other member "this" in the mean time.

          Often seen in classes which implement some kind of reference counting.

    3. Ian Michael Gumby
      Devil

      @Elledan Re: Crippled C++

      Sorry mate. C++ isn't that complex. You just have a bunch of careless developers who don't know what they are doing and its a pain in the ass to walk thru their careless code to fix their bugs. I would much rather program in C than C++.

      But to your point. Yes COBOL is alive and well because the mainframe exists and legacy apps continue to run and run well. COBOL is also something which could easily move to the big data space with a few tweaks and updates. (Think of Pig with a data definition section so you don't need to persist the schema in a RDBMS like you do with Hive) Of course COBOL would be redundant since you do have Hive, Pig, Drill, and more tools than you can shake your wee willy at. (Hey its Friday and its funnier than saying stick).

      Java?

      It's portable (no little indians to worry about.) [Endians]

      You don't have to worry about GC

      And its easy. (Dumbing down of languages)

      For bonus points, you can use the old Sun hack and go off heap with your memory as well as do some cross language stuff to C/C++

      Oh and those nasty pointer indirection thingys... fuggit about them. (Pointers and memory stuff is really not that difficult, but it takes time to really learn and use them correctly)

      So, pick your poison. Its all good. (said the waiter at the hotel california) :-)

    4. Anonymous Coward
      Anonymous Coward

      Re: Crippled C++

      > Much like with JavaScript I have no clue why Java is even popular

      JavaScript, because it was Lisp with C syntax, cross-platform, in every web browser, and its killer app ws Gmail.

      Java, because it was cross-platform, "safe C", created by legendary Lisp geek James Gosling, and it ran in browsers before JavaScript existed let alone was considered anything but a toy. On the server side, its only real competition was Perl and C. It's still with us because universities adopted it as their main teaching language.

      1. JLV

        Re: Crippled C++

        Not to mention that when it came c. 95 it was the only cross-platform business-capable language alternative to COBOL. By business-capable, I mean for businesses, often end-user, non system programs, where string types abound and super-programmers are scant. C and C++ are not an appropriate choice here, they require too much from the devs & the low-level aspects, esp wrt strings and mem management are a hindrance.

        COBOL had that cornered in 95. Even without hipster web languages, Java would have much more competition if it came in to solve the same problems, the same over-designed Java (TM) way, nowadays. This is a language that took what, 10 yrs, to get a native File Copy? While not that complicated at base its coders often get Design Patterns diarrhea. Nowhere more than in J2EE.

        Go/Swift easily cover the same ground, more elegantly IMHO. J2EE's case is more nuanced, while an overdesigned turd, it is a standardized blueprint for hosting/integrating components together so its a bit of an Unique Selling Point outside of web server type contexts.

        Java is mainstay, quasi-legacy, by virtue the almost-right language at the right time to take over from COBOL. The writer is 100% correct in his premise of economic reward. Still doesn't mean I find it a pleasant, expressive or elegant language though it did help in bringing OOP mainstream.

    5. Voland's right hand Silver badge

      Re: Crippled C++

      I have no clue why Java

      Google made the (IMHO fatal) mistake to attach an automated defibrillator to it. It is called Android and (in the process of making Android serviceable) Guava, GSON and the rest of the support train.

      As long as Android and its support train lives so will Java. If it was not for that, it would have been a niche language on the dusty shelf next to Pascal by now.

      1. Mellipop

        Re: Crippled C++

        Google already have the NDK that allows development of android components in C/C++.

        IMHO Google wants to walk away from perennial battles with Oracle over implementing Java APIs.

        As soon as they can, Java will become just another way to write apps on clients in just the same way Java is just one of several languages you can use server side on GAE.

        Java and C# should join COBOL as museum pieces worthy only of morbid interest.

      2. Anonymous Coward
        Anonymous Coward

        Re: Crippled C++

        The Wago PLC code looks suspiciously like Pascal.

      3. This is my handle
        WTF?

        Re: Crippled C++

        If you check the tiobe index I think you'll find that java peaked in 2004, a good four years before any of us ever heard of Android. My own experience (wrote C in 1984, started switching to java in '96, switched completely in 2000) confirms this, YMMV.

        Lost in the religious wars here is the number of programming concepts java "democratized" (dumbed down if you're a cynic): multi-threading & concurrency, object-orientation, safer memory-indirection, inter-process communication & networking, design patterns, embedded documentation [javadocs], generated unit-tests [junit]). I for one never really adopted C++ because it was easier to write structs & functions than learn about classes & methods; Java did provide those options. With this all built-in to a cross-platform language (no #ifdef LINUX in java), not to mention runtime memory management, boundary-checking and the like, there are of course associated costs. Nothing is free(). :-)

        The language is nothing if not resilient, having morphed from Oak's set-top language, thru webtone "java-stations", thru the darling of the WWW, then the place we put business logic when we abandoned client-server, now REST services and [Android] mobile apps.

        If I had it to do over, I don't think I'd have abandoned java for PHP or Ruby or ... whatever the next fad may be.

        My $0.02.

    6. Kevin McMurtrie Silver badge

      Re: Crippled C++

      Java exists because it has safer memory handling. Desktop app developers can laugh this one off, but C++ memory management is really hard on multi-threaded servers. In Java, a hundred threads can continuously grab references to a shared cached object, a dozen of those threads can throw random exceptions due to GIGO, several threads can stall because somebody is on dialup, and at the same time the cache can be updated without ever a single memory leak or pointer bug. C++ can do that too but it requires a tedious level of manual effort and testing.

      It's a double-edged sword. Java can't bulk-allocate structures so it's a mess for image and signal processing where there may be 100 million complex data points.

      1. Richard 12 Silver badge

        Re: Crippled C++

        Somebody who thinks Java can't leak memory? Hate to break it to you, but it does and for basically the same reasons as C++.

        You can write crap software in any language.

        Massive multithreading is easy in C++11 and C11.

        - It wasn't so great before as the STL didn't specify how, so you'd need to use one of the tens of great 3rd party libraries, but many of those also made it very simple. Of course, some places rolled their own of variable quality...

        More importantly, as is scaling the number of threads to the actual hardware you're running on, and pooling them.

        Hundreds of threads is very likely to be much slower than ten threads on commodity hardware. In general, thread pools are so much faster.

    7. SVV

      Re: Crippled C++

      "with no fancy pointer arithmetic to ease the pain."

      Ease the pain? Are you kidding? Have you ever had to maintain some smart arse's convoluted, undocumented use of cheesy pointer arithmetic tricks under pressure?

      Java IS simple. It is meant to be that way as its' main use is for business applications. C++ is complex and multi featured. It is meant for use in very high performance applications. I use both and I like both, even though I understand the not so great aspects of both. Please understand the target audience of languages before engaging in language wars.

      1. a_yank_lurker

        @SVV Re: Crippled C++

        "Please understand the target audience of languages before engaging in language wars." - Absolutely, if used for the problems the language is designed to handle well it's the greatest since sliced bread. Used for unsuitable problems it is a genuine turd. The better question is what types of problems are you focused on and learn the languages of that area and ignore the rest.

        Enterprise is currently Java with some C# and C/C++ with an occasional Python or Ruby bit. Web development Javascript, HTML, CSS, with PHP, Python, and Ruby for the backend depending on the backend framework. Scientific and statistical computing R and Python (mostly due to Numpy and Scipy). Note, the examples are not intended to exhaustive but illustrative of the fact where one sits as developer will influence which languages they think are the most important as they are the languages they see in their area.

      2. Elledan

        Re: Crippled C++

        "Java IS simple."

        The hours I have wasted debugging issues with the JVM's GC (Android and server), as well as untangling multi-layered levels of exceptions, fixing NullPointerExceptions (Null types are a design flaw), and discovering code flow in a Java application using interfaces and injection have made it clear to me that Java is not 'simple'.

        If anything, Java lends itself for the writing of applications which are even less maintainable than if they were written in any other language. I have had more fun debugging C++ code which made heavy use of templates.

    8. Anonymous Coward
      Anonymous Coward

      Re: Crippled C++

      Java became popular because people wrote useful tools in it, including a browser plug-in.

      JavaScript became popular because the web is popular and it was supported by browsers, which made it very easy to do some of the simple dynamism that people wanted to do.

      But importantly JavaScript is also object-based, built on fast associative arrays, the object model is efficient, it has syntactic flexibility, it allows functions references and the syntax allows for useful brevity. All of that, when combined with the DOM made it relatively easy to deploy complex web applications.

      Internet Explorer allowed VBScript in web pages but its dumbed-down, clumsy syntax didn't stand a chance against JavaScript.

      (But yes, wouldn't it have been so nice if it had supported strict typing.)

  4. Anonymous Coward
    Anonymous Coward

    Funny how what goes around...

    20 years ago the kids in tight pants were extolling Java and I was the C/C++ guy looking over his glasses at them going "Meh, VMs, whatever, it'll never catch on, now go play with you GUIs and let me get on with some real coding" :) Similarly Cobol guys did the same thing to me though they had the last laugh - Cobol has dug in in its niche and isn't going anywhere whereas other languages wax and wane.

  5. andy 103
    WTF?

    Java is absolutely crap for web applications

    I don't know why Java even gets a mention when it comes to web applications. To any competent web developer (i.e. those of us who have used other non-Java technologies) it's an absolute joke.

    The article mentions developing a mortgage application. Whatever the requirements of that, I guarantee, a Java-based web framework would yield absolutely appalling results - in terms of bloat, time taken to develop, maintanence costs, etc - even than using the simplest of PHP frameworks.

    The only people who disagree with this are people who don't know any better, people who think Java is the shit because that's what they've spent their career working with.

    If you're a developer or software engineer, you really need to realise what year it is, where things are going (i.e. web-based applications and software) and learn some new skills.

    Java for web applications? Think I'd rather cut my balls off with a rusty knife.

    1. Anonymous Coward
      Anonymous Coward

      Re: Java is absolutely crap for web applications

      "- even than using the simplest of PHP frameworks."

      I'm not Javas biggest fan, but PHP is a toy language for toy sites. Anyone who even suggested using for something hardcore like mortgages or any kind of financial site where serious money and peoples futures are at stake should be shown the door. The fact that you think PHP is a suitable solution yet think yourself a "comptetent web developer" shows the general level of expertise in the webdev community. Frankly you guys should stick to making pretty pages in HTML and javascript and leave the serious backend programming to people who've had appropriate training and have a clue.

      1. andy 103

        Re: Java is absolutely crap for web applications

        @boltar - You might want to consider some of the applications and services which are based on PHP before you go mouthing off. Seriously, go and have a look, it's not 2000 anymore and things have moved on somewhat. A "toy language" indeed... utter rubbish. They certainly don't pay me toy money to develop using it! And as for "making pretty pages"... that's front-end development, not PHP. Idiot.

        1. Anonymous Coward
          Anonymous Coward

          Re: Java is absolutely crap for web applications

          "@boltar - You might want to consider some of the applications and services which are based on PHP before you go mouthing off. "

          Sure, a lot use it. So what? A lot of sites used to do backend in Perl in cgi days. That didn't make it the right choice either. There's always the pressure to get projects done quick and PHP has a quick turnaround compared to Java or C++, but that doesn't make it the best choice for runtime efficiency, security or scalability. In fact its never the best choice for any of those.

          "They certainly don't pay me toy money to develop using it!"

          Since when did someones salary equate to the suitability of the product they were using?

          1. andy 103

            Re: Java is absolutely crap for web applications

            "Since when did someones salary equate to the suitability of the product they were using?"

            I'm not even going to carry this on because clearly you have no idea about modern application development in a web-based environment. To answer your last question though, this particular article is about careers and employment.

            You've already acknowledged an advantage of PHP in terms of rapid development. In terms of PHP's suitability, I beg to differ, but as it's what I've done professionally for years and also used Java for web apps, I'm pretty well versed in making that call.

            The end result is that you have a language which - if used properly - is great for web application development, and I've confirmed I get a significant salary for making applications with it. In terms of my career then, why would I want to use a language which makes things more difficult?! PHP's simple and get's the job done, whilst also getting paid a lot to use it? Yes, I'm fine with this!

            Maybe you like pissing into the wind and get a boner over reading about data types... but some of us have a career AND time to have a life outside what we do professionally.

            1. Anonymous Coward
              Anonymous Coward

              Re: Java is absolutely crap for web applications

              PHP is anything but simple, at either the language or platform level, particularly when you've got to intermingle it with Hack and HHVM to get anything approaching acceptable performance out of it.

            2. Anonymous Coward
              Anonymous Coward

              Re: Java is absolutely crap for web applications

              "In terms of my career then, why would I want to use a language which makes things more difficult?! PHP's simple and get's the job done"

              And people wonder why sites get hacked. I rest my case.

              "whilst also getting paid a lot to use it? Yes, I'm fine with this!"

              Webdevs don't tend to get paid that much compared to other areas of development so I suspect your large salary is actually rather meh compared to someone who does serious backend C++ or java development but hey, you want to play a dick waving contest on your own and think you've made it then knock yourself out. Whatever gives you validation.

              "Maybe you like pissing into the wind and get a boner over reading about data types"

              Yeah, who needs strong typing that can find errors at compile time. Much better to have exceptions thrown at runtime eh? *sigh* Another know-nothing script kiddy.

              1. Anonymous Coward
                Anonymous Coward

                Re: Java is absolutely crap for web applications

                So now PHP devs are script kiddies? Fuck you.

                1. Anonymous Coward
                  Anonymous Coward

                  Re: Java is absolutely crap for web applications

                  "So now PHP devs are script kiddies?"

                  Dismissive terminology perhaps, but last time I looked PHP was a scripting language (and not a particularly well-designed one at that).

                  Given the number of bugs and security holes that crop up in the PHP language itself (nevermind the code written in it), the number of large commerce sites running on it is seriously worrying.

        2. Mage Silver badge
          Coffee/keyboard

          Re: PHP

          Look at the OLD security bugs in new PHP modules on mailing lists for all the popular CMS / Forums etc.

          EVERY WEEK!

          Popular or fast to put out the door != good

      2. johnadams

        Re: Java is absolutely crap for web applications

        I just signed up to downvote this.

        1. jake Silver badge
          Pint

          Re: Java is absolutely crap for web applications

          Welcome.

          Perhaps you'd like to comment on something a trifle more current?

          Enjoy your stay, put your feet up, relax and have a homebrew.

          n.b. I'm just a user. I don't work for, speak for, write for, set policy for, or do anything else that relates to the running of ElReg, other than occasionally offer user input when asked, when I can be arsed.

    2. Anonymous Coward
      Anonymous Coward

      Re: Java is absolutely crap for web applications

      "I guarantee, a Java-based web framework would yield absolutely appalling results - in terms of bloat, time taken to develop, maintanence costs, etc - even than using the simplest of PHP frameworks."

      This is what insanity looks like.

    3. zebthecat

      Re: Java is absolutely crap for web applications

      You have clearly never coded a Java web properly so shut your cake hole.

      Ignorance is not a strong position from which you should try to frame an argument

    4. Dan 55 Silver badge
      Meh

      Re: Java is absolutely crap for web applications

      At least Java is consistent. Consistently bureaucratic, but consistent. PHP is just pot luck.

      Of course, neither of them are proper languages. We all know which one is. C++.

      1. Steve the Cynic

        Re: Java is absolutely crap for web applications

        "Of course, neither of them are proper languages. We all know which one is. C++."

        That's a strange way of spelling FORTRAN.

        1. Steve Davies 3 Silver badge

          Re: Java is absolutely crap for web applications

          Which is a misspelling of

          ALGOL

    5. lipong

      Re: Java is absolutely crap for web applications

      Could not agree more, and in fact I believe that is mostly the case for many new projects starting today. I think the biggest reason JAVA is still big is due to the a few factors:

      -there are many legacy stuff that needs to be maintained and extended

      -large corporate companies take a long time to move to new tech

      -plenty of devs around (although not at all correlated with quality)

      -JVM one of the good aspect of JAVA

      -the push it got from Hadap and MapReduce and few recent tools that use it mainly in the big data space

      1. monty75

        Re: Java is absolutely crap for web applications

        https://www.youtube.com/watch?v=CxK_nA2iVXw

    6. Bucky 2

      Re: Java is absolutely crap for web applications

      I actually know why you say that.

      Java PROGRAMMERS are crap at web applications, led by the first and worst of the category: WebSphere developers.

      If you want to see what bloat does to a PHP application, you need look no farther than Drupal. It needs a cache not for high availability, but just to make the thing run in finite time under a normal load.

      It's the Java programmers that give the language a bad rap. In my experience, they're mostly business majors who play Lego with Beans. They can't write HTML or CSS to save their lives. But if you actually PROGRAM in the damn language, you can get pretty decent results.

    7. John Watts

      Re: Java is absolutely crap for web applications

      With Java you can knock up functional form based authentication in a few lines if your application server is set up correctly.

      How does that work on PHP? What about LDAP?

      With PHP you can knock up a (very) simple RESTful service with a single screen of code (assuming authentication offscreen required of course).

      Each have their merits but I'd prefer my bank to use Java.

  6. Doctor Syntax Silver badge

    "it’s sometimes worth paying for something that your entire business relies on - just sayin’."

    Which of Tricky Dicky's henchmen was it who said "When you've got them by the balls their hearts and minds will follow."?

  7. Dr Who

    If you think JEE is good, you should try JEEZUM ... it's orgasmic.

  8. Anonymous Coward
    Anonymous Coward

    Java generics

    Half-baked C++ wanabe hack or templates done right. Discuss.

    1. Anonymous Coward
      Anonymous Coward

      Re: Java generics

      Half-baked hack. If they just bit the bullet and got rid of type erasure they'd be genuinely lovely in their own right but they're fucked with erasure in place.

      Thankfully anyone into serious Type-y stuff now has Scala to throw into the mix on the JVM, and that definitely gets it right.

    2. Anonymous Coward
      Anonymous Coward

      Re: Java generics

      "Half-baked C++ wanabe hack or templates done right. Discuss."

      It didn't actually need templates since it had a base object class that everything belonged to anyway. But they were added in to be more C++ like and arguably make finding errors easier at compile time.

      1. Richard 12 Silver badge

        Re: Java generics

        Inheriting a dozen interfaces doth not make for understandable code. It also makes it much harder to add new generic library functions.

        Needing to bring in multiple interfaces is generally bad - not because it has any effect on speed or compiler/interpreter efficiency, but because it scatters a huge amount of verbose stuff all over. ISortable, IHashable, Icarumba... God forbid you need to sort by hash...

        C++ templates mean I can make my new class X-able simply by making sure I implement the one or two methods needed to X it.

        I don't have to add another line to the inheritance and implement everything in that interface.

        I also don't have to re-write a pile of existing classes to add X-ing to them, just write the template that uses the methods they already have.

        Even if they don't inherit any particular interface.

  9. jake Silver badge

    COBOL is dead!

    Long Live COBOL!

    Seriously, there are more functional lines of COBOL and Fortran working in big business today than the average kid who never used a dial telephone could possibly imagine. I do not know of a single COBOL or Fortran programmer who is currently out of work. I can't say the same for Java(script), VisBas, C++, C#, and what-have-you. Not a month goes by when I don't get email from a former student, thanking me for suggesting COBOL or Fortran as another programming language to learn ... The two are pretty much ubiquitous in big business.

    The new-fangled Johnny-come-lately C rounds out the triumvirate.

    1. wolfetone Silver badge

      Re: COBOL is dead!

      How would one get in to learning COBOL on a practical level?

      As in would I need a special OS or VM set up to run compiled programs on it? Or could I just develop it on Linux and run it on Linux?

      It is a silly question yes, but given the fact I'm 29 and I'm of the school age where web languages were being taught or spoke about, it wasn't until 3 years ago did I find out about COBOL actually existing.

      1. disgruntled yank Silver badge

        Re: COBOL is dead!

        "I do not know of a single COBOL or Fortran programmer who is currently out of work."

        I know three who are retired, and one who I think moved into management. But that's about it for COBOL programmers I know. It seems to me a fine language for accounting systems, which is what the designers had in mind: COmmon Business-Oriented Language, right?

        I would imagine that the Free Software Foundation's COBOL is OK to learn on, but I've never tried it (meaning that I have only slightly less experience with it than with any other): http://directory.fsf.org/wiki/Gnucobol. You may be able to find a community college or university extension program that teaches it, though sometimes it won't be the Computer Science department but the business school.

        1. Trooper_ID

          Re: COBOL is dead!

          i did COBOL and Fortran and NEAT in the early 70's. Not touched it since. What I do these days, if any, is in VBA. Such is life.

      2. Anonymous Coward
        Happy

        Re: COBOL is dead!

        Yes to all the above. Run a Linux VM, install Gnu COBOL, start playing.

        But really, for a "forgotten" language like this, you need a mentor. Someone you can meet up with every month and learn from. Chances are they'll be a little older, and I suspect they will be thrilled to be asked to share their knowledge and experience. You might even be able to parlay it into some paying gigs because they'll know better than you what businesses still use the stuff.\

        Good luck!

        1. wolfetone Silver badge

          Re: COBOL is dead!

          "But really, for a "forgotten" language like this, you need a mentor. Someone you can meet up with every month and learn from. Chances are they'll be a little older, and I suspect they will be thrilled to be asked to share their knowledge and experience. You might even be able to parlay it into some paying gigs because they'll know better than you what businesses still use the stuff.\"

          I did think of this, but I'm not sure how many of those types are in the UK, let alone the West Midlands.

          I'm playing about with it now, well reading/playing. So far makes sense.

          1. Korev Silver badge
            Coat

            Re: COBOL is dead!

            I did think of this, but I'm not sure how many of those types are in the UK, let alone the West Midlands.

            If they're not prepared to move does that make them static types?

        2. bdavidson81

          Re: COBOL is dead!

          In the time it takes you to get user input and UI output in Cobol, you could have an entire application up and deployed. Considering most hiring companies wanna see a little demo web app as part of the interview process, which would be a more worthwhile use of experimentation time?

      3. JLV

        >How would one get in to learning COBOL on a practical level?

        GnuCOBOL, aka OpenCOBOL runs on Linux (and Windows with MS Visual Studio Express). I had programmed for about 18 mo in COBOL 2 decades back so I needed a refresh for a short gig.

        Downloaded it, played with it for a few hours and got right back into it. COBOL's kinda like a bicycle, really simple. One somewhat tricky bit is knowing the subtleties that the PIC record declarations allow for.

        The alternative is getting a commercial Cobol compiler and MicroFocus, the prototypical vendor, makes the average greedy IT company like SAP seem like Mother Theresa.

  10. a pressbutton
    Pint

    Java is great for outsourcing

    Lots of typing

    Everything hyper-specified

    Everything chopped up into small lumps

    This encourages / is well suited to large teams of cheap people overseas

    funny that it was introduced at roughly the point where offshoring dev work took off.

    not saying this is bad, but in my experience, the best programmers tend to be lazy in not wanting to do a lot of typing

    otoh if you are a customer of a dbms (say), you want to think it is based on a well understood, well documented codebase supported by a team with knowledge in depth.

    This tension imo will be eternal.

    Beer because ... it is nearly lunchtime

    1. jake Silver badge
      Pint

      Re: Java is great for outsourcing

      Beer because it's 330AM and the bottle lambs have just been checked. Easter can't come soon enough ...

    2. poohbear

      Re: Java is great for outsourcing

      "not saying this is bad, but in my experience, the best programmers tend to be lazy in not wanting to do a lot of typing"

      which is what I hated about COBOL both times I was forced to learn it....

      I'm surprised that business never adopted Ada, given the alleged low bug count. Perhaps because all the Uni's and coding colleges teach/taught Java, and that's what businesses could get to do systems in?

      Personally I've never been a fan of C-style languages. Static voids confuse me.

      1. DaddyHoggy

        Re: Java is great for outsourcing

        I was at Uni 90-94 (Joint Honours Physics and Computing), they taught us C, Ada and Smalltalk (as an OO language). I hated Ada because what you were supposed to do was write decent pseudocode, turn this into Ada syntax and hit compile and, if you'd done it right it would just work. Of course, having grown up with various BASIC languages (C64 & Amiga) I was used to just hacking it until it worked. Ada made you really work for that compile complete message (even checking at the compiler level that you had written error traps for potential DIV0 in your equations, for example).

        When I started with the MOD in 95 they gave me 120,000 lines of undocumented buggy FORTRAN 77 code and told me to make it work. That was a baptism of fire for a shiny new grad - but even though I had never seen FORTRAN before I at least understood 'programming', so I got there in the end.

        There was a moment when the US DOD dictated 'Thou shalt use ADA' that I thought my hard-earned skills might finally come to bear, but everybody in defence, who wasn't already using Ada, pretty much ignored it, and so the General who'd issued the dictat said he'd meant it as guidance and (almost) everybody pretended it hadn't happened. I've not even seen a piece of Ada code since 94 (and I still work in Defence).

    3. Anonymous Coward
      Anonymous Coward

      Re: Java is great for outsourcing

      That's an interesting theory, but I don't think it can be true.

      If hyper specifying and lots of typing were important, the world would be running on Ada.

      1. Anonymous Coward
        Anonymous Coward

        Re: Java is great for outsourcing

        If hyper specifying and lots of typing were important, the world would be running on Ada.

        But most programmers aren't that masochistic (and yes, I did take a class on Ada in uni)

    4. PerlyKing
      Flame

      Re: Java is great for outsourcing

      "in my experience, the best programmers tend to be lazy in not wanting to do a lot of typing"

      By "best" do you mean people who can write working code, or people who can write working and maintainable code, and even (speak it softly) documentation?

      Also, have you heard of IDEs with keyboard macros, completion and the like?

      1. kmac499

        Re: Java is great for outsourcing

        "in my experience, the best programmers tend to be lazy in not wanting to do a lot of typing"

        Couldn't agree more. But don't confuse lazy with idle.

        A Lazy programmer will think before coding, and always have an eye on writing code in small generic pieces, which can easily be reused reducing code size maintainence and testing.

        An Idle programmer will come up with a linear chunk of code, copy and paste it six times and change the one line which sets the index of the data file. (This is a real world example I found) Then we all just wait for the requirements change to arrive..

  11. Solarflare

    Defensive

    Awful lot of downvoting going on, seemingly by people being defensive of their 'pet' language!

    1. TRT

      Re: Defensive

      Commodore are long out of the game.

      1. Grunchy Silver badge

        Re: Defensive

        COMMODORE *INVENTED* ALL-CAPS CODING.

        TRY DOING THAT WITH ANYTHING ELSE.

        1. Richard Plinston

          Re: Defensive

          > COMMODORE *INVENTED* ALL-CAPS CODING.

          Said by someone who never coded for COBOL, or indeed anything that was done with 80 column cards.

        2. Charles 9

          Re: Defensive

          "COMMODORE *INVENTED* ALL-CAPS CODING.

          TRY DOING THAT WITH ANYTHING ELSE."

          Seriously? Thought that was Apple and Integer BASIC, given it predates the Commodore and, like the Commodore, defaulted to uppercase.

  12. CharlieM

    Java?

    It depends what you mean by Java? You have the language, the runtime platform, the ecosystem and the then there's the EE world.

    Java EE is dead and not before time. Sure there's still good money to be made helping "Enterprise" customers too big and too slow to change course. The whole idea that one standard (designed by committee) can provide the ideal architecture for a vast array of different things enterprise apps require should have seemed laughable from the start.

    The Java the language is also looking a bit long in the tooth. It's still perfectly usable. It's just a bit verbose to work with compared to the alternatives. Java 8 was a small step in the right direction but feels like too little too late. MS has been much better at evolving C# than Sun & Oracle have been with doing with Java. In the last decade, it feels like Java has survived despite its creators rather than because of them.

    The runtime is pretty solid as is the eco system. So with languages such as Scala and now Kotlin its easy to take advantage of all the good parts of the Java world without having to stay stuck with the bad. Which I guess is testimony to the quality of the original design.

    The company I work for has switched to using Kotlin for its main product from Java. Its 100% interoperable so we are just upgrading it a package at a time (there are decent auto conversion tools as well). Writing new code in Kotlin has been a breath of fresh air.

    1. Anonymous Coward
      Anonymous Coward

      Re: Java?

      +1 for Kotlin. I'm still a little reluctant to build anything in it professionally. The lack of open governance and the express design goal of pushing IDEA sales makes me nervous. Even if development has been practically open and IDEA has become the de facto standard anyway, that won't always be necessarily true.

  13. AlexS
    Holmes

    Drinks coffee.

    Doesn't give a shit..

  14. Ian Michael Gumby
    Boffin

    Wow.

    I am amazed at no mention of Spring. (A dumbshite idea)

    Or Scala. A functional programming language that doesn't do well at lower level programing tasks but can easily hook in to Java for that.

    Then there was Small-Talk that morphed in to Objective-C.

    Free clue. Get a software engineering degree and learn language theory. Then they all look roughly the same and you can learn all of them and master them in short time.

    1. DaddyHoggy

      Re: Wow.

      Upvote for mention of Smalltalk - it's the OO language they taught me at Uni (90-94).

  15. Andy 73 Silver badge

    Wow

    It's Friday and I'm standing in a school playground.

    "My language is better than your language!"

    Anyone who thinks the success of Java is down to the language should not be allowed to make tech choices for any company. Similarly for anyone who thinks that feature-X in a language is a reason to choose that language for a project.

    "I was coding Z when you were still in nappies!"

    Having a beard doesn't make you wise, old man. I pre-ordered the first public Java distribution (sent on CD from America no less), used Turbo pascal before it was Delphi, coded Z-80 and 6502 by hand and once fought a bear bare handed.. or something. That doesn't mean I can't learn new things, and discover new tools and techniques. As the article points out, what was true for Java five years ago isn't necessarily true now, which is why it stays relevant. When that is no longer the case, a competent developer is more than able to pick another toolset.

    "Java is slow/bloaty/crippled"

    Yet it's still here. What could it be that you are missing?

    1. danbishop

      Re: Wow

      Finally... a sensible comment.

    2. Anonymous Coward
      Anonymous Coward

      Re: Wow

      At least I wasn't the only one using Turbo Pascal - or indeed coding 6502 in assembler.

      Now after passing by a variety of technical architectures including mid-range I-series, mainframes as well, coding in over 20 languages I find the whole debate fascinating.

      Corporate hat on - the architecture choice needs to stand the test of time, integrate with decades old technologies, and have a reliable source of skills for re-recruitment.

      Hipster hat on - be the first/early adopter, use the latest marginally faster to code, marginally thinner on infrastructure, generally harder to describe threats and vulnerabilities and no idea if the solution will last more than 2 years before being relegated to last years best thing.

      Both sides are right, to an extent, but the decisions are really more at a TCO/risk level for a corporate rather than shiniest current technology with a feature or two that makes a specific project a bit easier which may be better for a smaller shop

    3. disgruntled yank Silver badge

      Re: Wow

      Actually, I thought it was the junior high school locker room, but you clearly are onto something.

      Might I recommend the essay "The End of History and the Last Programming Language" by Richard Gabriel, collected in his Patterns of Software (https://www.dreamsongs.com/Files/PatternsOfSoftware.pdf)? His four part theory seems plausible to me, the parts being that

      - Languages are accepted and evolved by a social process, not a technical or technological one

      - Successful languages must have modest or minimal computer resources requirements

      - Successful languages must have a simple performance model

      - Successful languages must not require users have "mathematical sophistication.

      1. a pressbutton

        Re: Wow

        - Successful languages must not require users have "mathematical sophistication.

        +1

        else ADA/Haskell/Lisp would be more popular

        1. Steve Davies 3 Silver badge

          Re: Wow

          You forgot

          FORTH

    4. Anonymous Coward
      Anonymous Coward

      Re: Wow

      Good comment. There is a tendency to focus too much on a specific language instead of looking at the problem domain(s) that one needs to program for. In my 30+ career I've had to learn to program in many languages, and I categorize them into the following major domains (I've programmed in all of the domains below, there may be others that I am not aware of, I'm not claiming this list is complete):

      1. Hardware (synthesis/simulation): Verilog, (ISP, VHDL...)

      2. System (hardware interface, OS, drivers): C (C++, assembly, ...)

      3. Main Application: C++ (Java, C, COBOL ...)

      4. Shell/interpreter: bash, Python (csh, Tcl, Perl, Ruby, ...)

      5. Specialized (DB, statistics, math, web page, text layout etc): SQL (R, Matlab, JavaScript, Tex/LaTex...)

      (The 5th is really a catch-all for multiple specialized domains, and in some cases the language may be capable of broader applicability than the specialized domain).

      In my experience, there are 2 main sorts of my-language-is-better-then-your-language arguments:

      1. Which language is better within a domain (for example C++ vs Java for main application programming, or Python vs Ruby for interpreter). These arguments are similar to religious arguments, as people tend to root for the language they are familiar with and have spent more time learning. Instead, for the most part, I think these should be driven more by practical considerations for the specific project. For example, are there libraries available in the language to do all the things I want to do available with the acceptable licence/cost/performance/quality? Is there a familiarity with a particular language among the programming team?

      2. Arguments about languages in different domains. This particularly happens between domains 3 and 4 because you can often do the same thing in both domains' languages. For example, you can write a simple application in Python or you can write it in C++. But then the C++/Java (domain 3) proponents will argue that Python (domain 4) languages will not scale in performance or quality for larger and more complex applications. The Python (domain 4) folks will retort that Java (domain 3) languages are prone to verbose over-specification and bloat and are inflexible. In my experience, however, large and complex applications typically/often span both domain 3 and 4 and good software architects will partition the application accordingly. And they will use the appropriate language for each partition. So there may be large, mostly static functionality programmed in Java/C++ but then the application needs some flexibility and scripting capability so a Python/interpreter interface would be included.

      I don't have specific information about which domain has the most/highest paying jobs, but I suspect that many will need to span multiple domains and I think if you want to do well in the field you should learn how to use the appropriate tools for the job.

  16. Anonymous Coward
    Trollface

    None of the above

    Keep delivering pizza. You can always find work, the pay is decent, and it's more interesting.

    1. Grunchy Silver badge

      Re: None of the above

      Even better, lease a shop, pick up some ovens from the auction, and develop your own recipe.

      Be a entrepreneur & hire the help. Guess what language your web dev will use to set up your online pizza ordering app?

      The answer is, it doesn't make any difference as long as it works. Fire the ones that don't succeed.

      It's funny to hear web devs argue about nonsense while you're counting stacks of pizza loot :)

    2. bdavidson81

      Re: None of the above

      As a real example of pizza delivery driver gone dev.. if you can survive on the money you make.. delivery really is a better job. Drive around, have a cigarette, hit on girls and get denied bc of the same stereotypes.. if you don't care what other assholes think, it really is better.

  17. This post has been deleted by its author

  18. tiggity Silver badge

    All languages have their good pints and their flaws

    One of the things I really like about Java (though others hate it) is having to define what exceptions are thrown and compile errors if those are not handled up the chain.

    Yes I know lazy coders can subvert this by having some generic catchalls, but I like it because.

    It informs the developer that an exception could be thrown here & forces exception / error handling to be dealt with, and is well suited to nice granular error handling when appropriate.

    Conversely, I dislike the lack of multiple inheritance (yes, interface workaround go part way) .. again others love it because you do have to be careful with multiple inheritance (e.g. diamond problem) so not allowing it means its trivially guaranteed you are actually doing what you meant / using what you meant to use.

    Anyone who has had to use a variety of languages would love some Frankenlanguage based on the best features of them all, but (generally) there would be huge disagreement on the "best features" / best way to do things

    e.g. I'm not a fan of perl for general day to day coding, but years ago a colleague was having problems with some complex (standalone task) text mangling in very large files that was taking "ages" with the C# he had written. He was amazed the perl I produced for him was hundreds of times faster, I had to explain because it was a language way better suited to doing that type of task, & doing it quickly, you often need a horses for courses approach to languages.

  19. oliversalmon

    Java Alive and Well

    I work in a large investment bank, virtually all the systems are written in Java from trading systems, to risk systems to clearing systems and beyond, no one's talking about porting to Rust, SWIFT etc and I'd be fired for recommending that anything was built in PHP.

    Nearly all the big data solutions, Hadoop ecosystem, Cassandra etc are written in Java

    Most of the new stream processing systems Flink, Storm, Gearpump etc are written in Scala & Java

    Products written Java or JVM platform Languages (mostly Scala) are driving all the innovation in Software at the moment

    1. Adam 52 Silver badge

      Re: Java Alive and Well

      Funnily enough I was talking to the technology advisor of a venture capitalist a few months ago. He opined that all the innovation in software as the moment was happening in Go.

      1. oliversalmon

        Re: Java Alive and Well

        "technology advisor of a venture capitalist"

        Say no more!

    2. Anonymous Coward
      Anonymous Coward

      Re: Java Alive and Well

      Is that a place where the entire Java experiment has resulted in lower quality applications and a much higher headcount? Well done.

      Perhaps instead of forcing frameworks where they do not fit, you could help sort out data by getting it, you know, entered, and help sort out application design by having people who, you know, can code.

  20. Eddy Ito

    Which to choose...

    Well my crystal ball is binary so it's giving two options for the state of computing in the next 30 years.

    1. COBOL, Fortran, C (or variants thereof), and Java will still be in use and reasonably lucrative simply because the existing code base is so large and the new kids will always be going for the new stuff as it rises and falls in the usual churn.

    2. Something odd happens and traditional computing is completely knocked on its rear by something so completely different, faster, and easier that porting all that code becomes trivial and the new quantum entangled quark computifyer handles all the previous workloads on one tenth the power, in one fiftieth the time, and automatically fixes bugs at runtime making programming largely obsolete.

    In case 1 it will pay to know one or more, if not all, of the named languages and in case 2 you'd better have good taste and be good at telling the difference between down, up, top, bottom, strange, and charm. In either case, assuming I'm still about, I'll be retired and won't care.

    1. Anonymous Coward
      Anonymous Coward

      Re: Which to choose...

      What about (3) Something odd happens and traditional computing is completely knocked on its rear by something so completely different it renders all previous knowledge obsolete overnight? Like photonic computing or ubiquitous quantum computing or some other system where everything you once knew is wrong?

      1. Anonymous Coward
        Anonymous Coward

        Re: Which to choose...

        "Like photonic computing or ubiquitous quantum computing "

        How about

        Like "The Last One" https://en.wikipedia.org/wiki/The_Last_One_(software) ?

        Like HP's "The Machine" ?

        Like DevOps?

        It might happen. I'm not holding my breath, and nor should you.

    2. This post has been deleted by its author

  21. happy but not clappy
    Devil

    Robots

    Will program most of it soon.

    It boggles my mind that we are still writing CRUD and data mangling back-ends by hand.

    I seriously thought about, and part designed, an automatic programming system years ago, but then thought, "nah, might need a job" and quietly shelved it.

    Someone may catch on at some point. I would bet good money Googlers know this too.

    Meanwhile the Y2K gravy train rolls on, choo choo!

    1. Andy 73 Silver badge

      Re: Robots

      "and part designed, an automatic programming system years ago, but then thought, "nah, might need a job" and quietly shelved it."

      I don't know any junior programmer who hasn't gone through that phase. It's funny that no-one has actually managed to write such a thing (that worked) so far.

      On the other hand, for the (many) posters here who clearly don't keep up with Java frameworks, it's worth pointing out that implementing a CRUD repository for an arbitrary Java object involves no more than declaring an interface (yes, literally one line of code) in Spring Boot. With two lines of code (annotations), the same Java object is your data definition, generating an SQL schema, indexes, constraints and sequences as appropriate. One more annotation turns any method into a REST interface, with form decoding, object transformation, output encoding, validation and error capture all happening automatically. Metrics don't take any more effort.

      Of course if your only exposure to Java is through using Stack Overflow to find answers, you'll probably be thinking that PHP makes things far easier.

      1. Anonymous Coward
        Anonymous Coward

        Re: Robots

        As much as I am a head-over-heels Spring Boot fanboy (if only it was as nice in Scala), it's only fair to point out that plenty of people loathe that style of engineering, where a couple of annotations entirely rework the function of the program with AOP and codegen black magic inserting opaque, tough-to-debug code all over the shop.

        I don't mind it, plenty of people do.

      2. happy but not clappy
        Devil

        Re: Robots

        "Junior" he he. Nice.

        Object storage is trivial, yes. I like Spring Data. Maybe a little too magical for my taste, but I'm an old timer. Note your argument though, how little human interaction is needed. Why are you behind a keyboard again?

        I give it less than three years before Microsoft and Google start punting robo-programming systems and demonstrating that they are provably more correct, more efficient, more whatever.

        We shall see eh?

        1. Andy 73 Silver badge

          Re: Robots

          ""Junior" he he. Nice."

          For sure it was a cheap shot, but if you will insist on posting "I solved world peace the other day, but then thought.. nah...", that's the sort of response you'll get :)

          I can fully understand the issues with 'magical', and have railed against it enough in my time, but if there's a tipping point, it's when frameworks like this can make pragmatic decisions and pretty much be sure of being right. There's no AI involved, just a bunch of tools that are mature enough that when you want a collection of objects back from a database. the 'solution' is as uncontentious as a Taylor Swift album.

          My feeling on robo-sytems is that we've not yet cracked the problem of specifying what we want (as anyone who's delivered a project will know), so there's no start point for robo-programmers to get purchase. What we will see is more of the Spring-like 'component declaration DSLs' that get munged into working code by 'magic' frameworks.

          1. happy but not clappy
            Devil

            Re: Robots

            And we agree. Yawn.

            The problem is indeed with specification. It's what I spend most of my time doing these days, pushing agile uphill and telling the "business" to stop using IT as a scapegoat for their laziness and inadequacy. Yet we still have these "my manguage is bigger than yours" threads (saw the typo, liked it :)).

            Still, I think we have hit a tipping point of sorts. Previously we had to build our infra, nowadays, not so much. Then we had to build out systems, we still do that, but not for good reasons, and so on. This is quite new. So, at risk of going meta, I imagine we will go to a functional approach, a meaningful CSP with state, on a relatively universal surface. Languages will be rather script'y. So our junior dreams may come true. Do you think it won't happen?

            1. Mike Pellatt

              Re: Robots

              The problem is indeed with specification

              Isn't that what agile/DevOps is really all about ?? No-one knows what the inputs are, let alone what they want the outputs to be. But if we can hack what happens in between quickly, we'll iterate to something vaguely workable far quicker than going all "formal" ??

    2. bdavidson81

      Re: Robots

      Good call -- and that is already happening. Check out stronglooop/loopback by IBM

  22. markd74

    Why I hate Java Exhibit A

    Google "stackoverflow java array concatenate", click the first result, count the number and variety of answers (remember to check both pages 1 & 2)

    The prosecution rests.

  23. Tim99 Silver badge
    Coat

    I'm old and past it, but...

    ... the only important thing is the data. Learn SQL.

    These days, most of the rest is just a presentation to a web client. I suspect that the trend of using 93 different untyped key-value storage sets to hold "data" that is manipulated with the web framework du jour will do exactly what the "designer" intended - A guarantee of billable time.

    As I started with FORTRAN, my mind is probably broken anyway, so please feel free to ignore this. Mine's the one with the Codd & Date notes in the pocket >>======>

    1. bdavidson81

      Re: I'm old and past it, but...

      Rather than ignore it, I'd like to repair it.. believe it or not things are heading in the exact opposite direction of what you say.. the data is a given.. it was the star of the show for so long that everyone built their lives around it.. meanwhile us silly little junior front end devs.. with our pitiful little toys.. have found out how to reverse engineer backend services, extend them to be smarter, and now we don't even need those arrogant back end dickheads... Model shmodel.. strong type shmong type. I am the UI motherfucker.. I'm the one they wanna see and touch, and I'll tell YOU how I want my data structured, you neck bearded geek!! Sorry backend boys, karma came to bitchslap you for your egos, UI guys get free fullstack badges and the loot to boot. UX is the star of the show now PEACE OUT BOXED IN BACKEND BITCHES!!

  24. Anonymous Coward
    Anonymous Coward

    Java's a scripting language...

    ... is what a colleague once said to me. And in some ways he's right: a scripting language is best suited for one-shot tasks like grabbing something from a database and mangling it into some sort of string. The bottleneck is likely to be in the database and the whole issue of the memory-hog garbage collector never wanting to release any of the memory it's using isn't an issue if the script doesn't run for very long.

    The problem I have is where folks think they can run server-type processes in Java. Then they're left wondering why their phone's battery life is rubbish or their data centre costs are spiralling out of control.

    1. Andy 73 Silver badge

      Re: Java's a scripting language...

      Mind boggling.

      All those big data services must be running on some sort of magic sauce then. And those web servers. Oh and I guess that's why Android battery life is so much shorter than iOS.

      </sarcasm>

    2. Anonymous Coward
      Anonymous Coward

      Re: Java's a scripting language...

      This is literally the exact opposite of the way to use the JVM (Java included). Given the yuuuge overheads of spinning up a new JVM and all the work involved in JIT you really don't want to use Java for short-lived processes.

  25. Mage Silver badge
    Windows

    Nostalgia

    This thread is so 1980s!

    1. bdavidson81

      Re: Nostalgia

      Hahah.. summed up nicely

  26. Anonymous Coward
    Anonymous Coward

    I like

    I like all the people who talk about new languages as though they will improve something :)

    My assumption here, of course, is that they have yet to have a real job. New languages are great fun if you don't have to work for a business. The trouble is that in the real world we have legacy all over the place, and that pile of legacy is growing. The result of which is a self reinforcing job market which forces Java and dotnet to be the answer in many instances. It doesn't matter if they are the best, they are the ones with plentiful skills which means anyone with an ounce of business sense will choose them so they can hire people. Anyone wanting a job, therefore, will learn those languages. The legacy legacy languages such as Ada, COBOL and the like ended up a bit specialist partly due to platforms and complexity, and C based stuff was and is too complex for the average graduate to not stuff up to we've ended up with MS and not-MS as options.

    Just for clarity, anyone remotely savvy with business risk is NEVER going to let you introduce a new (as in brand spanking, not different) language/framework/whatever into their environment. In the real world we have compliance, risk, governance, profit - all of which override your hardon for cool new stuff.

    1. bdavidson81

      Re: I like

      Right, which is why I left that business savvy company for a place that isn't scared of change and makes bad ass shit

      1. Anonymous Coward
        Anonymous Coward

        Re: I like

        A business can be savvy and embrace change without swapping their tooling every 15 minutes. We recently let someone go because he was achieving nothing and constantly harping on about the latest trendy buzzwords. The main issue with most developers (not all, I admit) is that they are way too focussed on making something work and doing so quickly and ignore the bigger picture.

        Where there is a good, solid business benefit in changing something half the industry will usually shift. Look at cloud computing for instance. New for the sake of new on the other hand causes deeper issues - staffing being one as there will be no knowledge out there. There will also be fewer examples, and what is out there will be less mature and possibly less secure and compliant as a result. But hey, if it works and looks cool, why not bet the farm on it?!

  27. Mage Silver badge
    Coat

    Language?

    I'd put choice of language third. Though obviously it depends a lot on the platform / application.

    Microcontroller with no OS, embedded OS, desktop apps, server applications, web stuff, setboxes, routers etc.

    The most important thing is the attitude and quality of the programmer.

    Then sensible management.

    Though I have a preference, in many cases the language is not something the programmer chooses. Many use cases are unsuitable for my "favourite" languages. I hate web programming more than any language to do it. I counted six "languages" in use in the same file, if you count HTML and SQL as "programming". No sensible way to have aid of a compiler's sanity check.

    Compared to that, arguing the merits of Java vs C# (MS concept of Java), C++, etc is pointless.

    Though I'd point out that Java can be used (and has been) for TVs, Setboxes, Windows/Mac/Linux desktop, phones, servers as well as Web applications. Anyone use PHP for anything other than Web?

  28. JustNiz

    Because real men don't need no stinkin type-safety.

  29. Ken Hagan Gold badge

    Things people don't need

    "People don't need 90 per cent of the stuff sitting in Java EE to build modern enterprise applications."

    But do 100% of them agree on which 90% they don't need?

    People don't need 90% of most things, whether it be features in WORD, new instructions in Intel processors, or whatever. However, the economics favours the creation and especially the testing of one product rather than a combinatoric explosion.

    Languages face a similar dilemma. If you use one language for everything then the interfacing will be fairly easy. If you choose "the right tool for each job", you may discover that you spend more time (both creating and testing) on the glue than on the pieces.

    1. Anonymous Coward
      Anonymous Coward

      Re: Things people don't need

      EE isn't a language, nor even a platform. It's a specification, implemented in subtly different but entirely monolithic ways by each vendor selling an EE application server.

      However your point is correct, and illustrates why JVM development has moved the way it has. No one could agree which 10% of the EE spec they wanted, so frameworks like Spring Boot and Play have taken over a huge chunk of EE's territory. I'd go so far as to suggest they're totally eclipsing EE in *new* development work.

      The difference between Boot/Play/etc and EE isn't all that substantial in implementation terms. Boot and Play can and do provide all the services of EE, but do so in an opinionated-but-modular fashion. There is a sensible default in place, but swapping it out or disabling it entirely is usually just a matter of updating your pom/built.sbt/guice config files. That isn't something you can readily achieve with an application server, which is why EE development has stalled. Developers don't like it, even most enterprises are wary of it now, having been burned by Oracle one to many times.

  30. Alistair
    Windows

    yeesh Can we have some more @#$% willy wagging please?

    coding -> I have a commodore PET that I got when someone tossed it out after not being able to make it "work". This is where I started. TI-99 et al.

    RISC assembler. x86 assembler. S36 SHARP and RPG3/4 COBOL Perl, PHP, java, FORTRAN77 Visual Basic (gag). two more languages that I'm not about to mention as they bloomed and died within a 4 year period. JCL. RExx. C. The barest bones of Python. I've fixed Ruby code, not knowing a damn thing about the language. RoR I've had to repair borked setups.

    What has stood the test of time in my scope (as an infrastructure admin) -> Bash/K shell programming and expect.

    COBOL (there are still about 45% of original code base lines in use today from when I started) still runs mission critical stuff that folks about here will not trust to java. C, a pain in the ass to fix after evolution in the language, but still snappier off the line when it was written correctly. Perl, breaks horribly in some cases when migrated from platform or through versions, but easier to repair. Java is ubiquitous, but once broken tends to be resolved with "throw out the baby, bathwater and bathtub and rebuild from scratch" type solutions.

    I'm pragmatic, and I've been in IT for almost 30 years now. I'm still learning. New shit, old shit, boring shit and fun shit. The biggest point is that the right tool for the job at hand is what you have to be willing to either use or learn.

    Pretty much every commenter bouncing about knowing more, or being better at something needs to get that ass off their head. If you aren't prepared to use the right tool, instead of what makes your stiffy bits stand up, you are a problem.

    1. Grouchy Bloke
      Happy

      Re: yeesh Can we have some more @#$% willy wagging please?

      Kudos and Uptick for mentioning RPG.

      Like COBOL, yuge amounts of important enterprise applications run on it.

      Shame the salaries are now rubbish.

    2. Anonymous Coward
      Anonymous Coward

      Re: yeesh Can we have some more @#$% willy wagging please?

      Ahh, but you have an actual job. That tends to make you make you focus on what might actually provide the best solution for the problem at hand.

      If all your experience was a semester of (insert language here), you too could get all worked up over this sort of thing.

    3. bdavidson81

      Re: yeesh Can we have some more @#$% willy wagging please?

      Well said!! Cut the issue down to the core... Now watch these sad Java dinosaurs completely ignore your wisdom and just go on writhing in their slow painful death.. hard to watch so you gotta laugh at them

    4. Anonymous Coward
      Anonymous Coward

      Re: yeesh Can we have some more @#$% willy wagging please?

      " If you aren't prepared to use the right tool, instead of what makes your stiffy bits stand up, you are a problem."

      I'd replace "right tool" with "most appropriate tool" since in business it's often necessary to compromise. Many Mainframe solutions are still in play because replacing them would cost more than keeping them, yet in many instances they are not the right tool any more.

      Throwing away a code base because a developer says that <insert language de jour here> is the right tool isn't necessarily a wise choice either. Firstly, does more than one developer in the team think that? Has said developer been saying that for more than a week, or was he screaming about containers last week? How much do developers with <new skill> cost compared to <old skill> and how many of them are there. There are a lot of Java skills and a lot of cheap Java labour so ditching your code base in Java might not be the best business plan. In fact, it would likely have to go on the company risk register since it's such a massive change, and that might affect the cost of borrowing...

  31. Trooper_ID

    hipsters

    So, as I have a beard, comb my hair backwards and fold my pizza when I eat it, does that make me a hipster? If so, then I have been a hipster for 60 years

    1. jake Silver badge

      Re: hipsters

      Read much Kerouac? I thought so. You were born a beatnik.

      Not that I'm saying there's anything wrong with that.

      1. Anonymous Coward
        Anonymous Coward

        Re: hipsters

        Hipster + Literacy = Beatnik? I can dig it.

    2. bdavidson81

      Re: hipsters

      It might. But don't worry too much about it.. we get way better jobs now a days.

  32. smartypants

    Like a toddler's tea party gone wrong in here...

    One big pissing contest - just look at you all... Soaked!

    You're all wrong of course. I write the most amazing enterprise software using nothing more than the "language" used to make a "Big Trak" go around the dining room table and laser the cat.

    I say "language", but it has dispensed with all those silly features found in other languages, and indeed, a name for itself. Anything more is just crappy bloat!

    Switch statements are for pussies! Bow to my AUTHORITY and my MASSIVE earning power.

  33. Anonymous Coward
    Anonymous Coward

    JR, Did you remember to feed the cat?

    I love nerdy chest thumping as much as the next guy, but I'm wondering how much of the slagging is being posted from Mom's pc in the basement?

  34. Anonymous Coward
    Anonymous Coward

    Ahh, You're All Hopeless Wankers

    The virtual reality app you know as your universe was coded in QBasic, so everything else is really just a subset of QBasic.

    Signed, Deus (Deuce) Faber

    1. Anonymous Coward
      Anonymous Coward

      Re: Ahh, You're All Hopeless Wankers

      BTW: That was a rush job: 6 days to GoLive and then a day off to rest. I know, I know - it shows. But, QBasic.

    2. bdavidson81

      Re: Ahh, You're All Hopeless Wankers

      10

      PRINT Liar!

      GOTO 10

      1. Anonymous Coward
        Anonymous Coward

        Re: Ahh, You're All Hopeless Wankers

        No, that is where I turn on the lights - did that just about first thing. There is a counter on that loop by the way, so it's not an infinite loop. Just wasn't comfortable with the concept of an infinite loop at the time. If I had it to do over - but then, I WILL have it to do over, won't I? Next time it's JAVA all the way, baby.

  35. ecofeco Silver badge

    PLC anyone?

    Just thought I'd throw a spanner into the pissing context. :)

  36. bdavidson81

    Made account just to call bullshit

    This is a very cute little article that represents the sad sad mentality of all those dinosaur coders who are scared as shit of having the only thing they know get rendered obsolete. The writer of this kind of made me laugh, reminding me of those sad ass back end Java coders I worked with.. sad dinosaurs telling me "stick to the UI.. you can't handle Java boy!". I wonder what they thought when I left after 3 months for another 20k raise... But not before exploding their shit application with code injection since their shit Java back end did no character validation.. so guess what I was doing 5 years ago? I was landscaping for less than 10 bucks an hour.. that was the job I got AFTER pizza delivery.. luckily I didn't read some bullshit article like this and just went with the natural and inevitable direction of the industry. I have new offers for 6 figure jobs every week. Please, please, my fellow scrubby intelligent disenchanted pizza guy.. ignore this idiot.

  37. bdavidson81

    Key words "used to be"

    This writer must have just squeezed by that glory period where shitty Java coders could rest on others laurels and hold out long enough to not have to learn anything new.. dear readers, please stop reading after homeboy states "used to be a coder"

  38. TheLip

    I'm a second generation geek and spent 40 years in Silicon Valley (Tandem ,Oracle, Google,etc) and I always smile when this discussion comes up, it's like religious wars. What technology/language to use depends on the task at hand (IMHO), if you are writing a file system most likely you would use C/C+ but you would not use it do a web page. If folks are thinking about the future of their career then I think you need to look at what technologies/languages fit with mobile devices (which is becoming everything). Phones and IoT devices require slim code.

    Any way just my 2¢

  39. Anonymous Coward
    Anonymous Coward

    #1 on my anarchy list

    As a sysadmin you Java guys are on the top of my hit list the day anarchy breaks out. Your badly-coded, memory-leaking, resource-hungry slow-as apps have been the bane of my life...

  40. Anonymous Coward
    Anonymous Coward

    "JEE has been an incredibly reliable bucket of technologies, running numerous, mission critical applications across companies of all sizes"

    mission critical, yeah. just not very fast or flexible.

    i think of it as a language for engineers, rather than artists. you can build a bridge with it, but it aint gonna look pretty.

    1. HieronymusBloggs

      "i think of it as a language for engineers, rather than artists."

      You say that like it's a bad thing.

      1. Anonymous Coward
        Anonymous Coward

        Yeah, I'd prefer my bridges to be built by engineers.

        1. Anonymous Coward
          Anonymous Coward

          If engineers built bridges like software people build software... [etc]

          "I'd prefer my bridges to be built by engineers."

          What? It's people like you that would have suggested that in a suspension bridge the centre of motion should be above the centre of mass (of bridge **and traffic**), and then where would London's Millenium Bridge V1 have got to?

  41. GrapeBunch
    Thumb Up

    Wilderness

    Quikcomp II, Fortran 2d, CBASIC, CB80, Icon, Power BASIC, ThinBASIC. Those are my qualifications for not being able to add anything to this discussion. But it was fun reading yours!

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like