Hacker News new | past | comments | ask | show | jobs | submit login
Oracle Java police start knocking on Fortune 200's doors for first time (theregister.com)
76 points by dangle1 3 months ago | hide | past | favorite | 73 comments



Reminds me of a funny quip that's stuck with me, about "falling into a trap":

> [Oracle, as contrasted to Sun Microsystems] It's more like: "Ship mediocrity, inflict misery, lie our asses off, screw our customers, and make a whole shitload of money." [...]

> If you were to actually have a conversation with a bank--a friggin bank--[...]Whether you believe it or not, you will get a very societally-engaged answer. [...] You talk to Oracle, it's like "No, we don't fuckin' make dreams happen, we make money, that's what we do!" [...]

> Do not fall into the trap of anthropomorphizing [Oracle CEO] Larry Ellison. You need to think of Larry Ellison the way you think of a lawnmower. You don't anthropomorphize your lawnmower, the lawnmower just doesn't--like, mows the lawn, you stick your hand in there and it'll chop it off, the end. You don't think "Oh, the lawnmower hates me"--lawnmower doesn't give a shit about you, lawnmower can't hate you. Don't anthropomorphize the lawnmower. Don't fall into that trap about Oracle.

-- Brian Cantrill: https://www.youtube.com/watch?v=-zRN7XLCRhc&t=35m32s


You got to remember /why/ there was such backlash against Oracle when they took over Sun. All Senior Staff Engineers and above were offered positions as Staff Engineers or they could exit the company by rejecting the offer. The cushy spots that Sun Alum felt they had earned and could maintain after the Sun-set evaporated. That's the reason for the hatred from a lot of exiting folk at that time but they'll always tell the story with their slant.


It's not as if such stories are counterbalanced by other people saying what a wonderful place oracle is.


Only those with grievances to air make them known. Plenty of rank and file under Oracle thought it absolutely great due to eight year of stability before the end. Nothing really changed during that time as we still did the exact same day to day function with only macro Oracle decisions impacting. E.g. S11 absolutely will ship on 11/11/11 as Larry decided that.


Oracle killed OpenSolaris in a tremendous knee-jerk overreaction, and that was that. After that it was head for the exits.

It kills me that Oracle killed OpenSolaris but then they saw the light with OpenJDK.


The longer I live, the more companies I see fill Oracle's archetype. It feels like a bad omen for capitalism.


This is the end result to be expected as every profitable business model that doesn't screw its customers over runs its course and finance capital pushes corporations to continue to pay out to shareholders in growth and dividends despite the shrinking opportunities for it. Any business that doesn't behave like this will eventually be outcompeted by ones that do.


I'd guess Broadcom, but I'm only aware of the VMware issue. Any of their other product lines get hit? With Oracle, you know it's just a matter of time.


Literally every one of their products. All the Symantec assets, all the CA assets. It’s their playbook.


What social/political force do you see opposing that trend? Or why is that a bad omen?


Maybe this is just idealizing the past but it used to feel like for the most part people wanted to be good and do good work and play fair. Some people were cutthroat vultures but it was distasteful and you would see pushback.

These days it's expected. Doing good isn't even in the discussion unless it's being cynically mocked. Evading taxes? That makes you smart...

Even being devoted to your work is conflated with being exploited by your employer, and with the way things are it's understandable.

I hope we see some idealism return to American industry. It'll take a reversal of the plundering of the middle class.


> Maybe this is just idealizing the past but it used to feel like for the most part people wanted to be good and do good work and play fair. Some people were cutthroat vultures but it was distasteful and you would see pushback.

It seems that in the past things where somewhat different. The sole focus on maximizing shareholder value is something that happened quite recently. A lot of people trace that to Jack Welch who took over General Electric in the 80's

I highly recommend https://www.amazon.com/Man-Who-Broke-Capitalism-America_and/... if you are curious about it.The book documents well the transformation which gave us the modern version of US companies.


Jack Welch was an unrelated sideshow. The biggest change was the development of "shareholder primacy" which very quickly became dogma in the business world: https://www.hbs.edu/faculty/Pages/item.aspx?num=63145


