Почему некоторые платформы отказываются от поддержки древних версий Java?

Пока я сижу здесь, модифицируя PircBot, я только что заметил, что весь бэкэнд был написан для поддержки Java 1.1. Он имеет собственную реализацию очереди, использует хеш-таблицы, пользовательские реализации производителя / потребителя, основанные на сигналах wait() и notify() и т. Д. Даже в Commons-lang отсутствует какая-либо поддержка таких вещей, которые Java 5 вносит в таблицу, например обобщенных элементов. Вы можете взять множество других примеров очень популярных фреймворков, которые изо всех сил стараются поддерживать 1.1.

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

Теперь я могу частично понять людей, все еще использующих Java 1.5, но 1.1? Если вы выполняете что-либо до этого, то вы явно не обновляете JVM из-за глупых политик / боитесь неизвестных, и поэтому не собираетесь обновляться до более новых версий программного обеспечения. Так почему же мы до сих пор их поддерживаем?

Если вы пишете новый фреймворк, вы должны поддерживать что-то <1,5? Если вы попытаетесь разветвить существующие фреймворки, обновив его до 1.5, затем поговорите с сопровождающими об его использовании?

Гораздо более конкретные обсуждения (это касается поддержки в целом): есть ли еще веские основания для поддержки JDK 1.4?

Отказ от поддержки JRE 1.3

4 ответа

Решение

Потому что это легко! От Java 1.1 до Java 1.4 были представлены только крошечные языковые функции (strictfp например). Так зачем ограничивать себя, если вам не нужно. Так скажем, вы пишете StringUtil класс или вы разбираете файлы Word, тогда это просто не имеет значения. Просто начиная с Java 5, у вас есть улучшение языка и с Java 1.0 до Java 1.1, конечно, внутренние классы.

Это только для языка и не столько для библиотек. Есть интересные дополнения, конечно.

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

Обратная совместимость?

Изменение уровня поддержки JVM должно дать основную версию. Т.е. версия 1.x идет в 2.x, чтобы указать это.

Также я считаю, что прочитал, что для того, чтобы получить наибольшее покрытие в мобильных телефонах, вам нужно выбрать 1.1. Это может быть старым, хотя.

Я знаю, по крайней мере, одно коммерческое предприятие, которое решило, что никогда не выйдет за пределы 1.1, чтобы они могли работать вечно как на java JVMS, так и.NET с одним и тем же исходным кодом.

Другие вопросы по тегам