All streams
Search
Write a publication
Pull to refresh
45
0
Сергей Егоров @bsideup

Пользователь

Send message
Я не из РФ всего 1.5 года:) Инфа — от коллеги, который сидит на ФГУТ РСВО. Топик был с целью узнать у кого ещё такие проблемы:) Опрос выявил, что только у узкого круга пользователей определенных провайдеров, список которых пытаюсь сейчас выяснить
Я думаю жителям Крыма сейчас лучше воздержаться:)
Я тут подумал… Интересно, сколько людей проверяя ссылку обновят Java заодно?:)
Ваш комментарий не изменил моей позиции «не надо было называть это Java», но рассказал пару полезных вещей, спасибо:)
Я конечно рискую, но всё же выскажу своё мнение, почему я считаю то, что делают 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, претензий к ним не было бы.
planet.jboss.org/post/8_2_million_messages_second_with_specjms

Я просто оставлю это здесь:)

Кстати, а как у вас с отложенной доставкой сообщений и отмены отложенной доставки?
@ Delegate позволяет добавить подпись интерфейсов к классу, в котором он объявлен, никакого Duck Typing, всё статично.
Вообще-то для этого не требуются AST трансформации.
class Container {

  Items items;
  
  Constructor() {
    items = new Items(this);
  }

}

class Items {
  WeakReference<Container> container;
  
  protected List<Item> internalItems = [];
  
  Items(Container container) {
    this.container = new WeakReference<Container>(container);
  }
  
  Item addItem(Item item) {
    internalItems.add(item);
    item.container = this.container.get();
  }
}



class Item {
  WeakReference<Container> container;
  
  void setContainer(Container container) {
    container.items.addItem(this)
  }
}


container.items.addItem(new Item())
внезапно(!) в разговоре с Седриком обнаружилась уже готовая аннотация в groovy-core (since 2.0.0):
groovy.codehaus.org/gapi/groovy/transform/ASTTest.html

правда создана была для другого:)
да, всё никак руки не дойдут перейти полностью на bintray, выходил в централ ещё старыми sonatype способами:)
Астрологи объявили неделю AST трансформаций, количество проектов увеличилось вдвое.

Для тех, кто хочет поиграться с 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 :)
Можно аннотировать Java-классы, если используется Groovy-компилятор, а не стандартный javac. Все AST трансформации происходят на этапе компиляции и меняют результатирующий байт-код

P.S. больная тема, поэтому суюсь везде с ответом:) Сори, если ожидался ответ именно от Баруха
Практически для всех аннотаций, перечисленных в статье, есть отличная поддержка IDEA, она понимает, что как генерирует и позволяет с этим работать с блекджеком и автокомплитом
Буду благодарен, форс от такого большого дядьки мира Groovy ускорил бы процесс в разы.
Cédric Champeau обещал посмотреть через неделю внимательней, вроде как его тоже заинтересовал. Постараюсь продвинуть его в groovy-core, где ему и место имхо.

К слову, саму идею я взял из 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;) Будем совместными усилиями развивать тему.
*простите, ошибка вышла*

В любом случае, перевод хороший:)
только я писал про генератор чисел от 0000 0000 0000 0000 до 9999 9999 9999 9999, а не про реальные данные, как было в той ситуации:)
зато если в интернете простым подбором выложат номера всех карт мира (без cvc кода причем), мои деньги вдруг резко не уменьшатся.
А то с биткоинами другого ничего не происходит:)

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity