В этом посте описывается установка Java 6 runtime под MacOSX, описываемый ниже алгоритм тестировался на моем Hackintosh (HP Mini 110 + MacOSX 10.5.7). Если это заработало у меня, то должно заработать и у вас …
Немного “мат части” ….
Корпарация Sun не распростроняет и не поддерживает Java под MacOSX, Apple сама занимается реализацией Java Runtime. Собственно говоря Java Runtime от Apple это не тот “runtime”,
который мы привыкли видеть в той же Window или Linux. Он (runtime) реализовн в виде MacOSX FrameWork (“увидеть” framework можно здесь /System/Library/Frameworks/JavaVM.frameworks), и как я понимаю Java приложения (в прочем как и python, ruby и т.д.) в каком-то смысле являются “нативными” приложениями для MacOSX. GUI такого приложения использует Cocoa или Aqua Framework для отрисовки окон, ему также доступны все сервисы и библиотеки MacOSX, как любому другому приложению написаному например на “родном” для MacOSX Object C. Для пользователя Java приложени выглядит весьма аутентично.
Проблемы …
Apple Java Framework входит в состав системы по умолчанию, вам так же предоставляется возможность обновить (скачать) более новую версию framework.
Кстати номера версий Apple Java Framework полность соотвествуют версионности принятой в компании Sun. Так Apple Java Framework версии 1.4 реализует стандарт Sun Java SE 1.4, а версия Apple Java Framework версии 1.5 реализует стандарт Sun Java SE 5 и т.д.
Список версий Apple Java Frameworks, установленных на вашем десктопе можно увидеть запустив приложение Utilities/Java Prefernces
Кстати список установленных версий можно увидеть заглянув в папку /System/Library/Frameworks/JavaVM.frameworks/Versions
К сожалению здесь вы не увидите последнюю версию Java 1.6, а ведь так хотелось!
Пробуем решить проблему…
В Google поиске задаем нечто “Java 6 for MacOSX 10.5.7” и по результатам поиска нам удается скачать и установить новую версию Java. Еще раз список версий Java Framework, установленных на нашем коспьютере и … о ужас, версии 1.6 мы не находим. Как так?! Мы же все установили.
Заходим в /System/Library/Frameworks/JavaVM.frameworks/Versions, ну вот же она версия 1.6 ! Хмм давайте запустим принудительно …
cd /System/Library/Frameworks/JavaVM.frameworks/Versions/1.6.0/Commands
./java –version
Получаем ошибку: “Bad CPU type in exucatble”. Приехали …
Оказывается мы установили Framework под 64 битный процессор (странно что не было предупреждений во время инсталяции). А как же 32 бита ?! А 32 бита не поддреживаются, нету для этих битов еще шестой Java …
Шеф все пропало ….
Не совсем. В качестве альтерантивного решения рекомендую установить OpenJDK 6. OpenJDK это Development Kit (Java Runtime + утилиты разработчика), поддерживаемых Open Source и Sun. Собственно та Java, что предлагается нам к скачиванию с сайта Sun есть коммерческий слепок (snapshot) проекта Open JDK. К нашему счастью OpenJDK портирован и на FreeBSD/MacOSX и установить его можно 2-мя следующими способами.
Порты…
Надеюсь, вы уже установили port под MacOSX, если нет, то прочтите как это сделать здесь.
В окне терминала, под root’ом выполняем команду
port install openjdk6
В ходе установки помимо самого jdk будут инсталлированы и вспомогательные библиотеки. Приготовтесь что процесс установки будет довольно продолжительным и не всегда успешным. В момем случае мне так и не удалось установить jdk через port’ы и пришлось устанвливать “руками”, об этом ниже.
Устнавливаем “руками” …
С сайта SoyLatte скачиваем бинарный дистрибутив и распаковываем его. Я рекомендую скопировать бинарный дистрибутив в папку /System/Library/Frameworks/JavaVM.frameworks/Versions в моем случае это выглядит как /System/Library/Frameworks/JavaVM.frameworks/Versions/openjdk6. Сделано это для поддержания единообразности. В принципе Java 6 уже готова к использованию и дальнейшая настройки Java завист от полета вашей фантазии: можно например создать soft link к новому Java runtime или как я ввести переменную окружения “OpenJDK6_HOME” (здесь рассказано как это сделать). Запуск Java 6 приложения становится рутиным делом:
$OpenJDK6_HOME/bin/java –jar <your jar file>
Ограничения ….
Так как установленная JDK (Java runtime) собственно не явялется Apple Framework и ему не доступны специфичные для MacOSX библиотеки, то для отображения пользовательского интерфейса используется Server X11 (в вашей MacOSX он установлен по умолчанию). Для пользователя это означает что у него (пока ?) нет возможности увидеть красивости Aqua или Cocoa. Зато конечно появилось возможность запуска приложения под Java 6.