Комментарии 31
Просто JVM дзен высших порядков какой-то. Огромное спасибо за статью.
А насколько это вот всё годится для продакшена? Или строго только для экспериментов?
Ну на некоторые конференции по кусочкам вытаскивают. Но да. С огромным дисклеймером, что вы смотрите в замочную скважину и никакие выводы делать нельзя.
Но, блин, ощущение нереальной фантастичности такое, что сложно просто взять и поверить. Хочется попробовать. Но ведь потом опять на работу, где этого всего нет и приходится выкручиваться. И получится как будто посмотрел очень хороший сон, и снова проснулся в серой реальности.
Иногда сложно браться за слишком хорошие вещи из боязни, что либо разочаруешься, либо расстанешься. Увы...
>> Начиная с 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/
в
А исходников нет?
Скорость развития IT по прежнему велика и не исключено, что предлагаемый инструментарий спустя всего десятилетие, после своей доработки до промнадёжности, займёт прочные позиции неписанного стандарта в работе с многоязыковыми унаследованными проектами (что то вроде инструментария для работы с покрытым мхом кодом Кобола) — прямо сейчас выкладываются инструменты для принципиально нового, квантового программирования, для вхождения в которое придётся многое оставить в прошлом.
Или Вы про Dalvik VM, которая позиционируется как jvm и собирает сливки популярности java, но при этом не является полноценной jvm? Так это путь, по которому когда-то M$ со своей java реализацией шли, java, которая работала бы только в экосистеме windows, а тут java, которая работает только в экосистеме Android.
По-моему, это довольно правильный ход, мешать развиваться продуктам, которые ради маркетинга называют себя jvm. Программы написанные под jvm должны иметь возможность запускаться на любой реализации. И если Oracle будет позволять всем подряд называть себя jvm, то от этой платформы очень быстро ничего не останется. Одни выпустят jvm только под виндовс, другие — только под андроид, и в итоге получим какой-то .NET в плане кросплатформенности.
Что до Далвик, то это действительно не совсем нормальная JVM, но по-моему, претензии Оракла к Гуглю были все же не совсем поэтому.
А вот Oracle JDK — это микс из свободной java и проприетарных разработок Oracle, таких как Mission Control и прочих, для включения которых необходимо прописать флаг: -XX:+UnlockCommercialFeatures, который как бы намекает, что будет использоваться проприетарные фичи, за которые нужно платить.
К тому же Oracle JDK выставляет счет за embedded устройства с java на борту (по большей части — это мобильные и смартфоны, но есть и GPS и многие другие), вот из-за этого то и судились Оракл с Гуглом, в теории, за каждый девайс с Android можно было бы получить минимум по 200$, согласитесь — неплохая такая сумма была бы.
Вброс, что Oracle закручивает гайки я видел, но это на 99% вброс с испорченным телефоном. Какой-то крупной компании выставили счет за то, что она нарушила лицензионное соглашение, а эта компания прикинулась дураком, мол скачалось бесплатно — значит оно бесплатно! А дальше подхватили малообразованные люди или просто хейтеры и начали распространять, будто Oracle будет выставлять счета вообще всем. Бред :)
Вот половина СНГ использует ворованную лицензию Windows уже лет 20 как и ворованные лицензии фотошопов. Но к ним не приходят потому, что с них взять нечего, а если бы это была большая компания с именем и большим оборотом денег — к ним бы пришли за тем, чтобы вернуть украденное.
похоже вы не различаете открытость исходников и свободу
OpenJDK — распространяется под лицензией GPLv2 (есть нюансы, но большая часть под этой лицензией). С одной стороны это свободная лицензия, с другой — нет.
1) интеллектуальная собственность на API (тут все следили так как это касается не только google vs oracle, но и все в индустрии, так как процесс был знаковый)
2) авторское право на исходники (вопросы к копипасту с удалением headers об авторах и лицензии)
по второму подробней:
взять код под GPL лицензией и сказать, что теперь это apache лицензия и дальше вы если хотите, то сорцы закрывайте (а апач это позволяет) нельзя по условиям gpl, так как это нарушение, именно за это по второму пункту и были претензии.
Причем gpl => apache не относится конкретно к java, за это можно на любой gpl продукт попасть в суд, но никто же не говорит что gpl несвободная лицензия. Вернее говорят apache и bsd, что gpl недостаточно свободная, но каждый понимает свободу по своему.
А за копипасту со сменой лицензии доказали, что любой умный человек реализует почти таким же методом, вплоть до именования переменных.
Назовите пример открытых технологий, а то куда не посмотришь, то везде оказываются ограничения:
— ms за патенты в linux судиться,
— MPEG-LA за кодеки с гуглом (хотя тот считает что vp8-vp9 свободные кодеки),
— Yahoo! показывал что у него есть патенты на идею адблоков,
— про .net не говорю даже, там вообще все на «мы код открыли и обещаем за патенты не судить, честное слово» (почему тогда не открыли под нормальной лицензией, а то верить на слово ещё то удовольствие)
Поэтому и хотелось бы получить:
1) пример ОТКРЫТОЙ технологии
2) критерии открытости (свободно копировать, использовать, продавать изменения не показывая их)
2. Критерии свободы меня устроят классические и вроде под эти критерии целые дистрибутивы подпадают, не то что отдельные технологии.
а) интеллектуальная собственность (я тут полностью согласен с решением суда, вопрос по API возник бы рано или поздно, зато сейчас прецедент есть)
б) авторские права на код (не на сам язык, сам язык для разработки чего-либо никто не запрещал, копировать со сменой лицензии и вырезанием авторских прав есть запрет). Это если бы вы попытались использовать рантайм для Python/Lua от http://www.activestate.com/ и перетянули в свой «my-super-python-lua» дистрибутив стандартные библиотеки от них, а потом жаловались что вас за Python/Lua судят.
2. сам код openjdk под GPLv2, как и ядро linux, разрабатывай-открывай, либо не открывай, но тогда используй внутри не распространяя никому (хватает закрытых кастомных сборок jdk со специфическими патчами и никто никого не судит). GPL не означает «что хочу, то и делаю».
так под эту тему любое можно подвести:
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 об авторах)
Как с поддержкой статической типизации?
Сложно ли организовать взаимодействие кода на разных языках?
Что до первого вопроса — то вроде нет. По-моему, то что в статье перечислено — это и есть полный список поддерживаемых на сегодня языков. Но это не более чем личное впечатление. В списке экспериментальных есть например Лисп, как минимум.
Ну и что до взаимодействия — авторы фреймворка что могли сделали. Но для сильно разных языков проблемы при взаимодействии все равно можно ожидать — хотя бы потому, что не для всех сущностей одного языка у вас не всегда будут хоть сколько нибудь похожие сущности в другом.
Теперь введение будет выглядить, как будто я скопипастил его отсюда. Эх :-(
В любом случае, хорошая работа!
Скользкое начало уже наводит уныние:
Давайте помечтаем, чего бы нам хотелось.
Способ создать новый язык всего за неделю
Глупые, детские хотелки. Язык — это очень серьёзный проект, такое не пилится школотой во время каникул! Мне смешно смотреть на «взрослых дядь», которые преподносят свои имперские амбиции через такие вот подростковые мечты.
Чтобы у него была поддержка качественного отладчика, автоматически
А что мешает-то?? У десятков языков вполне себе удобные отладчики, значит это ни бог весть какие цели — обычная рутина.
Наличие качественного сборщика мусора, автоматически … но только, если он нам понадобится
Началось… то у них есть 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, но мы же будем верить в лучшее, и понадеемся, что этого не произойдёт?
Грааль и Трюфель (Graal & Truffle)