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 должна указываться как

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 показано в скринкасте, а также вот здесь.
  • +4
  • 06 января 2010, 21:32
  • yababay

Комментарии (7)

RSS свернуть / развернуть
+
0
спасибо интересно читаю дальше
avatar

FREExLOADER

  • 07 января 2010, 01:49
+
0
Если освоишь эту технологию — можно будет наладить коллективное сотрудничество (например, над движком Мтааламу). Ведь коллективной работе программистов очень часть мешают идеологические моменты. Если разрабатывать программы в одной и той же среде — можно работать гораздо продуктивнее.
avatar

yababay

  • 07 января 2010, 11:03
+
0
Интересно
Только зачем например OpenDS ставить в 3f-lab?

Я например ставлю просто в /var/
avatar

Sergei_T

  • 07 января 2010, 09:04
+
0
Это уж как кому удобно. Те программы, которыми я просто пользуюсь, я ставлю в места, предлагаемые по умолчанию (/usr, /var, /opt и т.д.). А то, над чем работаю сам — в лабораторию. OpenDS мне очень понравился. Я залез в исходники, написал bundle (если будем делать двиг для мтааламу — регистрацию пользователей лучше делать в нём, об этом еще буду писать). Поскольку вся лаборатория хранится на съемном носителе (squashfs + aufs), в случае какого-нибудь зихера можно просто выдернуть из компа флэшку и драпать. Все наработки останутся при тебе, в том числе и данные службы каталогов. Т.е. преимуществом моей 3f-lab является еще и высочайшая мобильность. Я называю это абордажной технологией. Начать работать в привычной среде на любом компьютере можно за считанные минуты, имея всего одну флэшку (ну и LiveCD желательно).
avatar

yababay

  • 07 января 2010, 10:57
+
0
Если бы я занялся — то статья как учебник! Во !
avatar

Markony

  • 07 января 2010, 09:07
+
+1
Дык ведь это дело 10 лет по байтику складывалось. Там не то что каждая директория, каждая буква в названии каталогов обдумывалась по много раз. 3f-lab — это не программный продукт, это набор правил, которые можно применить и для программирования на других языках. Так что следите за новостями, продолжение следует
avatar

yababay

  • 07 января 2010, 11:00
+
0
отлично
avatar

FREExLOADER

  • 07 января 2010, 15:42

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.