Как стать автором
Обновить

Комментарии 35

Речь пойдёт о том, как можно использовать Oracle Database, как развернуть Hadoop, как написать приложение и опубликовать его, используя плагин Windows Azure для Eclipse. Будет показано, как использовать эти и другие возможности облачной платформы Windows Azure в применении к Java-разработке.

Вот это действительно очень интересно.
Что решили с записью видео?
Присоединяюсь к вопросу. Живу далеко, доехать будет сложно.
плюсую, с удовольствием бы посмотрел
Цитирую предыдущую статью:
Видео

Все 4 трека будут записаны на видео. Будем ли мы давать доступ к эим видео всем желающим — пока непонятно. С одной стороны, наша жадность говорит нам, что если видео не публиковать в открытом доступе или тупо не снимать, то нас четвертуют больше народу придёт на конференцию. С другой стороны, мы прекрасно понимаем, что людям из других городов тратить 2-3 рабочих дня на нашу конференцию (плюс поезд/самолёт, плюс гостиница) может быть слишком накладно.

Видеозапись всех докладов конференции точно будет доступна участникам конференции. Возможно, для остальных она будет платной. Посмотрим ближе к делу.
По одной записи в руки после предъявления паспорта с иногородней пропиской.
С возвратом. Посмотрел — закачай обратно, дай другим посмотреть.
можно продать видео на офиц. сайте после проведения за $10-$20. Дороже никто не купит.
продавайте :)
Вот хотел сходить. Но в первом же описании доклада увидел следующее:
Для JVM создано множество скриптовых языков — Groovy, JRuby, JavaScript

И как-то сильно засомневался
А Rhino с Nashorn-ом мы проигнорируем?
я в целом соглашусь, что формулировку лучше поменять. Поменял.
Да, JavaScript не был создан как скриптовый язык для JVM, но придирка, все таки, мелочная. Понятно, о чем речь.
По-моему непонятно, судя по исправлению.
не будете ли Вы так добры раскрыть суть своего комментария?
Конечно проигнорируем, как и GWT. Речь идет о скриптовых языках для JVM, а не о средствах преобразования одного в другое.
Я думаю, нам нужно прерваться, пока вы прочитаете что такое Rhino и Nashorn. Когда вы убедитесь, что это чистые имплементации JavaScript-а, а не преобразователи, мы продолжим обсуждение с вопроса о том, чем они отличаются по подходу от JRuby.
тонко :)
оттачиваю!
кросавчег чо
Я понял, вам попалось коварное слово «преобразует». Да, так сразу и не сообразишь, кто кого во что преображает.
GWT преображает java сорцы в js в бразуре, а Rhino, Nashorn, Groovy, JRuby, и, страшно сказать, Java, преображает сорцы в классы байткода!
То преображает, это преображает, конечно, запутаешься!
и засомневаешься
Mission accomplished :)
отличный юмор. Только вот теперь полезем в дебри и разберемся, а что же делает Rhino, такого, чего не делает Groovy.
Rhino может работать в 2х режимах рассмотрим первый — кодогенерация:
Нас больше всего интересует внутрянка, а именно класс org.mozilla.javascript.optimizer.Codegen.
Рассмотрим метод org.mozilla.javascript.optimizer.Codegen.compile(CompilerEnvirons, ScriptNode, String, boolean)
И заметим, что здесь формируется имя класса как
String baseName = "c";
        if (tree.getSourceName().length() > 0) {
          baseName = tree.getSourceName().replaceAll("\\W", "_");
          if (!Character.isJavaIdentifierStart(baseName.charAt(0))) {
            baseName = "_" + baseName;
          }
        }
String mainClassName = "org.mozilla.javascript.gen." + baseName + "_" + serial;

Далее пропустим стэк вызовов и перейдем сразу к самой интересной части — к методу org.mozilla.javascript.optimizer.Codegen.generateCode(String);
Здесь, по коду, создается переменная ClassFileWriter cfw, которая по сути и отвечает за преобразованный код.
И далее происходит самая интересная магия в методе org.mozilla.classfile.ClassFileWriter.addInvoke(int, String, String, String), исходя из кода этого метода мы можем увидеть что в описание класса добавляются:
hasTopCall(.....), doTopCall(.....) — который и будет содрежать скомпилированный код, если мы вызываем исполняемый скрипт.
далее вызывается метод org.mozilla.javascript.optimizer.Codegen.generateResumeGenerator(ClassFileWriter), который добавляет
resumeGenerator(...) не всегда, но добавляет
Далее метод org.mozilla.javascript.optimizer.Codegen.generateNativeFunctionOverrides(ClassFileWriter, String)
Который добавит еще кучку методов.

Далее возьмем для документацию компилятора Groovy:
… Each groovy class then just becomes a normal Java class you can use inside your Java code if you wish.
Indeed the generated Java class is indistinguishable from a normal Java class, other than it implements the
...


Таким образом код:
    alert('Я люблю троллить людей');


преобразуется во что-то типа такого

class org.mozilla.javascript.gen.GenScript_123125 implements org.mozilla.javascript.Script {

    public void exec()

     public Object doTopCall(Object... params ) {
           ......
           alert('Я люблю троллить людей');
           ......
     }
     public boolean hasTopCall(.....) {
       return true;
     }

// Остальные методы здесь
}


А код в Groovy
class GroovyClass {
   def message() {
       println ''Я люблю троллить людей''
  }
}
 

Превратиться в

public class GroovyClass  extends GroovyObject {
   public Object message() {
       System.out.println(''Я люблю троллить людей'');
       return null;
  }
}



Таким образом, чтобы не путаться в первом случае мы имеем.
1. Преобразование исходников.
2. Создание псевдокласса.
3. Компиляция исходников в Java-код.
4. Создание псевдокласса и из всех исходников в java-класс.

Во втором случае мы имеем
1. Преобразование Groovy-класса в Java-класс.
2. Компиляция Java-класса.

В первом случае можно говорить о преобразовании кода из одного языка в другой. Причем первый не работает в JVM.
Во втором случае мы говорим о компиляции, только о компиляции

НЛО прилетело и опубликовало эту надпись здесь
Попробую распутать:
a) Rhino разбирает js на лексемы и строит из них java-код. Генерирует обертку в которой они исполняются.
b) groovyc — делает из .groovy -> .java и компилирует.
с), d) конечно, иначе оно не исполняется в jvm.
НЛО прилетело и опубликовало эту надпись здесь
Спор ниочём.

Какая разница, кто кого во что компилирует? Доклад вообще не об этом заявлен.
а чем преобразование из языка X в язык Y отличается от компиляции?
НЛО прилетело и опубликовало эту надпись здесь
с тебя:
1. брэд питт
2. марсианка с тремя грудями
3. 146%
146% занято.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий