프로덕션에서 실행할 Java 버전에 대한 고려 사항


14

어떤 사람들은 최신 기술을 사용하여 무언가가 업데이트되는 날을 업데이트합니다. 프로덕션 환경에서는 적절하지 않습니다.

현재 (Java 7) 버전이 생산 준비가되었는지에 대한 연구는 더 이상 정확하지 않을 수있는 많은 양의 오래된 자료를 생성합니다 (이 글을 쓰는 시점에서 Java 7은 1 년 반 동안 오래 사용되어 왔습니다) .

프로덕션 환경을 이후 버전의 Java로 업그레이드하는 것이 적절한 지 확인하기 위해 고려해야 할 사항은 무엇입니까?


해당 응용 프로그램에서 사용 된 타사 라이브러리 / 플러그인 (있는 경우)도 Java 7에서도 문제가 없어야합니다 (위험한 비즈니스).
arin

2
예. 내가 겪은 유일한 문제는 Red Hat Enterprise Linux 4에서 Java 7을 설치할 수 없지만 OS가 더 이상 사용되지 않는다는 것입니다. 나는 지금까지 약 6 개월 동안 다른 곳에서도 프로덕션 환경에서 사용하고 있습니다.
GlenPeterson

@arin : Java가 아니라 실제로는 아닙니다. 어리석게 하향 호환되는 경향이 있습니다.
Michael Borgwardt 2012 년

이론적으로 @MichaelBorgwardt 동의하지만 테스트 환경에서 소규모 버전으로 업데이트 한 후에도 타사 라이브러리가 테스트 코드에서 비정상적인 동작 / 충돌을 일으키는 것을 보았습니다.
arin

@arin : 물론 일어날 수 있습니다. 그러나 내 경험상 거의 다른 것 (특히 자신의 코드)을 변경하는 것보다 Java를 업데이트하는 것을 두려워 할 이유가 거의 없습니다.
Michael Borgwardt 2012 년

답변:


11

첫 번째 질문은 "컴퓨터에서 Java 버전이 지원됩니까?"입니다. JRE를 업데이트하는 것이 한 가지 일이지만, 기본 버전의 OS는 새로운 버전의 Java (지원되는 인증 및 지원 계약 등 많은 엔터프라이즈 환경에서 선호하는)를 실행하는 것이 지원되지 않을 수 있습니다.

많은 Java 프로덕션 환경이 실제로 응용 프로그램 서버 에서 실행되고 있습니다. 이것이 다음 고려 사항이 될 것입니다. Java EE App Server의 Wikipedia 비교 는 지원되는 Java EE 버전을 보여줍니다. 이것은 Oracle의 JavaEE 호환성 개요 에서 자세히 볼 수 있습니다 . JBoss Enterprise Application Platform 6 의 테스트 구성 은 Java SE 6.0 업데이트 6u30에 대한 것입니다. Java SE 6.0 업데이트 6u30은 또한 JBoss Application Server 7.1.0 Final 의 테스트 구성입니다 . Java 7에서는 작동하지만 테스트 된 구성은 아닙니다.

응용 프로그램 서버를 확장 하면 사실 후에 디버그를 수행하는 데 사용되는 라이브 코드 분석 도구가 있습니다. Omniscient Debugger (참조) 와 Dynatrace가 이에 대한 두 가지 예입니다. 이러한 응용 프로그램은 Java의 라이브 바이트 코드를 계측 (수정)하여 다시보고합니다. 이러한 응용 프로그램은 바이트 코드를 수정하여 작동하므로 바이트 코드가 작업 할 수없는 방식으로 변경되면 (예 : 새 JRE에서) 작동하지 않습니다.

다음 줄은 프레임 워크 입니다. 이것의 한 예는 java와 함께 제공되는 JAXB와 그것을 사용하는 Spring입니다. Java 7로 변경하면 일부 프레임 워크와 호환되지 않는 코드가 생성 된 JAXB가 업데이트되었습니다 (업데이트되어야하고 종속성이 업데이트되어야 함).

빌드 도구 는 다음 목록에 있습니다. 빌드 환경이 올바른 버전의 Java를 사용하고 있는지 확인해야합니다. Java 7 용 코드를 작성하지만 Maven 또는 Ant가 사용하는 버전을 업데이트하지 않으면 문제가 발생할 수 있습니다. 빌드 도구 자체가 특정 플러그인을 사용하는 하나의 버전과 밀접한 관련이있는 경우가 있습니다.

도구를 테스트 . PMD, findbugs 및 checkstyle과 같은 것은 새 버전의 Java에서 새 구조를 인식하지 못할 수 있습니다. 이는 문자열 스위치 명령문 또는 복합 캐치와 매우 혼동 될 수 있습니다. 코드 범위와 같은 계측에 사용되는 도구는 새 JVM에서 작동하지 않을 수 있습니다. Java 7과 관련하여 Cobertura와 Emma는 새로운 JRE로 업데이트되지 않았습니다 (다시 말해서 이러한 응용 프로그램은 바이트 코드를 수정하여 실행중인 코드와 그렇지 않은 코드를 확인합니다) ( jdk7의 오픈 소스 코드 적용 라이브러리 참조 ). 이를 위해 빌드 스크립트를 변경해야 할 수도 있습니다.

그런 다음 IDE가 있습니다. 언어의 새로운 구조를 인식하는 버전으로 IDE를 업데이트해야합니다. Java 7 지원에 대한 Eclipse의 발표 는 이러한 문제를 보여줍니다.

마지막은 물론 개발자 입니다. 새 코드를 작성하고 코드를 재구성하는 방법을 알고있는 것은 개발자의 책임입니다. Java 1.4에서 1.5로 이동하면서 템플릿 및 주석이 도입되었으며 개발자가 사용 가능한 새로운 구조에 대한 사고 방식을 익히는 데 시간이 걸렸습니다. 마찬가지로 컬렉션은 1.2에서 다시 작업하여 개발자가 HashTable 및 Vector를 사용하지 못하게합니다. 버전을 업데이트하려면 새로운 언어 구조에 대한 약간의 교육이 수반되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.