Win a copy of Rust Web Development this week in the Other Languages forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • Ron McLeod
  • Liutauras Vilda
  • Jeanne Boyarsky
Sheriffs:
  • Junilu Lacar
  • Rob Spoor
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Tim Moores
  • Jesse Silverman
  • Stephan van Hulst
  • Carey Brown
Bartenders:
  • Al Hobbs
  • Piet Souris
  • Frits Walraven

Is Java dying or flourishing as never before?

 
Ranch Hand
Posts: 242
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I started my career with Jdk 1.3 and it took almost 12 years to get the Java SE 7 (2011) and now in past 3 years, we have 8 releases (Java SE 10 (2018) - Java SE 17 (2021)).

So, Are Java trying to catch up to keep themselves into the race of other language? Or Is it an attempt to ensure that Java is a leader and other will follow like previously?

P.S. - I  am a Java developer and apologies if my question is found irrelevant.
 
Sheriff
Posts: 22567
122
Eclipse IDE Spring VI Editor Chrome Java Windows
  • Likes 3
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
One of the biggest complaints about Java in the past was the long time between releases. Oracle listened to people and have changed their release strategy. Before, they were waiting for features that they wanted in a new version to be ready. That meant that releases were postponed until everything was done, and done properly. That took years sometimes. Java 8 could have come even later because Oracle originally wanted the module system to be released with Java 8 instead of Java 9.

