Pull to refresh

Comments 31

Просто JVM дзен высших порядков какой-то. Огромное спасибо за статью.


А насколько это вот всё годится для продакшена? Или строго только для экспериментов?

Судя по тому, что Oracle не спешит всё это рекламировать и презентовать на Java конференциях, значит ещё не готово.

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


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


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

Я в сентябре общался с Томасом Вертингером, который командует Граалем. Он сказал, что начиная с 2017ого они займутся продвижением проекта более активно. В частности, Томас обещает приехать в октябре в Питер с докладами на Joker.
FastR является стандартным интерпретатором для R в spark

>> Начиная с Java 9, Graal можно использовать как JVM плагин.

первичная идея была предоставить интерфейс JIT для поддержки сторонних реализаций
http://openjdk.java.net/jeps/243

Но есть сборки jvmci и для java 8, так что при желании можно гонять уже сейчас

>> А следующие части не относятся к OpenSource
>> Поддержка AOT

но тут пошли поезда от Марка Райнхольда и случился http://openjdk.java.net/jeps/295
в итоге core часть от graal уже войдет и в кодовую базу java 9
видел =) за самим граалем уже давно посматриваю, хотя сейчас они планы чуть урезали, чтобы выйти сразу хоть с чем-то в прод, а уже потом добивать фичами

последнее время в этой части движение активное началось, помимо грааля зашевелились ibm
http://www.eclipse.org/omr/

по осени дополнительно и свою версию jit открыли, в перспективе рассчитывают целиком свою версию jvm выложить и дальше двигаться по принципу Oracle «есть открытая версия, а есть наша сертифицированная с поддержкой, разница минимальная». http://openj9.mybluemix.net/

в
Немножко есть, но не все части сделаны OpenSource:
  • Graal — https://github.com/graalvm/graal-core
  • Truffle — https://github.com/graalvm/truffle
  • RubyTruffle — https://github.com/graalvm/rubytruffle
  • Sulong — https://github.com/graalvm/sulong
  • FastR — https://github.com/graalvm/fastr

Скорость развития IT по прежнему велика и не исключено, что предлагаемый инструментарий спустя всего десятилетие, после своей доработки до промнадёжности, займёт прочные позиции неписанного стандарта в работе с многоязыковыми унаследованными проектами (что то вроде инструментария для работы с покрытым мхом кодом Кобола) — прямо сейчас выкладываются инструменты для принципиально нового, квантового программирования, для вхождения в которое придётся многое оставить в прошлом.

От оракла хорошего ждать не приходится, исходники они может и остальные откроют, но патенты оставят и потом будут давить конкурентов, как это с джавой происходит.
А что с java не так? Чем Oracle давит конкурентов java | jvm?

Или Вы про Dalvik VM, которая позиционируется как jvm и собирает сливки популярности java, но при этом не является полноценной jvm? Так это путь, по которому когда-то M$ со своей java реализацией шли, java, которая работала бы только в экосистеме windows, а тут java, которая работает только в экосистеме Android.

По-моему, это довольно правильный ход, мешать развиваться продуктам, которые ради маркетинга называют себя jvm. Программы написанные под jvm должны иметь возможность запускаться на любой реализации. И если Oracle будет позволять всем подряд называть себя jvm, то от этой платформы очень быстро ничего не останется. Одни выпустят jvm только под виндовс, другие — только под андроид, и в итоге получим какой-то .NET в плане кросплатформенности.
На мой взгляд никакого давления тоже не существует, более того, на днях прочитал, что IBM собирается открыть исходники своей J9. То-то я смотрю, их совсем задавили, конкурентов. Если посчитать честные реализации JVM — то наверное вполне живых штук 10 наберется.

Что до Далвик, то это действительно не совсем нормальная JVM, но по-моему, претензии Оракла к Гуглю были все же не совсем поэтому.
Джава это несвободная технология, достаточно вспомнить суд оракла с гуглом или вот это.
Java — свободная технология, более того, исходники (OpenJDK) доступны для скачивания.