Socially and politically I don't see much opposition. Nobody in Congress is getting mad about paying for Oracle and nobody protesting in the street even knows what their product is. And realistically, that's probably just how Oracle likes it. The less you know about them the better, their job is twisting the arm of your favorite business and little else.

At least in the field of software, Oracle probably considers the proliferation of free software an enemy. But even then, Oracle mastered the art of obfuscating open interfaces and charging people money for support contracts. It's hard to choose any one thing that kills Oracle, but high-quality free software probably goes a long way towards forcing them to change.

> Or why is that a bad omen?

Oracle is a do-nothing company in the most literal sense. You can only have so many of them around before capitalism as a whole collapses under the weight of it's own incompetence.


> Oracle is a do-nothing company

Maybe this is true wrt their main product, I neither know nor care about it. The sooner it leaves this Earth, the better for all of us as far as I am concerned. But both OpenJDK (and Java generally) and MySQL have been on fire since they were acquired by Oracle. Compare the stagnation during the last few years under Sun with massive features that's been coming to both more recently:

https://dev.mysql.com/blog-archive/the-complete-list-of-new-...

Java got many shiny things, a few examples off the top of my head: an almost pauseless GC leagues ahead of all FOSS competition, modules, Go-style green threads, many language features like immutable records, ADTs, switch expressions, etc. Things like value types are on the horizon.

Oracle is by far the main developer of both the language and its most popular implementation. Adoptium and company mostly just take the source and repackage under their own brand.


> Oracle is a do-nothing company in the most literal sense. You can only have so many of them around before capitalism as a whole collapses under the weight of it's own incompetence.

Pretty hyperbolic. There's already a reply to your post that talks about what Oracle have done with Java, but rest assured that Oracle has and does employ armies of developers - as well as sales people and the rest of the big software ecosystem. Whether you like what they build is another thing - it's hard to get excited about boring gigantic ERP systems for example - but saying they don't do anything is absurd.


Ideally stakeholder capitalism. Bad omen because otherwise people will just discard capitalism altogether.


"Stakeholder capitalism" exists so people can talk about what they ought to be doing in language vague enough they never have to actually alter their behavior in any tangible way.


Turns out it’s hard to build unambiguous moral systems in a complex reality.


I'm genuinely curious: Why do companies use Oracle JDKs? Is there value that they provide to enterprises over the FOSS JDKs, or is it just a default and/or a mistake because of confusing naming?


In fact, Oracle also funds the open-source version, OpenJDK.

The Oracle EE JDK has some extra features which can be enabled (e.g. fancier G1 garbage collector, IIRC), and there's also GraalVM EE which provides an even faster runtime. Also worth noting GraalVM CE (Community Edition) which is pretty spectacular. Futamura Projection, anyone?

https://en.wikipedia.org/wiki/Partial_evaluation

(This is the badass future space tech part of Graal :)

That said, OpenJDK works totally fine for many cases.


Compiling Java to native code via GraalVM is really amazing. The Quarkus framework supports this, and the startup time and memory utilization is incredible compared to the JVM. I deploy native-built Java apps as AWS Lambdas and the startup time and resource utilization are so much better by comparison.


what are the cold starts like?


Faster, because it's a native executable.


Right, but I mean there's faster than spring boot (30 seconds), then there's fast enough for a typical web experience (<500ms)

My experience on lambda is with node and python, and I've always needed to pay for concurrency. Cold starts were 1-3s, which is not good enough for a web api


Depending on how your program is written, you might be able to use Lambda SnapStart and eliminate most of the cold start overhead.


A GraalVM native executable can start faster than a C program. Think tens of milliseconds.


i know what graalvm is, but that doesn't mean the cold start response time of a lambda from the perspective of a user will be anything like that.


It does. This is one of those times where nothing is hidden from you. You don't have to believe me. Believe AWS:

https://aws.amazon.com/blogs/opensource/improving-developer-...

> The same Lambda function with 3008 MB of memory that took 3.6 seconds to start with the JVM, started in under 100 milliseconds once compiled to a native executable using GraalVMs native-image tool. We were able to achieve sub second response times as shown in the graph below, and as an added bonus were also able to reduce the memory size and cost.