Starting with Java 9, Oracle has changed their release strategy. The main changes are as follows:
  • Release every 6 months, no matter what. If a feature is done, it's included. If it's not, then it'll come next time (or the time after that).
  • For more complex features, the first 2 (sometimes more) releases include the feature as a so-called feature preview. For language features (like records, switch expressions, etc), it's disabled by default, both for the compiler and the runtime. To enable it you must explicitly enable feature previews both when compiling and when running. For library features (like the HttpClient), it first comes in an incubator module. The module name starts with jdk.incubator, and the API can have any change necessary, even breaking ones.

  • These feature previews and incubator modules allow developers to play around with them, and provide feedback. Oracle then processes that feedback into a second (and sometimes third) preview, and when the feature is finally considered ready (done properly) it is enabled for language features or changed into a proper module for API changes.
     
    Marshal
    Posts: 74637
    335
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Rob Spoor wrote:. . . These feature previews and incubator modules allow developers to play around with them, and provide feedback. . . .

    Some of those preview features have since been removed, like the precursor to text blocks, whose name I have forgotten!
     
    Fidel Edwards
    Ranch Hand
    Posts: 242
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Nicely explained .. Rob..!

    Do we also know if Oracle has any platform where developers can suggest/complaint a feature in Java?
     
    Greenhorn
    Posts: 28
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Fidel Edwards wrote:Nicely explained .. Rob..!

    Do we also know if Oracle has any platform where developers can suggest/complaint a feature in Java?



    There is always bug report page.
     
    Saloon Keeper
    Posts: 24825
    172
    Android Eclipse IDE Tomcat Server Redhat Java Linux
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Rob Spoor wrote:One of the biggest complaints about Java in the past was the long time between releases. Oracle listened to people and have changed their release strategy. Before, they were waiting for features that they wanted in a new version to be ready. That meant that releases were postponed until everything was done, and done properly. That took years sometimes. Java 8 could have come even later because Oracle originally wanted the module system to be released with Java 8 instead of Java 9.



    The cynic in me says that this was more because Oracle was hoping that they could actually squeeze profits out of people, whereas the Sun approach did not. Of course, the lack of profit was why Oracle now owns what was Sun. And the lack of squeezability is why JEE is now Jakarta instead of Oracle.

    Fidel Edwards wrote: Do we also know if Oracle has any platform where developers can suggest/complaint a feature in Java?


    Obviously, being a paid Oracle subscriber can help. I offer now guarantees about how much help in an era where if you're lucky then you get a "Your call is VERY important to us" number (for a premium price, usually) and more often results in a URL to an online forum where the moderators barely speak English.

    For significant suggestions, there's the Java Community Process (JCP). That is used when the changes of interest are likely to affect the entire community. Things like CDI and the mechanisms for deploying JEE webapps were first initiated via JCP.
     
    Greenhorn
    Posts: 5
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    I don't have much time to read all of the comments on this post, and I hate posting without a bit of research.. BUT- I will

    You can find java on any type of device, from tiny embedded hardware to super computers.  Java runs on everything, that was the appeal of Java in the beginning (if I recall.)  I will make more time for this posting later, possibly a list of common things we use.  You use Java in your everyday life even if you are not a programmer.

    Side note: I don't know why the common production java version is a version that was released more than 15 years ago.  (For server side.)
     
    Tim Holloway
    Saloon Keeper
    Posts: 24825
    172
    Android Eclipse IDE Tomcat Server Redhat Java Linux
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Andrew Carr wrote:
    Side note: I don't know why the common production java version is a version that was released more than 15 years ago.  (For server side.)



    Because it's not profitable in business to constantly upgrade things just for the sake of upgrading. A large company may have hundreds of apps to maintain and there's quite enough work to do just in keeping apps compliant with changes in laws and operating conditions.

    It's why COBOL programs written in 1964 can be (and sometime are!) still running essentially unmodified today. Java likewise has established itself as a very stable platform thanks to things like its deprecation mechanisms. I have a particularly nasty horror story about the time I needed to apply a 1-line fix on a platform noted for always chasing the Latest Thing.

    As it happens, the CodeRanch itself is a good example. While we have almost daily maintenance to the app itself, the platforms upon which it sits are quite ancient, and we're struggling with bringing them up to date now before support is totally gone.
     
    Rob Spoor
    Sheriff
    Posts: 22567
    122
    Eclipse IDE Spring VI Editor Chrome Java Windows
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Campbell Ritchie wrote:

    Rob Spoor wrote:. . . These feature previews and incubator modules allow developers to play around with them, and provide feedback. . . .

    Some of those preview features have since been removed, like the precursor to text blocks, whose name I have forgotten!


    I think it was Raw String Literals. And this is a very good example of how feature previews work. Oracle implemented raw string literals, and it just didn't work . Because it was still a feature preview they could rework/replace it without breaking any code (except maybe for a few projects that ignored the big warning and still used it).

    In the old days, it would probably have taken years for text blocks to be added to Java, because the process was so sluggish. A big part of that was because it had to be correct the first time around, because there was no second chance - once something was in, it was in, and taking it out could break applications (a good example is serialization; people like Mark Reinhold, Brian Goetz and Stuart Marks all hate it, but they can't take it out (yet)). Feature previews and incubator modules provide a safer way of testing stuff.
     
    Saloon Keeper
    Posts: 7225
    169
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Rob Spoor wrote:One of the biggest complaints about Java in the past was the long time between releases. Oracle listened to people and have changed their release strategy.


    This is the part that I've never understood. Waiting for the next version/release that will surely be better is a mug's game. Anyone who has been involved in software for any significant amount of time knows that a better version is always coming, and this excuse will be used by some to postpone any number of actions and/or decisions. But the new version, once it arrives and has its bugs fixed, is never the silver bullet which will enable great new things that weren't possible before. Being able to use new features is cool, but waiting for those is not, since they almost never change fundamentals. /end of rant
     
    Campbell Ritchie
    Marshal
    Posts: 74637
    335
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Yes, it was raw Strings, Rob. But there have always been warnings against using experimental features. They go back as far as the old com.sun.xxx packages which we were warned not to use.
    And they have never managed to block features in new code. It is one thing to deprecate a method (weren't there deprecated methods to go with raw Strings in Java12?); it is another to block a featuure from new code. I seem to remember, after generics, which should really have been there from day one, there was a promise to ban raw types from new code. That was promised for Java6
     
    Campbell Ritchie
    Marshal
    Posts: 74637
    335
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Tim Moores wrote:. . . the new version . . . never . . . will enable great new things . . .

    It also won't work if you send it ot to users; they have to install the new version before any of those new features will even pretend to work.
     
    Tim Holloway
    Saloon Keeper
    Posts: 24825
    172
    Android Eclipse IDE Tomcat Server Redhat Java Linux
    • Likes 2
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Tim Moores wrote:...



    Expecting the latest release of anything to be bug-free isn't just a game for mugs, it's a game for outright fools. Studies determined long ago that once a product has reached maturity, the bug-fix problem is akin to pressing on a balloon. The number of bugs will remain relatively constant -- they'll just move around.

    Something I've seen in mature products also is that often the "improvements" are retrograde. It's a long-standing joke that the first thing you have to do with a new release of Windows is find what they've named the "Network Neighborhood" in this release, but that's minor compared to what Gnome 3 did to the desktop. It's so bad I switched to Cinnamon. I believe that another feature-removing "improvement" was in the Nautilus file browser".
     
    Saloon Keeper
    Posts: 1728
    63
    Eclipse IDE Postgres Database C++ Java
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    No.
     
    Rancher
    Posts: 1008
    26
    Netbeans IDE Oracle MySQL Database Tomcat Server C++ Java
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    I cannot answer that in general, but I can tell you what I see in my own little corner of the Universe:

    I live in Microsoft's back yard, Washington State, and basically there used to be 2 camps of development--the ever changing Microsoft paradigm and the Sun change occasionally way of life.  Oracle took over Sun and has made a steady move to embrace the same type of dynamic that Microsoft pushes--ever changing.

    I took a look at our development, and we have 4 to 7 versions of C# installed in various runtimes for software and projects we support.

    We now look at the same type of continual learning curve and version selection options that we see with the Microsoft tools.  This is leading our Administrators to say: "Why?"  Why do they want to buy into another development system, or maintain another development system, that is the same as Microsoft has at this time?

    We used to have oracle on all of our databases that were of any significance.  That has yielded to the MS product of the moment, as our satisfaction with support--pricing and service--has shown more and more in favor of the boys from Bellevue.  All of our developers have Ms development seats, for SQL licensing, since the switch.  C# development for us if free, because of the licensing already in place.  When Oracle started charging to have Java on our development boxes, the guys up the ladder put their heads together and said: Oh, we have to pay for Oracle, but not MS.  Guess what happened next?

    So now we are homogenous Ms shop, with little to no motivation to move toward re-integrating any Oracle products again.

    We do have one legacy system that is old enough that they have "named use" licensing, so with 9 individual seats, they can run the enterprise solution, instead of the 12 license packs that the modern license would require.

    So for us, the change has motivated us away from Oracle, Java, development all together, with little to no hope of moving back.  This is not an occurrence that is isolated to our little shop either.

    Les
     
    Tim Holloway
    Saloon Keeper
    Posts: 24825
    172
    Android Eclipse IDE Tomcat Server Redhat Java Linux
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    The issue isn't really the rate of change. It's the lack of legacy support for change.

    Locally I know someone whose company adopted a shiny new Microsoft technology - let's call it "OLE" for convenience. Their company went all out developing products in it. Just as they were ready to release, Microsoft said "You don't want that old "OLE" stuff. We're doing "COM" now!

    Those weren't the actual products - for one thing, COM and OLE are much too compatible with each other. This was a change that actually hurt.

    The problem also hit me very closely twice. Once on doing live connections from Excel spreadsheets and once when they changed database interface technologies about 3 times in as many months. I literally couldn't code fast enough to keep up with the new interfaces.

    Java, on the other hand, deprecated the m, d, y constructor in java.util.Date somewhere about version 1.1 and yet it still exists to this day. Although if you use it, you'll get a deprecation warning.

    Now, however, Java 9 has broken things (log4j version 1, just as an example and to a lesser extent, the CodeRanch software). Java 11 is supposed to break things even further. That's not how Sun managed Java.

    As for the cost of Java development tools, that sounds more like Management using the Sunk Cost Fallacy. I can do all the Enterprise Java software development I want for free. Even at its most rapacious, Oracle was only charging for bleeding-edge stuff, and as far as it goes, if Java had never released Modules, Streams and Lambdas (to name 3 new innovations) in the open-source versions, I'd still be producing everything I need. Granted, the new stuff is more fun, but it's not a show-stopped.

    If I had the budget for it, now, I'd spend it on profilers, code coverage and other amenities, but I live in a "Wal-Mart" town, so I'm used to doing without. And it's not like those things are free on Windows - if anything, the meter starts running sooner. So, like I said, Sunk Cost.
     
    Les Morgan
    Rancher
    Posts: 1008
    26
    Netbeans IDE Oracle MySQL Database Tomcat Server C++ Java
    • Likes 2
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    Tim,
    Yes, i agree legacy and actual current support sucks.  Ms will at least elevate the problem up the line until you get a solution.

    What can i say with OLE and COM... neither are anything more than a passing fad that MS has deployed as the flavor of the month.  Don't get me wrong, I truly, truly dislike Ms, and their entire marketing paradigm.  I'm just saying where we are, Microsoft's back yard, Oracle is giving businesses the motivation to NOT do Java any more if they have any type of Ms/Oracle mix in their enterprise.

    Since it's easy to just buy the Ms development seat and develop across their host of products, along with the Enterprise SQL you bought it for, there is good motivation to not do a brand X development along with Ms development, and what I'm seeing is that Oracle is not coming out of that scenario on top.

    Here is what I have come to expect from Java:

    This actually happened: we developed a small interface to take data in from the field offices.  there were about 30 or so people involved in collecting that data on laptops.  The data was transmitted back to us, and inserted into our database.  We hit the Alpha test, and decided to push it right to Beta.  The project looked pretty good.  Almost immediately there was a "minor" incident that happened with another app that was in the Microsoft development environment, and being a small shop, we were "temporarily" pulled off of the Beta.  That "minor" problem was huge, and my team spent the better part of 2 years rewriting apps, updating hardware, and generally stomping out fires that come into being from "simple" upgrades.

    During that over year and a half, our servers went through multiple updates, Solaris based servers, and our Java on them updated right along with them--at least one major Java update for the era.

    Now we enter the slack time where we have the Ms product running like clock work.  One of the Server guys comes in and says: "hey Les, what is this Java app we have running over on the server, what does it do?  

    I asked him: "Who's is it?"  

    The response was: "I don't know."

    I asked him: "How long has it been on the server?"

    Response: "Longer than I've been here."

    So I asked: "Who do you notify when you need to know about doing a System update?"

    Response: "It doesn't have anyone listed, so we just do the update and see if it breaks."

    I asked: "How many updates have you done while it's been running?"

    Response: "The logs say 1 Solaris, and 2 Java, with 1 of them being a major version. So what do you want to do with it?"

    I old him: "Turn it off and let's see who calls."

    He did, and it wasn't 3 minutes later that I was on the phone with the field unit that was Beta Testing the software for us.  The told us: Hey, we cannot transmit our data back to HQ.

    We turned it back on, documented who's it was, and what it did, and stamped it as "in production".

    I call it boring application development: you write it once and it just works.  it works on the developers' boxes, it works on the development servers, and it works on the production boxes.  I call that a "boring app".  I strive to create boring apps.

    Ms' apps are exciting though--you never know if you'll get a call in the middle of the night or have a note waiting the next morning saying that application XXX has encountered a problem, and your world has to shift into high gear to fix it, and yet struggle to meet all your other commitments.

    Oracle is losing that edge, and as far as our Administrators are concerned: "No need to run 2 different development plans that are essentially the same."

    Tim Holloway wrote:The issue isn't really the rate of change. It's the lack of legacy support for change.

     
    Rob Spoor
    Sheriff
    Posts: 22567
    122
    Eclipse IDE Spring VI Editor Chrome Java Windows
    • Likes 1
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Les Morgan wrote:When Oracle started charging to have Java on our development boxes, the guys up the ladder put their heads together and said: Oh, we have to pay for Oracle, but not MS.  Guess what happened next?


    When using the Microsoft stack and Java together, I understand that dropping Java is a good solution. We didn't have that choice, so we switched to OpenJDK, either provided by the OS (Debian) or by RedHat when running JBoss EAP on Windows. And Oracle learned from this, because Oracle's Java is free again.

    Tim Holloway wrote:Now, however, Java 9 has broken things (log4j version 1, just as an example and to a lesser extent, the CodeRanch software). Java 11 is supposed to break things even further. That's not how Sun managed Java.


    How did Java 9 break Log4J 1? Other than Log4J 1 not being module compatible (e.g. using split packages) I can't see any reason. That would mean that if you run the application using the class path instead of the module path, Log4J 1 should still work.

    Java 11 did break stuff by removing modules from Java itself (e.g. JAXB); those can be replaced by external modules relatively easily.
     
    Tim Holloway
    Saloon Keeper
    Posts: 24825
    172
    Android Eclipse IDE Tomcat Server Redhat Java Linux
    • Likes 3
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Rob Spoor wrote:

    Tim Holloway wrote:Now, however, Java 9 has broken things (log4j version 1, just as an example and to a lesser extent, the CodeRanch software). Java 11 is supposed to break things even further. That's not how Sun managed Java.


    How did Java 9 break Log4J 1? Other than Log4J 1 not being module compatible (e.g. using split packages) I can't see any reason. That would mean that if you run the application using the class path instead of the module path, Log4J 1 should still work.



    https://blogs.apache.org/logging/entry/moving_on_to_log4j_2

    Yes, the JAXB thing was annoying, but the real problems come from the fact that Java 9 deprecated some core introspection functions and Java 11 is supposed to have switched them off entirely - although actual experience indicates that some of it may still work anyway. Regardless, the threat is there.
     
    Ranch Hand
    Posts: 276
    2
    jQuery Spring Java
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator
    I'm curious to know, how Oracle notifies its subscribers about the removal of the javax.xml.bind(JAXB) module since Java 11. Doesn't this break existing functionalities of the JAXB-based code already implemented? So, whoever using JAXB needs to download and add as a separate dependency whenever reading the release notes from the Oracle team? Also, what is the intention making to remove and separate from Java? I'm seeing this from the technical perspective.  
     
    Tim Moores
    Saloon Keeper
    Posts: 7225
    169
    • Mark post as helpful
    • send pies
      Number of slices to send:
      Optional 'thank-you' note:
    • Quote
    • Report post to moderator

    Mohammed Sardar wrote:what is the intention making to remove and separate from Java?


    It makes the JRE smaller, as it removes features that may not be needed, but more importantly, by removing them from the JRE, modules can be updated independently. There's no need to wait for bug fixes (or new features) in JAXB until the next JRE release, if users can just update the dependency version and rebuild their projects.
     
    Consider Paul's rocket mass heater.
    reply
      Bookmark Topic Watch Topic
    • New Topic