3f-lab: каталог _bin (лекция 2)
Продолжаю знакомить вас с консольной средой разработки Java-приложений 3f-lab. Начало здесь. Мы остановились на том, что в нашем каталоге-лаборатории нужно создать как минимум три каталога: _bin, _classes, _projects. Несколько слов о каждом из них.
В каталоге _bin, как видно из самого названия, хранятся бинарные файлы. Когда я работаю под Windows, этот каталог полон консольных архиваторов и компиляторов, сетевых утилит, средств криптографии и т.п. В случае с Linux всё это находится в системных папках, поэтому в каталоге _bin оказывается зачастую всего одна, но очень важная вещь: JDK (Java Developer Kit). Это комплект утилит от фирмы Sun, с помощью которого можно не прибегая к прочим средствам писать программы на языке Java.
В принципе, если в любой современной Linux-системе запустить из консоли команду java, то в большинстве случаев можно увидеть вполне адекватный output. Зачем же тогда огород городить и создавать папку _bin? Проблема заключается в том, что JDK постоянно совершенствуется (практически ежегодно) и не факт, что ваш дистрибутив оснащен самой свежей версией. А свежая версия в мире Java — это не просто дань моде. Java развивается семимильными шагами, и тот, кто игнорирует последние достижения, рискует здорово потерять в эффективности как написания, так и исполнения кода. (К сожалению, после перехода фирмы Sun в собственность корпорации Oracle темпы развития Java по моим наблюдениям заметно замедлились).
Для сохранения устойчивых относительных путей к компилятору внутри 3f-lab при смене версии JDK я действую вот по какой технологи. Скачиваю дистрибутив JDK с сайта java.sun.com, помещаю его в ~/.3f-lab/_bin/java. Дистрибутив для Linux представляет собой самораспаковывающийся скрипт, выкладывающий всё свое содержимое в каталог, из которого его запустили (иногда ему нужно присвоить атрибут исполняемости с помощью команды chmod +x). То есть файлы JDK после распаковки дистрибутива могут оказаться, например, в _bin/java/jdk1.5.0_08. Это не удобно и не красиво. Поэтому я делаю на такую папку символическую ссылку sun в том же каталоге. Получается, что компилятор, например, всегда лежит по адресу ~/.3f-lab/_bin/java/sun/bin/javac. Вышла новая версия — распаковал, перелинковал — и продолжаю работать как ни в чем не бывало.
Зачем в этой иерархии понадобилась папка java, почему не сделать путь к компилятору проще, например: ~/.3f-lab/_bin/jdk/bin/javac? Дело в том, что существует множество jdk-подобных продуктов. Есть, например, очень специфическая java от Microsoft (ее я при необходимости устанавливаю в папку ~/.3f-lab/_bin/java/ms).Есть удивительный (ныне не развивающийся) пакет superwaba, с помощью которого можно создавать приложения для карманных устройств(~/.3f-lab/_bin/java/superwaba). Есть java для мобильных устройств, которая хранится в отдельном каталоге (~/.3f-lab/_bin/java/wtk). В последнее время мою коллекцию тулкитов пополнил Android от Google. В ~/.3f-lab/_bin/java/ant — хранятся каталоги и файлы соответствующего сборщика, в OpenDS — служба каталогов (спасибо Сергею_Т и много еще есть программ на Java, имеющих сложную файловую структуру и требующих своего «дома», организуемого с помощью переменных со словом HOME (ANT_HOME, JAXE_HOME, TOMCAT_HOME и т.п.).
Что делать, если на одной и той же машине работают два программиста, каждый в своей домашней директории? Нужно ли каждому распаковывать по дистрибутиву JDK? Ведь это сотни мегабайт. Решение без труда найдет линуксоид даже с небольшим стажем. JDK устанавливается, например, в каталог /opt/java, а на него делаются символические ссылки в соответствующие каталоги «лабораторий», размещенных в домашних каталогах программистов.
Как бы то ни было, общее правило таково: переменная окружения JAVA_HOME (она используется в большинстве серьезных java-продуктов) всегда в рамках 3f-lab должна указываться как
Несколько слов о сборщике ant. Устанавливать его нужно с учетом только что описанной особенности нашей лаборатории. Скрипт ant, входящий в состав тарбола, нужно поправить, дописав в его начало строки
Затем следует скопировать (или залинковать) этот скрипт в /usr/bin. После этого команда ant вызывается из любой поддиректории домашнего каталога, как любая другая команда Linux. Подробнее о том, как устанавливать ant показано в скринкасте, а также вот здесь.
В каталоге _bin, как видно из самого названия, хранятся бинарные файлы. Когда я работаю под Windows, этот каталог полон консольных архиваторов и компиляторов, сетевых утилит, средств криптографии и т.п. В случае с Linux всё это находится в системных папках, поэтому в каталоге _bin оказывается зачастую всего одна, но очень важная вещь: JDK (Java Developer Kit). Это комплект утилит от фирмы Sun, с помощью которого можно не прибегая к прочим средствам писать программы на языке Java.
В принципе, если в любой современной Linux-системе запустить из консоли команду java, то в большинстве случаев можно увидеть вполне адекватный output. Зачем же тогда огород городить и создавать папку _bin? Проблема заключается в том, что JDK постоянно совершенствуется (практически ежегодно) и не факт, что ваш дистрибутив оснащен самой свежей версией. А свежая версия в мире Java — это не просто дань моде. Java развивается семимильными шагами, и тот, кто игнорирует последние достижения, рискует здорово потерять в эффективности как написания, так и исполнения кода. (К сожалению, после перехода фирмы Sun в собственность корпорации Oracle темпы развития Java по моим наблюдениям заметно замедлились).
Для сохранения устойчивых относительных путей к компилятору внутри 3f-lab при смене версии JDK я действую вот по какой технологи. Скачиваю дистрибутив JDK с сайта java.sun.com, помещаю его в ~/.3f-lab/_bin/java. Дистрибутив для Linux представляет собой самораспаковывающийся скрипт, выкладывающий всё свое содержимое в каталог, из которого его запустили (иногда ему нужно присвоить атрибут исполняемости с помощью команды chmod +x). То есть файлы JDK после распаковки дистрибутива могут оказаться, например, в _bin/java/jdk1.5.0_08. Это не удобно и не красиво. Поэтому я делаю на такую папку символическую ссылку sun в том же каталоге. Получается, что компилятор, например, всегда лежит по адресу ~/.3f-lab/_bin/java/sun/bin/javac. Вышла новая версия — распаковал, перелинковал — и продолжаю работать как ни в чем не бывало.
Зачем в этой иерархии понадобилась папка java, почему не сделать путь к компилятору проще, например: ~/.3f-lab/_bin/jdk/bin/javac? Дело в том, что существует множество jdk-подобных продуктов. Есть, например, очень специфическая java от Microsoft (ее я при необходимости устанавливаю в папку ~/.3f-lab/_bin/java/ms).Есть удивительный (ныне не развивающийся) пакет superwaba, с помощью которого можно создавать приложения для карманных устройств(~/.3f-lab/_bin/java/superwaba). Есть java для мобильных устройств, которая хранится в отдельном каталоге (~/.3f-lab/_bin/java/wtk). В последнее время мою коллекцию тулкитов пополнил Android от Google. В ~/.3f-lab/_bin/java/ant — хранятся каталоги и файлы соответствующего сборщика, в OpenDS — служба каталогов (спасибо Сергею_Т и много еще есть программ на Java, имеющих сложную файловую структуру и требующих своего «дома», организуемого с помощью переменных со словом HOME (ANT_HOME, JAXE_HOME, TOMCAT_HOME и т.п.).
Что делать, если на одной и той же машине работают два программиста, каждый в своей домашней директории? Нужно ли каждому распаковывать по дистрибутиву JDK? Ведь это сотни мегабайт. Решение без труда найдет линуксоид даже с небольшим стажем. JDK устанавливается, например, в каталог /opt/java, а на него делаются символические ссылки в соответствующие каталоги «лабораторий», размещенных в домашних каталогах программистов.
Как бы то ни было, общее правило таково: переменная окружения JAVA_HOME (она используется в большинстве серьезных java-продуктов) всегда в рамках 3f-lab должна указываться как
JAVA_HOME=~/.3f-lab/_bin/java/sun
Несколько слов о сборщике ant. Устанавливать его нужно с учетом только что описанной особенности нашей лаборатории. Скрипт ant, входящий в состав тарбола, нужно поправить, дописав в его начало строки
JAVA_HOME=~/.3f-lab/_bin/java/sun
ANT_HOME=~/.3f-lab/_bin/java/ant
Затем следует скопировать (или залинковать) этот скрипт в /usr/bin. После этого команда ant вызывается из любой поддиректории домашнего каталога, как любая другая команда Linux. Подробнее о том, как устанавливать ant показано в скринкасте, а также вот здесь.
Комментарии (7)
RSS свернуть / развернутьFREExLOADER
yababay
Только зачем например OpenDS ставить в 3f-lab?
Я например ставлю просто в /var/
Sergei_T
yababay
Markony
yababay
FREExLOADER
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.