2010-07-08 6 views
3

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

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

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

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

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

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

+0

Вы хотите удалить тип erasure и использовать общие типы напрямую? – Bruno

+2

_'but языки, работающие на виртуальной машине, в значительной степени выиграют от этого. Как именно? –

+0

Я думал, что Java уже поддерживает дженерики. –

ответ

4

По-моему это маловероятно.

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

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

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

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

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

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

+0

Я бы не предложил, чтобы они применили эти изменения к языку Java. На самом деле мне все равно, что происходит с Java в эти дни. Я ожидаю, что Oracle добавит эти возможности в JVM в будущем и откажется от своего мнения о том, «если Java не нуждается в этом, нам это не интересно». Но на данный момент похоже, что Oracle доволен тем, что Java становится новым COBOL и JVM новым «COBOL бегуном». – soc

+0

Но является ли Oracle реальным бизнесом/ресурсами за ** ** ** на основе JVM-языка помимо Java? Помните, что сейчас Oracle ... и Oracle гораздо больше сосредоточена на том, чтобы делать то, что сделает их деньгами. –

+0

Нет. Они даже не прикладывают реальных усилий для бизнеса Java. В настоящее время их действия мало чем жалкие: Закрытие без типов функций теперь (причина, по которой они были первоначально предложены), автор нового API Дата/Время, запрашивающего помощь, потому что никто в Oracle, похоже, не заботится, будет ли это сделано вовремя , многие опытные люди покидают компанию, смешные предложения о примитивах в дженериках и методах продления (или «защитника») и т. д. ... Весь процесс выглядит таким дилетантским на данный момент, это больно наблюдать за ним. – soc

Смежные вопросы