4 ms·
Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? W
by vvillena 7y ago
Not really. The newer open versions still don't match Oracle JDK 8. Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Do you use Scala? GLHF.
Standing still in the Java ecosystem is fine. Keeping on with the advances is painful and exhausting. The Java tech stack is awesome when it works, but to solve issues you have to go so deep into the tech stack that I'm starting to think it just can't be done unless you're at least a mid-sized company with JVM specialists on the payroll. Not developers, but systems people.
- sgift 7y ago> Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Why would that be the case? > Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. Dependencies which still fail with module errors are basically abandoned and should probably be replaced. But even for those there's an escape hatch if you really want to continue using them, so that seems to be a non-issue? > The Java tech stack is awesome when it works, but to solve issues you have to go so deep into the tech stack that I'm starting to think it just can't be done unless you're at least a mid-sized company with JVM specialists on the payroll. Not developers, but systems people. I've worked either directly or indirectly with so many companies of all sizes using Java without any dedicated JVM specialists I'm pretty sure you're doing something very, very wrong with all the problems you seem to have.
- vvillena 7y ago> Why would that be the case? I have a desktop Java app with platform-specific installers (.msi, .deb, .dmg). The Windows and Mac installers include a Java runtime, so the user doesn't have to worry about installing an external runtime. I'm forced to use Oracle JVM, because it's the only Java distribution that includes the tools needed. There's ongoing development on a tool that should bring these and more related features to the open JVMs, but it's not done yet. > Dependencies which still fail with module errors are basically abandoned and should probably be replaced. But even for those there's an escape hatch if you really want to continue using them, so that seems to be a non-issue? The issue is that the upgrade path isn't smooth. I have to upgrade everything at the same time, because what works on Java 11 doesn't work in Java 8, and viceversa. It makes everything way harder than it should be, if there was a clear migration path. > I've worked either directly or indirectly with so many companies of all sizes using Java without any dedicated JVM specialists I'm pretty sure you're doing something very, very wrong with all the problems you seem to have. What I do falls into a niche. It's not "very wrong" but it's uncommon. The main issue is that Java was a non-issue, a stable platform to build upon. But the recent Oracle license change forced us to move to fully open versions of Java that do not have the same features, do not bundle the same libraries, and do not have documentation detailing all these differences. I'm not asking for a community to finish whatever feature I need, or for a company to make what I need free to use. I'm just trying to explain my own problems caused by Oracle forcing us to move to open distributions of the Java platform.
- sigzero 7y agoThat's a lot of FUD spewing.
- vvillena 7y agoIt's my own personal and professional experience. Yours may differ, but please don't call it FUD.
- thomascgalvin 7y ago> The newer open versions still don't match Oracle JDK 8 I'm currently working on a web service that was written under Java 8. For giggles, I just ran the end-to-end tests suite under Java 8, 11, and 13. The only error I got was an incompatibility with Google's Error Prone linter, which I was able to fix with one line change. This represents a few hundred thousand lines of production code that works just fine under every important JDK in use today.
- vvillena 7y agoThe problem isn't usually with the runtime itself, but with all the ecosystem and tools around it. This becomes very apparent when venturing beyond web services and you start depending on those tools.
- alanfranz 7y ago> The newer open versions still don't match Oracle JDK 8. Oracle JDK 8 contained some small parts that were proprietary. And they mostly had the proper package name. You took the risk. > Wanna bundle a JVM with your app so your users don't have to worry about the Java runtime? Well, you can't do that anymore. You mean, bundling a JVM exactly like all JetBrains IDEs currently do? > Wanna use JavaFX? You have to jump to Java 11 and hope your dependencies don't fail with module packaging errors. JavaFX is a bit of a strange thing, and yes, it can be painful. And some modules struggle with the new module system. The module system is a breaking change, and in fact it took quite a while. > Scala That's a problem with the Scala compiler AFAIK, not with Java.
- vvillena 7y ago> Oracle JDK 8 contained some small parts that were proprietary. And they mostly had the proper package name. You took the risk. I did not. Some libraries I depend on did. > You mean, bundling a JVM exactly like all JetBrains IDEs currently do? Yes. I'm researching how they do it. Previously it could be done with one command. Jetbrains use their own patched JVM and have JVM experts on their payroll. What they do goes way beyond my current skills. > That's a problem with the Scala compiler AFAIK, not with Java. From a JVM point of view, Scala is just one more library. The problem with Scala right now is that it doesn't support the module system. This means yet another dive at a lower level to try to fix any issue that appears.