Міркування щодо версії Java для запуску у виробництві


14

Деякі люди користуються надзвичайними кромками технологій - оновлюючи день того, що щось оновлюється. У виробництві це не так доречно.

Дослідження того, чи готова до виробництва поточна (Java 7) версія, створює значну кількість старого матеріалу, який більше не може бути правильним (на момент написання цього Java 7 вже півтора року, що здається досить довгим) .

Які міркування потрібно зробити, щоб визначити, чи доцільно оновити виробниче середовище до більш пізньої версії Java?


Навіть якби це було, будь-яка стороння бібліотека / плагін, яка використовується (якщо така є) у згаданому додатку, також повинна бути в порядку з Java 7 (ризикований бізнес).
Арін

2
Так. Єдине питання, з яким я зіткнувся, - це те, що я не зміг встановити Java 7 на Red Hat Enterprise Linux 4, але тоді ця ОС застаріла. Я використовую його у виробництві скрізь уже близько 6 місяців, без перешкод.
GlenPeterson

@arin: не з Java, не дуже. Це, як правило, смішно сумісне вниз.
Майкл Боргвардт

@MichaelBorgwardt теоретично я згоден з вами, але в тестовому середовищі я бачив, що сторонні бібліотеки спричиняють помилкову поведінку / збої в нашому тестовому коді навіть після оновлення до оновлення невеликої версії.
Арін

@arin: впевнений, це може статися. Але на мій досвід це так рідко, що є менше причин боятися оновлення Java, ніж змінити майже все інше (особливо власний код).
Майкл Боргвардт

Відповіді:


11

Перше запитання - "Чи підтримується версія Java на машині?" Під час оновлення JRE - це одне, можливо, основна ОС не підтримується, запускаючи нову версію Java (підтримувані сертифікати та контракти на підтримку тощо), що люблять мати багато корпоративних середовищ).

Багато виробничих середовищ Java фактично працюють над сервером додатків . Це був би наступний розгляд. Порівняння у Вікіпедії серверів додатків Java EE показує, яка версія Java EE підтримується. Це можна побачити в огляді сумісності JavaEE Oracle . Тестована конфігурація для JBoss Enterprise Application Platform 6 відповідає Java SE 6.0 оновлення 6u30. Оновлення Java 6.0 оновлення 6u30 Java SE також є тестованою конфігурацією для сервера додатків JBoss 7.1.0 Final . Вони можуть працювати в Java 7, але вони не перевірені конфігурації.

Розширюючись на сервері прикладних програм, існують інструменти аналізу коду в реальному часі , які використовуються для налагодження після факту. Всезнаючий налагоджувач (див. Також) та Dynatrace - два приклади цього. Ці програми працюють за допомогою інструменталізації (модифікації) байтового коду в реальному часі Java, який працює, щоб звітувати йому. Оскільки ці програми працюють, змінюючи код байта, якщо байт-код зміниться таким чином, з яким вони не здатні працювати (наприклад, у новому JRE), вони не працюватимуть.

Далі по лінії розташовані рамки . Одним із прикладів цього є JAXB, який постачається з java та Spring, який використовує його. Перехід на Java 7 оновив JAXB, який генерував код, несумісний з деякими рамками (що вимагає їх оновлення, і їх залежності потрібно буде оновити ...).

Інструменти побудови - наступні у списку. Потрібно переконатися, що середовище збирання використовує належну версію Java. Написання коду для Java 7, але не оновлення версії, яку використовують Maven або Ant, тоді призведе до проблем. Бувають випадки, коли самі інструменти збирання сильно прив’язані до однієї версії з певними плагінами.

Інструменти для тестування . Такі речі, як PMD, findbugs та checkstyle, можливо, не розпізнають нові структури в новій версії Java - вони можуть сильно плутатись із заявами перемикання рядків або складними перехопленнями. Інструменти, що потрапляють у прилади, такі як покриття коду, можуть не працювати в новому JVM. У контексті Java 7 Cobertura та Emma не були оновлені до нового JRE (знову ж, ці програми змінюють байт-код, щоб побачити, який код запускається, а який ні) (див. Бібліотеки покриття відкритого коду для jdk7 ). Це може зажадати змін сценаріїв збірки, щоб перейти з одного на інший.

Потім є IDE . Потрібно було б оновити IDE до версії, яка знає про нові структури мови. Оголошення Eclipse про підтримку Java 7 показує ці проблеми.

Останнє і, звичайно, не в останню чергу - розробник . Розробник повинен написати новий код і знати, як можна реструктурувати код. Переходячи від Java 1.4 до 1.5, були введені шаблони та примітки, і розробникам знадобився час, щоб увійти в умову нових доступних структур. Так само колекції переробляються в 1.2 і відводять розробників від використання HashTable та Vector. Оновлення версії повинно супроводжуватися певним навчанням у нових мовних структурах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.