Java Policy
Материал из ALT Linux Wiki
(+шаблон DraftPolicy) |
|||
Строка 1: | Строка 1: | ||
- | + | {{викифицировать}} | |
- | + | {{DraftPolicy | |
+ | |responsible=viy}} | ||
__TOC__ | __TOC__ | ||
=== ALT Linux Java Policy: Требования к сборке java-приложений === | === ALT Linux Java Policy: Требования к сборке java-приложений === | ||
+ | |||
==== Необходимо соблюдать JPackage Policy ==== | ==== Необходимо соблюдать JPackage Policy ==== | ||
При упаковке приложений для сизифа '''необходимо''' соблюдать JPackage Policy. | При упаковке приложений для сизифа '''необходимо''' соблюдать JPackage Policy. | ||
Ознакомиться с JPackage Policy можно в следующих местах: | Ознакомиться с JPackage Policy можно в следующих местах: | ||
- | Оригинал | + | Оригинал JPackagePolicy — можно найти в пакете jpackage-utils (в сизифе или на [http://www.jpackage.org/ www.jpackage.org]) |
[[Java/JPackagePolicyTranslation|Перевод JPackagePolicy на русский.]] | [[Java/JPackagePolicyTranslation|Перевод JPackagePolicy на русский.]] | ||
- | [[Java/JPackageSpecTemplate|JPackage Spec Template]] | + | [[Java/JPackageSpecTemplate|JPackage Spec Template]] — шаблон spec-файла для java-приложений, адаптированный для сизифа. |
см. также [[Java/ClassPathInManifest|Использование Class-Path в MANIFEST.MF]] | см. также [[Java/ClassPathInManifest|Использование Class-Path в MANIFEST.MF]] | ||
Строка 17: | Строка 19: | ||
11.03.2006 | 11.03.2006 | ||
- | mhz: В связи с появлением в Sisyphus пакетов j2se1.5-sun{,-devel}, которые теперь | + | mhz: В связи с появлением в Sisyphus пакетов j2se1.5-sun{,-devel}, которые теперь |
- | выбираются по умолчанию в сборочной среде, появилась новая особенность при сборке пакетов на Java. | + | выбираются по умолчанию в сборочной среде, появилась новая особенность при сборке пакетов на Java. |
- | Компилятор JDK 1.5 по умолчанию создает class-файлы, несовместимые с ранними версиями J2SE. | + | Компилятор JDK 1.5 по умолчанию создает class-файлы, несовместимые с ранними версиями J2SE. |
- | Поэтому необходимо следить, чтобы в сборочных скриптах для ant или make компилятор вызывался | + | Поэтому необходимо следить, чтобы в сборочных скриптах для ant или make компилятор вызывался |
- | с параметрами source и target в значении 1.3 или меньше ( | + | с параметрами source и target в значении 1.3 или меньше (так как у нас в Sisyphus есть еще j2se1.3-sun), |
если код не требует иного. Если в коде используется ключевое слово assert, нужно ставить как | если код не требует иного. Если в коде используется ключевое слово assert, нужно ставить как | ||
минимум 1.4; пакетов, использующих нововведения Java SE 5, в Sisyphus пока не отмечено. | минимум 1.4; пакетов, использующих нововведения Java SE 5, в Sisyphus пока не отмечено. | ||
- | viy: это актуально всегда, только сейчас у нас наименьшая | + | viy: это актуально всегда, только сейчас у нас наименьшая JVM — это java-1.5.0 sun. |
соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. | соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. | ||
если пакет использует нововведения Java SE 6, то source и target в значении 1.6. | если пакет использует нововведения Java SE 6, то source и target в значении 1.6. | ||
Строка 36: | Строка 38: | ||
Requires: java | Requires: java | ||
Requires: java-devel (if really required). | Requires: java-devel (if really required). | ||
- | Замечание. для указания минимальной версии JVM, под которой может работать программа, | + | Замечание. для указания минимальной версии JVM, под которой может работать программа, |
следует использовать конструкцию | следует использовать конструкцию | ||
Requires: java >= 1.x.y | Requires: java >= 1.x.y | ||
- | например, Requires: java | + | например, Requires: java >= 1.6.0 |
Если программа работает под текущую минимальную поддерживаемую JVM | Если программа работает под текущую минимальную поддерживаемую JVM | ||
- | (сейчас у нас наименьшая | + | (сейчас у нас наименьшая JVM — это java-1.5.0). |
то рекомендуется писать просто Requires: java без версии. | то рекомендуется писать просто Requires: java без версии. | ||
В старых пакетах вместо Requires: java может встретиться Requires: j2se. | В старых пакетах вместо Requires: java может встретиться Requires: j2se. | ||
- | Эти provides устарели, поэтому все такие вхождения следует заменить на | + | Эти provides устарели, поэтому все такие вхождения следует заменить на |
Requires: java. | Requires: java. | ||
Строка 58: | Строка 60: | ||
%set_classpath /usr/share/java/foo.jar | %set_classpath /usr/share/java/foo.jar | ||
%add_classpath /usr/share/java/bar.jar | %add_classpath /usr/share/java/bar.jar | ||
- | можно заменить на | + | можно заменить на |
export CLASSPATH=$(build-classpath foo bar) | export CLASSPATH=$(build-classpath foo bar) | ||
а %ant_build на %ant. | а %ant_build на %ant. | ||
=== Java Packaging FAQ === | === Java Packaging FAQ === | ||
- | [[Java/JavaPackagingFAQ|Обсуждение вопросов упаковки java пакетов]] | + | [[Java/JavaPackagingFAQ|Обсуждение вопросов упаковки java пакетов]] в Сизифе |
- | (([[Java/JavaPackagingFAQ|JavaPackagingFAQ]] )) вынесено в отдельную страницу. | + | (([[Java/JavaPackagingFAQ|JavaPackagingFAQ]])) вынесено в отдельную страницу. |
=== Ссылки === | === Ссылки === | ||
+ | |||
==== Обсуждение определителя зависимостей и загрузчика классов ==== | ==== Обсуждение определителя зависимостей и загрузчика классов ==== | ||
- | [http://lists.altlinux.org/pipermail/devel/2008-January/subject.html [devel]] | + | [http://lists.altlinux.org/pipermail/devel/2008-January/subject.html [devel]] Java: no magic wand / [devel] Java: no magic wand, no magic hammer |
начиная с [http://lists.altlinux.org/pipermail/devel/2008-January/068361.html http://lists.altlinux.org/pipermail/devel/2008-January/068361.html]. | начиная с [http://lists.altlinux.org/pipermail/devel/2008-January/068361.html http://lists.altlinux.org/pipermail/devel/2008-January/068361.html]. |
Версия 18:12, 10 сентября 2008
Содержание |
ALT Linux Java Policy: Требования к сборке java-приложений
Необходимо соблюдать JPackage Policy
При упаковке приложений для сизифа необходимо соблюдать JPackage Policy. Ознакомиться с JPackage Policy можно в следующих местах: Оригинал JPackagePolicy — можно найти в пакете jpackage-utils (в сизифе или на www.jpackage.org) Перевод JPackagePolicy на русский. JPackage Spec Template — шаблон spec-файла для java-приложений, адаптированный для сизифа. см. также Использование Class-Path в MANIFEST.MF
Необходимо обеспечивать максимальную запускаемость на разных JVM
11.03.2006 mhz: В связи с появлением в Sisyphus пакетов j2se1.5-sun{,-devel}, которые теперь выбираются по умолчанию в сборочной среде, появилась новая особенность при сборке пакетов на Java. Компилятор JDK 1.5 по умолчанию создает class-файлы, несовместимые с ранними версиями J2SE. Поэтому необходимо следить, чтобы в сборочных скриптах для ant или make компилятор вызывался с параметрами source и target в значении 1.3 или меньше (так как у нас в Sisyphus есть еще j2se1.3-sun), если код не требует иного. Если в коде используется ключевое слово assert, нужно ставить как минимум 1.4; пакетов, использующих нововведения Java SE 5, в Sisyphus пока не отмечено.
viy: это актуально всегда, только сейчас у нас наименьшая JVM — это java-1.5.0 sun. соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. если пакет использует нововведения Java SE 6, то source и target в значении 1.6. (Не злоупотреблять. только если код написан под Java 6) пакетов, использующих нововведения Java SE 7 и выше, в Sisyphus пока не отмечено.
Необходимо избегать зависимостей на конкретную JVM
viy: явные зависимости Requires: java-X.Y.Z-vendor это ЗЛО. В пакете единственно допустимы зависимости вида
Requires: java Requires: java-devel (if really required).
Замечание. для указания минимальной версии JVM, под которой может работать программа, следует использовать конструкцию
Requires: java >= 1.x.y
например, Requires: java >= 1.6.0 Если программа работает под текущую минимальную поддерживаемую JVM (сейчас у нас наименьшая JVM — это java-1.5.0). то рекомендуется писать просто Requires: java без версии. В старых пакетах вместо Requires: java может встретиться Requires: j2se. Эти provides устарели, поэтому все такие вхождения следует заменить на Requires: java.
Пакеты из репозиториев jpackage.org
Не желательно собирать в Сизиф java-пакеты из репозиториев jpackage.org а также fedora.org вручную. Для этого есть робот сопровождения. Его можно взять в git, viy/packages/jppimport.git.
Устаревшие макросы.
Макросы %ant_build %set_classpath %add_classpath объявлены устаревшими. В пакетах конструкции вида %set_classpath /usr/share/java/foo.jar %add_classpath /usr/share/java/bar.jar можно заменить на export CLASSPATH=$(build-classpath foo bar) а %ant_build на %ant.
Java Packaging FAQ
Обсуждение вопросов упаковки java пакетов в Сизифе ((JavaPackagingFAQ)) вынесено в отдельную страницу.
Ссылки
Обсуждение определителя зависимостей и загрузчика классов
[devel] Java: no magic wand / [devel] Java: no magic wand, no magic hammer начиная с http://lists.altlinux.org/pipermail/devel/2008-January/068361.html.