14 ms·
Kotlin is exactly what Google needed to light a fire under Oracle's ass. They've been dragging their feet on new Java features for years. That, and the constant
by slackingoff2017 9y ago
Kotlin is exactly what Google needed to light a fire under Oracle's ass. They've been dragging their feet on new Java features for years. That, and the constant threat of Oracle closing Java back up as they're doing to MySQL.
The backlash against jigsaw may turn out to be justified. "Modularizing" the JVM would be exactly what you would expect as a first step to making some parts proprietary. If Oracle can wall off parts of the JVM completely they can claim GPL exemption for these parts and start closed source development of "enterprise" level features.
Kotlin will do a lot to derail attempts to make Java proprietary. Since it works fine on Java6 JVM's it sends a strong signal to Oracle that "we don't need you, if you piss us off we'll just fork the language".
- 0x0 9y agoAha, so Jigsaw is the JVM equivalent of Android's Google Play Services! :)
- slackingoff2017 9y agoI have no hard evidence of this but it seemed like the most logical explanation. Oracle won't let Jigsaw die after many years of debate, it's really important to them for some reason. On the other end, some people in the community seem willing to sacrifice their position on the community board to stop Jigsaw. There doesn't seem to be any consensus on exactly what makes Jigsaw bad and everyone seems to have their own laundry list of reasons. Even stranger, the use cases and utility of Jigsaw seem limited to just about everyone as the existing package system is quite good. So why is there so much pushing from both ends? Maybe something isn't being said because it would damage the relationships between Oracle and Java sponsors. It's one thing to say "I don't like this module system for these technical reasons". It's another thing entirely to say "I don't trust your company to keep important parts of the JVM on the GPL". A large java partner company accusing Oracle of closing off Java would make big waves in the community that would hurt both parties. Much better to just cause these initiatives to fail by political means.
- threeseed 9y agoThis is just baseless accusations and speculation. Jigsaw is important for everyone in the community (less so for Oracle actually) because it reduces the startup time and memory footprint of the JVM. This enables it to be used in more places and on more devices and benefits all of the JVM languages in one hit. The issues raised within the JSR group have been transparently raised and are purely technical and ideological. There could be a commercial aspect but really it's irrelevant. Red Hat, IBM etc do not depend on OSGi or other module systems for their commercial success. Any ulterior motives really don't make much sense.
- slackingoff2017 9y agoThe main entity with commercial interest in splitting up the JVM is Oracle. Jigsaw was originally just a plan to split up the runtime into components and the module aspects were added later. OpenJDK is now being used by Google on all Android devices and Oracle is probably furious that there's no way to extract licensing fees from this arrangement. To me that sounds like plenty of ulterior motive. OpenJdk has a linking exemption which would allow Oracle to develop closed source extensions to the JVM if it was built in a modularized way. Why else would Oracle continue to push something that's been so controversial for years? The only explanation I can think of is that it would allow them to put other more profitable plans into motion. It's definitely speculation but not totally baseless. Oracle has been increasingly aggressive about monetizing Java in the last few years. I don't think it's unreasonable for them to add language features to increase their ability to make money from Java licensing.
- adambatkin 9y agoModularizing the JVM has many benefits. Unfortunately, as part of that process they ended up with a much bigger scope than we had all anticipated. Enforcing a new [mandatory] module system for all third-party code - with significant compatibility concerns and very few benefits is another. Module systems sound great in theory. But we already have a bunch of existing ones, some simple and ad-hoc (like how we package things into JARs, publish to Maven Central or another artifact repository and load using regular old classloaders) and some are very formal and complex (OSGi or any of the big J2EE Application Servers).
- solomatov 9y agoThere's OSGi which does many things similar to jigsaw without the need to change anything in the runtime.
- paulddraper 9y agoOSGi certainly does change what needs to happen at runtime, in complicated and tricky ways.
- solomatov 9y agoIf you understand how class loaders work, it's neither complicated nor tricky.
- davidf18 9y agoWhy not code generate to LLVM which is superior to JVM. Why not make a JVM to LLVM converter as well as a JAVA to LLVM?
- throwaway7645 9y agoKotlin will soon support LLVM as a target in addition to the JVM. Probably not what you were getting at, but related.
- Asooka 9y agoBecause the JVM is much higher level, including object-oriented bytecode letting you jist say "invoke method X on this object", which can in turn be inlined by the JVM using appropriate guards. With LLVM, you'll be forced to "get virtual base class C, read address of method X, jump to location" on every single method call. Not to mention all the array bounds checking which the JVM can remove once it can prove that you're not going outside the bounds. Oh and when debugging you automatically get the unoptimized version of the code when stepping through methods, which I think LLVM can't do (dynamic deoptimization) Edit: the question is moot for Android, since it never used the JVM anyway, but the question is still sensible if you interpret it as "why use high level object oriented vm instead of low level vm"
- lokedhs 9y agoTo get an idea of how much work is involved in getting LLVM to run a high level language, take a look at Clasp, which does exactly this. It's not a small project and it's definitely not an easy thing to do. https://github.com/drmeister/clasp https://github.com/drmeister/clasp
- DannyBee 9y agoActually, LLVM can do dynamic deopt. It can do the guards. It can also remove the bounds checking for java code. (Azul made all of this work to make it their last tier java compiler). It didn't take that many people or that long. So yeah. (Though in compilers, hard work on existing thing beats shiny shiny almost all of the time)
- niftich 9y agoTo be fair, Oracle released Java 7 and especially Java 8 with a bunch of goodies and improvements that increased productivity and brought new paradigms to the language in an elegant way (considering it's still Java). But Google already de-facto forked the language a long time ago for use in Android, so these improvements were nowhere to be found in Android for a long time. The mention of Jigsaw is a red herring. Jigsaw, after long years of design-by-committee, suddenly devolved into a proxy war between enterprise players invested in existing module solutions. It's not about making parts proprietary at all; rather, it's about protecting existing investments in modularization ecosystems, the kinds of which form an important part of several companies' business models, all interspersed with legitimate technical and practical concerns about how to be prescriptive without being overly restrictive. The concern whether parts of a Java implementation can be made proprietary doesn't depend on the Jigsaw question, because there are several Java implementations today that are proprietary in part or whole, ranging from mediocre to marvellous, and they still manage to attract clientele. However, I do agree that Kotlin is a signal to Oracle. It's a signal that Google has given the Android programming question, and the Java question a good amount of thought, and may have found a way to slowly transition off of a technology whose use literally resulted in them being sued, outcome notwithstanding; with Kotlin they can leverage compatibility with the lowest levels of the Java platform (and thus, all existing Java-coded Android code), give people a modern language that offers niceties and high productivity -- all courtesy of a partner whose interests align well with those of Google, and with whom they have cooperated before. With Kotlin, Android can migrate off of Java without throwing away their existing investment in the body of code that happens to run on Android today, and do so in a way that makes it likely that developers will migrate voluntarily, vs. being forced.
- slackingoff2017 9y agoThe story is not as simple as it seems on the surface. Google used Apache Harmony which was discontinued because Oracle would not give Apache a TCK license. Without being able to run the Technology Compatibility Toolkit, Apache Harmony could not become a certified compatible Java implementation. This would greatly limit usage, so Apache pulled the plug on the project. Oracle killed Apache Harmony which is how Android got "stuck" at Java 6.
- guelo 9y agoAndroid has not incorporated most of Java 7 or 8's new features so I don't think the pace of Java features has anything to do with the Kotlin adoption.
- tylergetsay 9y agoThe upcoming release of Android studio/it's Gradle plugin support a lot of Java 8 features right out of the box. No need for plugins to patch things like lamdas
- the_trapper 9y agoHonestly though, I think this is really more a result of the Android SDK team being drug kicking and screaming by the competition. Solutions like React Native, Kotlin, Xamarin, RetroLambda, and of course Kotlin were starting to become very viable alternatives to the official SDK.
- umren 9y agobut, they all use official sdk ;-D
- the_trapper 9y ago> Kotlin is exactly what Google needed to light a fire under Oracle's ass. They've been dragging their feet on new Java features for years. The Google that still doesn't support all of Java 8 on Android? https://developer.android.com/studio/preview/features/java8-support.html https://developer.android.com/studio/preview/features/java8-... I think the Kotlin Android phenomenon is really more a result of Android developers being unhappy with Google's stewardship than they are with Oracle's.
- slackingoff2017 9y agoSee my other comment about Java 6 on Android. Basically Oracle killed Apache Harmony which was what Android was based on. Google is now running Oracle OpenJDK which is why new features are available.
- geodel 9y agoKotlin is such a small thing for Oracle or Google. None of them will care much about it. Kotin in Android land works only on JVM like DalvikVM thing which was part of dispute between Oracle and Google. Other API copyright dispute will also remain same because Google has not written grounds up new APIs in Kotlin for Android and planning to move everyone to that. I guess at this point many just do not understand the enormity of Java in industry and Android in particular. Kotlin is welcome addition to Android but thinking it can challenge Java is like Nerf toys can challenge Nuclear powers.
- StudentStuff 9y agoLook at JavaScript, taking tinker toys and using them in the enterprise. It is impressive what people are able to do with tools like this, kinda reminds me of https://xkcd.com/1833/ https://xkcd.com/1833/ and https://xkcd.com/1513/ https://xkcd.com/1513/ a bit!
- solomatov 9y agoThey can make proprietary distributions of JVM right away. I don't see how jigsaw can change it. As far as I understand, copyright for JVM belongs to Oracle, and they can distribute it with whatever license they want without any problem.
- _pmf_ 9y agoAs far as I know, they have always been providing a commercial JVM[0] with features that are not in the regular JVM. [0] http://www.oracle.com/technetwork/middleware/jrockit/overview/index.html http://www.oracle.com/technetwork/middleware/jrockit/overvie...
- bitmapbrother 9y agoOracle has been dragging their feet on adding new language features and their developer base is getting tired of the extremely long wait times. Having to wait until 2020, or longer, for values types, generic specialization and a proper FFI is ludicrous especially when you consider that these features could have arrived in Java 9 had it not been for the prioritization of Project Jigsaw. As for Oracle trying to close Java - any attempt to do so would be a disaster. IBM, Red Hat and other major players in the Java space would organize and fork the language.
- macspoofing 9y ago>If Oracle can wall off parts of the JVM completely they can claim GPL exemption for these parts and start closed source development of "enterprise" level features Why does Oracle need a GPL exemption on source code they own?
- pjmlp 9y agoAt enterprise Java shops it is business as usual. Plus you are forgetting that everything still runs on top of Java and the JVM, just the code on the actual devices does not.
- mrnaught 9y agoMore than Google or Oracle it is a win for JetBrains.
- chii 9y agojetbrain has already won when google chose to use their IDE as the IDE of choice for Android device! this is just icing
- danesparza 9y ago"what Google needed to light a fire under Oracle's ass" What a strange sentence. To be clear: Kotlin is created by Jetbrains (makers of IntelliJ and Resharper). And why in the world would Google want to light a fire under Oracle's ass? Perhaps I'm missing something...
- Kihashi 9y agoPart of the reason that Android doesn't support later Java versions is disagreements with Oracle. By supporting another language, Google is basically saying, "Play ball or we'll leave."