Да, видел её. Не стал указывать в статье, т.к. последнее обновление в 2006 году. В статье указал только «живые» версии. Так же HaikuVM обновилась пару недель назад.
Если удастся использовать runtime от LeJOS, то будет. Это скорее всего легко будет сделать в Groovy. Но на счёт jRuby и Scala не уверен — хоть они так же генерируют byte code для JVM, но я не знаю, не добавляют ли они туда какие-нибудь свои специфические классы и методы, которые бы HaikuVM не обработал или просто из за сгенерированного кода скомпилированный elf файл будет очень большой.
Добрый день!
Пробовал Consulo пол года назад — функционал понравился, но IDE сильно тормозила через пол часа работы и иногда падала, т.ч. в итоге остановился на VS с Resharper. Но вообще реализация хорошая, только стабильности не хватает.
Спасибо за статью!
Расскажите, пожалуйста, о способах лечения протрузии. ЛФК, физио терапия, массаж, мануальная терапия, плавание и т.п. Как Вы считаете, что эффективнее? (Понятно, не для самолечения, а что бы знать :) ) И какова сейчас эффективность лечения проблем позвоночника — протрузии и грыжы? Можно ли их полность вылечить?
P.S.
И Вы сказали, что знаете хороших врачей. Порекомендуйте, пожалуйста. МСК. Если хотите, можно в личку.
Добрый день!
Я сейчас пробую написать преобразователь Java кода в Arduino код (практически C).
Я так понимаю, это похоже на то что Вы делали. Но Вы используете Groovy, а я на чистой Java решил попробовать. Для анализа кода решил использовать ASTParser от Eclipse. И сразу возникло несколько вопросов. Каким образом Вы с исходниками работали? С помощью средств Groovy или ASTParser (хотя он вроде только для Java кода)? И как генерировали результирующий код из Java кода? Я сначала думал что ASTParser позволит просто изменить исходный код — т.е. по ходу парсинга в ASTVisitor изменяем текущую сущность, если надо, и дальше получаем исходник. Но как я понял, для этого используется другая сущность — ASTWriter, которая работает только для редактирования. А это мне вроде как не подходит. Поэтому возник второй вариант — самому формировать исходный код — например, формировать StringBuilder который при парсинге в ASTVisitor будет дополняться кодом. Вообще, может у вас какие нибудь идеи есть по этому поводу?
Добрый день!
Спасибо за интересную статью!
Просветите, пожалуйста, по поводу следующих нубовских вопросов:
В шейдерах код же исполняется native? А как решается вопрос с GC, как очищаются объекты? Или их нельзя создать? И можно ли создать свои классы?
Можно ли подобным образом компилировать Java код в C++? Я как-то нашёл проект для компиляции Java в C++ для микроконтроллеров (например, Arduino) — называется HaikuVM. И насколько я понял, там используется похожий принцип по разбору AST, но генерируется C++ который больше похож на байт код — по сути каждая инструкция из байт кода — преобразуется в вызов C функции с таким же названием. А у Вас же, насколько я понял, генерируется исходный код, который практически соответствует исходному Java коду. Или не так?
Периодически наблюдаю за вашей TeaVM — с того момента, как Вы статью на хабре написали. Сам писал на GWT, т.ч. интерес был не праздный. Но статей уже давно небыло. Не планируете написать ещё стаью о текущем состоянии дел с TeaVM? На github находил статьи на английском, но может тут напишете?
А в чём фишка поля (field) tag? Я так по коду понял, что если это поле есть, то при выводе лога оно печатается. Так? Ну и не могли бы Вы use case показать применимости тега? А то я с таким первый раз встречаюсь.
4. А существует ли более быстрый способ узнать имя вызывающего класса?
К сожалению, я его не знаю. По моему, в runtime этого нельзя быстро сделать.
А кстати в android.util.Log уровни сделаны константами, а не энамом.
Интересно, не знал. Сейчас посмотрел — действительно, числовые константы. Вообще в JUL (java.util.logging) Level тоже не enum, но используется как enum — final static поля с экземплярами этого класса на которые потом ссылаются.
P.S. Я вообще не придираюсь — просто интересно сделать code review. :)
1. Рефлексия — это плата за удобство использования.
В целом согласен — использовать удобно. Но нельзя ли в Android использовать compile-time аспекты? Может что то вроде AspectJ CTW? Может с этим получится сделать быстрое получение имени метода и класса? Т.е. при компиляции аспектов получать имя метод и класса у вызывающего кода и дальше его использовать. Конечно, будет сложнее чем сейчас — нужно будет компиляцию настраивать в gradle, но зато perfomance будет лучше.
4. Получение имени вызываемого класса через создание исключение (new Throwable().getStackTrace();) медленно.
5. Конструктор должен быть приватным. (насколько я понял, экземпляр этого класса из вне нельзя создать).
6. Поля V, D, I, и т.д., наверное, стоит сделать в виде enum.
Но зато из Groovy проще Wiring код генерировать :-)
Пробовал Consulo пол года назад — функционал понравился, но IDE сильно тормозила через пол часа работы и иногда падала, т.ч. в итоге остановился на VS с Resharper. Но вообще реализация хорошая, только стабильности не хватает.
На счёт «неиспытывать дискомфорта» понял. А что на счёт «вылечится, убрать протрузию»? :)
Расскажите, пожалуйста, о способах лечения протрузии. ЛФК, физио терапия, массаж, мануальная терапия, плавание и т.п. Как Вы считаете, что эффективнее? (Понятно, не для самолечения, а что бы знать :) ) И какова сейчас эффективность лечения проблем позвоночника — протрузии и грыжы? Можно ли их полность вылечить?
P.S.
И Вы сказали, что знаете хороших врачей. Порекомендуйте, пожалуйста. МСК. Если хотите, можно в личку.
Я сейчас пробую написать преобразователь Java кода в Arduino код (практически C).
Я так понимаю, это похоже на то что Вы делали. Но Вы используете Groovy, а я на чистой Java решил попробовать. Для анализа кода решил использовать ASTParser от Eclipse. И сразу возникло несколько вопросов. Каким образом Вы с исходниками работали? С помощью средств Groovy или ASTParser (хотя он вроде только для Java кода)? И как генерировали результирующий код из Java кода? Я сначала думал что ASTParser позволит просто изменить исходный код — т.е. по ходу парсинга в ASTVisitor изменяем текущую сущность, если надо, и дальше получаем исходник. Но как я понял, для этого используется другая сущность — ASTWriter, которая работает только для редактирования. А это мне вроде как не подходит. Поэтому возник второй вариант — самому формировать исходный код — например, формировать StringBuilder который при парсинге в ASTVisitor будет дополняться кодом. Вообще, может у вас какие нибудь идеи есть по этому поводу?
Спасибо за интересную статью!
Просветите, пожалуйста, по поводу следующих нубовских вопросов:
В шейдерах код же исполняется native? А как решается вопрос с GC, как очищаются объекты? Или их нельзя создать? И можно ли создать свои классы?
Можно ли подобным образом компилировать Java код в C++? Я как-то нашёл проект для компиляции Java в C++ для микроконтроллеров (например, Arduino) — называется HaikuVM. И насколько я понял, там используется похожий принцип по разбору AST, но генерируется C++ который больше похож на байт код — по сути каждая инструкция из байт кода — преобразуется в вызов C функции с таким же названием. А у Вас же, насколько я понял, генерируется исходный код, который практически соответствует исходному Java коду. Или не так?
К сожалению, я его не знаю. По моему, в runtime этого нельзя быстро сделать.
Интересно, не знал. Сейчас посмотрел — действительно, числовые константы. Вообще в JUL (java.util.logging) Level тоже не enum, но используется как enum — final static поля с экземплярами этого класса на которые потом ссылаются.
P.S. Я вообще не придираюсь — просто интересно сделать code review. :)
5. Конструктор должен быть приватным. (насколько я понял, экземпляр этого класса из вне нельзя создать).
6. Поля V, D, I, и т.д., наверное, стоит сделать в виде enum.
P.S. Игра — найди 10 ошибок?