Чего в нем замечательного ? Залипуха полная.. такое впечатление что слайды делали в метро когда уже ехали на доклад и там же придумывали что рассказать. Хорошо что не в блокноте. Вопрос почему дорогая платная конференция по качеству докладов сильно хуже какогото ютубера которы делает и выкладывает видео чисто за лайки?
Мозг чуть не отвалился. Спасибо большое. Из минусов - чересчур какая-то скоростная подача, иногда сбивчивая речь путает мысли. Но всё равно конечно круто очень. Пожалуй, этот концентрат пересмотрю еще пару раз попозже.
Очень сумбурно. Видел этот доклад живьем на Джокере 8 лет назад. Тогда подумал, что мне никогда этого не освоить. Сейчас понимаю, что проблема в подаче - ни про один из компонентов jvm толком не рассказано. Например, если начали говорить про байт-код и давать задачи аудитории, можно было упомянуть базовые команды, стэк машину и как вообще он исполняется. Мой совет новичкам - не тратьте время
А я сейчас пытаюсь свою ЯВМ написать... Надо понять как организовать это всë. Пока что только простые вычисления и вывод циферок, этого маловато как-то
Подскажите а зачем в GC типа Stop and copy нужны stw? По идее ведь копируем себе спокойно в фоне живые объекты из старой области, потом удаляем её целиком. Новые объекты в старую область ведь нет смысла аллоцировать, они в какую нибудь другую область создаются. А если в процессе копирования живых объектов какие то фактически протухнут, то ничего страшного, в следующий раз их не скопируем просто. Вроде при таком подходе поколения не нужны и мусор собирать быстрее и проще. Или нет?
Но нам ведь нужно какое-то статичное состояние треда и стэк трейса, чтобы понять, какие объекты живые. Думаю, налету это делать дороговато по нагрузке. Или, возможно, мусор очень быстро забьёт свободное пространство, если не делать паузы. Т.е. опять же, налету не так быстро можно понять - что мусор. И постоянные изменения буфера под те или иные объекты - дорогостоящая операция (на сколько я знаю). Вообще вопрос очень интересный. Тебе бы точно дали там шоколадку :D
я тоже мозговал про это и вот что понял (чисто мои додумки) при копировании: перемещение объекта и апдейт ссылок должен быть атомарен, т.е. если переместить объект, а ссылку не обновить, то одна часть будет использовать новый объект, а другая старый какое-то время. Все же движется и меняется, поля объекта меняются. mark-and-sweep: возможно тоже объекты перемещаются для оптимизации занятой памяти, типа дефрагментация. Ну и соответственно надо тоже референсы обновлять. Без точки синхронизации атомарности 2+ операций не добиться, а это по сути и есть STW, когда все потоки встают и ждут когда эта атомарная оперция закончится. как-то так я понимаю
Для каждого языка свой компилятор. Для Java помимо JVM ставится javac например. Обычно для работы с языком устанавливается SDK (JDK в случае Java)в котором присутствует нужный компилятор.
Слишком много информации "на словах" и слишком быстро она подаётся, без реальных примеров на реальном коде с разжевыванием тяжело понять о чем они вообще говорят)) Для новичков слишком тяжело, для задротов, наверно, мало интересного) Ну... либо я такой тупой :D
Согласен. Тоже завис на этой строчке. Вообще, через JNI операционная система взаимодействует с JVM. Нативные методы в данном случае, то что написано на языке, понятном для ОС и по её спецификациям. Например, у тебя есть объект класса FileOutputStream. Ты используешь его метод записи в файл, он будет реализован нативно. То есть, для операционной системы нативно будет реализован свой "write()" метод, взаимодействующий с ОЗУ и файловой системой постоянной памяти, и вот он уже со стороны ОС через JNI будет ссылаться на твой экземпляр класса FileOutputStream. А когда ты к этому объекту применишь close(), такая ссылка удалится, следовательно объект из статуса "живых" переходит в статус "мусор". Я примерно так понял. Если есть какие-то уточнения, исправления, было бы интересно узнать мнение более продвинутых джавистов.
Представил себе, как пришел я такой пешком в своем родном Новосибирске на собес в эксельсиор на позицию джуна за 20 тыщ рублей, и у меня Никита Липский начал спрашивать, каким образом в джява байт код верифицируется. Заорал чет вголосину. Самое смешное, что это правда, лол.
Но к слову когда я учился в универе, меня такой же чел типа Никиты тупо обоссал на собесе за то что я никогда в своей жизни не писал драйверы для сетевых карт. После этого предложил мне у них поработать с исп. сроком 3 месяца за ЗП в размере тогдашнего МРОТ-а - это около 4-5 тыщ, точно не помню. Вакансия C++/Qt. Ну после испытательного-то конечно обещал, что будут королевские 16т.р.! Это неправильный способ мышления, конечно, что за 4-5 тыщ рублей ты обязан знать больше, чем пендос за 4-5 тыщ долларов.
@@TheNihaonyan, это у них такое задание - завалить на собеседовании, типа ты ж ни куя не знаешь, с чего это мы тебе будем зарплату платить? А потом приглашают стажером или ещё кем-нибудь за намного меньшую зп.
8.45 речь идёт вообще про web-приложения. И говорится что все веб-приложения на яве используют сервера приложений и не имеют main метода. Это не совсем так. Просто обратил на это внимание.
Вся то что рассказывают и так известно среднестатистическому разработчику. Лучше бы побольше инфы об этой Excelsior. Никита Л. на каждой конференции не забывает упомянуть, что они, такие молодцы, разработали свою собственную JVM - начинает раздражать.
недопустимо читать лекции на публику и при этом так коверкать русский язык! кладут В стэк, а не НА (5:51), глагола ДОСТУПАТЬСЯ не существует (получать ( иметь) доступ (27:32), один поток (ну пусть уж) мапируется на другой в соотношениИ (31:01). чудовищная безграмотность для таких типа крутых прогеров (
Мне понравилось "класспатх"))) У меня техдир и менеждер проектов английский практически не знают. Так у них value -- это валуе, Vue -- это вУе, private -- это привЭйт и даже put -- пат)))
Замечательный доклад, большое спасибо!
Чего в нем замечательного ? Залипуха полная.. такое впечатление что слайды делали в метро когда уже ехали на доклад и там же придумывали что рассказать. Хорошо что не в блокноте. Вопрос почему дорогая платная конференция по качеству докладов сильно хуже какогото ютубера которы делает и выкладывает видео чисто за лайки?
Мозг чуть не отвалился. Спасибо большое.
Из минусов - чересчур какая-то скоростная подача, иногда сбивчивая речь путает мысли. Но всё равно конечно круто очень.
Пожалуй, этот концентрат пересмотрю еще пару раз попозже.
Лол, а я на икс 2 смотрел.
@@ВазгенБурген кек, я вообще на x100 смотрел 🙄
На данный момент у IBM JVM тоже есть AOT (Ahead-Of-Time) Compiler.
спасибо! очень интересно и понятно!)
Хороший доклад, было интересно послушать
Очень сумбурно. Видел этот доклад живьем на Джокере 8 лет назад. Тогда подумал, что мне никогда этого не освоить. Сейчас понимаю, что проблема в подаче - ни про один из компонентов jvm толком не рассказано. Например, если начали говорить про байт-код и давать задачи аудитории, можно было упомянуть базовые команды, стэк машину и как вообще он исполняется.
Мой совет новичкам - не тратьте время
аналогичные впечатления
А я сейчас пытаюсь свою ЯВМ написать... Надо понять как организовать это всë. Пока что только простые вычисления и вывод циферок, этого маловато как-то
Подскажите а зачем в GC типа Stop and copy нужны stw? По идее ведь копируем себе спокойно в фоне живые объекты из старой области, потом удаляем её целиком. Новые объекты в старую область ведь нет смысла аллоцировать, они в какую нибудь другую область создаются. А если в процессе копирования живых объектов какие то фактически протухнут, то ничего страшного, в следующий раз их не скопируем просто. Вроде при таком подходе поколения не нужны и мусор собирать быстрее и проще. Или нет?
Но нам ведь нужно какое-то статичное состояние треда и стэк трейса, чтобы понять, какие объекты живые. Думаю, налету это делать дороговато по нагрузке. Или, возможно, мусор очень быстро забьёт свободное пространство, если не делать паузы. Т.е. опять же, налету не так быстро можно понять - что мусор. И постоянные изменения буфера под те или иные объекты - дорогостоящая операция (на сколько я знаю).
Вообще вопрос очень интересный. Тебе бы точно дали там шоколадку :D
я тоже мозговал про это и вот что понял (чисто мои додумки)
при копировании: перемещение объекта и апдейт ссылок должен быть атомарен, т.е. если переместить объект, а ссылку не обновить, то одна часть будет использовать новый объект, а другая старый какое-то время. Все же движется и меняется, поля объекта меняются.
mark-and-sweep: возможно тоже объекты перемещаются для оптимизации занятой памяти, типа дефрагментация. Ну и соответственно надо тоже референсы обновлять. Без точки синхронизации атомарности 2+ операций не добиться, а это по сути и есть STW, когда все потоки встают и ждут когда эта атомарная оперция закончится.
как-то так я понимаю
В синхронизации "наивная реализация" позабавила)
Мне кажется, я был на этом докладе)) Но тогда был слишком маленьким, чтобы что-то понять.
Довольно интересно
23:24 а как компилятор определяет на какой платформе запущен, в какую машинную инструкцию скомпилируется байт код?
Для каждого языка свой компилятор. Для Java помимо JVM ставится javac например. Обычно для работы с языком устанавливается SDK (JDK в случае Java)в котором присутствует нужный компилятор.
Вообще тут вопрос не про javac. А про JIT-компиляцию.
Всё очень просто. Для каждой ОС - своя реализация JVM.
про многопоточность как-то странно сказали: volatile в данном случае может и не спасти
На 18:00 минуте приведен пример. Как его реализовать в Джава? Спасибо.
while (true) {
int a = 2;
int b = 2;
a += b;
}
Слишком много информации "на словах" и слишком быстро она подаётся, без реальных примеров на реальном коде с разжевыванием тяжело понять о чем они вообще говорят)) Для новичков слишком тяжело, для задротов, наверно, мало интересного) Ну... либо я такой тупой :D
А какие примеры реального кода тут нужно приводить? :) Разве это необходимо?))
Ну и то, что инфа быстро подаётся - это нормально, время их доклада ограничено ведь)
Что вам мешает посмотреть код реализации jvm?
Да, сумбурно.
Объекты из JNI ссылок в native методах
ну вот чуть подробнее бы, что за JNI ссылки такие в native методах?
Согласен. Тоже завис на этой строчке.
Вообще, через JNI операционная система взаимодействует с JVM. Нативные методы в данном случае, то что написано на языке, понятном для ОС и по её спецификациям.
Например, у тебя есть объект класса FileOutputStream. Ты используешь его метод записи в файл, он будет реализован нативно.
То есть, для операционной системы нативно будет реализован свой "write()" метод, взаимодействующий с ОЗУ и файловой системой постоянной памяти, и вот он уже со стороны ОС через JNI будет ссылаться на твой экземпляр класса FileOutputStream. А когда ты к этому объекту применишь close(), такая ссылка удалится, следовательно объект из статуса "живых" переходит в статус "мусор".
Я примерно так понял. Если есть какие-то уточнения, исправления, было бы интересно узнать мнение более продвинутых джавистов.
Монстры :)
@Markus Earle А нахера?
это круто
Монстры программирования!)))
Представил себе, как пришел я такой пешком в своем родном Новосибирске на собес в эксельсиор на позицию джуна за 20 тыщ рублей, и у меня Никита Липский начал спрашивать, каким образом в джява байт код верифицируется.
Заорал чет вголосину. Самое смешное, что это правда, лол.
Но к слову когда я учился в универе, меня такой же чел типа Никиты тупо обоссал на собесе за то что я никогда в своей жизни не писал драйверы для сетевых карт.
После этого предложил мне у них поработать с исп. сроком 3 месяца за ЗП в размере тогдашнего МРОТ-а - это около 4-5 тыщ, точно не помню. Вакансия C++/Qt.
Ну после испытательного-то конечно обещал, что будут королевские 16т.р.!
Это неправильный способ мышления, конечно, что за 4-5 тыщ рублей ты обязан знать больше, чем пендос за 4-5 тыщ долларов.
@@TheNihaonyan да эт пздц, но бывают такие люди. 4-5к - это вообще законно?
@@TheNihaonyan так они спецом такие же вопросы задают, чтобы понизить цену сотрудника, это не только в it
@@TheNihaonyan, это у них такое задание - завалить на собеседовании, типа ты ж ни куя не знаешь, с чего это мы тебе будем зарплату платить? А потом приглашают стажером или ещё кем-нибудь за намного меньшую зп.
@@Emsique тогда надо смотреть что и сколько времени ты делаешь и просить соответствующую зарплату?
проект на spring boot имеет main метод.
а причем здесь boot? это фреймворк, а там речь была про application server.
8.45 речь идёт вообще про web-приложения. И говорится что все веб-приложения на яве используют сервера приложений и не имеют main метода. Это не совсем так. Просто обратил на это внимание.
spring boot не только для веба, но в случае с ембедед сервером ваше приложении ответственно за его запуск.
сумбурно и хаотично
Проприетарное ПО - неактуальная тема, а Excelsior сейчас именно такой
Вся то что рассказывают и так известно среднестатистическому разработчику. Лучше бы побольше инфы об этой Excelsior. Никита Л. на каждой конференции не забывает упомянуть, что они, такие молодцы, разработали свою собственную JVM - начинает раздражать.
Да, я не понимаю самого главного - нахуя и кто у них это покупает
Мы были их клиентами, очень жаль что они - всё :С А Никите и его команде большой респект, очень крутая технология была
@@JagaimoNeko А ВЫ это кто?)
@@svtroshin Клауд технологии цирка шапито
класспатх))
емое, что за монстры такое написали
большинству java инженерам эти знания ни к чему, и в реальности их применить очень тяжело
недопустимо читать лекции на публику и при этом так коверкать русский язык! кладут В стэк, а не НА (5:51), глагола ДОСТУПАТЬСЯ не существует (получать ( иметь) доступ (27:32), один поток (ну пусть уж) мапируется на другой в соотношениИ (31:01). чудовищная безграмотность для таких типа крутых прогеров (
Когда целыми днями читаешь инглиш.... такое бываетх
Какая же ты душная. Тут программисты сидят, а не лингвисты. Всем похер.
Мне понравилось "класспатх")))
У меня техдир и менеждер проектов английский практически не знают. Так у них value -- это валуе, Vue -- это вУе, private -- это привЭйт и даже put -- пат)))
анна, у вас есть есть стопка книг. еще одну книгу вы кладете В эту стопку или НА неё?
они и по сути не очень))