Инструкция по сборке и использованию исходного кода Apache Harmony

RU | EN

Следуйте этой инструкции, чтобы настроить, скомпилировать и работать с исходным кодом Apache Harmony. Для этого, необходимо:

  1. Убедиться, что установлено все необходимое ПО.
  2. Получить (скачать) исходный код.
  3. Скомпилировать исходный код.

После успешной сборки, вы сможете запускать Java приложения , используя Harmony.

Если вам не нужен весь комплект разработчика Harmony Java SE (HDK), и вы намерены работать с отдельными частями кода Apache Harmony, следуйте пошаговой инструкции для построения отдельных компонент этого комплекта.

Проект находится на стадии разработки. При обнаружении ошибок, воспользуйтесь поиском по архиву почтовой рассылки проекта и списком ЧАВО - возможно, ваша проблема уже выявлена и решена. Если вы не нашли нужную информацию, пришлите нам описание проблемы, и мы постараемся помочь.

1. Требования к системе

Общие требования

Для работы с Harmony необходимо установить следующее ПО:

Необязательным (но рекомендкемым) ПО является Eclipse Java Compiler (ECJ), версия 3.2 или более поздняя. Вы можете скачать ecj.jar как отдельный файл и поместить его в папку ANT_HOME/lib. В качестве альтернативы, вы можете использовать любой другой компилятор для Java 1.5, совместимый с Ant, посредством переопределения переменной hy.javac.compiler.

Tребования для отдельных платформ

В зависимости от платформы (см. список поддерживаемых платформ) вам понадобится ряд других программ, наиболее общий список которых приводится ниже.

Windows

Linux

Примечание:

Вам необходимо убедиться, что вы правильно настроили своё окружение для работы с указанными выше программами. В частности, переменные окружения (такие как PATH) содержат все необходимые файловые пути и т.д., так что вы можете успешно работать со всеми инструментами из командной строки.
Например, для использования C++ компилятора на Windows, как правило, потребуется запустить соответствующий скрипт (такой как "Visual Studio .NET 2003 Command Prompt") непосредственно перед началом сборки.

Дополнительные требования

Отдельные компоненты системы сборки также зависит от сторонних программных продуктов и библиотек. Поскольку эти требования постоянно эволюционируют, мы рекомендуем запустить систему сборки и автоматически загрузить недостающие компоненты через Интернет.

Для построения виртуальной машины DRLVM, одного из основных компонентов системы, требуются:

Данные компоненты необходимы для построения исходного кода как на Windows, так и на Linux системах.

Вы можете загрузить и установить дополнительные компоненты до сборки DRLVM и указать их расположение (например отредактировав файл make/depends.properties в рабочем пространстве компоненты). Однако, поскольку требования к ПО периодически изменяются, не рекомендуется самостоятельно устанавливать недостающие программы. Система сборки сделает это за вас.

2. Загрузка федеративной систему сборки

ПО Harmony разделено на несколько компонент. Для построения всего ПО вам необходимо построить библиотеку классов, виртуальную машину и инструменты Java разработчика. Используйте федеративную систему сборки для построения всей среды, а затем работайте с библиотекой классов и/или ВМ по вашему выбору. В настоящее время, система сборки использует виртуальную машину DRLVM.

Для того, чтобы загрузить федеративную систему сборки из SVN репозитория, используйте следующую команду:

$ svn co http://svn.apache.org/repos/asf/harmony/enhanced/trunk

Данная команда создаст пустые директории common_resources, working_classlib, working_vm и working_jdktools. На следующем этапе федеративная система сборки загрузит необходимый исходный код и соберёт JDK. Директория working_classlib будет содержать копию дерева каталогов библиотеки классов, директория working_vm - копию дерева каталогов DRLVM, и так далее.

Примечание: в ОС Windows, если корневая директория системы сборки находится на много уровней ниже корневого каталога, излишне длинный путь к библиотеке классов может вызвать ошибку при попытке загрузить исходный код. Для решения этой проблемы, переместите корневую директорию системы сборки выше по дереву каталогов или смените операционную систему.

3. Использование федеративной систему сборки

На этом этапе система готова начать сборку. Во время первого запуска системы потребуется загрузка всех необходимых внешних компонент. Система сборки оповещает пользователя об отсутствии необходимых компонент или изменении в требованиях, так что процедуру загрузки внешних компонент необходимо будет периодически повторять.

Для того, чтобы загрузить необходимые сторонние компоненты, исходные тексты Harmony и построить готовую среду исполнения и комплекты разработчика Harmony Java SE (JRE, JDK и HDK), в корневой папке системы сборки вызовите следующую команду:

$ ant -Dauto.fetch=true all

Данная команда загружает сторонние компоненты, которые могут распространяться под различными лицензиями, отличающимися от лицензии Apache, см. полный список лицензий в файле THIRD_PARTY_NOTICES.txt в корневой папке.

Скачивать дополнительные компоненты потребуется только во время первого прогона сборки. Для последующих прогонов, достаточно использовать команду

$ ant

Для построения полной сборки настоятельно рекомендуется увеличить объем динамической памяти (Java heap), используемой программой Apache Ant. Для этого, измените значение переменной окружения ANT_OPTS доступным для вашей операционной системы способом, например:

