3 ms·
This title is hugely misleading. The value types specification is for JVM, the platform, not Java 10. You can compile a large number of source languages to run
by nullnilvoid 9y ago
This title is hugely misleading. The value types specification is for JVM, the platform, not Java 10. You can compile a large number of source languages to run on JVM, such as Java, Scala, Closure, Groovy, Kotlin, Javascript etc. just to name a few.
- WatchDog 9y agoIs it really misleading though? Does anyone with the slightest familiarity with JVM languages not understand that each major Java language version is also associated with a major JVM version?
- nullnilvoid 9y agoGiven that we are not even close to the official release of Java 9 and whether the proposal to JVM specification will be accepted and implemented for which version, it is largely inaccurate to title the article "Java 10 - Specification for Value Types" for a JVM change proposal. Besides, interchangeably referring to JVM and Java reflects the ignorance about the whole ecosystem of JVM languages.
- WatchDog 9y agoWell the specification explicitly talks about version 54 class files, which it then goes on to state "Version 54.1 class files are intended to be supported only by implementations of Java SE 10.". It's not going to land with Java SE 9.
- nullnilvoid 9y agoWith all the prolonged delays of features in Java, whether it is Java 10, 11, or 12 is still in question. As an instance, Jigsaw was proposed to be a driving feature of Java 7, and then delayed to Java 8 and even Java 9. And recently it was voted "No" by IBM, Red Hat etc.
- WatchDog 9y agoSure, features slip, but value types are coming in java 10 until they aren't.
- bitmapbrother 9y agohttps://developer.ibm.com/javasdk/2017/05/26/building-consensus-jsr-376-java-platform-module-system/ https://developer.ibm.com/javasdk/2017/05/26/building-consen...
- notamy 9y agoJava 9 is scheduled for release in September[1]. How is that "not even close"? [1] http://openjdk.java.net/projects/jdk9/ http://openjdk.java.net/projects/jdk9/
- _old_dude_ 9y agoAs far as i've understood, i'm a lurker on the valhalla mailing list, the current plan is to release a MVP containing only the implementation of value types in the VM at the same time as the 9.1 release so by the end of Q1 2018.
- aardvark179 9y agoThe important thing here is that this minimal value types specification is not aimed at making Java language level changes, or many of the Java runtime changes that would be expected of other VM features such as invokeDynamic that were not exposed in the Java language. Those still require a lot of work round the Java type system and the standard library. What this does provide is a mechanism by which the use of value types can be experimented with by library and language authors. I believe these value type features are intended to be optional and are not guaranteed to remain unchanged at future JVM releases.
- deleted 9y ago[deleted]
- desdiv 9y ago>Version 54.1 class files are intended to be supported only by implementations of Java SE 10 Java SE 10, the platform, will support value types. One can interpret the ambiguous term "Java 10" as either "Java 10 the language" or "Java 10 the platform". Applying the principle of charity[0] will yield the right interpretation in this case. [0] https://en.wikipedia.org/wiki/Principle_of_charity https://en.wikipedia.org/wiki/Principle_of_charity
- xxs 9y agoHow misleading? Pretty much everything available in Java is available directly in the bytecode. Java compiles to bytecode, any JVM based language can use utilize the same bytecode(s). There is even more: invokeDynamic, Java (the language) doesn't use it in its compiled bytecode and the JVM instruction is targeted at JVM based languages. (InvokeDynamic is still available from Java via java.lang.invoke)
- jnordwick 9y agoJava emits invokeDynamic instructions as part of lambda execution.
- _old_dude_ 9y agotechnically, the lambda creation, not it's execution. It's also used for string concatenation in Java 9. while invokedynamic was introduced to enhance the support of dynamic languages on the JVM, invokedynamic is now used as a kind of macro instruction to avoid to add new instructions in the bytecode set when the instruction can be decomposed in a set of already existing instructions.
- jnordwick 9y agoIn Java 9 string concatenation it isn't for macro use but to allow the run time to make the final determination as to how it is going to actually do the joining since there are now multiple strategies available to process the strings and possibly user overrideable behavior to incorporate.