XMLVM, сумасшедшие возможности

    image

    Целью XMLVM — предоставить гибкий и расширяемый кросс-компилятор. В отличии от кросс-компиляторов на уровне кода, XMLVM кросс-компилирует байт-кодовые инструкции с Sun Microsystem's виртуальных машин и Microsoft CLR.

    Выгодность данного подхода заключается в том, что байт-код инструкции легче кросс-компилировать, а сложности парсинга высокоуровневого языка оставить регулярному компилятору. В XMLVM, основанные на байт-коде программы представляют собой обычный XML файл. Это позволяет манипулировать и переводить XMLVM программы, используя расширенные технологии XML, такие как XSLT, XQuery и XPath.

    XMLVM держит под своим крылом несколько проектов. Для любого проекта в первую очередь, файл Java класса или .NET исполняемый файл переводится в XML документ. Используя сгенерированный фронт-ендом XML документ, можно выполнить различные преобразования. Первое преобразование может кросс-компилировать .NET в JVM байт-код. Другое преобразование позволяет кросс-компилировать Java или .NET приложения в JavaScript, который с легкостью может быть выполнен как AJAX в любом браузере. Еще одно преобразование позволяет кросс-компилировать Java приложение в Objective-C, для создания родного iPhone приложения.

    Мало того, вы можете кросс-компилировать Android приложение для запуска на iPhone

    С детальной информацией, графиками, примерам вы можете ознакомится на сайте проекта

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

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

      +4
      Документации, к сожалению, 0.

      Интересно, какие в проекте еще есть фишки, кроме XSLT? Чем он лучше llvm и ikvm — тем, что это xml?

      P.S. В случае с java -> objective C что-то страшное — по сути, преобразование на выходе имеет хардкодную JVM, написанную на Obj-C и специфицированную входным алгоритмом из java. Тут недавно писали про проекции Футамуры и суперкомпиляторы. Похоже, разработчики, сами не осознавая, сделали что-то подобное, но на коленке.

      P.P.S. Целых два тикета в трекере говорят о многом.
        +6
        да вообщем-то на любой схемке (Gambit, например) можно написать подобный кросс-трансформер, а оттуда уже портировать куда угодно. AST — оно и в Африке AST. А XML тут за уши притянут, видимо, исключительно из-за реализации проекта на Java. Ну любят джависты XML, что поделать ;-)
          +4
          > Мало того, мы может кросс-компилировать Android приложение для

          Вас же не раз просили больше ничего не переводить.
            +3
            еще лучше…

            > Мало того, мы можете кросс-
            0
            www.cokeandcode.com/kevsblog
            Человек пишет на основе XMLVM фреймворк для кросскомпиляции под Android и iPhone
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                Ага, я тоже думаю, что в общем случае теоретически AST проще трансформировать, чем байт-коды.

                Но при том подходе, что выбрали они (например, для Obj-C), когда в целевом языке просто реализуется VM, начиненная подобием шитого байткода исходного языка, трансформировать AST было бы крайне нетривиальной задачей, в отличие от.

                Да, и при выбранном подходе о стОящей оптимизации можно в принципе забыть :(
                0
                А как это будет работать на обфусцированном коде?
                  0
                  если код можно исполнить, значит его можно и кросскомпилировать…
                  +6
                  ощущения от прочтенного — как будто увидел что кто-то перемалывает хомяка в блендере, бессмысленно и беспощадно.
                    –1
                    А че новая фишка хабра: хомяк и блендер. Свежо и оригинально, в отличие от кота и шредера на BOR'e и LOR'e.
                    • НЛО прилетело и опубликовало эту надпись здесь
                      +3
                      А я бы выкинул из названия последнее слово, а запятую заменил на тире…
                        +1
                        позволяет кросс-компилировать Java или .NET приложения в Javascript, который с легкостью может быть выполнен как AJAX в любом браузере


                        Что-то мне не верится, что с легкостью.
                          +5
                          С «легкостью» десятикилобайтная программа и 50 мб дотнетовских BCL превращаются в полтора гигабайта джава скрипта. И отправляются в последний путь на клиент. :D
                            +5
                            Далее программа запускается и с помощью AJAX запроса просит выслать еще оперативной памяти
                          0
                          Вопрос о производительности видимо можно даже не задавать 8)
                            0
                            «но уже сейчас можно понять, что все это будет тормозить и глючить» (с) забыл кто именно сказал
                              0
                              Байт-код и виртуальная машина это только маленькая частичка платформы. Без библиотек наша кроспортированая програма просто набор цыфрового мусора. А портировать значительную часть того же .NET Framework невозможно, потому как библиотеки завязаны на платформу Windows (Windows Forms например). Если кстати посмотреть ихнюю документацию то для переноса Андроид -> ЯМобилко нужно реализировать слой библиотечной совместимости что серёзно уменьшает применимость проэкта.

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

                              Самое читаемое