Misschien weet je dit niet, maar Java is er in vele smaken en onderdelen. Nadat Oracle Sun Microsystems had overgenomen, werden zij de officiële eigenaar van het Java-handelsmerk en de belangrijkste "officiële" Java-distributies.
Eerst een disclaimer: ik ben geen jurist en ook geen Java-ontwikkelaar. Dit is een overzicht op hoog niveau van een aantal complexe kwesties met betrekking tot Java, Java-ontwikkeling en licenties. Mijn doel is om je genoeg informatie te geven om verder te gaan en succesvol te zijn, maar ik moedig je aan om wat aanvullend onderzoek te doen en een advocaat te raadplegen als je aanvullende informatie nodig hebt. Ik weet dat ik details zal missen en belangrijke punten zal vergeten.
Java bestaat uit de volgende onderdelen
- JVM: De virtuele machine van Java is de virtuele machine waarop alle Java-applets worden uitgevoerd. Java-applets worden meestal gedistribueerd als Java-bytecode in een JAR-bestand. Java-bytecode draait niet direct op de fysieke computer. In plaats daarvan draait het op de JVM. De JVM is een Just-in-Time compiler (JIT) die de Java bytecode omzet in native machinecode.
- De twee populaire varianten van de JVM zijn Hotspot (de officiële JVM die gebruikt wordt door de Oracle JDK) en OpenJ9.
- Technisch gezien heeft Android geen JVM. In plaats daarvan wordt de Java-bytecode omgezet in Dalvik-bytecode en uitgevoerd op de DVM (Dalvik Virtual Machine) of gecompileerd door ART (Android Runtime). Beide gebruiken .dex-bestanden, maar ART vertaalt de bytecode naar .elf-bestanden (Executable and Linkable Format). Dit artikel is vooral gericht op de Java desktop kant voor het bouwen van Android apps met Delphi, maar ik wilde dit nog toevoegen voor de duidelijkheid.
- JRE: De Java-runtime-omgeving bevat de belangrijkste bibliotheken die een Java-applet nodig heeft om te draaien, samen met de JVM. Het bevat Java.exe en Javaw.exe die de applets en andere hulpprogramma's uitvoeren.
- JDK: De Java-ontwikkelingskitof de SDK voor Java-ontwikkeling. De JDK is een superset van de JRE. Dit is wat je gebruikt voor het bouwen van Java (en Android) applicaties, terwijl het ook alles biedt wat je nodig hebt om Java applets uit te voeren. Het bevat een aantal hulpprogramma's zoals KeyTool.exe en JarSigner.exe die worden gebruikt om
- Er zijn 3 varianten van het Java-platform uitgebracht door Oracle: Standard Edition (Java SE), Enterprise Edition (Java EE) en Micro Edition (Java ME). Deze blogpost, en de meeste use cases die je zult tegenkomen, hebben betrekking op de Standard Editie.
Waar het interessant wordt, is met de OpenJDK, een vrije en open-source implementatie van het Java Standard Edition (SE) Platform. Het is de officiële referentie implementatie van Java SE sinds versie 7. De bronimplementatie is gelicenseerd onder de GNU General Public License versie 2 met een koppelingsuitzondering. [wikipedia] Net zoals Chrome is gebaseerd op het open-source Chromium project, is Java SE gebaseerd op OpenJDK.
Iedereen, inclusief jijzelf, kan de OpenJDK bronbestanden downloaden en een binaire build maken. Er zijn een aantal organisaties die dat doen en elke organisatie heeft zijn eigen draai aan licenties, ondersteuning en meegeleverde componenten. Hier zijn er een paar (dit zijn binaire distributies van de OpenJDK broncode).
Bouw |
Lange termijn Support |
Toegestaan Licentie |
Puur |
Commercieel Support |
| Adopteer OpenJDK / JClarity / IBM Java SDK |
Ja | Ja | Optioneel | Ja |
| Alibaba Drakenbron | Ja | Ja | Geen | Ja |
| Amazon Corretto | Ja | Ja | Geen | Geen |
| Azul Zoeloe | Ja | Ja | Geen | Ja |
| BellSoft Liberica JDK | Ja | Ja | Geen | Ja |
| ojdkbouw | Ja | Ja | Ja | Geen |
| Oracle Java SE | Ja | Geen | Geen | Ja |
| Oracle OpenJDK | Geen | Ja | Ja | Geen |
| Red Hat OpenJDK | Ja | Ja | Ja | Geen |
| Red Hat voor Windows | Ja | Ja | Geen | Ja |
| SAP SapMachine | Ja | Ja | Geen | Geen |
| Bron: https://en.wikipedia.org/wiki/OpenJDK | ||||
Oracle levert directe OpenJDK builds, maar deze builds van Oracle bevatten geen langdurige ondersteuning of commerciële ondersteuning. Daarvoor wil Oracle dat je overschakelt naar Oracle SE, dat geen permissieve licentie heeft (Oracle heeft onlangs de licentie van hun Standard Edition JDK veranderd om een jaarlijkse vergoeding te vragen voor commercieel gebruik). Dus terwijl de broncode van OpenJDK een permissieve licentie heeft, heeft de binaire distributie van Oracle niet dezelfde licentie.
Dat is waar AdoptOpenJDK (en anderen) om de hoek komen kijken. Zij nemen de open-source OpenJDK bronbestanden en bieden een binaire distributie met ondersteuning op lange termijn (updates en fixes voor oude versies), een permissieve licentie en commerciële ondersteuning. AdoptOpenJDK wordt onderhouden en ondersteund door de gemeenschap en een aantal grote bedrijven waaronder IBM, GoDaddy, Microsoft en Red Hat.
RAD Studio is niet direct afhankelijk van Java, maar als je de Android SDK gebruikt om Android te targeten, dan gebruik je het wel. De huidige RAD Studio installer biedt je de optie om de standaard Oracle JDK te installeren als je die nog niet geïnstalleerd hebt. In de toekomst (ongeveer 10.4.x tijdframe), Embarcadero is van plan om de standaard optie om AdoptOpenJDK te installeren wijzigen.
De beslissing welke JDK en JRE je gaat gebruiken is aan jou. In deze blogpost loop ik met je door de overstap naar de AdopteerOpenJDK met HotSpot JRE (HotSpot is de officiële JVM die gebruikt wordt door de Oracle JDK, maar er zijn er meer waaruit je kunt kiezen).
Voordat u begint
Als je Oracle's JRE of JDK al geïnstalleerd hebt, kun je deze misschien beter verwijderen. Tenzij je andere software op je computer hebt die er specifiek van afhankelijk is. Als je het alleen hebt geïnstalleerd voor Android-ontwikkeling met Delphi, dan kun je het verwijderen. Door de manier waarop het updates uitvoert, kan het zijn dat je ontdekt dat je meerdere versies hebt geïnstalleerd.
Installatie
Bezoek https://adoptopenjdk.net/ en als je op een Windows-computer zit, zou het standaard de gewenste download moeten zijn. Ja, we willen versie 8, ook al zijn er nieuwe versies. Versie 8 is de meest populaire versie voor de meeste gebruikssituaties, inclusief voor Android-ontwikkeling, en de verschillende versies zijn niet compatibel.

