Архив 07.2008
July 31, 2008
06:07
Уже не первый раз наталкиваюсь на достаточно общую задачу: найти все классы в classpath приложения. Каждый раз гуглю, пишу код, а потом он где-то теряется.
Поэтому, выкладываю код своего решения, может быть кому-нибудь пригодится. А если не пригодится напрямую, здесь видно как читать Jar-файлы))) Короче, говоря, гугл рассудит)
Краткое описание подхода, чтобы лучше понимался код:
- Разделяем строку classpath на записи, ссылающиеся на конкретные директории и jar-файлы. В линуксе разделитель между ними - двоеточие, в винде - точка с запятой. Дальше, для каждой записи:
- Если запись ссылается на директорию - рекурсивно сканируем ее, считая директорию, откуда начали сканирование соответствующей корневому пакету.
- Если запись ссылается на файл, пытаемся анализировать его как Jar-файл, используя инструментарий из пакета java.util.jar
Чтобы использовать нижеприведенный класс необходимо получить саму строку classpath. Это осуществляется простым вызовом
System.getProperty ("java.class.path")
Читать дальше »
July 26, 2008
14:07
Около полутора недель назад открыл для себя Maven. Пришлось с ним играться в связи с тем, что исходники одной библиотеки на Java, с которой я работал, собирались с его помощью. Сначала было несколько непривычно, сейчас уже не представляю как я раньше жил без него.
Наверное, если все просуммировать, основными особенностями, которые меня в нем привлекают будут:
- Контроль внешних зависимостей. Потрясающе удобно, когда всякие мелкие библиотечки не надо качать отовсюду и искать им место в структуре проекта, а достаточно указать в xml-файле. и они автоматически скачиваются по мере необходимости.
- Модули и зависимости между ними. Один проект легко разбивается на подпроекты, междукоторыми устанавливаются зависимости.
- Плагины, которые автоматически скачиваются по мере необходимости.
- Генерация проектов Eclipse, не надо делать одно и то же дважды.
- Простота - то, что все проекты имеют более-менее зафиксированную структуру значительно упрощает работу с ними.
Несколько ссылок по теме:
Читать дальше »
July 21, 2008
06:07
В этой заметке я расскажу о некоторых возможностях Groovy, которые обеспечивают его динамичность. В частности:
Читать дальше »
July 13, 2008
08:07
Мультиметоды – это механизм выбора метода на основе не только динамического типа его получателя, как при использовании виртуальных методов, но и динамических типов его аргументов. По сути, этот механизм обобщает виртуальные функции и перегрузку.
При правильном использовании этот механизм позволяет писать более компактный и читабельный код, однако, как обычно и бывает, ценой потери производительности. Хотя вопрос о значительности этих потерь остается открытым, и, я думаю, схож с вопросом о производительности в случае с виртуальных функций.
В Groovy выбор метода для вызова осуществляется на основе динамических типов аргументов, а не статических, как, например, в Java. В частности, рассмотрим два следующих участка кода.
Читать дальше »
July 07, 2008
14:07
Robocode – это игра, придуманная Mathew Nelson в компании IBM, предназначенная для обучения программированию на языке Java.
Суть игры проста: игроки пишут код на Java, управляющий действиями миниатюрного танка. Потом несколько танков выпускаются на поле и бьются до победного конца) По результатам нескольких раундов определяется победитель.
Обычно, соревнования проводятся в стиле deathmatch, то есть каждый танк представляет одну команду, но игра поддерживает и возможность командной игры, когда за одну команду играют несколько танков, возможно, кооперирующихся.
В ближайшее время попробую поиграться)) Так что, если у кого будет желание сразиться с моими танками – с удовольствием приму вызов=)
Ссылки:
Читать дальше »