А вот Oracle JDK — это микс из свободной java и проприетарных разработок Oracle, таких как Mission Control и прочих, для включения которых необходимо прописать флаг: -XX:+UnlockCommercialFeatures, который как бы намекает, что будет использоваться проприетарные фичи, за которые нужно платить.

К тому же Oracle JDK выставляет счет за embedded устройства с java на борту (по большей части — это мобильные и смартфоны, но есть и GPS и многие другие), вот из-за этого то и судились Оракл с Гуглом, в теории, за каждый девайс с Android можно было бы получить минимум по 200$, согласитесь — неплохая такая сумма была бы.

Вброс, что Oracle закручивает гайки я видел, но это на 99% вброс с испорченным телефоном. Какой-то крупной компании выставили счет за то, что она нарушила лицензионное соглашение, а эта компания прикинулась дураком, мол скачалось бесплатно — значит оно бесплатно! А дальше подхватили малообразованные люди или просто хейтеры и начали распространять, будто Oracle будет выставлять счета вообще всем. Бред :)
Вот половина СНГ использует ворованную лицензию Windows уже лет 20 как и ворованные лицензии фотошопов. Но к ним не приходят потому, что с них взять нечего, а если бы это была большая компания с именем и большим оборотом денег — к ним бы пришли за тем, чтобы вернуть украденное.
> Java — свободная технология, более того, исходники (OpenJDK) доступны для скачивания.

похоже вы не различаете открытость исходников и свободу
Похоже, для начала стоит определить термин «свободная технология», чтобы дальше можно было хоть что-то говорить. А то GNU/Linux тоже можно назвать не свободной технологией.

OpenJDK — распространяется под лицензией GPLv2 (есть нюансы, но большая часть под этой лицензией). С одной стороны это свободная лицензия, с другой — нет.
Видимо в этих нюансах и дело, раз оракл может подавать в суд на гугл
ещё раз:
1) интеллектуальная собственность на API (тут все следили так как это касается не только google vs oracle, но и все в индустрии, так как процесс был знаковый)
2) авторское право на исходники (вопросы к копипасту с удалением headers об авторах и лицензии)

по второму подробней:
взять код под GPL лицензией и сказать, что теперь это apache лицензия и дальше вы если хотите, то сорцы закрывайте (а апач это позволяет) нельзя по условиям gpl, так как это нарушение, именно за это по второму пункту и были претензии.

Причем gpl => apache не относится конкретно к java, за это можно на любой gpl продукт попасть в суд, но никто же не говорит что gpl несвободная лицензия. Вернее говорят apache и bsd, что gpl недостаточно свободная, но каждый понимает свободу по своему.
Не понимаю что вы хотите сказать, что толку от открытости кода есть есть интеллектуальная собственность на какие-то его элементы без которых его не применишь?
Вот поэтому за судом и следила вся индустрия, так как если бы судья сказал что «api действительно является ИС», то тогда бы попали все, нельзя было бы сделать ни одну стороннюю реализацию любого api, даже моки уже попадали бы под нарушение. Но судья попался грамотным и сказал обратное, поэтому все спят спокойно. Можно и реализовывать и применять.

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

Назовите пример открытых технологий, а то куда не посмотришь, то везде оказываются ограничения:
— ms за патенты в linux судиться,
— MPEG-LA за кодеки с гуглом (хотя тот считает что vp8-vp9 свободные кодеки),
— Yahoo! показывал что у него есть патенты на идею адблоков,
— про .net не говорю даже, там вообще все на «мы код открыли и обещаем за патенты не судить, честное слово» (почему тогда не открыли под нормальной лицензией, а то верить на слово ещё то удовольствие)

Поэтому и хотелось бы получить:
1) пример ОТКРЫТОЙ технологии
2) критерии открытости (свободно копировать, использовать, продавать изменения не показывая их)
1. Мы говорим о языках программирования, естественно доказать не могу, но ни разу не слышал о каких-либо патентах препятствующих использованию какого-либо ЯП кроме джавы и дотнета. Соответственно в качестве примеров могу привести Python, Haskell, Erlang/Elixir.
2. Критерии свободы меня устроят классические и вроде под эти критерии целые дистрибутивы подпадают, не то что отдельные технологии.
1. мы говорим о следующих пунктах:
а) интеллектуальная собственность (я тут полностью согласен с решением суда, вопрос по API возник бы рано или поздно, зато сейчас прецедент есть)
б) авторские права на код (не на сам язык, сам язык для разработки чего-либо никто не запрещал, копировать со сменой лицензии и вырезанием авторских прав есть запрет). Это если бы вы попытались использовать рантайм для Python/Lua от http://www.activestate.com/ и перетянули в свой «my-super-python-lua» дистрибутив стандартные библиотеки от них, а потом жаловались что вас за Python/Lua судят.