Als je een 32-bits versie van Windows gebruikt, moet je echt upgraden naar een 64-bits platform. Doe dat en kom terug als je klaar bent. Je hoeft de 32-bits versie niet te installeren op 64-bits Windows. Als je de website echter vanaf een andere computer bezoekt, kun je naar de pagina over andere platforms/releases en vind daar de download die je nodig hebt. Je hebt de volledige JDK (inclusief de JRE) nodig, niet alleen de JRE, voor Windows x64.

Tijdens de installatie accepteert u de GNU ALGEMENE PUBLIEKE LICENTIE. Dit geldt alleen voor de JDK en heeft geen invloed op projecten die je ontwikkelt (raadpleeg opnieuw een advocaat of lees de licenties zelf om zeker te zijn.) Ik laat het installatieprogramma graag de JAVA_HOME omgevingsvariabele instellen, maar dat is optioneel. Anders kun je de standaardinstellingen gebruiken.

Nu is het alleen nog een kwestie van het bijwerken van de instellingen in je Delphi / RAD Studio IDE. Ga naar Tools → Opties → Implementatie → SDK-beheer en selecteer vervolgens een van je Android SDK's (32 of 64-bit) en spring naar het tabblad Java, waar je iets zou moeten zien als de afbeelding hieronder.

Als je Oracle Java SE JDK nog geïnstalleerd is, dan heb je de gele driehoek niet omdat de oude JDK er nog is. Gebruik dan de ellipsbladerknop om het te wijzigen in het pad waarop je AdoptOpenJDK hebt geïnstalleerd. Zorg ervoor dat je al je Android SDK-items wijzigt.

Vanaf dat moment zou je geen veranderingen moeten merken. Het werkt gewoon. Zowel de Oracle SE JDK als de AdoptOpenJDK zijn gebaseerd op dezelfde broncode en de functionaliteit is hetzelfde.
Alternatieve installatie
Mijn favoriete manier om de AdoptOpenJDK te installeren en bij te werken is met de Chocolade
Windows pakketbeheerder.
- Open een PowerShell-venster met beheerdersrechten
- Voer het volgende uit om Chocolade installeren
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) - Dan installeer AdoptOpenJDK 8
choco installeren adoptopenjdk8 - En als je in de toekomst wilt bijwerken, voer je gewoon het volgende uit vanaf een verhoogde opdrachtprompt
choco update adoptopenjdk8
Ik ben een grote fan van de pakketbeheerder Chocolaty (ik heb een Pro-abonnement). Als je er eens naar kijkt, weet ik zeker dat je het erg nuttig zult vinden.

