Time to look beyond Oracle's JDK
blog.joda.org
blog.joda.org
After the claims Oracle made during the Google trial (such as APIs and method signatures being patent-able), it is clear that one can't work on the Java platform without infringing Oracle's IP. If Oracle doesn't sue you now, it can sue you when it makes financial sense to do so.
.Net looks like a much better alternative, with a patent pledge and ECMA standardization. Although to be fair, Microsoft is still a supporter of patent lobbies.
Next time I want to develop a frontend system, I think I'll try reasonml.
If you're thinking about life without Java, Typescript is interesting. Is it perfect? No, but it's evolving quickly, has traction, and the ecosystem is pretty good.
That's a pretty extreme interpretation. Most people aren't trying to ship Java-compatible runtimes, as Google did,
If you're big enough, they will come after you. I think it's perfectly rational - and i'd argue smart - to cut them off early before it's too late.
"Triangulation 245: James Gosling"
https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...
If IBM had not given up to buy Sun, I am pretty sure they would have done likewise.
Plenty of JVM vendors are selling their versions without getting into trouble by playing by the rules.
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...
Google had the option to buy Sun after helping to their downfall, they have chosen not to spend the money to own Java. Now they get to spend on lawyers instead.
People have certainly learnt their lessons that the stewards cannot be trusted - they could get bought out as with Sun or their management could change any time. How users rejected Facebook's React License speaks of better awareness on these issues and is welcome.
What you're looking for goes beyond any traditional notion of free software, in the Stallmanist sense.
I seem to be missing a historical bit there.
Long story short, Oracle bought java and it's back to square one, with layers and court this time.
https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...
Good for them. The parent suggests we should not stick to a platform that imposes such rules.
Copyrightable.
> it is clear that one can't work on the Java platform without infringing Oracle's IP.
That's not at all clear. After the third time Oracle v. Google gets ruled on by the trial court, it will undoubtedly be appealed to the Federal Circuit again. Whatever happens there, it is likely at least Google (given how the Federal Circuit has constrained what must happen at the District Court in the prior Appeal) and possibly Oracle will attempt an appeal to the Supreme Court. After that (whether the Supreme Court hears the case or not, but especially if they do), then what the law is in this area may be clear. Until then, all that is clear is what the Federal Circuit’s view of Ninth Circuit case law is, which as precedent is binding on no other court (any court bound by Ninth Circuit case law is bound by the actual case law of the Circuit, not the Federal Circuit’s interpretation of it) and, for litigants, has predictive power only for cases with patent claims that also raise similar copyright issues, and which arise out of districts in the Ninth Circuit.
And what you are talking about is just ridiculous. There are very few real world (if any) Scala projects that don't rely on least some Java based libraries. Either directly or through transitive dependencies.
The versions mentioned here are strict Java compatible in that they follow a well-defined standard and an elaborate test suite. Quite different from Java Android.
Its only been a couple of years that Microsoft has been behaving "better". I suggest you read up on the history of Java, Android, Google and Microsoft because you also seem to be unaware what Android Oracle vs Google was really about; Its wasn't about patents, it was about copyright.
You know what they say about history: Those who don't know it are doomed to repeat it.
So? Oracle has never behaved good, so there's that. Do you expect a MS regression?
Besides MS has made some concrete efforts to clear things, like a pledge to not sue over patents, an ECMA standard, etc.
>I suggest you read up on the history of Java, Android, Google and Microsoft because you also seem to be unaware what Android Oracle vs Google was really about; Its wasn't about patents, it was about copyright.
Same difference if Oracle ends up suing you for recreating Java APIs.
Not at all. In a copyright case, you can argue fair use, as Google did.
On top of that, while the promise mentions "Microsoft-owned or Microsoft-controlled patents" it is very specific about who is promising not to sue - Microsoft only, not its partners, subsidiaries or other affiliated entities. So they still have plenty of room to arrange for opponents to be sued.
[1] https://msdn.microsoft.com/en-us/openspecifications/dn646765
Comparing evils is always hard. Oracle is definitely not my favourite company. However today this was posted about Microsoft: https://www.ghacks.net/2018/09/12/microsoft-intercepting-fir...
This Google Trends search shows .NET Core as leading since February 2017 [1]
[1] https://trends.google.fi/trends/explore?date=today%205-y&q=....
https://www.indeed.com/q-erlang-jobs.html 83 erlang jobs
https://www.indeed.com/jobs?q=.net&l= 56,630 .NET jobs
My world is pretty much divided between Java and .NET, with a sprinkle of C++.
https://blogs.msdn.microsoft.com/webdev/2018/04/17/library-m...
It explicitly states itself as being a way to "simply [want to] acquire a couple of files" I don't get the connection you're trying to make.
" - If your project does not require additional tools (like Node, npm, Gulp, Grunt, WebPack, etc) and you simply want to acquire a couple of files, then LibMan might be for you.
- LibMan lets you specify exactly where the files should be placed inside your project. (No additional build tasks or manual file copying required!)
- LibMan provides the benefit of a much smaller footprint in your web project as it only downloads the files you need. "
Basically the way to avoid touching node or anything related to it.
So why not Unix instead of *VM? It's been stable for quite some time, and offers massively better tools than these two alternatives.
However I wasn't expecting the same guy to actually promote .net, which is exactly a Java clone (created soon after the justice told Microsoft to stop trying to harm Java with this J++ thing) which only ran on Windows. It still does, because .net core is just a subset of the entire platform. But it's got a big corporation behind dictating its future development which poses the same threats as Oracle.
So given nobody can predict the future right now, I think I'd better keep using the long time open source, community focused and cross-platform alternative, which happens to be Java.
https://medium.com/graalvm/compiling-scala-faster-with-graal...
What do you mean by non-community?
Graal is developed by a large community of people at Oracle, other companies and universities.
Who owns it. Sure, we all use stuff owned by large companies, we just have to pick and choose, and I avoid Oracle. As a dev community I wish we could avoid wholly owned Oracle software to make a statement about their business practices, but I understand that stance is unreasonable for many.
And I say this as a huge fan of all of your work on Graal and JRuby and a proponent of the Java platform.
Contributing to Graal isn't just getting a commit into a GPLd project. It requires you to allow Oracle to ship it in GraalVM EE.
I have no problem with dual lisenced code nor begrudge the business model, but this is distictly against the spirit of the GPL.
I think the whole idea of "We need to replace Java with [Insert Language]" is much more complicated topic than just saying "X is free , Java is owned by Oracle".
Even is this is true , Java is by far one of the most performant programming language that exist on earth.
People just don't realize the hundreds of millions of dollars that went into the JVM and the JDK.
Even if they are great alternatives like Go or .NET , they either come with huge limitations in performance or their ecosystem.
Per say , finding JVM developers isn't that hard, regardless of the geography. However , finding Go developers outside of the Bay Area ? Good luck with that.
The issue with Patent on the JVM is well know and there is very little to nothing that we can do about it.
The ecosystem is a much better argument since it’s certainly massive, as is finding developers, although quality varies wildly in both cases.
It ended up being about copyrights and whether or not you can copyright APIs.
It's unfortunate that Oracle chose to break the long-standing convention on this topic, however, it's not entirely surprising that eventually someone did. It's not at all clear why APIs should not be copyrightable, given the intent and wording of copyright laws and treaties - it's merely a convenient collective belief the software industry has had. It's now being tested in court and apparently splitting judges both ways.
I would also note that you always take such risks when building on platforms. The web is basically driven by Google these days, with other browser vendors either struggling to keep up or just giving up entirely (see, Safari) creating a new "works best in IE" era. And Google's stewardship of the web is hardly uncontroversial. Lots of obvious, major technical problems go unresolved for years or decades. AMP seems to be upsetting a lot of people. And of course there's not much stability: the web guys don't seem able to pick a direction and stick with it (e.g. web components/shadow dom stuff).
Government and government-funded orgs practically insist on it.
Look at the tech founded enterprises, they do not go the tradition enterprise software route. Why? Their leadership came from a developer background and not an MBA one.
I have a legacy storage system only accessible through exactly Java 6u31 32-bit on Windows 7, of course I want to replace that but instead it’s cheaper to keep and maintain than to replace.
edit and I think this must be a conscious strategy on the part of any vendor: make maintenance just slightly cheaper than replacement
If however you've found something new like a feature that's so buggy it is actually completely defect, you're in for an ordeal of a few months. Simply getting a dev to look at your bug takes a month. In that month, you'll answer every day questions like what OS you're on ('As I told your past 10 colleagues, We see it under red hat linux version X1 X2 X3, and under windows Y1 and Y2, and under HPUX Z. Yes, this is a pristine OS install with a pristine JVM. Yes, our support contract covers this. There is a test case in the bug report, run it on your computer and see yourself'). They'll call you in the middle of the night. Then call you again 12 hours later because you're not allowed to respond to their questions outside business hours so please tell us again and next time read your contract.
If you survive this, and you provide a perfect example source code fragment of 100 lines, and you decompile their own code, point at the bug, and suggest a less insane way to write that code, you'll get a fix. This fix seems to work for up to a day, when you notice your performance is less than a sixt from what it was. Then you notice how they ignored your suggestion, did something even less sane than the original code, and managed to break something else you hadn't even noticed before.
Call again, insist they do not start a new ticket unless you want to redo that original month. A few minutes later they call back and try to sell you six times the hardware you have as a workaround, and promise a 10% price reduction for the first year. Do not swear at any point, this will immediately end the phone call and you'll have to navigate their insane phone menu again and get a new lesson in Indian English from a guy who swears he is speaking your language perfectly right now (which is neither English or anything spoken in India, afaik).
After a few rounds of this, they produce a working patch. You confirm it works and are promptly forbidden to use it ever again. They will provide you 'soon' with an official version of the patch, which has been vetted against their secure development lifecycle, legal team, and god knows what else. Actually applying the current patch so your users stop screaming will end your support contract.
It takes in total a bit more than 3 months before the final patch is delivered. At that point:
1) management congratulates themselves for having bought support.
2) Your colleagues however are in awe about you've got actually managed to get an enterprise vendor th actually fix a bug. Turns out they have tons and tons of bugs and spend their days inventing horrible workarounds as they gave up getting them fixed long ago.
3) Contractors from the enterprise vendor, working on another project in your company will turn the feature off, as they know for sure it can't work. If you claim to have a patch and it is already running on their servers, they refuse to use it and turn the feature off once more. Not using the feature costs a small fortune in network overhead, BTW. If you enable it, the next coontractor entering the building will disable it instantly, even if your config file has this story documented.
Anyway, thats my experience. YMMV.
If you have paid support, a small team of engineers will dedicate their time to fix the bug for you and provide you with a patch, so you can move on. The patch can sometimes be specific for your platform and situation.
This is particularly true if you are stuck with older JDK version and cannot move forward for various reasons.
Redhat is skipping the minor Java versions, so it's Icedtea/OpenJDK build has Java 8, and the next version will have Java 11. This is what I'll be using on Linux.
What about Eclipse?
Love it or loathe it, it's certainly been successful.
This sounds harsh, and I don't mean to be, but only time will tell how OpenJDK/Open J9 fares.
https://hub.docker.com/_/openjdk/
I assume so since they're maintained by the Docker community in the same way Debain or Ubuntu may maintain their package trees.
I must say that Oracle makes me hesitant to want to use Java in anything I'd make in my free time.
I hope Scala with Scala native continues to thrive, and for any additional pet projects not in Scala, frankly Python sounds pretty appealing to me as someone who eschews dynamic typing. 3.6 seems to have added some type inference, and it's popularity is up there with Java/C++/JS... Rust might be an option too.
Not public? Why on earth not?
I'm how sure how I feel about it with the JRE. I have old open source apps on Scala 2.11/SBT 0.13 that are already experience dependency rot. :-/ It's going to be more difficult too since deprecated stuff is finally getting removed from Java.
I'm curious to see where we'll be a few years from now.
Thanks to Java modules, jlinker and packager tool, the idea is that you just distribute everything together.
https://docs.oracle.com/javase/10/tools/jlink.htm#JSWOR- GUID-CECAC52B-CFEE-46CB-8166-F17A8E9280E9
"Self-Contained Application Packaging"
https://docs.oracle.com/javase/10/deploy/self-contained-appl...
"JLINK in Java-9"
https://blog.knoldus.com/jlink-in-java-9/
"Using Java 9 Modularization to Ship Zero-Dependency Native Apps"
https://steveperkins.com/using-java-9-modularization-to-ship...
We have done it multiple times.
As for Spring, I never used it in anger.
Our Java Web projects usually are built on top of JEE stacks or Jersey.
https://blogs.oracle.com/java-platform-group/understanding-t...
We have done it multiple times.
http://hg.openjdk.java.net/jmc/jmc/file/31576d187ec3/license...
I get mixed messages on OpenJFX on how much of JavaFX has been open sourced.
OpenJDK is open source (GPL2 + classpath exception).
"Java" otoh is a trademark.