Java 11에 관한 질문

Blackboard Learn에서는 이제 Java 11을 사용합니다.

Blackboard Learn SaaS 3800.0.0 이상 버전은 Oracle의 Java SE 플랫폼 11 버전(2018년 9월에 릴리즈됨)에서 실행됩니다. 이러한 변경 사항은 서버에만 적용되며, 관리자 또는 사용자가 장치 또는 브라우저에서 사용할 수 있는 Java와는 관련이 없습니다. Blackboard에서는 프로덕션 준비가 완료된 Amazon Corretto의 Java 11 배포를 활용하므로 성능과 최신 개선 사항 및 최신 보안 수정을 통해 비용을 들이지 않고도 완벽하게 지원되는 Java 버전을 활용하실 수 있습니다. Blackboard Learn에서는 가장 안전하고 우수한 솔루션을 제공하기 위해 항상 장기적인 지원을 제공하는 최신 Java 기술을 활용합니다.

이 주제에서는 관리자 및 교육기관에서 Java 8을 Java 11으로 전환하면 해당 Blackboard Learn 환경에 어떤 영향이 미치는지 이해하는 데 도움이 되는 여러 가지 일반적인 질문에 대한 답변을 제공합니다.

Java 11 JDK를 이전 버전의 Learn과 함께 사용할 수 있습니까?

아니요. Java 11 JDK는 최신 Blackboard Learn 릴리즈하고만 사용해야 합니다.

Java 11은 Blackboard Learn 환경에 어떤 영향을 미칩니까?

주로 타사 빌딩 블록에 영향을 미칩니다. 대부분의 빌딩 블록은 변경되지 않고 계속 작동합니다. 그러나 Java 8과 Java 11 사이의 수많은 변경 사항 때문에 일부 빌딩 블록의 경우 작성 방식에 따라 중대한 변경 작업이 필요할 수도 있습니다.

이 릴리즈를 프로덕션에 사용할 수 있도록 만들기 전에 먼저 테스트 또는 스테이징 인스턴스에서 모든 타사 빌딩 블록을 테스트하는 것이 좋습니다.

중단되거나 제거된 보안 암호 및 프로토콜로 인해 캠퍼스 학생 정보 시스템 또는 LDAP 구현과의 사용자 지정 통합에도 영향이 미칠 수 있습니다.

시스템 관리자는 이러한 변화에 대비하기 위해 무엇을 해야 합니까?

타사 빌딩 블록

핵심 Blackboard Learn에 포함되지 않은 빌딩 블록을 사용하는 경우 Java 11을 사용하여 Blackboard Learn 버전을 실행하는 비프로덕션 환경에서 해당 빌딩 블록을 테스트할 계획을 세워야 합니다. 발견되는 문제는 모두 빌딩 블록 솔루션 제공자에게 보고합니다.

이러한 테스트는 모든 업그레이드에 대해 수행하는 것이 가장 좋지만, 이번 변경 사항은 중대하기 때문에 이 업그레이드에 대해서는 꼭 테스트를 진행하는 것이 좋습니다.

명령줄 통합

명령줄 호출과 관련된 통합이 영향을 받을 수 있습니다. 명령줄 스크립트에서 Java를 호출하는 시나리오에는 잠재적인 모듈 관련 오류를 방지하기 위해 --add-modules=ALL-SYSTEM  인수가 포함되어야 합니다.

