back to article Oracle's Java 15 rides into town, waving the 'we're number one' flag, demands 25th birthday party

Oracle on Tuesday marked the arrival of Java 15, known as Oracle JDK 15 among those concerned about formalities and trademarks, in the 25th year of the programming language's existence. "As Java celebrates its 25th birthday, we continue to make technical investments that drive Java innovation forward and help address the …

  1. Cederic Silver badge

    so wrong

    Java established itself and grew because it was at its heart a very simple language. Mostly OO with much of the power that offers yet avoiding the dynamic language redefinition that makes so many other languages much harder to understand and maintain.

    Things like J2EE helped and hindered, but demonstrated that re-usable libraries and standard pattern implementations were viable and valuable, and the language just kept growing.

    Now though? Well, the last 15 years have been a continual accretion of cruft to the language, massively increasing its power but at cost to readability, maintainability and indeed just avoiding shitty bugs.

    I used to be a fan. Now I just feel old.

    1. James Anderson

      Re: so wrong

      There are two Javas.

      On is a nice clean language with a few quirks ("a == b"; -> true is a if the same object instance as b otherwise false. WTF!)

      JavaEE and its kindred frameworks Hibernate etc. is a bloated over engineered un-maintainable mess which slows down development to a crawl and produces bloated under performing code.

      1. Anonymous Coward
        Anonymous Coward

        Re: so wrong

        You can tell seasoned Java developers - their fingers are worn down to the knuckles.

      2. Anonymous Coward
        Anonymous Coward

        Re: so wrong

        That's not a quirk - you need to understand the difference between instance (or reference) and logical equality. Each instance of a class is inherently unique, so == should almost only ever be used on primitive types. C++ makes a mess of this by allowing operator overloading so that reference and logical equality often become confused, a quirk - of C++ - that Java's designers were at pains to avoid.

        1. englishr
          Meh

          Re: so wrong

          It's definitely quirky to reuse a well established and well known equality test operator, and assign it a new meaning. Compare to python, where == is the equality test, and is is the "same object" test.

          1. Anonymous Coward
            Anonymous Coward

            Re: so wrong

            I'm not a C++ "fan" so I'm on the fence, but just because Java uses predefined overloads doesn't mean you shouldn't be able to overload yourself. You could argue that C++ should force an API of some sort when doing this, but I've never seen a case in C++ were an operator was overloaded and NOT also used in a logical API. Well, I mean you could do it, but that would surely be an intentional Jack-In-The-Box reason (or just flat out evil).

            On one hand the way C++ does it can be seen as the absolute shortest way to overload, on the other, tying them to macros can be a thing. As someone who is _NOT_ a C++ pro, it's surely confusing to learn its "When in Rome" semantics, but if you are a pro I can see how it's not a problem.

            I don't know. If you learned C++ in the 90's not much has changed honestly. If you've kept C++ on your radar you might even think not much has been added to the STL itself. I sit on the fence, but _IF_ you are a C++ pro, how do you excuse the Javascript IIFE's lamdas... shame... shame on your house.

          2. Anonymous Coward
            Anonymous Coward

            Re: so wrong

            "It's definitely quirky to reuse a well established and well known equality test operator, and assign it a new meaning. Compare to python, where == is the equality test, and is is the "same object" test."

            If by "same object" you mean contains the identical data, then in Java that would be conflating two different things - as I point out in my previous post, there is reference equality and logical equality. This is entirely consistent with C/C++, which influenced Java along with Smalltalk. Take the following class:

            public class Foo {

            public int i;

            }

            You create instances and assign their reference to variables like so:

            var foo = new Foo();

            var bar = new Foo();

            In both instances, the member variables i are initialised to zero by default. Comparing foo and bar with the == operator compares the references, so the following evaluates to false:

            boolean b = foo == bar; // false

            However, assigning the same reference to another variable and comparing them with the == operator evaluates to true:

            var baz = foo;

            boolean b = foo == baz; // true

            If you want to compare the instances for logical equality, in other words whether their member variables i hold the same value, then you need to override the equals() method. You'd then compare the instances as follows:

            boolean b = foo.equals(bar);

            This confusion probably stems from the sort of, kinda misleading claim in the early days of Java that it doesn't have pointers. It doesn't have them in the same way C/C++ does, with all the potential pitfalls that brings, but it does have references similar to the way C++ does - albeit minus the & syntax for method arguments.

            1. swm

              Re: so wrong

              But

              "xyz" == "xyz" is true.

              0.0/0.0 == 0.0/0.0 is false.

              etc.

      3. swm

        Re: so wrong

        LISP has 4 equality operators: eq, eql, equal, equalp.

  2. Dinsdale247

    Still stuck on Java 8

    AND no matter what I do, inevitably I wind up having to support Java 8 because some wanker third party vendor is still stuck on a 6 year old java release. I don't see how upping the cadence of releases is going to make that problem any better.

    1. Steve K

      Re: Still stuck on Java 8

      Some of Oracle's own current software is still stuck on JDK7/JDK8....(Oracle EPM, relying on WebLogic 10.3.6/JDK7, Oracle Essbase Admin Console is only availalble as a .JNLP, but WebStart deprecated in later JDK8s. At least RedHat OpenJDK8 has a Web Start replacement....)

    2. Anonymous Coward
      Anonymous Coward

      Re: Still stuck on Java 8

      Seems almost everybody is using the LTS releases, based on a regular show of hands at London Java Community meetings. While the intermediate releases are interesting, I wonder how many people actually have the time to test them.

      As for being stuck on Java 8, I know of a bunch of (badly written) systems that are stuck on anything from Java 5 to 7. Java 17 will fix a lot of the problems that caused that, since sealed and hidden classes will prevent lazy programmers from using internal APIs.

      Whether Oracle themselves will fix their own tools and installers that often insists on versions of Java as old as 5 ... well, I doubt it.

      1. Anonymous Coward
        Flame

        Re: Still stuck on Java 8

        Oracle installers are so utterly bad that I reckon Laughing Lord Larry personally codes them as another way of pissing off his customers a little bit more.

        1. WolfFan Silver badge

          Re: Still stuck on Java 8

          Larry the Red doth not laugh. He smirks. While stroking his white Persian cat, coding away deep in his hollowed out volcano lair. Some of the quirks in his code happen when his monocle slips.

    3. Dan 55 Silver badge

      Re: Still stuck on Java 8

      Java 8 update 202 and earlier have "less complicated" licensing, many developers know their customers require that.

    4. Anonymous Coward
      Anonymous Coward

      Re: Still stuck on Java 8

      DELL\EMC Networker still using Java, every bleedy time a new update comes out it fecks up Networker. they now have an html5 interface but a bit like VMWare esxi html5 client iyou can't do everything in it, actually its far worse then esxi as you can't do much in it at all!

    5. Bryan Hall

      Re: Still stuck on Java 8

      For some of my apps, version 10.

      Why? They removed the highly useful for corporate apps - Java Web Start. Morons.

      So 11 and beyond we'll have to compile it into an installable application that has to be pushed out to desktops, instead of them just getting the latest code as they need it.

      What a pain in the rear!

      1. Steve K

        Re: Still stuck on Java 8

        Red Hat OpenJDK has IcedTea Java WebStart replacement in it.

        Worked for the .JNLPs I have had to support recently after upgrading to the latest JDK8

        Steve

      2. Anonymous Coward
        Anonymous Coward

        Re: Still stuck on Java 8

        There's a two part solution to that (AKA this works for me, YMMV):

        1) Amazon Corretto 8 (32 and 64 bit flavours), fetched from Amazon or Ninite.

        2) OpenWebStart by Karakun (https://www.openwebstart.com/download).

        Now, you have to get into the OpenWebStart JVM manager settings, and point it to the appropriate Corretto binary (usually the Find Local button), and then go into the JVM manager settings and say, "Yes, I really want to use Amazon over Zulu or AdoptOpenJDK". As for why Corretto? It works, where AdoptOpenJDK and Zulu do not at all.

        Once that's done, your Java 7/8 jnlp legacy app will work again. I've also tried our enterprise JNLPs against Corretto 11, and it also works ... somewhat ... until the under-updated 3rd party library gets involved, then it's fireballs (Java exceptions) all over the place.

        edit: OWS clarifications

    6. Dinsdale247

      Re: Still stuck on Java 8

      I actually did find a decent solution to the "thall shalt use the installed JVM" problem on Windows machines. This maven tool builds MSI packages (must install Wix toolset 3.11). The MSI includes a custom JRE. It's pretty slick...

      https://github.com/fvarrui/JavaPackager

  3. Sam Adams the Dog

    "Java is in real trouble with a loss of -3.18 per cent in comparison to last year,"

    "Java is in real trouble with a loss of -3.18 per cent in comparison to last year,"

    Wait! A loss of -3.18% is a GAIN of 3.18%.

    1. logicalextreme

      Re: "Java is in real trouble with a loss of -3.18 per cent in comparison to last year,"

      You got called out in the article before you even commented :D

  4. Anonymous Coward
    Anonymous Coward

    How the fuck did it get up to 15? Like.. it was 1.4.. then 5.. then 6 and something about generics.. turn around and blink and now it's on 15? WTF? Did it start doing firefox version numbering and bumping it every month or something?

    1. RichardBarrell

      Yes but slower. Java is every 6 months. Firefox release every 4 weeks, Chrome every 6 weeks.

      If you look at just the LTS releases instead, those are on a 3 year cadence. Current LTS is Java 11, next should be 17.

      The LTS releases get free public updates for a while (nominally about 6 years). The every-6-months releases get *no* free public updates once the next one is out (!). There was some controversy over that because it doesn't give users of the frequent releases any overlap in the support periods to test JVM upgrades.

    2. Kevin McMurtrie Silver badge

      Only if serving cake

      Everyone skips Java's odd version numbers but I still don't know how 10, 12, and 14 passed by so quickly. Maybe we need to switch to using powers of 2.

      1. Korev Silver badge
        Joke

        Re: Only if serving cake

        Or just prime numbers?

  5. Anonymous Coward
    Anonymous Coward

    All that garbage collecting

    and it's still more full of it than an overflowing skip.

  6. Anonymous Coward
    Anonymous Coward

    More shims, more proxies, more factories, more beans, more frameworks, more annotations...

    ...more verbosity, more typing, more prevarication, more pointless pattern wankery... more Java.

    1. Anonymous Coward
      Anonymous Coward

      Re: More shims, more proxies, more factories, more beans, more frameworks, more annotations...

      The late 1990s called - they want their out of date meme back.

      1. Anonymous Coward
        Anonymous Coward

        Re: More shims, more proxies, more factories, more beans, more frameworks, more annotations...

        Here you go:

        meme = java.meme.ironic.proxy.factory.factoryCreation.proxyHelper.MemeFactory.getYearBoundedDatedMemeInstanceByYear(1990).getCompatibleProxy().getBeanInstanceFactory().getRemoteMemeSessionBean(MemeSessionBeanType.IRONIC).createRemoteMemeInstanceProxyShim().getRemoteMemeInstanceProxy(MemeProxyType.NOT_LITERAL).getRemoteMemeInstance().getLocalMemeInstanceFromRemoteMemeInstanceViaFactoryShimAndProxy();

        It should get garbage collected a decade or so after you've finished with it.

        1. stiine Silver badge
          Coffee/keyboard

          Re: More shims, more proxies, more factories, more beans, more frameworks, more annotations...

          Don't you mean Erorr = java.error.start -> java.error.collect -> java.random.garbagejava.meme.ironic.proxy.factory.factoryCreation.proxyHelper.MemeFactory.getYearBoundedDatedMemeInstanceByYear(1990).getCompatibleProxy().getBeanInstanceFactory().getRemoteMemeSessionBean(MemeSessionBeanType.IRONIC).createRemoteMemeInstanceProxyShim().getRemoteMemeInstanceProxy(MemeProxyType.NOT_LITERAL).getRemoteMemeInstance().getLocalMemeInstanceFromRemoteMemeInstanceViaFactoryShimAndProxy();

        2. ForthIsNotDead
          Coat

          As a seasoned Java veteran, I have to say...

          ... that code looks fine to me. --->

          1. Dinsdale247

            Re: As a seasoned Java veteran, I have to say...

            ROFL

        3. Dan 55 Silver badge

          Re: More shims, more proxies, more factories, more beans, more frameworks, more annotations...

          As Jean-Luc Picard said:

          I had a problem so I thought I'd use Java.

          Now I have a ProblemFactory.

  7. Anonymous Coward
    Anonymous Coward

    And yet...

    Oracle still can't get a JVM to work properly on MacOS Catalina. Oh wait. Oracle won't agree to the changes in Apple's T's & C's so one of my favourite apps no longer works (Foxcatcher). When prompted to upgrade your JVM, all you get is an option to remove it.

    Who do we hate more today? Apple or Oracle? Take your pick.

    1. Anonymous Coward
      Anonymous Coward

      Re: Who do we hate more today? Apple or Oracle? Take your pick.

      No need to choose, these days there's more than enough hate to go around.

      1. Blackjack Silver badge

        Re: Who do we hate more today? Apple or Oracle? Take your pick.

        Don't forget Google, Microsoft, Facebook, Amazon...

  8. John Miles

    with 14 new features

    Of the 14 listed there are 2x Remove, 2x Deprecate and 1x reimplement existing functionaility - so must be the marketing definition of new feature

    1. Blackjack Silver badge

      Re: with 14 new features

      Java really needs to dedicate the next three releases to just fixing bugs and don't removing anything then people might move on from Java 8 and or 10.

      That being said... Solaris? Wow, anyone still using that? They really should move to OpenIndiana or something...

    2. Steve K

      Re: with 14 new features

      Not if the announcement is in Base 5....

  9. Anonymous Coward
    Boffin

    I rather like the JVM... it's rock solid, and very performant now...

    I just don't like Oracle or Java.

    Someone (i.e. the set of people not including me) needs to implement the entire Python 3 platform on the JVM. Jython isn't up to date enough. This aforementioned set of people really needs to pull their finger(s) out.

    To save you pointing this out, please note that, yes, I am criticising Jython despite having offered not a jot of help to the project; that, yes, this is not an admirable trait; and finally, yes, if the world had more doers and fewer typers we'd all be much better off.

    Noted.

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