Perguntas sobre o Java 11

O Blackboard Learn agora usa o Java 11.

O Blackboard Learn SaaS 3800.0.0 e posterior executa a versão 11 da plataforma Java SE da Oracle (lançada em setembro de 2018). Essa alteração está apenas no servidor e não está relacionada a qualquer Java que você ou seus usuários utilizam em dispositivos ou navegadores. A Blackboard utiliza a distribuição pronta para produção do Java 11 da Amazon Corretto, que nos permite tirar proveito de uma versão sem custos e com suporte total do Java, além de aprimoramentos de desempenho e as mais recentes correções de segurança. Para fornecer a solução mais segura e de qualidade, o Blackboard Learn sempre aproveita a tecnologia Java mais recente e com suporte de longo prazo.

Este tópico responde a várias perguntas comuns para ajudar você e sua instituição a entender o que a transição do Java 8 para o Java 11 significa para seu ambiente de Blackboard Learn.

Posso usar o Java 11 JDK com versões anteriores do Learn?

Não. O Java 11 JDK só deve ser usado com as versões de Blackboard Learn mais recentes.

Qual é o impacto do Java 11 no meu ambiente Blackboard Learn?

O impacto principal está nos componentes básicos de terceiros. A maioria dos building blocks continuará a funcionar sem qualquer alteração. Devido às várias alterações entre o Java 8 e o Java 11, alguns building blocks podem exigir alterações significativas, dependendo de como foram criados.

Recomendamos testar todos os building blocks de terceiros em fases de teste ou preparação antes que esta versão seja disponibilizada para produção.

As integrações personalizadas para as implementações do SIA ou do LDAP nos campi também podem ser afetadas devido a codificações e protocolos de segurança substituídos ou removidos.

O que os administradores do sistema precisam fazer para se preparar para esta mudança?

Building blocks de terceiros

Se você usar componentes básicos que não fazem parte do Blackboard Learn principal, planeje testá-los em um ambiente de não produção executando uma versão do Blackboard Learn usando o Java 11. Informe qualquer problema que você encontrar ao provedor de soluções do componente básico.

Esse teste recomendado é uma prática recomendada para qualquer atualização, mas recomendamos com ênfase que você teste para esta atualização, pois a alteração é mais significativa.

Integrações de linha de comando

As integrações que envolvem a invocação da linha de comando podem ser afetadas. Os cenários que utilizam o Java a partir de um script de linha de comando precisariam incluir o argumento --add-modules=ALL-SYSTEM para evitar possíveis erros relacionados ao módulo.

As integrações que envolvem datas locais ou carimbos do tempo podem ser afetadas pela adoção do Diretório de Datas locais comuns (CLDR) por padrão no Java 9 e posterior (consulte https://openjdk.java.net/jeps/252 para obter mais informações). Para o Java 11, Blackboard Learn substituirá o novo provedor de local de CLDR padrão para fornecer compatibilidade a versões anteriores para datas locais e formatação. Mais precisamente, o Blackboard Learn definirá as propriedades do provedor de Java local como: java.locale.providers=COMPAT,CLDR.

Dependendo do uso e da carga do cliente, pode haver risco de erros de StackOverflow devido ao tamanho aumentado da pilha de chamadas para resolver os arquivos de classe no Java 11. Podemos controlar a configuração de tamanho da pilha no Tomcat pelas configurações bb-config.properties e bbconfig.max.stacksize.tomcat. A recomendação anterior para o tamanho da pilha foi 400 K, e o mínimo recomendado atual para versões abaixo do Java 11 é 700 K.

Todas as integrações de linha de comando baseadas em Java com Blackboard Learn devem usar as mesmas configurações para garantir a compatibilidade máxima.

Integrações do SIA e do LDAP

Qualquer integração que dependa de conjuntos de codificação mais antigos ou menos seguros para implementações SSL ou TLS não funcionará no Java 11. Veja o comunicado do suporte para ver mais informações.

O que os desenvolvedores precisam fazer?

Geralmente, a maioria dos códigos Java 8 é compatível com o Java 11 e funcionará. No entanto, alguns componentes básicos podem exigir atualizações. Os cenários prováveis incluem:

  • Um building block que faz referência ou depende de bibliotecas ou jars de terceiros que fazem parte da distribuição do Blackboard Learn.
    • Neste cenário, os desenvolvedores de building block devem agrupar suas próprias cópias de bibliotecas ou jars de terceiros que são exigidas para a execução da funcionalidade de seus building blocks.
  • Um building block que depende de classes de estrutura EE (Enterprise Edition) que foram removidas pela Oracle no Java 9 (consulte https://openjdk.java.net/jeps/320 para obter mais informações).
    • Qualquer dependência dessas classes removidas deve ser atenuada ao ser substituída por pacotes externos com funcionalidade semelhante.
  • Um building block que faz referência ou depende de determinadas APIs Java internas pode não funcionar mais no Java 11. A maioria dos pacotes com.sun.* e sun.* são internos e inacessíveis por padrão a partir do Java 9.
    • Qualquer dependência desses pacotes internos de Java deve ser atenuada ao ser substituída por pacotes externos com funcionalidade semelhante.
  • Muitos building blocks não exigirão recompilação. No entanto, uma recompilação pode ser inevitável para os building blocks que dependam de uma ou mais bibliotecas de terceiros, que precisam ser atualizadas para funcionar com o Java 11 (por exemplo, Spring).
    • Para ser compatível com Java 11, um building block que depende da estrutura Spring deve ser atualizado para usar o Spring 5.1.X ou versão posterior.

Em qualquer caso, é uma prática recomendada recompilar o building block com o Java 11 e os arquivos públicos mais recentes da biblioteca API da Blackboard.

Como desenvolvedor, posso aproveitar os recursos do Java 11?

Sim, agora os desenvolvedores podem usar qualquer um dos recursos específicos da linguagem introduzidos no Java 9 a 11. No entanto, implementar esses recursos significa que o componente básico não será compatível com as versões do Java 8 do Blackboard Learn. Se o componente básico for específico para seu ambiente, isso é menos uma preocupação. Implemente os recursos específicos do Java 11 depois de atualizar o Learn.

As soluções desenvolvidas para várias versões do Blackboard Learn podem precisar criar dois componentes básicos separados ou criar um único componente básico compilado usando as bibliotecas apropriadas das versões de destino e as versões de origem e destino do compilador para atender requisitos de compatibilidade tanto do Java 8 quanto do Java 11.

Como posso saber mais sobre componentes básicos?

Participe da Comunidade de desenvolvedores do Blackboard Learn.