Будет ли JVM расширена для обработки дженериков? - PullRequest
4 голосов
/ 09 июля 2010

Что ты думаешь? Будет ли JVM когда-либо получать поддержку дженериков?

Вполне вероятно, что это потребует не только существенных изменений в JVM, но и в формате файла класса, но языки, работающие на виртуальной машине, извлекут из этого большую пользу.

Редактировать: Язык Java на самом деле поддерживает некоторый тип обобщений как функцию времени компиляции, которая добавляет некоторые приведения к байт-коду, которые люди должны были добавлять вручную ранее.

Решение не вносить изменения в JVM или спецификацию файла класса было хорошо понято в те времена, потому что они не хотели нарушать обратную совместимость, а Java была единственным важным языком для JVM в наши дни.

Хотя это решение могло бы быть подходящим для языка Java, оно значительно уменьшило степень свободы, которую другие языки должны выбирать, как они хотят реализовывать дженерики на ВМ.

Учитывая, что Sun / Oracle объявили JVM более дружественным местом для альтернативных языков, будут ли они на самом деле делать то, что обещали, или считают, что достаточно дешевого добавления InvokeDynamic?

1 Ответ

4 голосов
/ 09 июля 2010

На мой взгляд это маловероятно.

Было бы слишком разрушительным, чтобы применить эти изменения к языку Java. Совместимость лингвистики и времени выполнения с двумя разными моделями обобщений станет кошмаром для дизайнеров.

И без того, чтобы Java вносила изменения в JVM, трудно понять, как Oracle оправдал / мог бы оправдать выполнение требуемой работы.

Единственные возможности, которые я вижу:

  • Oracle решает разработать язык-преемник Java (который не имеет обратной совместимости), который делает дженерики, замыкания и целый ряд вещей лучше. Это было бы действительно смелым деловым решением, и я не думаю, что Oracle способен на это.

  • Группа других людей / компаний собирается вместе и разветвляет спецификацию JVM и кодовую базу. Это также смелый шаг, чтобы сделать.

Я не думаю, что Oracle, скорее всего, внесет существенные изменения в JVM просто для поддержки языков, в которых они не заинтересованы. контроль над тем, что делать инженерным типам, чем в умирающие солнечные дни. (Эй ... мы могли бы начать целую тему Джека Вэнса здесь: -)

...