Java 9 이상에서는 기본적으로 CLDR(Common Locale Data Repository)이 채택되어 로캘별 날짜 또는 타임스탬프와 관련된 통합에 영향이 미칠 수 있습니다(자세한 내용은 https://openjdk.java.net/jeps/252 참조). Java 11의 경우 로캘 데이터 및 서식이 이전 버전과 호환되도록 Blackboard Learn에서 새로운 기본 CLDR 로캘 제공자를 덮어씁니다. 특히 Blackboard Learn에서는 java.locale.provider 속성을 java.locale.providers=COMPAT,CLDR로 설정합니다.

클라이언트 사용 및 로드에 따라 Java 11의 클래스 파일을 확인하기 위한 호출 스택의 크기가 증가하기 때문에 StackOverflow 오류가 발생할 위험이 있습니다. Blackboard에서는 bb-config.properties 설정인 bbconfig.max.stacksize.tomcat을 통해 Tomcat의 스택 크기 설정을 관리할 수 있습니다. 스택 크기의 이전 권장 사항은 400K였으며, Java 11에서 현재 권장되는 최솟값은 700K입니다.

Blackboard Learn과 Java 기반 명령줄을 통합할 때는 최대 호환성을 보장하기 위해 동일한 설정을 사용해야 합니다.

학생 정보 시스템 및 LDAP 통합

SSL 또는 TLS 구현을 위해 이전의 암호 제품군 또는 안전성이 떨어지는 암호 제품군을 사용하는 통합은 Java 11에서 작동하지 않습니다. 자세한 내용은 지원 게시판을 참조하십시오.

개발자는 무엇을 해야 합니까?

일반적으로 대부분의 Java 8 코드는 Java 11과 호환되며 작동합니다. 단, 일부 빌딩 블록을 업데이트해야 할 수 있습니다. 다음과 같은 시나리오를 생각해 볼 수 있습니다.

  • Blackboard Learn 배포에 포함된 타사 라이브러리 또는 jars를 참조하거나 이에 따라 달라지는 빌딩 블록입니다.
    • 이 시나리오에서는 빌딩 블록 개발자가 자신의 빌딩 블록 기능을 실행하는 데 필요한 타사 라이브러리 또는 jars의 자체 복사본을 번들로 묶어야 합니다.
  • Java 9에서 Oracle이 제거한 EE(Enterprise Edition) 프레임워크 클래스를 사용하는 빌딩 블록입니다(자세한 내용은 https://openjdk.java.net/jeps/320 참조).
    • 이렇게 제거된 클래스를 기능이 유사한 외부 패키지로 바꾸어 해당 클래스의 종속성을 완화해야 합니다.
  • 특정 내부 Java API를 참조하거나 이에 따라 달라지는 빌딩 블록은 Java 11에서 계속 작동하지 않을 수 있습니다. 대부분의 com.sun.*sun.* 패키지는 내부에 있고 Java 9부터 기본적으로 접근할 수 없습니다.
    • Java 내부 패키지를 기능이 유사한 외부 패키지로 바꾸어 해당 패키지의 종속성을 완화해야 합니다.
  • 많은 빌딩 블록은 다시 컴파일할 필요가 없습니다. 그러나 업그레이드되어야 Java 11에서 작동할 수 있는 타사 라이브러리를 하나 이상 사용하는 빌딩 블록(예: Spring)의 경우 다시 컴파일해야 할 수 있습니다.
    • Spring Framework를 사용하는 빌딩 블록은 Java 11과 호환될 수 있도록 Spring 5.1.X 이상 버전을 사용하도록 업데이트해야 합니다.

어떠한 경우든지 빌딩 블록을 Java 11 및 최신 공용 Blackboard API 라이브러리 파일로 다시 컴파일하는 것이 좋습니다.

개발자가 Java 11 기능을 활용할 수 있습니까?

예, 이제 개발자는 Java 9부터 Java 11까지 도입된 언어별 기능을 사용할 수 있습니다. 그러나 이러한 기능을 구현하면 빌딩 블록이 Blackboard Learn의 Java 8 버전과 호환되지 않게 됩니다. 빌딩 블록이 개발자의 환경에만 해당하는 경우 이는 큰 문제가 되지 않습니다. Learn을 업그레이드한 후 Java 11 전용 기능을 구현하십시오.

여러 Blackboard Learn 버전에 대한 솔루션을 진행하려는 경우 Java 8 및 Java 11 호환성 요구 사항을 모두 충족하기 위해 두 개의 개별 빌딩 블록을 생성하거나 대상 버전의 적절한 라이브러리, 컴파일러 소스 및 대상 버전을 사용하여 컴파일한 하나의 빌딩 블록을 생성해야 할 수 있습니다.

빌딩 블록에 대해 자세히 알아보려면 어떻게 해야 합니까?

Blackboard Learn 개발자 커뮤니티에 참여하십시오.