Home

News: New graduates may be predicting the future of Java development

  1. Java as a language will no doubt stick around for a long time, but pure Java may soon be relegated to the classroom. Java developers remain the toughest positions to fill in the IT world, according to Dice.com. Dave Fecak, a Java engineer recruitment specialist in the Philadelphia area, tells us that Java is also one of the major cornerstones of the education that young developers are receiving at colleges and universities. The problem, as Fecak sees it, is that young developers don't want to code in pure Java, they want to branch out into alternative JVM languages. This may be a sharp sign of a slow change in what the phrase 'Java development' means.

    Speaking of Java as a language as opposed to the JVM platform, James Gosling, the Father of Java, said "Most people talk about Java the language, and this may sound odd coming from me, but I could hardly care less." He went on to explain, "What I really care about is the Java Virtual Machine as a concept, because that is the thing that ties it all together." He also stated that, "Java happens to be a really good language for a broad spectrum of topics."

    New JVM languages pop up because the core Java language is "really good for a broad spectrum," but most enterprise companies specialize in a fairly small niche. Because the JVM platform allows so much flexibility and interoperation, talented software engineers find ways to tweak the concepts behind Java and make languages that excel at relatively small range of applications. If, for instance, a new graduate seeking Java development jobs working with Web applications that leverage the advantages of cloud-computing architecture, she is likely to be interested in a JVM alternative such as Scala.

    It could be that Java as a core language serves today's young developers more as a stepping stone toward their own niche JVM language(s) and a lingua franca between particular languages than as an active language. The debate between Java and alternative JVM languages has been had on our forums before, but let's focus now on the young new developers who are looking to build new, innovative applications. Should new developers generalize with Java, should they specialize with an alternative JVM language or should they mix the two approaches? Perhaps it's pointless to focus on the difference between Java and the JVM. After all, doesn't the phrase 'Java development' really cover the whole gamut?

    Threaded Messages (14)

  2. Java as a language will no doubt stick around for a long time, but pure Java may soon be relegated to the classroom.

    While I agree with the jist of the argument as voiced by Gosling that "Java development" is about the Java PLATFORM and the platform is more than just the language, I feel the tendency of pundits towards absurd absolutisms (like above) is very irritating.

    Yes, undoubtedly we will see a rising demand for developers who work with other JVM languages than Java. We will probably even see a rise in JVM-based DSLs. But not every developer in the entire world is suddenly going to drop the Java programming language. And demand for Java programming language skills is not going to dry up or even diminish -- not overnight, not over time, never. Core software will still be developed in the Java programming language and existing software will still have to be maintained.

    Here's a hint: if you've spotted a trend or had an interesting new idea as a pundit, what you can expect (or hope for) is that your idea will form a new ripple on the surface of software development. It it totally unrealistic to believe that all the water in the ocean is suddenly going to rise up in a mighty column around your idea and the rest of the ocean floor will fall dry.

    I mean, really: "[...] pure Java may soon be relegated to the classroom"? Come on...

  3. All of this debate about Java being stale versus new languages to me is interesting. I'm a firm believer that every developer should know multiple languages and at minimum 1 OO, 1 functional, SQL and 1 scripting.

    The thing with all these new languages like Scala, and ruby is maintainability of the code. Many of these new languages are inspired by smalltalk, prolog and lisp, but they ignore the benefit of verbosity. Java is verbose and that's a good thing for maintenance. Terse code takes less time to type, but when someone else goes back to make changes or fix bugs it becomes a huge pain. For me, sacrificing maintainability for the sake of typing a little less is stupid. At some point, everyone leaves a job and someone else has to maintain the code.

    Look at languages like Perl. In the last 20 years, I've only seen 1 case where Perl was written verbosely and easy to understand. Most perl scripts are small or terse, making it hard to read and hard to maintain.

    I don't buy the niche language argument. Designing a logically sound language takes skill, experience, taste and talent. Look at what happened in the DSL space.

    Instead of moaning Java is verbose, we should be glad it is verbose. It means the next Java job you go to, the code will likely be more readable and easier to understand than C/C++, Perl, Ruby or some other terse language. Being verbose is not a bad thing!

  4. Everyone should know multiple languages[ Go to top ]

    Peter, I totally agree. I have had to maintain a lot of code (in addition to mine) in multiple languages and platforms. Long term maintenance is much more important to most software than initial development. Code that requires less mental translation is easier to maintain. And with modern IDE's, any additional benefit is minimal with niche languages. Developers (including very good ones) many times fail to look at the bigger picture. That is why very good developers seldom make good "architects". 

    Sometimes, less is more. Sometimes more is more. Knowing when which is which takes talent and ability.  "This code is too terse! This code is too verbose! This code is just right!" :) 

    During code reviews, i routinely make people fully spell out variables and method names to ensure they are readable and cannot be misinterpreted

  5. Job Security[ Go to top ]

    That's why Java sucks because it doesn't give job security. Terse languages let you write unreadable code which makes you invaluable employee ;).  But, seriously speaking, I agree with you. The code is about an order of magnitue read more often than written, so I don't really understand all this excitement about terse languages that show up recently. We've seen this already in the past. Such languages get some group of followers, but never become mainstream. For a good reason.

     

  6. I totally agree with you Peter. knowing one language of each type, as you mentioned, is a good starting point.  Not one language can be the silver bullet, but knowing several will increase chances of success in solving a problem or meeting a requirement..

  7. Agree with peter[ Go to top ]

    Peter, great reply - your message is one that needs more appreciation in the development community.

    All of this debate about Java being stale versus new languages to me is interesting. I'm a firm believer that every developer should know multiple languages and at minimum 1 OO, 1 functional, SQL and 1 scripting.

    The thing with all these new languages like Scala, and ruby is maintainability of the code. Many of these new languages are inspired by smalltalk, prolog and lisp, but they ignore the benefit of verbosity. Java is verbose and that's a good thing for maintenance. Terse code takes less time to type, but when someone else goes back to make changes or fix bugs it becomes a huge pain. For me, sacrificing maintainability for the sake of typing a little less is stupid. At some point, everyone leaves a job and someone else has to maintain the code.

    Look at languages like Perl. In the last 20 years, I've only seen 1 case where Perl was written verbosely and easy to understand. Most perl scripts are small or terse, making it hard to read and hard to maintain.

    I don't buy the niche language argument. Designing a logically sound language takes skill, experience, taste and talent. Look at what happened in the DSL space.

    Instead of moaning Java is verbose, we should be glad it is verbose. It means the next Java job you go to, the code will likely be more readable and easier to understand than C/C++, Perl, Ruby or some other terse language. Being verbose is not a bad thing!

  8. The quoted[ Go to top ]

    As I was quoted in this one I figured I'd chime in on what I am seeing. 

    Yes, undoubtedly we will see a rising demand for developers who work with other JVM languages than Java. We will probably even see a rise in JVM-based DSLs. But not every developer in the entire world is suddenly going to drop the Java programming language.

    Ben - correct, already seeing rising demand for other languages, although no one is denying Java is still king.

    And demand for Java programming language skills is not going to dry up or even diminish -- not overnight, not over time, never. Core software will still be developed in the Java programming language and existing software will still have to be maintained.

    I think you may be wrong on this one Ben.  To think that Java language demand will never diminish is a bit of a stretch.  Java wasn't the first programming language, and other languages have been replaced in the past.  As fewer new projects use Java, demand will diminish.  I think the bigger concern is that if fewer people want to do Java work, it will force companies to make language decisions based on supply of talent.

    I mean, really: "[...] pure Java may soon be relegated to the classroom"? Come on...

    +1 , Java will always be around in real-world applications, just perhaps not as much as it is now unless the tides turn.

    And I agree with all who appreciate the value of knowing more than one language.  I blogged about Polyglots a few months ago and I see companies voicing new demand for rounded engineers with multiple language skills.  Not necessarily a specific combo like one functional/OO/SQL/scripting as Peter pointed out, but some variety. 

    To Adam - whether or not any one language becomes mainstream may not be the issue.  If new projects choose one language or a variety of languages, none of which is Java, it is eating into Java's dominance.  As more projects use these alternative languages, demand for 'alternative languages' as a whole picks up and demand for Java may be adversely impacted.  It's not the Java language competing with Scala, but rather Java competing with a list of alternatives.  I would not expect that Scala, Python, Ruby, Clojure will individually get to massive adoption levels in the short term, but if you combine their adoption it could impact Java. 

    Overall, I think the problem for Java is image.  Recent graduates don't come out wanting to do Java work, and that is a potential problem for the language (not for the JVM).  Getting the next generation interested in Java should be a goal of vendors and those who want to keep the language alive.

  9. Just to be clear[ Go to top ]

    I don't believe Java will last forever, nor do I feel it should stay around forever. What I would like is for new languages to consider all factors, not just "less typing". A language can be too verbose or not verbose enough. My bias feeling is many of the current niche languages are terse and don't encourage users to be verbose.

    What I would like to see in the "next big language" is better support for distributed processing beyond threads and fork/join. Better support for functional programming, but still encourage good OOP practices. Better support for modular components and learn from the mistakes of others.

    Hopefully some young developer out there will look at the entire history of programming languages and help create the next big language.

  10. Separate hobby from profession[ Go to top ]

    Companies want to use programming languages where they can find employees for. If there's already a shortage for the mainstream programming languages, why would one decide to buy into a specific area of expertise where there are even less programmers available?

    Yammer tried using Scala for a year, and went back to Java. They went with Scala because it gave them more capabilities and flexibility. But this also came with a price because it added complexity, and even worse, it was hard to maintain.
    Software and their projects should always be designed to change easily. So code needs to be easy to understand and there needs to be staff readily available that can work with the code, even after considerable time has passed.

    When you consider using a non-mainstream programming language in your project, can you really justify the added risks by the benefits you expect to gain?

     

  11. Separate hobby from profession[ Go to top ]

    Companies want to use programming languages where they can find employees for. If there's already a shortage for the mainstream programming languages, why would one decide to buy into a specific area of expertise where there are even less programmers available?

    Yammer tried using Scala for a year, and went back to Java. They went with Scala because it gave them more capabilities and flexibility. But this also came with a price because it added complexity, and even worse, it was hard to maintain.
    Software and their projects should always be designed to change easily. So code needs to be easy to understand and there needs to be staff readily available that can work with the code, even after considerable time has passed.

    When you consider using a non-mainstream programming language in your project, can you really justify the added risks by the benefits you expect to gain?

    all good points. too bad young developers often don't think this way. they just want to work on stuff they feel is "cool". If I was a business owner, I would definitely prefer to use a language that has a large pool of developers.

  12. Separate hobby from profession[ Go to top ]

    Companies want to use programming languages where they can find employees for. If there's already a shortage for the mainstream programming languages, why would one decide to buy into a specific area of expertise where there are even less programmers available?

    John - Back in 1999-2000 my clients were paying about a 30% premium to developers who had Java experience with some specific rare skills (WebLogic was big).  There weren't a ton of Java programmers at the time, but as companies decided that Java was the language of the future, they had to pay that premium to hire talent.  Some companies now that are making the decision to use some of the alternative languages are not having to pay that same premium due to interest from the development community - some are willing to take a pay cut to learn what they consider a valuable skill, and companies are generally willing to train good and well-rounded developers in the new language.

  13. Separate hobby from profession[ Go to top ]

    Companies want to use programming languages where they can find employees for. If there's already a shortage for the mainstream programming languages, why would one decide to buy into a specific area of expertise where there are even less programmers available?

    John - Back in 1999-2000 my clients were paying about a 30% premium to developers who had Java experience with some specific rare skills (WebLogic was big).  There weren't a ton of Java programmers at the time, but as companies decided that Java was the language of the future, they had to pay that premium to hire talent.  Some companies now that are making the decision to use some of the alternative languages are not having to pay that same premium due to interest from the development community - some are willing to take a pay cut to learn what they consider a valuable skill, and companies are generally willing to train good and well-rounded developers in the new language.

    The key word here is "some". My bias experience, startups tend to be open to new languages. Large fortune 500 companies tend to be more conservative for core "stuff". Though even in large companies, small leading edge projects are allowed to test out new languages and technologies. There is a place for new languages. I'm sure most people can remember early Java projects that failed miserably.

  14. Separate hobby from profession[ Go to top ]

    Companies want to use programming languages where they can find employees for. If there's already a shortage for the mainstream programming languages, why would one decide to buy into a specific area of expertise where there are even less programmers available?

    John - Back in 1999-2000 my clients were paying about a 30% premium to developers who had Java experience with some specific rare skills (WebLogic was big).  There weren't a ton of Java programmers at the time, but as companies decided that Java was the language of the future, they had to pay that premium to hire talent.  Some companies now that are making the decision to use some of the alternative languages are not having to pay that same premium due to interest from the development community - some are willing to take a pay cut to learn what they consider a valuable skill, and companies are generally willing to train good and well-rounded developers in the new language.

    The key word here is "some". My bias experience, startups tend to be open to new languages. Large fortune 500 companies tend to be more conservative for core "stuff". Though even in large companies, small leading edge projects are allowed to test out new languages and technologies. There is a place for new languages. I'm sure most people can remember early Java projects that failed miserably.

    Peter - Definitely will see start-ups with more adoption of alternative languages.  But back in 99-00, my experience was seeing a lot of banks as well as start-ups adopting Java.  Today you see start-ups adopting some of these languages, but you also see major players like Twitter adopting as well.  As we hear of more shops like Twitter using, you will hear more 'if it's good enough for ____, it's good enough for us'

  15. think the jury is still out[ Go to top ]

    I've shopped around for alternative languages for a number of years,  'broadening my horizon' on the way, but always end back up with Java.  If you strip back all the frameworks, containers, stupid JEE apis, and idiomatic 'best practices' the language itself is small and reasonably concise.  And there are great things coming (even if a little slowly).  The worst parts of Java is not really the language.  A lot of thinking has gone into keeping it small.  A good few of the alternatives (scala, groovy, ruby, etc.) seem to take more of the 'candy store' approach (the more sugar and sweets, the merrier). Not saying that a lof of thinking hasn't gone into the syntax in those languages, but there seems to be fewer barriers to entry for new language features.

    One of the things they often sacrifice is backwards compatibility, which is one good reason Java has been very successful.  Try adding a dependency in Scala, and you soon long for the years of Java, as you and your dependencies are trying to keep up with the latest Scala release.  That's before you then wish it was all in the language itself.  Next, someone adds it to the language, or adds yet another DSL to take care of it, and then you start to wish the syntax didn't change all the time as you're trying ot understand where it's all coming from.

    Sure, there are a lot of things that are downright painful to achieve in the Java language (such as most things to do with math), but general logic is easy to follow even for inexperienced developers.  If you stick with a few basic principles, such as the SOLID principles, most developers can write (mostly) readable code.  A lot of the 'alternative' languages lets the developer grow with the language, opening new doors as the developers achieves higher levels of proficiency, but that often leads to code that gets progressively harder to read for anyone who've not yet attained that level, or code which is superficially simple but subtly disguises any problems so they become hard to fix. 

    The alternative JVM language scene is a mixed scene with a few, very vocal early adopters. Then there's larger crowd of followers who are aiming to get in early, with a small hope that they'll be in good position to be appreciated as masters for a while, should it pick up.   But few of these languages have reached critical mass to enjoy anything like the lifetime of Java.  Will your language have good access to competent people in 10 years time, or are you going to be the only bearded guy left in the room, forever condemned to maintain that one system?