Руководство java разработчика il-2 FreeHost




НазваниеРуководство java разработчика il-2 FreeHost
Дата публикации21.04.2013
Размер74.7 Kb.
ТипРуководство
odtdocs.ru > Право > Руководство
Руководство java разработчика IL-2 FreeHost
В редакции от 11.09.2009

Автор: Сергей Чистяков (barmal)



Дистрибутивы

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

  • Eclipse, это IDE для работы с исходными Java кодами (http://www.eclipse.org/platform)

    ссылка на готовый к работе Eclipse Galileo Java EE с установленным в него плагином SVN Subversive:

    http://warbirds.tomsk.ru/il2_freehost/eclipse-jee.exe

    Разархивируйте в какую-либо папку содержимое архива и еклипс готов к работе

  • jdk, это Java Development Kit – необходимо для компиляции классов java в байт код

    скачать можно с сайта SUN а можно и отсюда:

    http://warbirds.tomsk.ru/il2_freehost/jdk-1_5_0_10-windows-i586-p.exe

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

    Клиент SVN cкачать можно с официального сайта SVN или отсюда:

    консольный клиент

    http://warbirds.tomsk.ru/il2_freehost/Slik-Subversion-1.6.3-win32.msi

    мануал по работе с ним и вообще с SVN

    http://warbirds.tomsk.ru/il2_freehost/svn-book-html/svn-book.html



Принципы работы в проекте
Ппроект IL-2 FreeHost находится под управлением SVN. Если вы не знаете что такое SVN и зачем он, читайте мануал самого SVN или Приложение 1 к этому документу(смотрите конец документа)

Все взаимодействие разработчиков между собой и с багтестерами ведется через систему отслеживания багов Mantis.

Адрес системы http://il2dev.tspace.ru/mantis/.

Принцип работы в мантисе прост – один вопрос на одну проблему. Механизм мантиса показывает кто ответственнен за решение проблемы, ее статус, важность, приоритет. Осваивайте интерфейс мантиса. Для регистрации на нем используйте живой почтовый ящик, для того, чтобы вам приходили все уведомления о ходе изменения вопросов, поднятых в мантисе и за которые вы ответственны, или отслеживаете.

По умолчанию пользователь в мантисе видит только несколько проектов, открытых всем. В нашем случае это проект IL-2 FHMOD BUGS и его подпроекты. Для разработчиков существуют проекты с ограниченной видимостью, если вы не увидите в мантисе проект IL-2 FHMOD и его подпроекты client, server и server Maps, то обращайтесь за доступом ко мне.
^ Подготовка к разработке, структура файлов проекта
После установки Eclipse, приступайте к скачиванию проекта из репозитория и настройке путей в системе и командных скриптах.

Скачивание последней версии проекта из репозитория происходит так. Я буду говорить как действовать через консольную версию SVN.

  • С помощью FAR или любого другого менеджера способного работать с командной строкой windows встаете где нибудь в папке, где предполагаете будет лежать папка с проектом

  • выполняете последовательно команды:

  • с:\>mkdir il2fh

  • c:\il2fh>cd il2fh

    c:\il2fh>svn co http://80.72.210.218/repos/il2_java/bin/

    c:\il2fh>svn co http://80.72.210.218/repos/il2_java/src/

  • >mkdir workspace


SVN спросит логин и пароль. Я сообщу их отдельно. Также необходимо будет сообщить мне рабочий e-mail через который вы будете получать уведомления о изменениях в файлах проекта.

Запускаем Eclipse, в качестве рабочего пространства указываем папку c:\il2fh\workspace\. Затем импортируем в Eclipse проекты с джавакодом сервера и клиента. Для этого в Eclipse

File->Import->SVN->Project from SVN->Next-> Вводим URL

http://80.72.210.218/repos/il2_java/trunk/client/

Затем везде next и импортируем проект из репозитория в рабочее пространство Eclipse. Тоже самое делаем для сервера. Только урл будет http://80.72.210.218/repos/il2_java/trunk/server/

Структура папок в итоге будет примерно такая:

c:\il2fh\+

|-\bin\+

| |-\byte_code_client\ - ВСЕ текущие байткоды мода клиента

| |-\byte_code_server\ - ВСЕ текущие байткоды мода сервера

| |-\mod_client\ - хеши классов мода клиента

| |-\mod_server\ - хеши классов мода сервера

| |-\regexp_hashes\ - хеши пакета регекспов, которые я добавил в ил

| |-\resolver\ - утилитка qtim для резолвинга хешей

| |-classhasher.jar - утилита qtim для создания хешей из байткодов

| |-make_mod.bat - скрипт для сборки mod_client

| |-make_server.bat - скрипт для сборки mod_server

| |-runil2.bat - чтоб долго не бегать к илу, запуск его

| |-runserv.bat - чтоб долго не бегать к серверу, запуск его

| |-targets.txt - список классов, которые надо компилировать, чтобы

| | получился мод клиента

| |-targets_server.txt - то же для сервера

| |-update.bat - список каталогов и файлов, которые необходимо

| апдейтить, чтобы иметь самые свежие байт коды и

| таргеты, если они устареют довольно сильно, то

| не сможете из текущих байткодов и

| сырцов собрать мод

|

+-\src\ - исходные коды ила и байткоды, не модифицированные, пригодятся в

| работе, так как часто иногда необходимо посмотреть, как же было до

| того как сделали мо

+-\workspace\+ - папка в которой происходят текущие работы

| по изменению кода ила

|-\client - проект Eclipse с кодом клиента

|-\server - проект Eclipse с кодом сервера


  • вообще в репозитории несколько больше папок(можно посмотреть через браузер), но все качать не имеет смысла, так как там в основном ветки или стабильные дистрибутивы, или много еще всего, что не связано с прямым программированием джавы ила.


^ Настройте Eclipse к работе с проектом.

В результате слева в еклипсе у вас должно быть два проекта. Можно потом еще убрать галку -> Progect -> Buil Automaticaly
Как это все компилится и работает.

Мод ила представляет из себя набор хешей байт кодов Java классов, лежащих в одной папке. В нашем случае в папке mod_clent или mod_server. Елси эти фалы положить в каталог MODS пропатченного Ил-2, то он при загрузке считывает эти файлы и использует их код в своей работе.

  • Чтобы получить хеши необходимо готовые байт коды классов, которые мы модифицировали, обработать утилитой qtim classhashe.jar.

  • Чтобы получить байт коды, необходимо откомпилировать нужные нам классы. Мы не можем в Eclipse нажать кнопку build и откомпилировать полностью весь проект ил2, из за того что во многих декомпилированных классах есть ошибки, а некоторые классы вообще не декомпилировались.

  • Поэтому мы используем следующий трюк: мы компилируем модифицированные классы так, что недостающие иловские классы (а это все то что мы НЕ модифицировали) компилятор берет из оригинальных байткодов ила (содержимое папок \bin\byte_code_client и \bin\byte_code_server). Попросту указываем туда CLASSPASS. Причем результаты наших компиляций мы туда же и ложим, чтобы в дальнейшем можно было их использовать в последующих компиляциях, поэтому содержимое этих папок меняется и влияет на возможность сборки всего мода в целом. Например если вы сейчас возьмете нетронутые байткоды ила, и с помощью них попробуете откомпилировать сырцы модифицированных классов, то они не окомпилятся в принципе, так как в нетронутых байткодах ила нет тех многих функций и переменных и классов, кторые я добавил в процессе создания мода.

  • После того как мы откомпилировали наши классы, например клиента, мы помещаем их из \bin\byte_code_client в некую tmp директорию, рекомендую всем в bin такую создать, и не добавлять ее в SVN. После чего на эти файлы натравливается хешер кутима, и готовые Хеши мы раскладывам в каталог mod_client и в каталог самого ила, чтобы далеко не бегать и не копировать руками свежескомпиленые файлы в ил2.

  • Всем этим занимаются скрипты make_mod.bat и make_server.bat так что нам остается толко прописать правильно пути до директорий с проектами eclipse, bin, самого илаи потом только править яву и вызывать эти скрипты для компиляции.

  • Для того чтобы скрипты, собирающие мод, знали какие же конкретно классы необходимо компилить, есть файлы targets.txt и targets_server.txt Если вы начали править класс, которого нет в этих файлах – добавьте его туда и сделайте коммит в SVN, чтобы остальные разработчики занли о таком важном изменении в проекте. Обычно в работе необходимо компилить только пару классов, все перекомпиливать приходится редко, поэтому для удобства можно таргетные классы коментировать в начале строки решеткой #. Тогда скрипты такой класс не компилят.



^ Рекомендации по отладке кода.
Так как мы не можем компилить наш мод в еклипс и запустить его там не можем, то к сожалению весь инструментарий отладки нам не доступен. Поэтому остается только принт сообщений в системную консоль ила (вызывается в иле по ctrl+tab). В жаве самый простой принт составной строки выглядит как

System.out.println(строка + строка + интегер + строка);

Еще очень полезно использовать механизм exception.

Например так, если вы хотите наверняка вызвать exception, в нужном участке кода пишем::

Exception exception = new Exception();

exception.printStackTrace();
В результате в консоль лог ила будет выведен стек функций, полезно его видеть если не знаешь откуда же был вызван этот кусок кода.
Так что процесс отладки выглядит примерно так.

Правим код -> компилим -> идем в ил, запускаем все -> смотрим console log.

Приложение 1

О работе в SVN
SVN - это от слова SubVersion.
Концепция SVN следующая. У вас есть некий набор файлов, все что угодно, но обычно это некая программа или что либо такое, что внутрях себя содержит много текста. Над этими файлами ведется работа, например их изменяют, копируют, удаляют, добавляют какие-то новые файлы и прочая. Так вот, грубо говоря, если файлы находятся под управлением SVN, то любое изменение в файлах фиксируется, запоминается и ведется лог изменения. Это позволяет в любой момент времени установить, а что же тут или там менялось(какие имеено строки были удалены, заменены), кто менял, зачем и прочая.
В общем очень удобно и файлы никогда не теряются и не пропадают рабочие куски кода. Однажды поппав в проект любой файл или текст в нем остается навсегда, даже если вы его сотрете потом из рабочих файлов проекта, по логам сервера его всегда можно будет восстановить.
Ближе к делу
GUI SVN интегрируется в Проводник винды. Это значит, заходите

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

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

меню появятся новые менюшки SVN.

Выбираете SVN извлечь. Выплывет диалог, неопоходимо будет указать

путь к репозиторию проекта.

http://il2.tomsk.ru/repos/il2_java/
Жмете потом ОК, у вас спросят пароль и логин, потом по идее больше

никогда не спросят. Логин и пароль выдается каждому разработчику

индивидуальный.
Потом скачивается наипоследняя версия проекта.

Причем там в проекте будут присутствовать везде папочки .svn

на них не обращать внимания, это свн служебные папки,

места они много не занимают, а ему нужны.
После того, как вы у себя на компе заимели рабочую версию

проекта под управлением SVN можно приступать к работе с ним.
Работать можно как угодно. Вы работаете у себя локально, а не на сервере.

Но после того как закончили править файлы вам нужно утвердить ваши

изменения, чтобы они отобразились на сервере.

Поэтому правой кнопокй мыши щелкаем, и там есть пункт Фиксировать.

Там предлогается потом диалог, необходимо написать логзапись.

Коротенько описываете, что же вы хотите утвердить и зачем.

Это во первых нужно для вас самих, через пол года будете знать

а что же вы тут делали и конечно для всех остальных.
Каждая фиксация приводит к новому изменению версии проекта.

Этих фиксаций(ревизий) может быть очень много. По номеру ревизии

вы всегда можете определить, а свежаю ли копия проекта у вас,

если нет то жмем обновить и СВН проверяет что изменилось и вносит

эти изменения в вашу рабочую копию.
Если вы вдруг напортачили с каким-то файлом, то просто жмете

Убрать изменения из контекстного мени по правой кнопке, и все

возвращается до начало работ как было. Очень удобно.
Цикл работы с проектом выглядит так:

1. Обновить проект (вдруг кто-то пока вы спали что-то сделал с проектом)

2. Изменяем файлы.

3. Снова обновляем проект, на всякий случай, вдруг файл который

вы изменили кто-то уже поправил и возник конфликт изменений.

СВН все это показывает кстати прямо в проводнике. Зеленая галка -

с файлом все ок, восклицательный знак - вы его изменили, +

вы добавили этот файл к хранилищу(и после фиксации он будет

закачан на сервер и его увидят все остальные пользователи хранилища) и прочее.

4. Жмем фиксировать изменения. Заполняем журналюную запись. Наблюдаем как все фиксируется.

5. К вам на почту и всем остальным приходит письмо, с журнальной записью и логом сервера.
Вот в кратце все.

Подробнее доку можно почитать в каталоге с дистрибутивом.

Но там больше про консольный клиент рассказываетсяя(родной свновский).

Лично я пользуюсь консольным клиентом.

Добавить документ в свой блог или на сайт

Похожие:

Руководство java разработчика il-2 FreeHost
Прото разархивируйте в какую-либо папку содержимое архива и еклипс готов к работе

Библиографический указатель книг, поступивших в библиотеку
Берд Дж. Веб-дизайн. Руководство разработчика / Дж. Берд; пер c англ. О. Сивченко. Спб. Питер, 2012. – 218 с.: ил., 32 с цв ил

Лабораторная работа №4 по курсу «тфкп» на тему: «Типы данных, переменные,...
Изучить типы данных, правила объявления переменных, констант и массивов в языке Java. Научиться создавать программы на языке Java,...

Лабораторная работа №4 по курсу «тфкп» на тему: «Типы данных, переменные,...
Изучить типы данных, правила объявления переменных, констант и массивов в языке Java. Научиться создавать программы на языке Java,...

Лабораторная работа №4 по курсу «тфкп» на тему: «Типы данных, переменные,...
Изучить типы данных, правила объявления переменных, констант и массивов в языке Java. Научиться создавать программы на языке Java,...

Установка и настройка backserver
Первым делом убедитесь что у вас установлена java версии 0 20 или выше. Если это не так — установите последнюю версию Java Sun

Чем отличаются Java-приложения и Java-апплеты?
Что такое первичный класс приложения? Какой обязательный метод он должен содержать?

Лабораторная работа №4 по курсу «тфя» на тему: «Разработка веб-приложений с помощью Java»
Убедиться, что все правильно сконфигурировано с помощью команд java -version, javac -version

Предпосылки использования хранимых процедур на языке Java
Обзор, разработка и использование хранимых процедур, написанных на языке Java в субд oracle

Руководство кассира-оператора
Данное руководство является кратким справочным описанием для кассира-оператора по работе в конфигурации "Торговля и склад. Ред. 2"...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница