Как я пилил компилятор Java с блэкджеком и костылями

от автора


Дело было вечером, делать было нечего.
Сидел я за пустым ноутом, думал что же делать, никаких сред разработки не стояло.
Из установленного были только chrome и java…
Ну и захотелось мне сделать свою среду разработки для Java.

Внимание!
Захотелось ее делать не просто так.
Мне просто было лень скачать NetBeans и установить его.

Более подробно обо всем я расскажу под катом, там же исходники, код и прочее.

Ну что же, приступим, начинал с самого простого: создал батник, прописал путь до java в «кавычках», указал путь до библиотек и создал небольшой java файл для проверки. Проверка прошла успешно, перешел дальше, начал дописывать настройки, проверку на наличие папок под скомпилированные файлы, их перемещение и другое. Многие сейчас уже думают: «И не лень же было пилить такие костыли, ведь скачать быстрее и надежнее». Ну так вот я не остановился и теперь у меня полноценная среда разработки.
(В мою среду входят: notepad++, java portable x64_86, пример Hello, World, 64_86 версии самого компилятора =))
Тут я покажу только с java которая уже стоит у вас и без портабельных версий np…

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

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

MD lib MD main MD main\net MD sys echo file>x32.bat echo file>x64.bat echo Welcome!>ReadMe.txt echo file>lib\lib1.jar echo file>sys\md.cmd echo file>sys\main.cmd echo file>sys\move.cmd echo file>sys\libs.cmd echo file>main\test.java echo file>main\net\test2.java 

После выполнения нашего файла у нас появились нужные директории и файлы.
Переходим к файлам в корневой директории.
У нас тут есть x32/x64.bat, ReadMe.txt.
В readme пока что только Welcome!

Теперь же изменяем наш x32.cmd
В нем у нас будут такие строки:

@echo off rem -----main-------- call sys\main.cmd rem -----java-------- set x32="C:\Program Files\Java\jdk1.7.0_25\bin\javac.exe" rem ----------------- echo %start% rem -----check------- if exist com goto start if not exist com goto create :create call sys\md.cmd :start call sys\libs.cmd %x32% -classpath %libs% main\*.java %x32% -classpath %libs% main\net\*.java cls call sys\move.cmd echo %finish% pause 

В начале подключается главный файл сообщений.
Далее идет подключение самой javac.
Далее вывод сообщения о том, что запуск успешен.
После этого идет проверка на существование директории com у вас может быть любая другая.
Если этой директории не существует, то переходим к пункту create.
Если существует, то идем в start.

Если главная папка не существует, то вызывается файл md.
Он создает не существующую папку и также проверяет остальные внутренние папки.

Теперь start.
В нем у нас подключается libs.
Дальше в тех же строках указано:
%x32% — путь до java который уже указали в переменной в начале.
%libs% — подключение библиотек
И main\…\*.java — это список компилируемых файлов, компиляции поддаются сразу все.
Дальше очистка экрана и перемещение всех файлов в директорию скомпилированных.
Вывод сообщения о завершении и пауза. (пауза иногда будет служить error логом)

Собственно в x64 все так же, но путь до Javac в начале другой.

Теперь идем по папкам:
main -> test.java -> тут пишем ваш java код (например любой вывод Hello, World!.. Не забудьте подключить библиотеки для компиляции если требуются)
sys -> *.cmd -> сейчас будем заполнять.

libs.cmd -> файл подключения библиотек, содержит вот такой код:

set libs=lib\cb.jar 

Несет за собой переменную %libs%.
Либы указываются через ";".
Например так:

lib\cb.jar;c:\libs\lib222.jar 

main.cmd -> файл сообщений

set start=Start ...................... Ok set finish=Complete .................... Ok 

md.cmd -> проверка директорий и их создание

rem Check com\net if exist com\net goto nan if not exist com\net goto comnet rem Create com\net :comnet MD com\net rem Check ok :nan echo Checking folders ........... Ok 

Тут вроде и так все понятно =).

move.cmd -> пути куда перемещать скомпилированные файлы

move main\*.class com\ move main\net\*.class com\net\ rem yml configs move main\*.yml com\ 

На этом код и закончился у меня.
Думаю это было хоть чуть-чуть интересно.
Я старался писать без ошибок, и внимательно все проверил.

Скачать готовую среду (версия не portable)

Спасибо за внимание.

Если есть вопросы или предложения как улучшить это, пишите.

P.s. на момент публикации я немного подзабыл о своем компиляторе и утерял исходники последней версии. Поэтому полная портабл будет выложена потом.

ссылка на оригинал статьи http://habrahabr.ru/post/207966/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *