Hacker News new | comments | show | ask | jobs | submit login

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.

>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

Is 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?

The 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.

Given 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.

Java 9 is scheduled for release in September[1]. How is that "not even close"?

[1] http://openjdk.java.net/projects/jdk9/

Well 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.

With 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.

Sure, features slip, but value types are coming in java 10 until they aren't.

As 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.

How 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)

Java emits invokeDynamic instructions as part of lambda execution.

technically, 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.

In 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.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact