Я не из РФ всего 1.5 года:) Инфа — от коллеги, который сидит на ФГУТ РСВО. Топик был с целью узнать у кого ещё такие проблемы:) Опрос выявил, что только у узкого круга пользователей определенных провайдеров, список которых пытаюсь сейчас выяснить
Я конечно рискую, но всё же выскажу своё мнение, почему я считаю то, что делают Oracle — правильным, хотя бы частично:
Думаю все, кто крутятся в Java среде знают о существовании библии JVM — Blue Book. В ней максимально подробно описано как должна быть реализована JVM. Без жёстких стандартов и спецификаций Java была бы не Java. Для нас, Java разработчиков, Blue Book гарантирует что код будет исполняться одинаково, это те гарантии, которые делают JVM столь привлекательной.
И тут появляется Google, которые кладут большой и толстый на Blue Book, отказываются от сертификации JVM, но при этом всё ещё говорят, что для их VM пишут на Java. Что мы получаем в итоге? «А этот код работает на Android?». Для сравнения можно вспомнить M$, которые в своё время не стали называть шарп джавой и стали развиваться в своём направлении. И никто не пытается теперь подсунуть Java-компилятору C# код.
Я вижу этот суд как попытку наказать Google именно за это, а выбранные рычаги воздействия — это уже другой разговор. Уверен, если бы Google в своё время реализовали полноценную JVM, претензий к ним не было бы.
Можно аннотировать Java-классы, если используется Groovy-компилятор, а не стандартный javac. Все AST трансформации происходят на этапе компиляции и меняют результатирующий байт-код
P.S. больная тема, поэтому суюсь везде с ответом:) Сори, если ожидался ответ именно от Баруха
Практически для всех аннотаций, перечисленных в статье, есть отличная поддержка IDEA, она понимает, что как генерирует и позволяет с этим работать с блекджеком и автокомплитом
Cédric Champeau обещал посмотреть через неделю внимательней, вроде как его тоже заинтересовал. Постараюсь продвинуть его в groovy-core, где ему и место имхо.
От себя скажу, что AST трансформации — определённо киллер фича Groovy. Если мы раньше использовали AOP, и это казалось чем-то крутым и решающим 100% наших проблем, то Groovy расширил эти 100% в разы, показав нам насколько мы ошибались.
На правах рекламы хочу поделиться примером активного использования ASTT — compile-time генератор конверторов объектов для JVM (Прощай Dozer):
Думаю все, кто крутятся в Java среде знают о существовании библии JVM — Blue Book. В ней максимально подробно описано как должна быть реализована JVM. Без жёстких стандартов и спецификаций Java была бы не Java. Для нас, Java разработчиков, Blue Book гарантирует что код будет исполняться одинаково, это те гарантии, которые делают JVM столь привлекательной.
И тут появляется Google, которые кладут большой и толстый на Blue Book, отказываются от сертификации JVM, но при этом всё ещё говорят, что для их VM пишут на Java. Что мы получаем в итоге? «А этот код работает на Android?». Для сравнения можно вспомнить M$, которые в своё время не стали называть шарп джавой и стали развиваться в своём направлении. И никто не пытается теперь подсунуть Java-компилятору C# код.
Я вижу этот суд как попытку наказать Google именно за это, а выбранные рычаги воздействия — это уже другой разговор. Уверен, если бы Google в своё время реализовали полноценную JVM, претензий к ним не было бы.
Я просто оставлю это здесь:)
Кстати, а как у вас с отложенной доставкой сообщений и отмены отложенной доставки?
groovy.codehaus.org/gapi/groovy/transform/ASTTest.html
правда создана была для другого:)
Для тех, кто хочет поиграться с ASTT, я создал проект, позволяющий писать трансформации Inline. Встречайте — @InlineTransform :)
github.com/bsideup/GroovyInlineTransform/blob/master/src/test/groovy/ru/trylogic/groovy/transform/inline/tests/BasicTest.groovy
Залил в Maven central ( search.maven.org/#search%7Cga%7C1%7Cgroovy-inline-transform ), ждёт синхронизации, могу ещё послать в jCenter :)
P.S. больная тема, поэтому суюсь везде с ответом:) Сори, если ожидался ответ именно от Баруха
К слову, саму идею я взял из Haxe-a: haxe.org/manual/macros
От себя скажу, что AST трансформации — определённо киллер фича Groovy. Если мы раньше использовали AOP, и это казалось чем-то крутым и решающим 100% наших проблем, то Groovy расширил эти 100% в разы, показав нам насколько мы ошибались.
На правах рекламы хочу поделиться примером активного использования ASTT — compile-time генератор конверторов объектов для JVM (Прощай Dozer):
github.com/bsideup/GOM/blob/master/src/test/groovy/ru/trylogic/gom/tests/TestConfigBuilder.groovy
github.com/bsideup/GOM/blob/master/src/test/groovy/ru/trylogic/gom/tests/SimpleTest.groovy
Причем сам код конвертации конкретных значений не такой уж и сложный в итоге:
github.com/bsideup/GOM/tree/master/src/main/groovy/ru/trylogic/gom/converters
Спасибо за развитие интереса к ASTT и упоминание моей статьи про MacroGroovy;) Будем совместными усилиями развивать тему.
В любом случае, перевод хороший:)