They go on to describe the main caveat - you have to predeclare what will be accessed via reflection - and how some frameworks like Micronaut do work up-front at source compile time to ensure the needed metadata is generated. So if your app is compatible with native image the benefits are really there.

There are some other caveats:

• In some cases you may need config files to make libraries compatible with the process. There's a central collection of them, and libraries are increasingly including their own metadata. The biggest app compat problems are with apps built using old versions of frameworks like Spring where you can't afford to update them to the newest versions of things.

• Out of the box the native executable runs a bit slower. To get throughput that's competitive with HotSpot you'll need to do a C++ style workflow with profile guided optimization, which is obviously more runtime efficient but less devops-time efficient than what HotSpot does.

• The actual compile process is slow, so you'll be developing on HotSpot.

Disclosure: I work part time with the GraalVM team.


Source and benchmarks please


There are lots. Everyone gets those sorts of results so you can just try it, or here are some experience reports:

https://debijenkorf.tech/speed-up-application-launch-time-wi...

> The app went from starting in 463ms to a whopping 7ms, awesome!

> As you can see the memory usage went from 215.924kB to 18.104kB

Or for Lambdas (this result is reported by the GraalVM team):

> The same Lambda function with 3008 MB of memory that took 3.6 seconds to start with the JVM, started in under 100 milliseconds once compiled using GraalVM

https://aws.amazon.com/blogs/opensource/improving-developer-...

Native Image is a fully independent JVM and compiler implementation that was written from day one for startup time and memory footprint as the only goals that mattered. What it sacrifices to get that is some semantic compatibility. The big differences are:

- It compiles all code ahead of time. As machine code is much bigger than the equivalent bytecode, it uses a dead code ("tree shaking") analysis to only compile code that's statically reachable or declared via config files. It's like a mandatory WebPack or ProGuard step if you're familiar with those.

- It runs (some) class initializers at compile time, not startup time. So if you do something like "public static final Thread thread = ...." then you'll need to exclude that class from build-time init, including if it's in libraries etc.

- It snapshots the post-compile heap into the binary.

So this is changing the normal Java semantics and that means some apps won't run on native image without some up front work. It's not an entirely free capability. You have to "port" your app to it. Fortunately, because the startup and memory footprint wins are so huge and definitive the JVM ecosystem is rallying around this approach and making frameworks and such compatible with it. For instance if you use the latest versions of any of the modern Java web frameworks (Spring, Micronaut, Quarks, etc) then you can easily run a single build system target to get a Docker container with a native executable inside, that has those startup times you're seeing here.

At this point the startup time bottleneck for (compatible) Java apps has shifted to the kernel; the container infrastructure itself takes longer to start than the Java program does.


Sorry if this is too far off topic for this thread, but I'm curious if you've done any work on packaging JVM-based desktop apps, whether using JavaFX, Compose, or something else, using GraalVM Native Image. The idea of bringing Native Image's minimal startup time to desktop apps is really appealing to me.


Yes there have been some experiments with that.

https://github.com/hydraulic-software/conveyor/discussions/6...

Gluon has a version of GraalVM that can compile JavaFX apps. They do indeed start impressively fast and use much less memory. It's still a road somewhat less travelled though. Someone also tried it with Compose but it didn't get further than a demo repo and a few comments on our Discord.

There are a few issues left to resolve:

1. General developer usability.

2. Native images aren't deterministic, which reduces the effectiveness of delta updates.

3. Native images can quickly get larger than the JVM+bytecode equivalent, as bytecode is quite compact compared to machine code. So you trade off startup time against download time.


Is bytecode still more compact than native code when you factor in the ProGuard-like optimizations that Native Image does as you said in an earlier comment? Also, how does native code compare to bytecode once you compress it?


A small native image will be smaller than a jlinked JDK+JARs, but it doesn't take long for the curve to cross and the native image to become bigger. ProGuard doesn't fundamentally change that.

The native code produced by native image compresses very well indeed. UPX makes the binaries much smaller. But then you're hurting startup time, so it's not a good trade.

The best way would be to heavily compress downloads, then keep the programs uncompressed on disk. Unfortunately most download / update systems don't support modern codecs, so you're very limited in how much you can reduce download times. Also codecs like LZMA often result in much slower decompression, so on fast internet connections it can actually be better to use less compression rather than more. Really modern codecs like Brotli or zstd are much better, but browsers don't have good support for downloads.

