Мне кажется, что в некотором роде Java - это то место, где C было некоторое время назад. Оба являются довольно минималистскими языками для своего времени, с относительно чистыми, простыми ядрами. (Я имею в виду основной язык здесь, не библиотеки.) Оба они/были чрезвычайно популярны. Оба являются/были lingua francas, с тоннами устаревшего кода. Оба из них/не имеют нескольких современных функций производительности, которые часто пропускают программисты с других языков. Оба они кажутся очень инерционно доминируемыми и медленными, чтобы адаптироваться к изменяющемуся миру.
Мне кажется, что было бы разумно создать Java++, который примерно является супермножеством Java, так как С++ - C. Такой язык попытается вывести Java из относительной стагнации, которую он претерпел, сломать назад только совместимость несколькими незначительными способами, только если это абсолютно необходимо, добавьте множество современных функций, которые отсутствуют в простой старой Java, и беспокоиться о стандартизации позже. К возможностям, которые могут быть хорошей идеей, относятся:
- Функции первого класса, делегаты.
- Затворы.
- Вывод статического типа, аналогичный
var
в С# илиauto
в D. - Перегрузка оператора.
- Структурирует как типы значений, отличные от классов, таких как С# и D.
- Свойства.
- Возможность игнорировать проверенные исключения.
- Возможность объявлять более одного общедоступного класса верхнего уровня в файле.
- Более мощные встроенные массивы, которые позволяют такие вещи, как добавление.
- Лучшие дженерики/реальные шаблоны.
- Что-то вроде динамического ключевого слова для С# 4.0, которое позволяет печатать на утине, когда это необходимо, в общем статическом языке.
- Поскольку Java - это прежде всего язык VM, возможно, некоторые хардкорные функции метапрограммирования, такие как генерация кода "на лету" для определенных вещей.
Как вы думаете, будет ли спрос на такой язык? Считаете ли вы, что такая вещь будет успешной?
Изменить: я не говорю о совместимости на уровне runtime/bytecode, я говорю о совместимости с Java на уровне источника. Кроме того, да, Java 7 может добавить некоторые из них, но похоже, что "официальный" процесс добавления функций в Java чрезвычайно консервативен. Реальным моментом является то, что идея разветвления Java в отрасли была сосредоточена на инновациях больше, чем стабильность/стандартизация.