Java Policy: различия между версиями

Материал из ALT Linux Wiki
(Import from freesource.info)
 
Нет описания правки
Строка 1: Строка 1:
[[Category:Policy]]
[[Category:Policy]]
{{MovedFromFreesourceInfo|AltLinux/Policy/Java}}
<!--{MovedFromFreesourceInfo|AltLinux/Policy/Java}-->


__TOC__
__TOC__
Строка 17: Строка 17:


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.  
Строка 27: Строка 27:
viy: это актуально всегда, только сейчас у нас наименьшая JVM -- это java-1.5.0 sun.
viy: это актуально всегда, только сейчас у нас наименьшая JVM -- это java-1.5.0 sun.
соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше.
соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше.
если пакет использует нововведения Java SE 6, то source и target в значении 1.6 (Не злоупотреблять. только если код написан под Java 6).
если пакет использует нововведения Java SE 6, то source и target в значении 1.6.
(Не злоупотреблять. только если код написан под Java 6)
пакетов, использующих нововведения Java SE 7 и выше, в Sisyphus пока не отмечено.
пакетов, использующих нововведения 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 ====
==== Пакеты из репозиториев jpackage.org ====

Версия от 17:44, 5 августа 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.