Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zrozumienie Javy Oracle na Macu

JVM Oracle jest instalowana tylko w jednej lokalizacji. Zostałeś wprowadzony w błąd!

Jak zauważyłeś, polecenia Java w /usr/bin są dowiązaniami symbolicznymi do plików binarnych w /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands . Pliki binarne w tym katalogu są aplikacjami pośredniczącymi, które określają, której maszyny wirtualnej Java użyć*, a następnie wykonują odpowiedni rzeczywisty plik binarny w tej wersji maszyny wirtualnej. Dlatego wszystkie pliki binarne w /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands mają prawie identyczny rozmiar, mimo że można by się spodziewać, że będą wdrażać zupełnie inną funkcjonalność.

Możesz to zobaczyć w akcji, używając 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

Podany dtrace wywołanie wypisuje argument ścieżki do posix_spawn gdy jest wywoływana przez java -version . W moim przypadku aplikacja pośrednicząca znalazła środowisko wykonawcze Java 1.6 firmy Apple w /System/Library/Java/JavaVirtualMachines/1.6.0.jdk i wywołuje tę wersję java polecenie.

Okrojone pliki binarne mają również inną zaletę:gdy wykryją, że nie zainstalowano żadnej maszyny wirtualnej Java, poproszą użytkownika o zainstalowanie jednej z nich.

Co do CurrentJDK symlink, najlepiej jak mogę to powiedzieć ze względu na wsteczną kompatybilność z przeszłością, kiedy Apple było jedynym źródłem JVM na OS X.

* Podczas określania, która maszyna wirtualna Java powinna zostać użyta, bierze się pod uwagę kombinację czynników. JAVA_HOME jest używane, jeśli jest ustawione (spróbuj JAVA_HOME=/tmp java ). Jeśli JAVA_HOME nie jest ustawiona, wykryta zostanie lista wszystkich maszyn wirtualnych w systemie. JAVA_VERSION i JAVA_ARCH zmienne środowiskowe są używane, jeśli są ustawione, do filtrowania listy maszyn wirtualnych do określonej wersji i obsługiwanej architektury. Otrzymana lista jest następnie sortowana według architektury (preferując 64-bitową nad 32-bitową) i wersji (nowsza znaczy lepsza), i zwracane jest najlepsze dopasowanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czym SID różni się od nazwy usługi w Oracle tnsnames.ora

  2. PL/SQL wydrukuj ref kursor zwrócony przez procedurę składowaną

  3. Kryteria hibernacji dla dat

  4. Oracle SQL — sumowanie i grupowanie danych według tygodnia

  5. tabela przestawna Oracle - jak zamienić pozycje wierszy na kolumny