68 comments

[ 5.5 ms ] story [ 148 ms ] thread
A real class act all the way. /s
Is Oracle legitimately trying to kill the Java ecosystem or is it just a happy accident? They're almost going out of their way to unravel almost everything Sun stood for and what Java was meant to be...

The sad irony is that if this continues, and C# Core keeps getting better, people might move not because C# is inherently better but just to escape Oracle's influence.

Java is a lot less "free" than many like to claim see:

https://www.theregister.co.uk/2016/12/16/oracle_targets_java...

You might say: "Well just don't use that stuff then!" sure, fine, but what if a vendor you use used them? You still owe Oracle money.

Microsoft might be bad, but Oracle is worse, and Java is Oracle.

> Is Oracle legitimately trying to kill the Java ecosystem or is it just a happy accident? They're almost going out of their way to unravel almost everything Sun stood for and what Java was meant to be...

How does one come to such conclusion after corporate open sources a project?

By looking at Oracle's management of Java in the larger scope. Here they're destroying a popular Java product used to support other Java products to save money.
Mission Control was always an Oracle product (coming from JRockit), it has nothing to do with Sun. It was added to the HotSpot JVM after the convergence.
Every time I read something about Oracle, I think this shop should be rebranded as Asshole Inc.
Some would say it already is... One Rich Asshole Called Larry Ellison...
Yep, but neither Google after torpedoing Sun, nor IBM or any other Java relevant company cared to save Java assets from Sun.

So here we are.

IBM supported Apache Harmony which Oracle forced to shutdown. Google used harmony and they are still in legal quagmire.
If Google had given a penny to Sun for each Android device, Sun would still be around.
I thought Sun was getting enough pennies on their J2ME thing. Wasn't that enough? Many claim here that it was a great platform and definitely better than Android.
Not after Google torpedo Sun by giving away for free a rip-off implementation, which OEMs jumped into instead of keeping to give pennies to Sun.
If companies had to give a penny to Sun for every device which used Java, nothing would be written in Java.
Google is the only company that refused to do it, trying to find a workaround around Java licensing.

So yeah, companies were paying much more than pennies to Sun, until Google came around and offered them a (free beer) Java fork, thus torpedoing Sun profits regarding Java.

It seems like Oracle has struck on a way to not just get the community to help with their maintenance and development, but a way to trick the community into doing all their work for them.

If I had to guess, I would bet that the license requires contributors to give up rights to their work so Oracle can still use it in proprietary products with little or no stipulations.

Expertise in building profilers and debuggers is specialized and rare, I would think. It'll be difficult for the community to find people to fill the role of the Java Mission Control team.
I think that characterization is a little unfair. They could shut the team down and kept the source. Oracle draws a lot of hate reasonably but I'd like to see any closed project open sourced.
> I think that characterization is a little unfair.

In what way? It seems to me Oracle has a habit of pulling company resources for things they open source, wihle still retaining the ability to market it privately with their own enhancements and the enhancements from the open source community, with little given back.

Just look at Solaris. It's the same story, over and over again.

There is a word for any engineer that subsequently contributes code to this project. We need some solidarity in this industry.
(comment deleted)
I think Microsoft is about to take off.

Businesses are going to move to Azure and use dotnet core. Today we've visual studio on mac too. Plus, visual studio code on Linux.

Who wants to deal with Java BS when their master pisses of people with these idiotic moves.

Not to mention Rider IDE.

From what I’ve been told C# is really great to work with and fixes a lot of issues people had with Java.

Can anyone who’s used both recently comment?

I don't use it, but I know that I see a lot more job postings in my area for C# coders than Java coders.
Out of curiosity, what's your area? In SV it's Java shops as far as they eye can see.
From what I've seen, it varies wildly with the job market.

I'd expect to see more Java shops in SV because Java's huge open source ecosystem makes it a much better platform for doing, for lack of a better term, "tech company stuff." Also, SV is heavily influenced by academia, where .NET was just a flat-out no go for a long time because it only really worked on Windows.

But I see a lot more .NET for the kinds of in-house enterprise development jobs you see in regions like the Midwest. For that kind of work, there's usually not much in Java that you can't get on basically any other platform, too, and .NET/C#'s better ergonomics will let your team be more productive at the kinds of stuff they're doing. (I'd bet Clojure is even better still, but Clojure doesn't look good in khakis and a polo shirt.)

You're not the first one to mention it to me, but what "better ergonomics will let your team be more productive"? Honest question since, as an outsider to C#, the library ecosystem seems anemic coming from java.
So my sense is that, for utility-type stuff, the library ecosystem in Java feels bigger because its standard library is anemic. That basically forces Java to have a bigger library ecosystem just to achieve the minimum set of tooling you need just to hit the minimum bar for being a usable general-purpose language.

Joda Time, Apache Commons & Guava, Jersey, Hibernate, etc. - heck, even Dropwizard - are all libraries whose .NET equivalents are just different bits of .NET itself. Similar for Java Mission Control, for that matter.

Where .NET pales, IMO, is for stuff like Hadoop that, while astoundingly helpful for some problem domains, isn't so useful for most enterprise development work.

I use both and you are right. As language C# fixes many things one could be unhappy with in Java. But Java has it's eco system which is definitely unmatched in quality and quantity...and that plus the ultra optimized and battle-tested JVM is what makes people stick with it.
That was more true a decade ago. The feature gap has narrowed a lot in recent years.

I'd also argue the JVM in general is still a better platform than the CLR.

I am a relatively recent transplant from C# to Java. I'm still getting my bearings, but my general sense is that Java has an amazing ecosystem in the large scale, and that makes it much easier to tackle the hard problems, but is the absolute pits to work with for everyday challenges. IOW, Java makes the hard problems easier and the easy problems harder.

Concrete example: .NET has nothing comparable to the Hadoop ecosystem, or to International Components for Unicode.

Concrete example: Compared to what's in .NET, a lot of stuff in the core Java libraries feels very half-baked. Streams, for example is missing a lot of useful features that I am used to seeing in every comparable library. There's not even a mapi in there. Bifurcating it from iterables and the rest of the collections API also creates some ergonomic annoyances that don't exist in, e.g., .NET or Scala's equivalents.

From what I recall .NET has built in almost all of International Components for Unicode features. You can still use ICU from C# if you want to, but I have never personally seen anyone do so.

See: GenICUWrapper A tool that generates a rudimentary C# wrapper around the C API of ICU4C. ICU Dotnet - .NET bindings for ICU http://site.icu-project.org/related or https://github.com/sillsdev/icu-dotnet

There are also .Net options for Hadoop so I am not sure what you mean exactly?

There are options, there are always options, but they are typically 2nd class, incomplete, poorly supported, or otherwise substandard.

For example, first line of the readme for icu-dotnet (emphasis mine):

> icu-dotnet is the C# wrapper for a subset of ICU4C

ICU4C has quite a bit of cruft at this point, so the useful subset is perfectly reasonable. You can always add anything to these layers you want, but it's really not worth the effort.
It would take some serious, consistent and repeated reports of .NET doing very well on Linux servers in production for that to happen. C# is a really nice language, it's just being mostly stuck in the peripheral environment that's the issue. We need highly visible success stories.

As it stands right now, if your company is developing on .NET for the most part you are locking your developers out of the entire *nix ecosystem...from server licenses to command line tools to open source libraries to databases.

Combine that with how difficult Microsoft makes it to get your data out of SQL Server even for things like Elastic Search and you're in for a world of licensing hurt down the road.

I honestly still don't understand how anyone chooses a stack that locks you out of so many options and imposes so many constraints.

I get that Microsoft is improving...but they have a big hole to climb themselves out of.

Agreed, not to mention how many of the frameworks and tools you would use in the .net world but on .net core either isn't fully implemented on linux, performs worse than on windows and generally is risky since it's not really tested software and it didn't have many iterations on the linux system to allow for improvements. So it's risky to choose it for anything that's supposed to run in production, unless you are really sure it works for the specific task you know you will use it for.

