Со временем клиент будет все больше нуждаться в обновлении из-за таких вещей, как:
- Java 5 не поддерживается на каком-либо новом оборудовании или платформе операционной системы,
- низкая производительность по сравнению с новыми версиями Java,
- большие затраты на кодирование и тестирование по сравнению с более новыми выпусками Java; например из-за "непроходимости" старых API, невозможности использования потоков и т. д.
- увеличение стоимости поддержки поставщика 1 : вам нужно заплатить за поддержку , чтобы получить исправления безопасности, и чем старше версия, тем больше вы платите (я думаю)
- сложность удержания разработчиков Java для работы над проектами Java 5,
- сторонние библиотеки Java больше не разрабатываются и не поддерживаются для Java 5,
- вопросы соблюдения; например https://stackoverflow.com/a/3434063/139985
- и т. Д.
Но чем дольше клиент откладывает обновление, тем больше будет задействован переход на версию Java и тем больше работы (и, возможно, боль) будет.
И чем дольше клиент задерживается, тем больше совокупные затраты на такие вещи, как выделение оборудования, затраты на разработку, отложенные проекты и т. Д.
Для иллюстрации предположим, что вы ждали 10 лет, чтобы перейти с Java 1.1 на Java 1.2. Это означало бы, что вы потратили бы дополнительные 10 лет на разработку приложений, использующих Hashtable
и Vector
в качестве основных структур данных. И когда вы наконец обновитесь, у вас будет дополнительный 10-летний «унаследованный» код, который будет сложнее поддерживать, чем если бы он был написан с использованием коллекций Java 1.2.
Но суть в том, что если клиент настаивает на том, чтобы остаться на старой версии Java, вам нужно либо выполнить их пожелания (и убедиться, что вы переносите дополнительные расходы!), Либо найти способ выйти Ваши договорные отношения с клиентом.
1 - Даты окончания срока службы / окончания обслуживания варьируются от одного поставщика к другому, но AFAIK все основные поставщики уже имеют EOL'd Java 5. Действительно, у Oracle есть EOL Java 6 и Java 7.