ANT_OPTS='-Xms256m -Xmx512m' 

Если вы предполагаете использовать только отдельные части исходного кода, вам не обязательно строить весь комплект разработчика. В таком случае, не вызывайте ant и следуйте пошаговой инструкции как указано ниже.

Back to top

Пошаговая инструкция сборки отдельных компонент

1. Извлечение дерева каталогов

Для извлечения полного дерева каталогов для всех компонент, удобно использовать скрипт build.xml федеративной системы сборки. В корневой директории системы сборки, выполните следующую команду:

$ ant populate-src

Данная команда скачивает из SVN репозитория исходные тексты библиотек классов, ВМ и утилит в директории working_classlib, working_vm и working_jdktools соответственно, причем версия извлеченного кода соответствует версии файла build.xml. Поскольку дерево каталогов довольно велико, загрузка всех каталогов может занять продолжительное время.

При желании, вы можете сэкономить время и сетевые ресурсы, скачав только интересующие вас компоненты вручную. В таком случае, для сборки вам дополнительно потребуется готовый пакет разработчика HDK, который вы можете скачать с сайта Apache Harmony.

2. Обновление Дерева Каталогов

По прошествии времени, вы можете синхронизировать вашу копию исходного кода с текущей версией в SVN репозитории, вызывая команду svn update в нужной директории, например:

$ cd working_classlib
$ svn update

Таким способом вы можете получать обновления кода любого из компонент. После исполнения команды в вашем дереве каталогов отобразятся все изменения, внесенные в SVN репозиторий после предыдущей синхронизации.

Примечание:

если после обновления дерева каталогов появляется ошибка при построении библиотеки классов, удалите результаты предыдущей сборки командой

$ ant clean

3. Сборка компонентов

На данном этапе система готова скомпилировать исходный код. Необходимо собирать компоненты в следующем порядке: сперва библиотеку классов, затем ВМ, затем утилиты. Это важно, поскольку между компонентами существуют зависимости, каждая последующая компонента использует результаты сборки предыдущей.

Все компоненты имеют унифицированные интерфейсы к системам сборки, т.е. они поддерживают одинаковый базовый набор команд и переменных. Поэтому последующие шаги даются на примере библиотеки классов, но применимы ко всем другим компонентам.

Во время первой сборки система загружает все необходимые сторонние компоненты. Система сборки оповещает пользователя об отсутствии необходимых компонент или изменении в требованиях, так что процедуру загрузки внешних компонент потребуется периодически повторять.

Для загрузки внешних компонент и сборки библиотеки классов используйте следующие команды:

$ cd working_classlib
$ ant fetch-depends
$ ant

Теперь вы можете протестировать результаты сборки. Каждая компоненты включает достаточно полный набор тестов на функциональность и должна успешно выполнять 100% из них. Примечание: для тестирования библиотеки классов вам необходима виртуальная машина. Вы можете использовать не только DRLVM, см. раздел Конструирование среды исполнения. Если вы хотите тестировать библиотеку классов вместе с DRLVM, приступайте к сборке DRLVM.
Выполните следующую команду для построения и прогона полного набора тестов:

$ ant test

Сборка завершена. Результаты сборки для каждого компонента находятся в директории deploy/jdk/jre внутри соответствующего рабочего пространства.

Примечание

DRLVM создаёт директорию deploy только если переменная deploy.canonical.flag была выставлена в значение TRUE. В противном случае результаты сборки расположены глубже по дереву каталогов как build/<ваша-платформа>/deploy/jdk/jre.

Вы можете получить дополнительную информацию о доступных командах и опциях для каждого из компонент при помощи команды:

$ ant help

5. Конструирование среды исполнения из скомпилированных компонент

Разработчики библиотек классов могут использовать виртуальную машину DRLVM или установить другую совместимую ВМ. Например, вы можете использовать IBM virtual machine которая была предоставлена компанией IBM для нужд разработчиков проекта на условиях пробной, не открытой лицензии на выполняемый код. Для установки ВМ следуйте прилагающейся документации. Вы можете развернуть дерево каталогов библиотек классов поверх дерева каталогов Harmony, так что директории 'jdk' совпадут.

Windows:

$ unzip <path_to_vm_zip> -d ../..

Linux:

$ tar xzf <path_to_vm_tarball> --directory ../..

Для работы с библиотекой классов Harmony, используйте подробную документацию для этого компонента.

Разработчики виртуальной машины DRLVM могут пользоваться результатами сборки DRLVM напрямую, они включают в себя полную среду исполнения Java, состоящую из DRLVM и библиотеки классов.

Back to top

Запуск Java-приложений

Убедитесь, что переменная окружения JAVA_HOME не имеет значения или указывает на директорию сборки Harmony (deploy/jdk/jre если вы собирали по этой инструкции).

Используйте стандартный синтаксис для запуска Java-приложений:

$ deploy/jdk/jre/bin/java -showversion -jar helloworld.jar
Apache Harmony Launcher:
(c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r479551, (Nov 27 2006), Windows/ia32/msvc 1310, debug build
http://harmony.apache.org
Hello world!

Back to top