Take things like SignalR for .net core, ServiceFabric, many microsoft server only products in Azure, (third party Akka.Net) don't support linux so well yet. Some of them are getting there but it's kind of risky to use due to the lack of being used in production for a while or it's lacking a feature or something is missing. It's been a while since the announcement of open source support, but it's seems like a slow process. It generally gives a vibe that they would rather have you use azure on windows, than support a completely open development ecosystem. They should put more weight behind the open source movement TBH. But it's an improvement, maybe they will get there one day. But right now I wouldn't choose it either for many things, considering the alternatives on linux. And last time I tried running code on linux and windows, the linux version was considerably slower for identical c# code. Might have been a missing compiler optimization, who knows. Not that I don't want C# on linux, I think it's a nice language in that family of languages. Like you said, it needs more success stories from running in a nix environment.

Have you done anything in .NET core? It sounds like you haven't at all. Your .NET bits will run on Linux or Mac. You're not restricted to SQL Server. The open source community is doing just fine and has a ton of interesting projects and ports from other ecosystems. The only thing that's slightly restrictive is that there is currently no compatible Visual Studio release for either Linux or Mac, although it's getting there.
Have you ever tried to stream data out of SQL Server into something else...?

I realize you can use other databases, but once the data goes in, getting it out is a whole other ballgame.

Getting data out of SQL Server couldn’t be easier. What’s your problem?
(comment deleted)
> with these idiotic moves.

I am not sure how this is an idiotic move. They are laying off ppl working on product that company doesn't think is profitable. Happens all the time, everywhere.

I do Java and .NET consulting.

In what concerns UNIX like systems we don't care at all about .NET Core, because it is still playing catch up with the .NET Framework libraries we care about, lacking parity with many mature Java versions.

Which has led to some projects porting a set of small .NET applications to Java, as means to deploy on Linux, because the customer wasn't willing to bet on .NET Core.

Additionally, in spite of not being fully Java SE compliant, it is still more productive to write Android in Java as dealing with Xamarin integration issues.

Rider IDE might be interesting when they start supporting GUI development.

Finally, as any long time .NET developer will tell you, Microsoft also has its own fun moments.

I don't see a big issue with this. I don't like Oracle as much as the next guy, but when the community votes to de-corporate project I think it is reasonable to lay off the people performing corporate maintenance. Surely those who voted to "community-ize" it (which I agree with) will re-hire these people to continue their effort lest they think these things just magically maintain themselves. Granted Oracle was one of those who voted. I think these are just reasonable ebbs and flows of businesses and shuttering or devolving yourself of products.

I think most of people's hate will come from hating Oracle or emotionally hating the idea of layoffs. In this particular case it's a damned if you do damned if you don't. One side wants Oracle to open everything and stop exercising control over things (e.g. their own branded JDK which was only differentiated by support and these kinds of tools). Another side lambastes Oracle for not keeping the people around to do the work. We all want less Oracle control over the JVM yet we all secretly want them to keep working on it and paying the people to do so.

I think that what irks a lot of people is that Oracle has almost 300 open positions in the US for Java developers.

Why lay off experienced developers instead of moving them to currently unfilled positions?

I wonder if they are actually filling those roles?
Can't speak for other parts of the org, but Oracle Cloud Infrastructure (OCI) is growing fast. Most teams have a target to double+ staffing within 6 months, and from what I've seen, they're roughly succeeding with their goals.

I don't know that Oracle specifically works to transfer staff around (not been in a situation to know). The job boards _are_ open and available internally, and some of the OCI growth is happening via internal transfers. People from across the company are specifically reaching out to hiring managers.

Anyone else remember far enough back to when OCI referred to the Oracle Call Interface (C library)?
There's little traces of "OCI" with different meaning all over the place in Oracle, so far as I've seen. Guess it's just one of those useful TLAs that keep repeating.
Meh, lateral movement in large companies is something we can scoff at across the spectrum. The compartmentalization of these large companies coupled with their insistence on in-office employees is surely a problem, it just didn't feel like that's where the hate was directed. Often in the case of layoffs by non-troubled companies, there are many valid "but [...], but [...], but [...]" arguments. I'm not sure there is much value in concerted anger at this one.
I was having coffee in a co-working space last weekend and for whatever reason some company had posted their application to host an H1B visa. As part the application they said they were unable to hire a local senior Java programmer at the prevailing wage of 79,850 and they were going to pay this person 80,000.

I don’t take much value or meaning from open vague postings at large companies.

Do we know that they didn't offer to move them and just fired them? Or are we just assuming?

Edit: Keep in mind that not everyone would get that offer, so a couple people not getting the offer doesn't mean that nobody got it.

Those open positions are in place for H1B visa and green card sponsorships. Also what sense does it make to employs a highly skilled java expert in ordinary java dev role ?

The nonsensical requirements around green card filings force all these large companies to constantly have open job positions that will never be filled. It is mostly to satisfy USCIS than anyone else.

Hint: Check San Jose Mercury News for job ads. Never apply to those jobs. You wont get it.

>what sense does it make to employs a highly skilled java expert in ordinary java dev role ?

Because, even though ordinary pays less than senior, most people prefer to be employed than unemployed.

$some_paycheck > $no_paycheck

Is it that hard to find a job in US nowadays? I can have quite a few job offerings if I wish so and I'm far from highly skilled expert.
My thoughts exactly. As is common knowledge, Oracle simply doesn't have any other positions for people with deep knowledge of Java. Once this project was over, there just weren't any other options than to fire the whole team.
This is also why the best armies throughout history have always executed their own battalions after every successful battle. Read your history books, people!
Do you have any references ? Edit: I'm looking for book / article recommendations as I like reading history, and can't believe they executed their own battalions.
(comment deleted)
sarcasm, i guess - i interpret the statement as: why would you want to keep competent people around, even though their specialties lie in a different area? because competent people are usually also competent when employed in a slightly different sector; the mythical super-programmer is unlikely to depend on a specific language/technology anyway.

the comparison wasn't a very good one though: firing your army could lead to soldiers defecting to a possible future enemy, who would then be stronger in an attack.

so what does oracle gain by firing a couple of excellent java devs?

+ no wages paid - they could defect to a rivaling database company: unlikely - bad press: oh well, that's just another drop in the bucket - they lose a couple of experienced engineers that could have excelled in other projects

They might have been looking to downsize anyways, laying off a team that is no longer needed anymore is an easy way to do that, as sucky as it is.
I overheard a guy on a bus. It seems that he got axed, and that Oracle are slashing a rather wide cut over all java (jvm) development, not just Mission Control.
Agree. I mean what was the alternative here ? 1. Pay them to do nothing. 2. Pay them to do something unrelated to their deep expertise of Java.

By laying them off I think Oracle has made available a large pool of very good java experts for the rest of the companies out there and the best company will derive more mileage from them.

Of course this is assuming that this laying off is in accordance with their contract and Oracle has not put any unreasonable clause that prevents them from working for another company in similar position.

If any of those good people are facing financial hardship I am pretty sure they can ask for help and receive it from wider dev community.

Excellent point. I have exactly same thoughts when people claim open source projects are not real 'open source' when Google/Apple/Oracle etc dictate direction. The only way out is then either companies move their employees to work only on internal/closed projects or lay developers off if project is to become real open source.
Perhaps this is a good opportunity to highlight the OpenJ9 team (i.e there is another). IBM is investing in them and the project has been open-sourced under the Eclipse Foundation.

More use of OpenJ9 incentivizes more features, support and more devs being hired.

https://adoptopenjdk.net/?variant=openjdk8-openj9

> Hirt confirmed that of the JMC team, only three were left at Oracle, including himself.

... and then quotes Hirt's statement that, quite clearly, does not say that only three people were left, but merely names three people out of an unstated number possibly larger than three that were left.