sql >> Databáze >  >> RDS >> Oracle

Porozumění Javě Oracle na Macu

Oracle JVM je nainstalován pouze na jednom místě. Byli jste uvedeni v omyl!

Jak jste si všimli, příkazy Java v /usr/bin jsou symbolické odkazy na binární soubory v /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands . Binární soubory v tomto adresáři jsou stub aplikace, které určují, který virtuální počítač Java se má použít*, a poté spouštějí odpovídající skutečné binární soubory v rámci této verze virtuálního počítače. To je důvod, proč všechny binární soubory v /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands mají téměř identickou velikost, a to navzdory skutečnosti, že byste očekávali, že implementují zcela odlišné funkce.

Můžete to vidět v akci pomocí dtrace :

[email protected]:~$ sudo dtrace -n 'syscall::posix_spawn:entry { trace(copyinstr(arg1)); }' -c "/usr/bin/java -version"
dtrace: description 'syscall::posix_spawn:entry ' matched 1 probe
dtrace: pid 44727 has exited
CPU     ID                    FUNCTION:NAME
  8    619                posix_spawn:entry   /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

Daný dtrace vyvolání vypíše argument cesty k posix_spawn když je volána java -version . V mém případě aplikace stub našla běhové prostředí Apple Java 1.6 v /System/Library/Java/JavaVirtualMachines/1.6.0.jdk a vyvolává tuto verzi java příkaz.

Binární soubory stub mají také další výhodu:když zjistí, že není nainstalován žádný Java VM, vyzve uživatele, aby si ho nainstaloval.

Pokud jde o CurrentJDK symlink, jak nejlépe to mohu říct, kvůli zpětné kompatibilitě s minulostí, kdy byl Apple jediným zdrojem JVM na OS X.

* Při určování, který Java VM by měl být použit, se bere v úvahu kombinace faktorů. JAVA_HOME se používá, pokud je nastaveno (zkuste JAVA_HOME=/tmp java ). Pokud JAVA_HOME není nastaven, pak se zjistí seznam všech virtuálních počítačů v systému. JAVA_VERSION a JAVA_ARCH Proměnné prostředí se používají, pokud jsou nastaveny, k filtrování seznamu virtuálních strojů podle konkrétní verze a podporované architektury. Výsledný seznam je poté seřazen podle architektury (upřednostňuje 64bitovou před 32bitovou) a verzí (novější je lepší) a vrátí se nejlepší shoda.



  1. PostgreSQL agent opět ve výboru SQL Standard

  2. Podívejte se na mou prezentaci „Optimalizace Microsoft Access pomocí SQL Serveru“.

  3. Stránkování s Oracle

  4. MySQL NA DUPLIKÁTNÍM KLÍČI – poslední vložené ID?