Vragen over Java 11

Blackboard Learn maakt nu gebruik van Java 11.

Blackboard Learn SaaS 3800.0.0 en later draaien op versie 11 van het Java SE-platform van Oracle (uitgebracht op september 2018). Deze wijziging is alleen voor de server en is niet gerelateerd aan een Java die jij of je gebruikers misschien gebruiken op apparaten of browsers. Blackboard gebruikt de distributie Java 11 van Amazon Coretto die gereed is voor productie. Hierdoor profiteren we van een kosteloze en volledig ondersteunde versie van Java met verbeterde prestaties en de nieuwste beveiligingsoplossingen. Blackboard Learn maakt altijd gebruik van de nieuwste Java-technologie met langdurige ondersteuning om de veiligste en meest hoogwaardige oplossing te kunnen gebruiken.

In dit onderwerp worden verschillende algemene vragen beantwoord, zodat jij en je instelling begrijpen wat de overgang van Java 8 naar Java 11 betekent voor je Blackboard Learn-omgeving.

Kan ik Java 11 JDK gebruiken met eerdere versies van Learn?

Nr. Java 11 JDK mag alleen worden gebruikt met de nieuwste releases van Blackboard Learn.

Welke gevolgen heeft Java 11 voor mijn Blackboard Learn-omgeving?

Java 11 heeft vooral invloed op Building Blocks van derden. De meeste Building Blocks blijven werken zoals je gewend bent. Als gevolg van de vele veranderingen in Java 11 ten opzichte van Java 8, zijn er voor sommige Building Blocks mogelijk belangrijke wijzigingen nodig, afhankelijk van de manier waarop ze zijn geschreven.

We adviseren om alle building blocks van derden te testen in exemplaren voor testen of staging voordat deze release beschikbaar wordt gemaakt voor productie.

Aangepaste integraties van SIS of LDAP-implementaties op een campus kunnen ook worden beïnvloed door het vervangen of verwijderen van beveiligingscodes en protocollen.

Wat moeten systeembeheerders doen om deze wijziging voor te bereiden?

Externe building blocks

Als je Building Blocks gebruikt die geen deel uitmaken van de basis Blackboard Learn, is het een goed idee om deze te testen in een niet-productieomgeving met een versie van Blackboard Learn die Java 11 gebruikt. Meld eventuele problemen die je tegenkomt in de Building Block-oplossingsprovider.

Deze test wordt aanbevolen voor elke upgrade, maar voor deze upgrade is het extra belangrijk om de test uit te voeren, omdat deze wijziging meer invloed heeft.

Integratie via opdrachtregel

De upgrade kan gevolgen hebben voor integraties waarbij de opdrachtregel wordt aangeroepen. Scenario's waarbij Java wordt geopend via een opdrachtregelscript moeten het argument --add-modules=ALL-SYSTEM bevatten om mogelijke modulefouten te voorkomen.

Integraties met locatiespecifieke data- of tijdstempels kunnen worden beïnvloed door de invoering van de Common Locale Data Repository (CLDR)-standaard in Java 9 en hoger (Zie https://openjdk.java.net/jeps/252 voor meer informatie). Voor Java 11 zal Blackboard Learn de nieuwe standaard locatieprovider voor CLDR overschrijven om achterwaartse compatibiliteit met locatiegegevens en opmaak mogelijk te maken. Voor Blackboard Learn wordt de eigenschap java.locale.provider ingesteld als: java.locale.providers=COMPAT,CLDR.

Afhankelijk van het gebruik en de belasting door clients is er mogelijk een risico op StackOverflow-fouten als gevolg van de vergrote callstack voor het omzetten van klassebestanden in Java 11. We kunnen de instellingen voor stackgrootte in Tomcat beheren via de instellingen bb-config.properties en bbconfig.max.stacksize.tomcat. De vorige aanbevolen stackgroote was 400.000. Het huidige aanbevolen minimum onder Java 11 is 700.000.

Alle op Java gebaseerde opdrachtregelintegraties met Blackboard Learn moeten dezelfde instellingen gebruiken om de compatibiliteit te waarborgen.

SIS- en LDAP-integraties

Alle integraties die afhankelijk zijn van oudere of minder veilige coderingssuites voor SSL of TLS-implementaties, werken niet onder Java 11. Zie het supportbulletin voor meer informatie.

Wat moeten ontwikkelaars doen?

In de meeste gevallen is de code van Java 8 compatibel met Java 11 en zal deze werken. Het is echter mogelijk dat er updates nodig zijn voor sommige Building Blocks. Mogelijke scenario's zijn:

  • Een Building Block dat refereert naar of afhankelijk is van externe bibliotheken of .jar-bestanden die onderdeel zijn van de Blackboard Learn-distributie.
    • In dit scenario moeten ontwikkelaars van Building Blocks hun eigen exemplaren van externe bibliotheken of .jar-bestanden bundelen die nodig zijn voor de uitvoering en werking van hun Building Blocks.
  • Een Building Block dat afhankelijk is van de Framework-klassen EE (Enterprise Edition) die door Oracle zijn verwijderd uit Java 9 (Zie https://openjdk.java.net/jeps/320 voor meer informatie).
    • Elke afhankelijkheid van deze verwijderde klassen moet worden beperkt door deze te vervangen door externe pakketten met een vergelijkbare functie.
  • Een Building Block dat refereert naar of afhankelijk is van bepaalde interne Java-Api's werkt mogelijk niet onder Java 11. De meeste com.sun.*- en sun.*-pakketten zijn intern en zijn standaard niet toegankelijk vanaf Java 9.
    • Elke afhankelijkheid van interne Java-pakketten moet worden beperkt door deze te vervangen door externe pakketten met een vergelijkbare functie.
  • Voor veel Building Blocks is hercompileren niet nodig. Het hercompileren kan echter noodzakelijk zijn voor Building Blocks die afhankelijk zijn van een of meer externe bibliotheken die moeten worden geüpgraded om met Java 11 te werken (zoals Spring).
    • Om compatibel te zijn met Java 11, moet een Building Block dat is gebaseerd op het Spring Framework worden aangepast om Spring 5.1.X+ te gebruiken.

In ieder geval is het een goed idee om Building Blocks te hercompileren met Java 11 en de meest recente openbare Blackboard API-bibliotheekbestanden.

Kan ik Java 11-functies benutten als ontwikkelaar?

Ja, ontwikkelaars kunnen nu gebruikmaken van de taalspecifieke mogelijkheden die zijn geïntroduceerd in Java 9 tot en met 11. Het implementeren van deze functies betekent echter dat het Building Block niet compatibel is met Java 8-versies van Blackboard Learn. Als het Building Block specifiek is voor je omgeving, levert dit minder problemen op. Implementeer Java 11-specifieke functies na het upgraden van Learn.

Oplossingen voor meerdere versies van Blackboard Learn moeten mogelijk twee afzonderlijke Building Blocks of een enkel Building Block maken dat is gecompileerd met behulp van de juiste bibliotheken van de doelversies, en de bron- en doel versies van de compiler om te voldoen aan de compatibiliteitsvereisten van zowel Java 8 als Java 11.

Hoe kom ik meer te weten over Building Blocks?

Sluit je aan bij de Blackboard Learn Developer Community.