2009-10-13

lombok

Небольшое описание projectlombok.org, инструмента генерации нудного кода (getters/setters/equals/etc) путем вмешательства в компилятор java.


lombok использует стандартную технологию javac Annotation Processing (бывший apt в java5) для вмешательства во внутреннее дерево разбора javac. (вмешательство на границе синтаксического и семантического разборов)
По спецификации annotation processing предоставляет только readonly представление дерева разбора, но lombok обходит это ограничение.
Таким образом легко реализуются автоматическая генерация на этапе компиляции геттеров/сеттеров, toString, equals, и пр. http://projectlombok.org/features/index.html

Огромным плюсом является то, что не требуется модификация компилятора. все что нужно, это добавить jar в classpath при компиляции.
(javac -cp lombok.jar *.java)
Недостатком является требование Java SDK 6.
Также имеются проблемы с IDE, у которых annotation processing реализован по другому и используются другие деревья разбора (отличные от javac). С Eclipse проблема решена путем адаптации кода к дереву разбора ecj. Таким образом, в lombok существуют отдельно генераторы для javac и ecj. Плохо с точки зрения дублирования кода.

 В планах lombok проникновение в другие части компилятора (после лексера для реализации замыканий (closures!), после семантического разбора для проведения интеллектуальных анализов с учетом семантической информации (типы, ссылки на объявления) и на этапе генерации байт кода.
http://github.com/rzwitserloot/lombok/blob/master/doc/PlannedExtensions.txt

No comments:

About Me

Ekaterinburg, Ural, Russia