2. сам код openjdk под GPLv2, как и ядро linux, разрабатывай-открывай, либо не открывай, но тогда используй внутри не распространяя никому (хватает закрытых кастомных сборок jdk со специфическими патчами и никто никого не судит). GPL не означает «что хочу, то и делаю».
то есть если есть сторонний продукт, который занимается раскидыванием jdk по машинкам в домене, но он платный хоть и можно скачать бесплатно, то это делает сразу же java несвободное технологией?

так под эту тему любое можно подвести:
1) .net несвободная технология, так как для нормальной работы если я скачаю нелицензионный windows мне ms счета выставит
2) js несвободная технология, так как за использование пиратского IE с windows для запуска ms опять счета выставит
3) sql несвободная технология, так как за его использование на oracle/db2/mssql некоторые компании счета выставляют
4) etc. можно продолжать аналогии до бесконечности

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

основные вопросы к Google были по 2 пунктам:
1) интеллектуальная собственность на API (тут все следили так как это касается не только google vs oracle, но и все индустрии)
2) авторское право на исходники (вопросы к копипасту с удалением headers об авторах)
А функциональные и логические языки на этой платформе есть?
Как с поддержкой статической типизации?
Сложно ли организовать взаимодействие кода на разных языках?
А каким образом платформа разработки компилятора может помешать статической типизации? Когда у вас есть AST, вы можете сделать на нем любой статический вывод типов, какой вам только захочется. Какой-то универсальной поддержки на уровне Truffle я бы ожидать не стал бы — хотя бы потому, что какого-то общепринятого универсального метода вывода типов вроде как и не существует. Скажем, Хиндли-Милнер таким не является.

Что до первого вопроса — то вроде нет. По-моему, то что в статье перечислено — это и есть полный список поддерживаемых на сегодня языков. Но это не более чем личное впечатление. В списке экспериментальных есть например Лисп, как минимум.

Ну и что до взаимодействия — авторы фреймворка что могли сделали. Но для сильно разных языков проблемы при взаимодействии все равно можно ожидать — хотя бы потому, что не для всех сущностей одного языка у вас не всегда будут хоть сколько нибудь похожие сущности в другом.
Тоже пишу статью по Граалю на Хабр.
Теперь введение будет выглядить, как будто я скопипастил его отсюда. Эх :-(

В любом случае, хорошая работа!
Спасибо! Всё равно пишите. Моя статья — это просто перевод чужих слов.
Прямо скажу — статья попахивает жалким, пеароподобным лохотроном. Очень много воды о том, как всё будет радужно, но слишком мало инфы по сути — из-за чего конкретно будет всё круто??
Скользкое начало уже наводит уныние:

Давайте помечтаем, чего бы нам хотелось.

Способ создать новый язык всего за неделю


Глупые, детские хотелки. Язык — это очень серьёзный проект, такое не пилится школотой во время каникул! Мне смешно смотреть на «взрослых дядь», которые преподносят свои имперские амбиции через такие вот подростковые мечты.

Чтобы у него была поддержка качественного отладчика, автоматически


А что мешает-то?? У десятков языков вполне себе удобные отладчики, значит это ни бог весть какие цели — обычная рутина.

Наличие качественного сборщика мусора, автоматически … но только, если он нам понадобится


Началось… то у них есть GC, то «если понадобится»… Мальчики, сделайте уже уроки и не пишите в тырнеты! GC — это не мечта и не требование, это вынужденный механизм для работы «автоматической памяти». Так что требовать GC — глупо, требовать надо «удобную работу с памятью».

Чтобы язык мог использовать весь существующий код, независимо от того, на чём он был написан


Ясно. В третьем классе детям рассказали про ЯП.

Чтобы язык поддерживал любой стиль программирования


:))) Это уже вообще ни в какие рамки! Отгоните Петросяна от клавиатуры, мы уже не можем больше ржать!