None of this is especially hard to fix but it's a quiet area of development. I think it'll need a bit of a paradigm shift to become a more popular way to do things on the desktop/cli space.


Interesting observations on compression. As a young programmer, I used to compress executables, and maybe some DLLs as well, with UPX without a second thought. Later I understood that executable compressors prevented the OS's memory-mapped file I/O and demand paging from working as designed, and moved to only compressing the installer and update packages (another of my misadventures as a young programmer was doing my own updater with its own package file format).

I guess the ideal solution would be if the download server offered a few compression options negotiable at download time, via Content-Transfer-Encoding or some other form of HTTP content negotiation, trading CPU time against bandwidth (the server would have to pre-compress or at least cache the compressed versions to scale), and then the download was stored as some kind of archive that could be mounted as a filesystem (this implies random access and therefore not "solid" compression). Then delta updates would be done against that filesystem image. That way, you wouldn't have the "installing" process of uncompressing and copying files. Of course, that would require platform support that we don't have on Windows and macOS. At least I can dream about desktop Linux.


macOS actually has the best support for that. DMG files are mountable disk images and the contents can be compressed with LZMA or some Apple-specific codecs that are quite good. Opening them mounts them into the kernel and then there's random access. Even code signatures are checked JIT during page faults.

The main problem with DMGs is the poor UX, and very slow mount/verification times. Users can start the app from the DMG and it will seem to work, but be unable to update. They forget to unmount the "drive" or don't know how. The format is also undocumented and a PITA to work with as it's basically a full filesystem, which also has to be signed and notarized independently and that's super slow too. So it makes the whole build process a lot slower.

There's quite some low hanging fruit here that I might experiment with soon. I have a design in mind already.


In one case of an "audit" I heard of a few years ago, I was told that Oracle flagged the laptops of a handful of individual engineers who simply didn't know any better, having installed the "official" JDK countless times over the years and not realizing the licensing scheme had changed.


from my experience it's a mix of legacy hangover, and needing legal/privacy approval to switch


Yes, that's at least part of it. I work for the government and we pay huge amount of fees to licensed software which can be completely replaced with open source ones. We aren't using most of the features we pay for. And, we don't even need any of the paid features.

It's just a lot of inertia, red-tape, legacy code and lack of understanding by the leadership.


It is hilarious and ironic to read this title, after hearing so many times how C#/F# and .NET (released under MIT, including most of the tooling bits) are not "truly open-source and free".

Makes me feel ever so slightly vindicated.

Oh, and .NET comes as "full package" - you don't need to pay for extra performance features existing or future, or read through license text if you want to use AOT capability for AWS Lambdas.


Just a reminder to everyone that .NET is open-source, runs on Linux and Mac natively, and ASP.NET is one of the nicest web development platforms around, especially if you prefer to keep things simple and generate HTML server-side like Tim Berners Lee intended.

VS Code is free, Intellij Rider is free for open-source projects, GitHub is free, etc...


i get it, but it's not like the jvm is closed source. you can just... not use oracle


+1. Sadly it's very hard to displace java/jvm moat. And MSFT image in the open source world is still not stellar. But if i were to be in position to chose a new stack for a standard CRUD/Backend app, .Net >> Jvm


I just hate method names starting with a capital letter. I hate it so much, I put up with Java web/mvc products just to spite myself.


do You start sentences with lower case, and then capitalise the second word?

because That's what Java reads like to me.


But the method is never really the thing you start a "sentence" with, though. You enter a method from a class, either statically or through an instance reference.

Even in C#, if you have a local reference to a class instance, you use a camelCase naming approach before entering the method name. So at least in Java, this scenario is more consistent (from your "sentence" argument).


Are those the only two options?


Crazy world we live in today where this is a true statement!


Yeah, quite the transformation on Microsoft’s part. It’s one of a few success stories like that, if not the only one of this scale.


I'm serious here: that's why I don't touch JVM languages. Sure, maybe you use OpenJDK. Have fun arguing that point against Oracle's legal division.

It's too bad. I hear that the JVM's an engineering marvel. It may be, but Oracle darn near beat freaking Google in a lawsuit. What chance does anyone else have?


Pretty good considering the precedent has been set.


>> founder and CEO of Palisade Compliance, an independent Oracle licensing advisory company.

What a world we live in when there's a market for a company providing this service. Oracle is truly a disgusting company. They offer a very generous cloud computing package but you'd have to be insane to build on it.


> They offer a very generous cloud computing package but you'd have to be insane to build on it.

Absolutely. I've seen companies get into major trouble building on Oracle products, then when renewal time comes the prices triple and they literally can't afford it. One company I consulted with in 2000 just shut down rather than renew with Oracle. They were a smallish startup and the Oracle costs blew the budget out of the water, they decided to just kill that idea.

And Salesforce is the same. Great product, viscous company. I had a major row with then in '21 over licensing fees during contract renewal negotiations. Details aside, the exec I dealt with made it clear they felt they had us over a barrel and had zero desire to help us. I said if we can't even get some flexibility we'll have to move to another product. He literally laughed at me and said he didn't care. So I moved the entire company to a competitor in 45 days. He sent an email a few days before the signing deadline asking when I'd sign it, I said, "we're on another product now so we won't be renewing. You're free to terminate our account at any time. We've removed all sensitive data already." He called my cell several times a day for two weeks after that. I never answered.


Sounds like hell. When I feel a sales or business person trying to manipulate me something shuts off in my brain and I just stop talking to them. Maybe the difference is just the skill of the manipulator, but I infinitely prefer it when people are talking candidly about the situation without mind games.


> Maybe the difference is just the skill of the manipulator, but I infinitely prefer it when people are talking candidly about the situation without mind games.

Isn't that exactly what this guy did? Didn't try to pretend to be a friend, told GP honestly what he was doing.


I don't think so. He seemed to change his tune when GP actually did cancelled the contract. Besides that, it's obvious they're able to offer a lower price, but they tried bluffing. Very annoying and manipulative behavior.


Our major ask, the one ask we simply could not go without was payment arrangements. They insisted that the entire year was due at once, and literally would not entertain discussions about quarterly payments. The point where he laughed at me was, "When you get this year's invoice, write a check for it, send it in, there's you're payment plan." That was when I just changed products. It was an intense 45 days but we launched about 2 weeks early.


Oracle has had a pretty bad reputation since i got into tech more than 20 years ago. But somehow, they are still able to surprise me how predatory they can be...


Awesome response to Salesforce. I wonder whether the exec had to explain to anyone how they lost the account.


Last year I was brought into another cancellation negotiation with another client. On the second call I was on they apparently had researched me, and asking if I was [my name] from [former company]. I said yes and whatever they heard about me was probably true. I guess I have a reputation there now. I'm ok with that.


Did it help with negotiations?


Significantly. I can't talk raw terms, but we were able to buy our way out at significant savings.


Raw terms are not that important in the context of this story, it is great to hear as it is :). Thank you!


Great story! I wish it would be always possible to move something from one platform to another in 45 days, but if someone could do it, there is a hope. Would you be kind and share what competitor did you choose at that time? Thank you.


Damn that must have felt good watching those calls go to voicemail


Incredibly good. He kept wanting to know who we moved to and how we did it. I never told him.


FWIW, there are also firms that advise companies on how to negotiate licenses with Microsoft -- for example https://www.directionsonmicrosoft.com/


There are plenty of companies who also help manage the costs of AWS. Does this mean the HN crowd feels the same about that as they do Oracle?


> Oracle, Java, subscription, compliance, locked in, license negotiations

I’m just surprised there are still people willing to deal with this at all. Surely at some point you just rip off the bandaid?

Unless you’re up to your eyeballs in legacy code in which case…oracle acquisition was 15 years ago and everyone knows how they roll. If you’re still on it with no plan B…good luck with that


I miss Sun Microsystems so much guys, it's unreal.


Not really for the first time.


Brilliant idea. Find all the companies who are probably already seething about Broadcoms ridiculous price increases, and kick them in the metaphorical financial nuts some more.

I mean, how can this go wrong for them?

/s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: