Now it's about legal phrases and licensing terms instead of common sense all over again.
Now it's about legal phrases and licensing terms instead of common sense all over again.
Maybe the mechanism being used is wrong, but Android bastardized Java and as an Android developer I feel real damage has been done to the health of the Java ecosystem by having billions of devices run fragmented Java-but-not-Java.
Google has started to make it right with the switch to openJDK and Desugar, but in a lot of ways it’s too little very late.
Java on the server was not in decline, but Java on the desktop was declining, had declined. Applets were dead, very few success stories around Java Web Start. And the main three 'consumer' success stories for Java on the frontend were Limewire, Minecraft, and IntelliJ/Eclipse. As a consumer facing technology, Java was a complete failure. No sane person wanting to ship a commercial, consumer app to end users would consider Java as a first choice. I have been a Java developer from the day HotSpot Alpha was released, I say this as someone who loves the platform.
Personal Java failed. I worked for years on J2ME apps, Java on high end Nokia Phones, Java on Palm devices (Ghost VM), etc. All these platforms amounted to nada. Flash was far more widely used for front end user facing apps than Java. Ditto for Visual Basic.
The relevance of the Swing comment is the people complaining about the fragmentation of Java's write-once-run-anywhere promise, which was always more of a promise than a reality. If you want to make a viable mobile Java, you had to remove Swing, Java2D, CORBA, JMX, and a ton of other JDK libraries, which is exactly what Sun did with the various profiles as well. But once you do that, you have "fragmentation"
If Google had not produced Android, I can bet the leading platform today for mobile development that is not from Apple, would either be Xamarin based C#, or some scripting language like Lua or Python on top of a Linux widget toolkit. Java would not be in the mix at all. Or perhaps it would FlashMX sitting on top of Linux (ugh)
Larry finds plans to one of my old widgets and builds it into his awesome product and millions of people learn how to use the old version of my widget.
But my old widget kind of sucks and I’ve been releasing new widgets that fix a lot of issues.
Millions of people are gnashing their teeth over the old widget but Larry won’t update which version of my widget, he’s occasionally using parts of my new widget blueprint so now he’s creating Frankensteins of my widget that don’t even have a version.
But they’re still my widgets, Larry calling them by my brand name, people are conflating them with my widget, people making tools for my widget now have two diverging targets. People are saying my widget sucks because of issues I fixed ages ago.
It almost reminds me of J++ in a way, but with more subtlety.
Google should go Kotlin way, it will be better for everybody.
Perhaps, but is that a good thing if you're Oracle? Especially considering the fact that it's Google Java that's thriving and not Oracle Java.
But, with Android, Java got a boost that bled over to the server, and to a lesser extent, the desktop. It can be argued what the size of that boost was, and if it had any real impact (I would argue that it was not significant), but it was still a boost that they never would have had.
Anyway, that's the opinion of some random guy on the internet.
Around 2006, many companies were moving their server stacks from C++, considered old and stagnated, into Java application servers.
I took part in several such projects.
SavaJe OS was going to be the next generation when Android came into the scene.
Android first architecture diagrams look quite similar to the initial SavaJe OS presentations.
Sun buying SavaJe was pretty clearly a response to Android, so it's pretty disingenuous to say that Android killed SavaJe.
1999 - SavaJe is founded
2006 - Jasper S20 with SavaJe OS gets presented at Java ONE
2006 - End of the year, SavaJe fails to gain another round of investment, in spite of the successful reception at Java ONE
2007 - April, Sun public announcement to buy SavaJe assets
2007 - November, Open Handset Alliance is created
2008 - November, HTC Dream gets released as the very first Android device. The initial architecture diagrams have a certain resemblance with SavaJe ones.
The OS that came to be Android started in 2003, was initially based in JavaScript, had lots of time to inspire on Java stacks after they pivoted to Java and were eventually bought by Google.
Only after SavaJe was no longer around, it became public what Google was up to regarding their mobile OS strategy.
And Android is way more a rip off of Palm than SavaJe. All of the interesting things it does (the intent system, the capability based IPC, the battery friendly process lifecycle model, etc.) clearly descend from Palm (which isn't a surprise given that's where Dianne Hackborn cut her teeth).
Java was just starting to get revitalized after a long period of stagnation. Java 7 was a big deal and for a long time Android devs were limited to a weird amalgamation of Java 6 and a few Java 7 features.
Then Java 8 came with lots of great Stream goodies (and a lot more) while Android devs are still forced do to make due with unofficial backports or cutting off most Android devices (API 24) is the first to support them natively.
Android development gets mindshare for Android, not Java. The speed of the transition from Java to Kotlin shows how antsy devs were to get away from Java.
There are interesting things happening with Java, and they’re all outside of Android
Counterclaim: If it were not such a big legal hazzle, it would have been a lot more easy for Google to update to new Java versions fast on Android.
Apparently the risk was not so large they couldn’t do it if they’ve decided to now
From that you see that interest in Java is slowly declining since 2004, release of Android didn't even move it up a bit.
If we're using Google Trends as a proxy for what happened, then I'd say there's some truth to Android saving Java from its decline.
I understand the fragmentation issue, but I think it's a minor one and the net benefit for the Java ecosystem was much larger.
Also, Oracle is simply in the wrong trying to copyright APIs, and it has gotten a lot of hate from developers over that + all the other things they've done to Sun's previous projects that also made developers hate them.
With its developer-hostile attitude, is it any wonder developers are no longer interested in having anything to do with Oracle?
https://www.techrepublic.com/article/oracles-lack-of-develop...
Like what is this nonsense from the article:
> Oracle said its APIs are freely available to those who want to build applications for computers and mobile devices, but draws the line at anyone who wants to use them for a competing platform or to embed them in an electronic device.
That was the decision that lead to Android being "Java-but-not-Java". If they'd been granted a TCK license like they should've, they'd've implemented proper Java (confirmed by the TCK) and we'd be in exactly the same situation as if Google had used OpenJDK all along.
What functional changes accompanied Google's switch to OpenJDK? Doesn't Android still use its own incompatible VM?
Even 100% running with that, damaging an ecosystem isn't against the law. You could argue that Google damaged the Erlang ecosystem by not basing Android on Erlang. Ecosystems compete with each other all the time, and it's hard for one to grow without damaging another.
Actually my mistake, I assumed that you mean copyright, if you mean all laws in general, I feel there’s probably a way for Oracle to litigate, similar to how J++ went down
> I feel real damage has been done to the health of the Java ecosystem by having billions of devices run fragmented Java-but-not-Java
Your feelings are not a legal basis for punishment.
This just seems like a replay of J++. No one outside of Oracle or Google can determine the facts behind those statements you quoted, so the best outsiders like us can do is go based on “feelings” based on basic reasoning