Чтобы поддерживал just-in-time и ahead-of-time компиляцию


Да зачем?? Причём тут вообще «язык» и все эти дебри из мира виртуальных машин? Кто вообще сказал, что нам нужна VM?!!!

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


Бред сивой кобылы. Таких «задач» — две на мильён, с какого перепугу нам в языке это нужно??

А ещё, мы, конечно, хотим иметь открытый исходный код этого волшебного инструмента.


Да нифига не хотим! Много из вас «накоммитило» в гитхабы? Единицы по десятку строк. Так зачем вам исходники, в которых вы всё равно ни черта не понимаете??
===================
Да уж… повидал я разных Болгеносов и «Петриков от ИТ», но таких клоунов вижу впервые! Теперь понятно, чем могут заниматься «40 учёных из IT индустрии» — рисовать в небе пони и насиловать JVM в жалких попытках реванша перед .NET; Даже не буду желать успехов этим распильщикам — пусть уже загнутся и пойдут в таксисты.
Глупые, детские хотелки. Язык — это очень серьёзный проект, такое не пилится школотой во время каникул!

Это да, вот только помимо языка (парсер, семантический анализатор, библиотеки, дизайн), ещё есть рантайм, а это тоже куча человеко-лет. Причём, ещё непонятно, что из указанного требует больше времени на разработку. Скажем, написать хороший оптимизатор, хороший JIT, хороший GC — та ещё задача.


Ясно. В третьем классе детям рассказали про ЯП.

Исходный тезис немного громкий, но давайте не кидаться какашками. Просто есть платформа JVM, для неё можно писать языки (и люди пишут), и действительно, эти языки прекрасно работают с существующим кодом, написанным на Java.


Да зачем?? Причём тут вообще «язык» и все эти дебри из мира виртуальных машин? Кто вообще сказал, что нам нужна VM?!!!

Какие такие дебри. JIT и AOT — это всего лишь про рантайм. C++ обычно реализуется в виде AOT-компиляторов, Java — JIT, но может быть и наоборот (те же Excelsior JET — пример Java, компилирующейся AOT). И вообще, понятие VM — это достаточно расплывчатая штука. Вот есть какой-то IR у компилятора. Можно ли интерпретатор этого IR назвать VM? А AOT-компилятор в нативный код? А JIT? Что такое LLVM (у которого две последние буквы VM)? Таки VM или компиляторный бэкэнд? Почему GCC не содержит в себе буковки VM, хотя на деле он очень похож на LLVM?


Бред сивой кобылы. Таких «задач» — две на мильён, с какого перепугу нам в языке это нужно??

В языке это не нужно. Это нужно в рантайме. А нужно это с целью добиться лучшей производительности кода, написанного на языке. За счёт hot swap можно прямо во время исполнения собрать профиль и на основе профиля скомпилировать код более эффективно и заменить старую версию на новую.


Да нифига не хотим! Много из вас «накоммитило» в гитхабы? Единицы по десятку строк. Так зачем вам исходники, в которых вы всё равно ни черта не понимаете??

Это на уровне энтузиастов так. А на уровне компаний может быть иначе. Компании может стать интересен какой-то opensource-проект, и она может специально людей набрать, которые будут сидеть на з/п и в этот проект контрибьютить. Со всякими Linux и JVM примерно так дела и обстоят.


рисовать в небе пони и насиловать JVM в жалких попытках реванша перед .NET;

Это какой такой реванш перед .NET? Как бы мы живём в мире, где .NET всё ещё не убил Java, и вроде бы не собирается убивать. Наоборот, судя по объявлениям о работе у Java дела намного лучше идут. Если кто и убьёт Java (вместе с .NET в придачу), то какой-нибудь JavaScript, но мы же будем верить в лучшее, и понадеемся, что этого не произойдёт?

Sign up to leave a comment.

Articles