The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Первый выпуск RoboVM, компилятора байткода Java в машинный код

24.01.2013 21:48

Представлен первый выпуск проекта RoboVM, в рамках которого развивается реализации системы AOT-компиляции байткода Java в машинный код платформ ARM или x86, позволяющей преобразовывать Java-программы в исполняемые файлы, выполняемые без использования виртуальной машины Java и без интерпретации байткода. Дополнительно проектом развивается набор runtime-библиотек для обеспечения выполнения Java-программ в окружениях iOS, Mac OS X и Linux. Код компилятора распространяется под лицензией GPLv2, а код runtime-компонентов под лицензией Apache 2.0.

Изначальной целью разработки проекта является намерение предоставить возможность разработки программ, написанных на языке Java, но оформленных в виде обычных приложений для платформы iOS, имеющих доступ к Cocoa Touch API и другим программным интерфейсам iOS. Доступ к API осуществляется благодаря созданию прослойки Objective-C Bridge, позволяющей обращаться к объектам Objective-C из кода на языке Java. В настоящее время большинство вызовов UIKit уже оттранслированы для использования в Java. Тем не менее, кроме iOS система в равной мере поддерживает генерацию исполняемых файлов для Mac OS X и Linux.

В runtime-библиотеках использована готовая реализация классов java.lang, java.util, java.io и т.п., развиваемая платформой Android. В библиотеках RoboVM по возможности используется как можно больше стандартных классов Android, а также обеспечена поддержка OpenGL ES API, что позволяет создавать RoboVM-программы для iOS на основе уже существующих приложений для платформы Android, совместно используя код в обоих вариантах приложения. Для трансляции байткода Java в машинный код используются наработки проекта LLVM. Для разработки программ допускается использование стандартного интегрированного окружения Eclipse Java IDE, для которого подготовлен специальный плагин. Пошаговую инструкцию по сборке и использованию RoboVM можно найти на данной странице.

  1. Главная ссылка к новости (http://blog.robovm.org/2013/01...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/35919-robovm
Ключевые слова: robovm, java, bytecode, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (103) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:12, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –11 +/
    Главная проблема жавы - это не jit, а gc. И его это не исправит.
     
     
  • 2.3, kuku (?), 22:21, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • –12 +/
    +1
    Программа - это дополнение ума машины умом человека.
    А вот дополнение ума человека умом машины - это деградация.
     
     
  • 3.5, Аноним (-), 22:30, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +15 +/
    > Программа - это дополнение ума машины умом человека.
    > А вот дополнение ума человека умом машины - это деградация.

    Это человек должен машине прислуживать, что ли? Заговариваешься.

     
  • 3.13, pavlinux (ok), 23:03, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > +1
    > Программа - это дополнение ума машины умом человека.
    > А вот дополнение ума человека умом машины - это деградация.

    Я чё-то пропустил, когда у машины ум появился?

    Intel Core i7 Extreme Edition, могёт смоделировать как бы Пьер Безухов охарактеризовал
    работы ранних Германских мастеров изобразивших квантовую неопределённость и кота Шреденгера.

     
     
  • 4.22, Tav (ok), 23:18, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Куда уж там. Еще даже не разобрались толком, что это вообще такое — ум.
     
     
  • 5.30, Аноним (-), 23:50, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это скорее к религии)
     
  • 5.40, BratSinot (ok), 01:18, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ум это нечто, что может само-обучаться, все. Ни больше, ни меньше.
    P.S. Про нейросети и бла-бла-бла можете не упоминать, оно один черт по заранее заданным алгоритмам работает.
     
     
  • 6.45, Пересмешник (?), 01:50, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А то, что по заранее заданным алгоритмам работает внезапно не может самообучаться? О_о
     
     
  • 7.56, pavlinux (ok), 05:39, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > А то, что по заранее заданным алгоритмам работает внезапно не может самообучаться?

    Внезапно - нет.

     
     
  • 8.84, Anonim (??), 16:20, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Внезапно в мозгу заложены необходимые механизмы для самообучения Внезапно ни од... текст свёрнут, показать
     
     
  • 9.93, pavlinux (ok), 18:16, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Способность к обучению, и уж тем более способность говорить, не является признак... текст свёрнут, показать
     
     
  • 10.105, К.О. (?), 10:21, 28/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну уж Вы хватили Способность говорить, как раз и является Правда, надо иметь в... текст свёрнут, показать
     
     
  • 11.107, pavlinux (ok), 20:31, 30/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ум - это способность формировать задачу так, что непонятным остаётся только реше... текст свёрнут, показать
     
  • 6.83, К.О. (?), 15:49, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Ум это нечто, что может само-обучаться, все.

    Вы на самом деле считаете, что дополнение аксиоматики сделанными из нее выводами хоть как-то тянет на определение ума?

     
  • 6.101, XoRe (ok), 14:45, 26/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Ум это нечто, что может само-обучаться, все. Ни больше, ни меньше.

    Смотря чему обучаться.
    Можно взять лабиринт, программа путем подбора найдет путь в этом лабиринте, и запомнит.
    Потом натравить программу на этот же лабиринт - программа сразу его пройдет по старому пути.
    Уже можно кричать "вау, оно самообучается!".

     
  • 5.68, ДяДя (?), 10:09, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    С умом проще - тест Тьюринга и вперёд ;-)

    А вот с сознанием гораздо сложнее. Эти вещи почему-то путают, но они существуют отдельно.
    Сама возможность эмуляции сознания вообще под большим вопросом.

    P.S.
    А многие философы(не западные конечно) считают, что сознание может существовать только в единственном экземпляре. Типа синглтона ;-)

     
     
  • 6.85, Anonim (??), 16:23, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/

    > Сама возможность эмуляции сознания вообще под большим вопросом.

    Сознание эмулируется у всех животных с мозгом, но разной степени слоности. Кто сказал, что собака не считает себя разумной?

     
     
  • 7.100, Led (ok), 02:54, 26/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто сказал, что собака не считает себя разумной?

    Как это "кто"? Собака и сказала.


     
  • 7.104, ДяДя (?), 18:59, 27/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    На текущий момент ПРЯМОЙ связи между мозгом и сознанием не установлено.
    Мозг - это самый важный орган центральной нервной системы, что ничего не говорит о сознании.
     
     
  • 8.106, Просто Филя (?), 16:01, 30/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Нет мозга - нет сознания ... текст свёрнут, показать
     
  • 3.17, Xasd (ok), 23:13, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Программа - это дополнение ума машины умом человека.
    > А вот дополнение ума человека умом машины - это деградация.

    "Властилин" Пожинателей (#MassEffect) порабащает комментаторов OpenNET :)

     
     
  • 4.34, Аноним (-), 00:53, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Какой еще пластилин-пожиратель? :)
     
  • 3.31, energia (ok), 23:58, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    сам хоть понял, что сказал?
     
  • 2.4, Аноним (-), 22:29, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Иногда GC это главная проблема C++, оттого что там его нет.
     
     
  • 3.15, Аноним (-), 23:11, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Иногда GC это главная проблема C++, оттого что там его нет.

    man boehm-gc. Однако факт в том что на C++ можно писать без gc, без (даже потенциальных) утечек и не испытывая никакого дискомфорта, так что gc не нyжен.

     
  • 3.20, Аноним (-), 23:17, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Иногда GC это главная проблема C++, оттого что там его нет.

    А игроделы например не в курсе и именно поэтому им и пользуются. Потому что медвежьи услуги - не рулят.

     
     
  • 4.25, iZEN (ok), 23:29, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А игроделы например не в курсе и именно поэтому им и пользуются.

    Особенно на Android, создавая казуальные игры, ага.

     
     
  • 5.35, Аноним (-), 00:55, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Особенно на Android, создавая казуальные игры, ага.

    На то и казуальщина чтобы писаться кем попало, на чем попало, на коленке. А как только надо что-то похожее на производительность и реалтаймность - ява сразу идет нафиг.

     
  • 5.51, ананим (?), 03:05, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Особенно на Android, создавая казуальные игры, ага.

    которые умудряются тормозить там, где к примеру гта летает.

     
  • 2.6, myhand (ok), 22:31, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы что-то имеете против gc вообще - или только gc конкретно в Java?
     
     
  • 3.14, Аноним (-), 23:09, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Новость о вообще или о java?
     
     
  • 4.24, Tav (ok), 23:22, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Если так, тогда о какой из реализаций GC в Java речь? В HotSpot (виртуальная машина, используемая в OpenJDK и Oracle JDK) их несколько на выбор.
     
     
  • 5.54, Аноним (-), 05:17, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Спасибо, я в курсе. Ты это зачем-то сказал или так, поддержать разговор?
     
  • 4.67, myhand (ok), 08:40, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Новость о вообще или о java?

    ok, значит только в java.  Тогда вы против какого gc в java конкретно?  Почему?  Или тоже против всех? - Почему?

     
  • 2.12, pavlinux (ok), 22:58, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Главная проблема жавы - это Oracle :)
     
     
  • 3.69, ДяДя (?), 10:16, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Главная проблема Oracle - это жава ;-)
     
     
  • 4.80, p5er6 (?), 14:56, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Гравная проблема- это факт наличия самой java и оракла... так и по отдельности
     
  • 2.29, all_glory_to_the_hypnotoad (ok), 23:43, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    JIT тоже создаёт немалую нагрузку, причем на память тоже.
     
     
  • 3.36, Аноним (-), 00:59, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > JIT тоже создаёт немалую нагрузку, причем на память тоже.

    Он генерит довольно пухлый и не сильно оптимизированный код. Сильно оптимизировать он не может - требования по памяти и времени работы напрягут. Если gcc на момент компила может выжрать несколько гиг для глобальной оптимизации - всем пофигу. А вот на телефоне скушать столько в рантайме - уже не вариант...

     
     
  • 4.50, Tav (ok), 03:04, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Он генерит довольно пухлый и не сильно оптимизированный код.

    Не обязательно. В JVM HotSpot есть две реализации JIT: client и server. Client генерирует менее оптимальный код, но быстро. Server работает дольше, но зато хорошо оптимизирует. В любом случае, компилируются только те методы, которые вызываются достаточно часто (остальные интерпретируются). С некоторых пор появился еще режим многоуровневой компиляции, в котором выполняется сначала быстрая компиляция, после чего наиболее часто выполняемые части кода перекомпилируются с полной оптимизацией. В любом варианте есть эффект "разогрева": приложение достигает максимальной производительности только через некоторое время работы.

     
  • 2.58, iZEN (ok), 07:24, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Главная проблема жавы - это не jit, а gc. И его это не исправит.

    GC старается как может, на то он и GC. А вот новоявленные Java-программисты из бывших C++ и VBA-программистов не хотят знать то, что для создаваемых в программе объектов нужно растягивать жизненные циклы в идеале на всё время жизни программы и не плодить лишних. Тогда и память не будет потребляться и у GC работы почти не будет. А то привыкли всё списывать на кривую архитектуру, а сами не бельмеса не понимают.


     
     
  • 3.66, Аноним (-), 08:25, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > GC старается как может, на то он и GC. А вот новоявленные Java-программисты из бывших C++ и VBA-программистов не хотят знать то, что для создаваемых в программе объектов нужно растягивать жизненные циклы в идеале на всё время жизни программы и не плодить лишних

    Активнее использовать глобальные объекты, что ли? Потрясающая архитектура, да.
    GC сделан для удобства программиста, а не наоборот, и если это удобство оборачивается тем, что его нужно особо ублажать - это уж слишком.

    "If Java had true garbage collection, most programs would delete themselves upon execution."

    Проблема в том, что жабный сборщик мусора ужасен, есть значительно лучшие реализации. Например, сборщики мусора в питоне или некоторых реализациях лиспа.

     
     
  • 4.77, CT (??), 14:27, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Активнее использовать глобальные объекты, что ли? Потрясающая архитектура, да.

    Нахрена глобальные-то? Достаточно кэшировать использованные объекты и когда нужно переиницилизировать и использовать их опять вместо создания новых.

     
     
  • 5.82, Аноним (-), 15:34, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Достаточно кэшировать использованные объекты и когда нужно переиницилизировать и использовать их опять вместо создания новых

    Отличная работа для человека, которому нечем заняться. Почему бы не научить жабовский GC этому?

     
     
  • 6.89, iZEN (ok), 16:53, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Достаточно кэшировать использованные объекты и когда нужно переиницилизировать и использовать их опять вместо создания новых
    > Отличная работа для человека, которому нечем заняться. Почему бы не научить жабовский
    > GC этому?

    В  JetBrains один раз научили: http://habrahabr.ru/post/147552/

     
  • 6.95, CT (??), 18:48, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы, вероятно, из тех "программистов", которые мечтают об IDE с большой красной (или синей - по вкусу) кнопкой посередине: "Сгенерировать программу которую я только что придумал!" ;-)

    А остальным "нечем заняться" и они сами программы пишут :-)

     
     
  • 7.99, Аноним (-), 00:41, 26/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Я люблю творческую работу, а не рутинную, которая шаблонна, повторяет себя и поддается алгоритмизации, отчасти оттого, что человек выполняет ее неоптимально и с кучей ошибок.
    Повторная инициализация объектов без их разрушения - один из видов такой работы, которая реально делается сборщиками мусора в Лиспе. Такие низкоуровневые, по сути, вещи iZEN предлагает делать руками - и это в языке Java с претензией на ООП и высокие абстракции.
     
  • 4.79, Avator (ok), 14:51, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    у Java есть разные сборщики мусора. Например есть G1. Раз Вы так бодро рассуждаете на эту тему, я так понимаю вы попробовали разные? =)
     
  • 4.90, iZEN (ok), 16:59, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Глобальные объекты Это что ещё за глобальные объекты Какой из Для какой з... большой текст свёрнут, показать
     

  • 1.2, 12309 (ok), 22:17, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интересно, сможет ли он так Scala скомпилировать. Теоретически, сможет.
     
     
  • 2.65, Аноним (-), 08:16, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    естественно сможет - оно же не с самим языком работает, а с байт-кодом. Вообще, насколько я понимаю, это полный аналог майкрософтовского NGEN
     

  • 1.7, Tav (ok), 22:43, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Только не следует ожидать, что это будет работать быстрее, чем JIT. Сильная сторона Java (HotSpot VM) — динамические оптимизации, зависящие от поведения программы во время выполнения. Например, HotSpot может связать напрямую или даже встроить вызов виртуального метода, если обнаружится, что во время выполнения обычно используется одна и та же реализация. Встраивание метода, в свою очередь, делает возможными дальнейшие оптимизации. На случай "не как обычно" добавляется быстрая проверка. Таким образом, виртуальный вызов в Java может быть быстрее, чем в C++, и возможно это только за счет компиляции во время выполнения.

    Подробнее про оптимизации в HotSpot JVM: https://wikis.oracle.com/display/HotSpotInternals/PerformanceTechniques

     
     
  • 2.16, iZEN (ok), 23:11, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > виртуальный вызов в Java может быть быстрее, чем в C++, и возможно это только за счет компиляции во время выполнения.

    Интересно, таблица виртуальных методов в C++ поддерживается в рантайме? И насколько часто C++ программисты пользуются возможностью позднего связывания кода (на стадии выполнения)?

     
     
  • 3.21, Аноним (-), 23:18, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > C++ программисты пользуются возможностью позднего связывания кода (на стадии выполнения)?

    Это ты dlopen() так умно обозвал? :)


     
     
  • 4.26, XPEH (?), 23:32, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    A кто вам сказал что он знает что такое dlopen() ?
     
     
  • 5.37, Аноним (-), 01:02, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > [XPEH 23:32] A кто вам сказал что он знает что такое dlopen() ?

    И тут не прошло и 2 часов как...

    > [iZEN 00:45] А что такое dlopen()?

    XPEH получает +5 к скиллу телепатии! Эпично!

     
  • 4.33, iZEN (ok), 00:45, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А что такое dlopen()?
     
     
  • 5.41, ананим (?), 01:25, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http://www.freebsd.org/cgi/man.cgi?query=dlopen

    я так понимаю что ты freebsd упоминаешь чтобы умнее казаться и не более.

    зыж
    азен, запомни, чтобы дотянуть хотя бы до средненького специалиста в java, нужно быть также и специалистом в С/С++.
    иначе ты просто не сможешь знать как именно работает твоя программа (не говоря уже про jni, nmi,…итд)

     
     
  • 6.59, iZEN (ok), 07:31, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > http://www.freebsd.org/cgi/man.cgi?query=dlopen

    Это не то "позднее связывание", которое есть в ООП-программе.

    > я так понимаю что ты freebsd упоминаешь чтобы умнее казаться и не более.

    Не только. Я ей ещё и пользуюсь. Правда дома. На работе у меня Windows XP.

    > зыж
    > азен, запомни, чтобы дотянуть хотя бы до средненького специалиста в java, нужно
    > быть также и специалистом в С/С++.

    Про C ещё куда ни шло, но знание C++ прививает отвратительные практики программирования, часто вредные, чем полезные, для Java-программистов.

    > иначе ты просто не сможешь знать как именно работает твоя программа (не говоря уже про jni, nmi,…итд)

    JNI использовал и буду использовать (если ещё раз доведётся) совместно с программированием в/на Delphi под Windows. В C++ я не считаю себя специалистом и не хочу им быть.


     
     
  • 7.70, ананим (?), 10:32, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> http://www.freebsd.org/cgi/man.cgi?query=dlopen
    >Это не то "позднее связывание", которое есть в ООП-программе.

    это то связывание, которое есть в freebsd. более того, в posix.
    >Не только. Я ей ещё и пользуюсь. Правда дома. На работе у меня Windows XP.

    no comments
    >Про C ещё куда ни шло, но знание C++ прививает отвратительные практики программирования, часто вредные, чем полезные, для Java-программистов.
    >JNI использовал и буду использовать (если ещё раз доведётся) совместно с программированием в/на Delphi под Windows. В C++ я не считаю себя специалистом и не хочу им быть.

    ты извини конечно, но только что ты упал ниже трухина.
    хочешь ты того или нет, но С/С++ — это стандарт. без них нельзя даже рассуждать о посикс, юникс, фс и тд.
    зыж
    а вообще ты даже не выпадаешь из статистики, т.к. хуже дельфийных программистов образованы только программеры на жабе и бейсике.

     
     
  • 8.91, iZEN (ok), 17:08, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это не то связывание и к ООП, в частности к таблице виртуальных методов, не имее... текст свёрнут, показать
     
  • 3.39, ананим (?), 01:17, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Интересно, таблица виртуальных методов в C++ поддерживается в рантайме?

    ха, и оно ещё критикует С++. с такими то знаниями. почитай хоть для начала то http://en.wikipedia.org/wiki/Virtual_method_table
    зыж
    2Tav
    >> виртуальный вызов в Java может быть быстрее, чем в C++, и возможно это только за счет компиляции во время выполнения.

    во-первых это брехня, т.к. vtable в С++ строится на этапе компиляции, конкретный адрес проставляется уже на этапе выполнения. http://www.intuit.ru/department/pl/plintro/12/2.html
    и это никак не может быть медленнее, когда vtable строится житом, а потом ещё и подставляется.
    во-вторых, (для дальнейшего развития) для уменьшения зависимости от дорогостоящих вызовов из vtable придумали различные методики, чтобы отказаться от vtable и подставлять конкретный адрес на этапе линковки. пример (чтоб было понятно и вантузятнику) — ATL, где классы объявляются с declspec(novtable) http://msdn.microsoft.com/ru-ru/library/w4baz6ss.aspx
    И ЕСЛИ ВЫ ПОДУМАЕТЕ (не много ли я прошу от жабиста?), то поймёте почему выбор позднего связывания абсолютно избыточен в рантайме.
    просто быдлокодить безусловно легче использования шаблонов.
    ну а ставить подобные «достижения» в заслугу — это просто ханжество и лицимерие. быдлокодте себе на здоровье, но без фанатизма (хотя это может быть просто недостаток системных знаний, тогда пока(!!!) сори).

     
     
  • 4.42, ананим (?), 01:29, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    у минусующего кроме эмоций сказать было нечего?
    понимаю.
    только это не закроет брешь в ваших знаниях.
     
     
  • 5.87, linux must _RIP_ (?), 16:39, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а они у тебя есть? или только понты, оскорбления и преходы на личности, и не желание слушать других ?
     
  • 4.48, Tav (ok), 02:15, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нервный стиль вашего комментария и переход на личности (позволю себе тоже) создает впечатление, что вы ощущаете со стороны обсуждаемой технологии угрозу обесценивания накопленных вами знаний и опыта.

    > во-первых это брехня, т.к. vtable в С++ строится на этапе компиляции, конкретный адрес проставляется уже на этапе выполнения.

    Речь же шла о возможности автоматически встроить (inline) вызываемый виртуальный метод, и, как следствие, еще и выполнить более глубокие оптимизации, пересекающие границы изначальных процедур.

    >  подставлять конкретный адрес на этапе линковки.

    Для этого на этапе линковки этот адрес должен быть известен. Смысл же полиморфизма типов и позднего связывания (основы ООП) в том, что конкретная реализация вызываемого метода зависит от типа объекта-получателя и (в общем случае) известна только во время выполнения.

    > просто быдлокодить безусловно легче использования шаблонов.

    Можете называть это так, но я предпочитаю больше думать об алгоритмической корректности кода и меньше отвлекаться на рутинные технические детали. А вам рекомендую для всего использовать ассемблер.

     
  • 4.60, iZEN (ok), 07:37, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >[оверквотинг удален]
    > во-первых это брехня, т.к. vtable в С++ строится на этапе компиляции, конкретный
    > адрес проставляется уже на этапе выполнения. http://www.intuit.ru/department/pl/plintro/12/2.html
    > и это никак не может быть медленнее, когда vtable строится житом, а
    > потом ещё и подставляется.
    > во-вторых, (для дальнейшего развития) для уменьшения зависимости от дорогостоящих вызовов
    > из vtable придумали различные методики, чтобы отказаться от vtable и подставлять
    > конкретный адрес на этапе линковки. пример (чтоб было понятно и вантузятнику)
    > — ATL, где классы объявляются с declspec(novtable) http://msdn.microsoft.com/ru-ru/library/w4baz6ss.aspx
    > И ЕСЛИ ВЫ ПОДУМАЕТЕ (не много ли я прошу от жабиста?), то
    > поймёте почему выбор позднего связывания абсолютно избыточен в рантайме.

    Ну вот и ответ: "От таблицы виртуальных методов _и_позднего_связывания_кода_ в программе на C++ ПРИНЯТО_ОТКАЗЫВАТЬСЯ". Тогда о чём вообще речь? "В C++ на самом деле в работе ненастоящий полиморфизм, иначе вас ждут жестокие тормозааааа".

    > просто быдлокодить безусловно легче использования шаблонов.
    > ну а ставить подобные «достижения» в заслугу — это просто ханжество и
    > лицимерие.

    А вот это уже обсирание ОСНОВ ООП, а не только языков ООП-программирования.

    > быдлокодте себе на здоровье, но без фанатизма (хотя это может
    > быть просто недостаток системных знаний, тогда пока(!!!) сори).

    Ну а вы, так и быть, пишите на своём недо- ООП-языке C++. (Чем это отличается от программирования на C, только вот, неясно.)

     
     
  • 5.72, ананим (?), 10:45, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Ну вот и ответ: "От таблицы виртуальных методов _и_позднего_связывания_кода_ в программе на C++ ПРИНЯТО_ОТКАЗЫВАТЬСЯ".

    ты дурак? или в принципе плохо-обучаем?
    vtable создаётся ля любого класса, содержащего хоть один виртуальный метод.
    азы. см. тут http://www.intuit.ru/department/pl/plintro/12/2.html
    >На этапе компиляции строится таблица виртуальных методов, а конкретный адрес проставляется уже на этапе выполнения.
    >Тогда о чём вообще речь?

    речь о том, что при помощи шаблонов и множественного наследования можно получить ВСЕ преимущества позднего связывания на этапе линковки, при этом значительно уменьшив код и увеличив производительность до уровня голого С.
    зыж
    >> ну а ставить подобные «достижения» в заслугу — это просто ханжество и лицимерие.
    >А вот это уже обсирание ОСНОВ ООП, а не только языков ООП-программирования.

    это обсирание невеж, которые не зная С++ (а ты уже признался что не знаешь выше в #59) каким-то боком претендуют на его сравнивание с чем либо.
    ты невежа, айзен. при чём это не оскорбление, это голый факт.

     
  • 2.18, Аноним (-), 23:13, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Только не следует ожидать, что это будет работать быстрее, чем JIT. Сильная
    > сторона Java (HotSpot VM) — динамические оптимизации, зависящие от поведения программы
    > во время выполнения

    Как показывает практика, никакой магии там нет - java почти всегда проигрывает нативному коду. Фанбои жавы ой как любям всюду тыкать вот этим:

    > Например, HotSpot может связать напрямую или даже встроить вызов виртуального метода

    Однако толку от этого ноль без палочки, зато лишний расход CPU в рантайме, вместо однократного при сборке как в нормальных языках.

     
     
  • 3.27, Tav (ok), 23:39, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Магия начинается, когда вы пишите какую-то вычислительную функцию, использующую, например, геометрические абстракции из java.awt.geom и не беспокоитесь о том, что создаете много локальных объектов и используете позднее связывание, поскольку JIT разберет объекты в стек и встроит их методы, превратив полиморфный код, написанный в терминах точек, прямоугольников и т. п. в примитивную арифметику. Т. е., можно спокойно сосредоточиться на алгоритме и на ясности кода.

    > зато лишний расход CPU в рантайме, вместо однократного при сборке как в нормальных языках.

    Это мешает для часто запускаемых и относительно недолго работающих приложений, но совершенно не является проблемой на серверах.

     
     
  • 4.43, ананим (?), 01:35, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Магия начинается, когда вы пишите какую-то вычислительную функцию, использующую, например, геометрические абстракции из java.awt.geom и не беспокоитесь о том, что создаете много локальных объектов и используете позднее связывание, поскольку JIT разберет объекты в стек и встроит их методы, превратив полиморфный код, написанный в терминах точек, прямоугольников и т. п. в примитивную арифметику. Т. е., можно спокойно сосредоточиться на алгоритме и на ясности кода.

    это идиотизм.
    и начинается он тогда, когда кто-то на тематическом форуме пишет это и думает что я буду рад использовать тормоза его программы каждый раз, когда JIT разбирает его объекты на моих вычислительных системах только потому, что ему не хотелось думать.

     
     
  • 5.46, Tav (ok), 01:51, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Во-первых, я уже написал, что это проблема для десктопных приложений, но не проблема на серверах, где JVM довольно успешно используется. Во-вторых, время программиста дороже. В-третьих, не "не хотелось думать", а хотелось больше думать об алгоритмической корректности кода и меньше отвлекаться на рутинные технические детали.
     
     
  • 6.47, ананим (?), 02:12, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    всё это глупость чистой воды.
    это на вашу подготовку как жабиста было затрачено меньше средств, это да.
    а вот процесс реализации алгоритмов что в С++, что в java одинаков. при условии что вы владеете знаниями этих языков одинаково.
    уменьшение расходов на подготовку и распространение ПО — вот всё что бралось в расчёт при проектировании подобных систем.

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

    на серверах ещё и не такой крап увидишь… особенно в застенках ынтырпрайза.
    что абсолютно не делает из халтуры что-то более ценное.

     
     
  • 7.49, Tav (ok), 02:35, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не соглашусь. Я не "жабист", я просто знаю преимущества и недостатки технологии и имею какие-то представления о принципах работы JVM.

    А разработка одного и того же на (говоря только об объектно-ориентированных языках) C++, Java или на чем-то уровня Smalltalk (например, Ruby) — разное дело. Конечно, если речь идет о сортировке целых чисел, разницы не будет. Но если разрабатываемая программа предполагает различные уровни абстракции, разница становится существенной. Вообще, способность выражать абстракции — очень важное качество языка.

     
     
  • 8.53, ананим (?), 03:52, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    как будет угодно вы не можете знать преимущества и недостатки не имея более-мен... текст свёрнут, показать
     
     
  • 9.73, другой аноним (?), 12:58, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Там плохо и упрощенно описано Адрес не не проставляется уже на этапе выполнени... текст свёрнут, показать
     
     
  • 10.75, ананим (?), 13:13, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    которые начинают вызывать те методы, которые вам не требуются D я как раз очен... текст свёрнут, показать
     
     
  • 11.98, mahairod (ok), 23:35, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет никакой оптимизации в процессе позднего связывания - расскажите это разраб... текст свёрнут, показать
     
  • 8.81, Crazy Alex (ok), 15:25, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы, конечно, извините, но какие в джаве свойства выражать абстракции, которых не... текст свёрнут, показать
     
     
  • 9.88, iZEN (ok), 16:51, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Например, в Java есть дженерики generics, настраиваемые типы , которые не есть ... текст свёрнут, показать
     
  • 7.61, iZEN (ok), 07:44, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > всё это глупость чистой воды.
    > это на вашу подготовку как жабиста было затрачено меньше средств, это да.
    > а вот процесс реализации алгоритмов что в С++, что в java одинаков.
    > при условии что вы владеете знаниями этих языков одинаково.
    > уменьшение расходов на подготовку и распространение ПО — вот всё что бралось
    > в расчёт при проектировании подобных систем.

    Вы не считаете затрат на компилирование проекта на C++ и Java. Для Java компиляция будет в несколько раз быстрее, программист получит результат быстрее, сможет отлаживать, исправлять код быстрее. Достаточно сравнить время компиляции таких равноценных по объёму строк исходных текстов проектов, как OpenOffice и Eclipse Classic, чтобы заплакать от горя, почему OOo такой монстр.

    > что абсолютно не делает из халтуры что-то более ценное.

    Пока что на C++ лучше, чем на Java, не написали то, что требуется бизнесу.


     
     
  • 8.71, ананим (?), 10:35, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    извини айзен, но после вот этого http www opennet ru openforum vsluhforumID3 8... текст свёрнут, показать
     
     
  • 9.86, iZEN (ok), 16:38, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Новых знаний в C нету Рекламными лозунгами не разбрасываюсь ... текст свёрнут, показать
     
  • 5.74, Nimo (?), 13:08, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Смешно читать про то как какой то студент хочет чтоб ему на яве чет там написали нетормозное, хотя сам только что еле выбрался из главы про сортировки. Ему бы рассказать про распределенные гриды на яве и почему большая проблема сделать это на плюсах, но даю 100% что этот студент даже поленится глянуть в гугле что это такое - он же уже все знает, а "профессор лопух"
     
     
  • 6.76, ананим (?), 13:30, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    набор ничего не значащих терминов, начитавшегося сми школьника.
    хорошо что вы не были моим студентом, никогда бы не доучились.


    зыж
    >Ему бы рассказать про распределенные гриды на яве и почему большая проблема сделать это на плюсах, но даю 100% что этот студент даже поленится глянуть в гугле что это такое - он же уже все знает, а "профессор лопух"

    BIONIC это расскажите https://boinc.berkeley.edu/trac/wiki/DevProjects
    перед потерей лица и своих 100%.

     
     
  • 7.96, Nimo (?), 19:04, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    набор ничего не значащих терминов :) - я рад что учился не у Вас

    может ваши студенты напишут на ++ что нибудь типа http://www.oracle.com/technetwork/middleware/coherence/overview/index.html ?
    или http://www.slideshare.net/buzdin/gemfire-in-memory-data-grid ?

    тогда возможно я озабочусь Биоником ;)

     
  • 4.55, Аноним (-), 05:26, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Смешно, как вы даже не оптимизации, а стандартное поведение компилятора C C сч... большой текст свёрнут, показать
     
     
  • 5.62, iZEN (ok), 07:50, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Магия начинается ... поскольку JIT разберет объекты в стек и встроит их методы
    > Смешно, как вы даже не оптимизации, а стандартное поведение компилятора C/C++ считаете
    > магией. Я в свое время переписывал модули для одной GIS с
    > жавы на C++ - там этой геометрии завались было. Получил прирост
    > 3.5x на ровном месте, такие дела.

    Простой компиляцией в нэйтив?

     
  • 5.103, Tav (ok), 01:21, 27/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вы не понимаете, что такое позднее связывание? Если на этапе компиляции не известно, какая именно реализация абстрактного метода может быть вызвана, компилятор C++ не сможет этот вызов соптимизировать и тем более встроить. В примере с функцией, выполняющей высисления с абстрактными геометрическими объектаими, конкретные типы этих объектов могут быть определены клиентским кодом и могут быть известны только во время выполнения.
     
  • 2.23, pavlinux (ok), 23:19, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > динамические оптимизации, зависящие от поведения программы во время выполнения.

    предсказание предсказаний! :)

     
     
  • 3.44, kosha (?), 01:35, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Refal, 1967, Валентин Турчин, суперкомпиляция
     
     
  • 4.57, pavlinux (ok), 06:15, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Refal, 1967, Валентин Турчин, суперкомпиляция

    О да, вместо того, что посчитать сколько будет два яблока плюс два яблока,
    они там начнут считать молекулярную массу каждого, потом посчитают ср. кв. отклонение,
    потенциал заряженности эл.-магнт. поля и выведут через разность потенциалов на
    поле Галуа, что получилось 3.8131415 яблок. И спишут 18% как погрешность вычислений,
    на естественное испарение жидкости.
        

     
     
  • 5.64, tipa_admin (?), 08:05, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Всё верно. Только вместо "эл.-магнт." надо было "торсионного" писать.
     

  • 1.8, tanmatra (ok), 22:44, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Динамическую загрузку (и выгрузку) классов куда дели? Reflection? Без этих важных фич - это не Java, а некоторое слабое подобие.
     
  • 1.9, добрый дядя (?), 22:46, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    вау, интересны бенчмарки - неужели быстрее будет? сомневаюсь, ибо GC

    но если так, если быстрее - то неужели можно будет писать быстрые программы на жабке без потребление памяти GCшкой??? тогда однозначно эпик вин

     
     
  • 2.10, Tav (ok), 22:50, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  вау, интересны бенчмарки - неужели быстрее будет? сомневаюсь, ибо GC

    В лучшем случае, сократится время запуска приложений. Все остальное будет хуже (объяснил выше).

    > но если так, если быстрее - то неужели можно будет писать быстрые программы на жабке без потребление памяти GCшкой??? тогда однозначно эпик вин

    AOT-компиляция не отменяет необходимости в сборке мусора.

     

  • 1.11, Tav (ok), 22:51, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Есть еще GCJ (AOT-компилятор Java в составе GCC).
     
     
  • 2.19, Xasd (ok), 23:15, 24/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Есть еще GCJ (AOT-компилятор Java в составе GCC).

    он не молодёжный

    [по сравнению с тем что сделали в Subject]

     
  • 2.32, umbr (ok), 00:11, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +/
    А ещё есть Excelsior JET
    http://en.wikipedia.org/wiki/Excelsior_JET
     

  • 1.28, Аноним (-), 23:40, 24/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Ура! Ура! Ура! Теперь можно откомпилить i2p и после бинарник встраивать в ботнеты, предварительно краптанув и навесив прот!
     
     
  • 2.38, Аноним (-), 01:06, 25/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ура! Ура! Ура! Теперь можно откомпилить i2p и после бинарник встраивать в
    > ботнеты, предварительно краптанув и навесив прот!

    Я думаю что если у вас не хватало за столько лет умишка запустить gcj - ботнетом являетесь разве что вы сами :)

     

  • 1.94, lucentcode (ok), 18:47, 25/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Годное начинание. Я бы NetBeans с удовольствием собрал в виде native-программы с родным для линя интерфейсом.
     
  • 1.97, forsy (?), 20:36, 25/01/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Главная проблема Явы в том, что она глупая и поощряет глупых программистов чувствовать себя программистами
     
     
  • 2.102, anonymous (??), 21:07, 26/01/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    какая глупость
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру