Как разработчик TeaVM, компилятора байт-кода JVM в JavaScript и WebAssembly, я часто рекомендую пользователям, почему-то жаждущим сгенерировать WebAssembly, начать с JavaScript. Если честно, бэкэнд WebAssembly я очень давно не развиваю, не реализую в нём недостающих фич и не фикшу баги. Меня спрашивают: а почему так? Обычно, я просто игнорирую подобные вопросы, потому что в двух предложениях ответить на них невозможно, а для того, чтобы писать больше предложений, у меня нет времени. Обычно если я встречаю чьи‑то попытки объяснить, чем WebAssembly плох для реализации JVM (а так же, CLR, JavaScript и прочих динамических сред), то они сводятся к следующему: «Java (.NET, JavaScript, ваш вариант) — это управляемый язык со сборкой мусора и исключениями, так что приходится тащить с собой гигантский рантайм». Что же, на самом деле, ситуация несколько сложнее, а размер рантайма вовсе не такой страшный и не является основным источником бед.
программист, программист СУБД, веб-разработчик
Разбираемся с GraalVM, AOT и JIT

Если вы хотите разобраться, что такое GraalVM, как он работает, и в чем различия между Just-In-Time (JIT) компиляцией и Ahead-Of-Time (AOT) компиляцией, то это руководство — именно то, что вы искали.
Разница между загрузкой и инициализацией классов в Java на любопытном примере
Привет, сегодняшняя статья будет о некоторых тонкостях загрузки и инициализации классов и немного о производительности (совсем чуть-чуть и в самом конце).
Поводом для написания статьи стал вопрос на StackOverflow. Откройте, но не торопитесь читать ответ ;)
Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?
Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.
Java-дайджест: начало июля

Привет, это Олег. Я вылез из криокамеры и пытаюсь заставить себя писать регулярные дайджесты.
В этом выпуске будет новый бесплатный (на самом деле нет) GraalVM Enterprise, отмена Java 8 в бигдате, совершенно новая система модулей (которую никто не просил, но мы её заслужили тем не менее), утилита для поиска и истребления легаси в проекте, библиотеки для работы с Large Language Models (иначе говоря, ChatGPT), всратый офис с графическим интерфейсом на Java, и многое другое. И конечно, обзор этой недели Java на Хабре.
Если есть время, оставьте комментарий, про какую часть Java-экосистемы вам хотелось бы читать дальше. Помогите Даше-путешественнице найти смысл существования. Новостей куча, поэтому пока я пишу про то, что интересно лично мне: GraalVM, Spring, Clouds, OpenJDK dev. Например, в Hibernate на каждый релиз чинят десятки каких-то багов, но я про них ничего не пишу, потому что не знаю ни одного живого человека, которому бы это было интересно.
Как всегда, статья подготовлена при поддержке "российской джавы" AxiomJDK и моего IT-бара Failover Bar, потому что я пишу её в рабочее время :)
Собеседование по Java. Разбор 1606 вопросов и ответов. Часть 1 (с 1 по 169 вопрос)

Всем привет! Меня зовут Владимир Баганов. Я хочу начать серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 169 разобранных вопросов из 1606 вопросов.
JVM internals

Статья объясняет внутреннюю архитектуру виртуальной машины Java (JVM). Диаграмма отображает ключевые внутренние компоненты типичной JVM, которая соответствует спецификации The Java Virtual Machine Specification Java SE 7 Edition
Архитектура и реактивное программирование

Что такое реактивное программирование? Не Rx. И даже не Excel. Это архитектурный паттерн, позволяющий абсолютно иначе писать код. В статье мы устаканим фундаментальные знания, утвердимся в том, что React.js всё же является реактивным, и подумаем о том, как и когда нужно, а когда не нужно применять паттерны реактивного программирования.
Big State Managers Benchmark

Здравствуйте, меня зовут Дмитрий Карловский и я.. большой любитель физики высоких энергий. Сталкиваешь такой совершенно разные вещи между собой, и смотришь на бабахи, уплетая поп-корн.
Так как в Реакте всё очень плохо с архитектурой, а страдают от него многие, то к настоящему времени появилось уже очень много так называемых менеджеров состояний. И каждый наперебой уверяет, что он самый быстрый, самый надёжный, самый компактный, самый выразительный и вообще самый правильный.
Что ж, давайте возьмём их всех и столкнём лбами друг с другом и с суровой реальностью, чтобы узнать кто же на самом деле тут батя!
Тебе не нужно классическое ООП в твоём бэкенд микросервисе

Заявление звучит довольно громко и, я бы даже сказал, провокационно. Но в последние годы я всё больше и больше считаю, что это утверждение действительно верно, и хочу подробно объяснить, почему.
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные. Поэтому редкое место, где они пересекаются и могут что-то поведать друг другу — Java-конференции. Мы проводим их регулярно (уже в апреле будет JPoint). И на предыдущей нашей конференции Иван Углянский dbg_nsk поделился с Java-разработчиками тем, как всё выглядит с его стороны.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
Поскольку все эти вопросы из доклада звучат интересно, мы решили для Хабра сделать его текстовую версию (а для тех, кому удобнее видео, прикладываем ссылку на ютуб). Далее повествование идёт от лица Ивана.
Безграничные возможности FFmpeg на примерах

FFmpeg — швейцарский нож для мультимедиа. Совершенно незаменимая программа, которую использует в повседневной жизни почти каждый, даже не зная об этом. Например, вы сняли видео и заливаете на видеохостинг — оно перекодируется и публикуется уже в другом разрешении/формате/размере. Как вы думаете, какая программа выполнила транскодирование? Вполне возможно, что под капотом на сервере работает FFmpeg.
FFmpeg объединяет более 300 видео/аудио/графических кодеков, декордеров, муксеров, демуксеров и фильтров. Благодаря ему вы можете написать собственный видеоплеер в тысячу строчек кода, не разбираясь с кишочками видеообработки.
Это «движок» почти всех современных инструментов для обработки/сжатия/редактирования видео. Они просто предлагают графический интерфейс с кнопками, а
ffmpeg
делает реальную работу. Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap

Когда человек раньше говорил что он контролирует весь мир, то его обычно помещали в соседнюю палату с Бонапартом Наполеоном. Надеюсь, что эти времена остались в прошлом и каждый желающий может анализировать геоданные всей земли и получать ответы на свои глобальные вопросы за минуты и секунды. Я опубликовал Openstreetmap_h3 — свой проект, который позволяет производить геоаналитику над данными из OpenStreetMap в PostGIS или в движке запросов, способном работать с Apache Arrow/Parquet.
Первым делом передаю привет хейтерам и скептикам. То что я разработал — действительно уникально и решает проблему преобразования и анализа геоданных используя обычные и привычные инструменты доступные каждому аналитику и датасаенс специалисту без бигдат, GPGPU, FPGA. То что выглядит сейчас простым в использовании и в коде — это мой личный проект в который я инвестировал свои отпуска, выходные, бессонные ночи и уйму личного времени за последние 3 года. Может быть я поделюсь и предысторией проекта и граблями по которым ходил, но сначала я все же опишу конечный результат.
Первый пост не претендует на монографию, начну с краткого обзора...
Жизнь в Сочи глазами IT-специалиста и не только: что может предложить город айтишнику?

Привет, Хабр! Сегодня поговорим о Сочи как о возможном месте для жизни и работы айтишника. У города есть много достоинств, включая его близость к морю, мягкий климат и наличие красивейших пейзажей. Но есть и другие положительные моменты, о которых сегодня и поговорим. Не обошлось, конечно, и без недостатков, которые тоже стоит упомянуть. Кстати, если вы здесь живёте, расскажите о своём мнении в комментариях — это позволит дополнить статью, сделав её более объективной.
Что самое трудное в разработке программного обеспечения?

Фил Карлтон как-то сказал: «В информатике есть только два сложных вопроса: инвалидация кэша и присвоение имен».
Первое — это вполне реальная проблема; второе — проблема определения реальности.
Неверный алгоритм кэширования ставит под угрозу целостность системы. Неадекватные имена могут поставить под угрозу само существование системы.
На первый взгляд, это может показаться весьма спорным утверждением. Тем не менее, оно обретает смысл, если вникнуть в то, как мы учимся и выстраиваем общее понимание мира.
Вы НЕ сошли с ума (о режиме сна в Windows)
Вы сталкивались с тем, что ноутбук случайно включается, хотя вы уверены, что отправляли его в сон?
Бывало, что батарея оказывалась пустой, хотя вы точно-точно помните, как убирали в сумку заряженный на 100% ноутбук?
Тогда вам сюда:
Phoenix LiveView: когда вам больше не нужен JavaScript*
Не так давно 12.12.2018 был анонсирован выход новой библиотеки для фанатов phoenix framework под названием Phoenix LiveView. Я бы хотел поделиться с вами впечатлениями от ее использования и phoenix в целом, а в следующей статье попробовать написать простую браузерную игру. Часть статьи с личным мнением не является исключительно правдивой, я попробую объяснить преимущества веб-разработки на примере phoenix против php
CAP двенадцать лет спустя: как изменились «правила»
Эта статья впервые появилась в журнале Computer и подготовлена InfoQ & IEEE Computer Society.
Теорема CAP гласит, что любая сетевая система с общими данными может иметь только два из трех желаемых свойств. Однако, работая непосредственно с разделениями, разработчики могут оптимизировать согласованность и доступность, тем самым достигая некоторого компромисса между всеми тремя.
За десятилетие, прошедшее с появления теоремы, разработчики и исследователи использовали теорему CAP (а иногда и злоупотребляли ею) как повод для изучения широкого спектра новых распределенных систем. Движение NoSQL также использовало её в качестве аргумента против традиционных баз данных.
В теореме CAP говорится, что любая сетевая система с общими данными может иметь не более двух из трех желаемых свойств:
- согласованность (С), эквивалентная наличию единственной актуальной копии данных;
- высокая доступность (A) этих данных (для обновлений); и
- устойчивость к сетевым разделениям (P).
Такое толкование CAP помогало разработчикам быть открытыми для более широкого диапазона систем и компромиссов; действительно, за последнее десятилетие возникло множество новых систем и много споров об относительных достоинствах согласованности и доступности. Формулировка «2 из 3» всегда вводила в заблуждение, поскольку имела тенденцию чрезмерно упрощать противоречия между свойствами. Но сейчас такие тонкости имеют значение. CAP запрещает лишь крошечную часть проектного пространства: идеальная доступность и согласованность при наличии разделений, которые встречаются редко.
Erlang-like микросервисы в Clojure приложении: это просто
Как известно в кругу Erlang разработчиков: только Erlang разработчики знают как "жить" правильно а все остальные "живут" — неправильно. Не пытаясь оспаривать этот факт, приведем пример Clojure приложения в стиле Erlang, используя библиотеку Otplike.
Глубокое погружение в Java Memory Model
Я провел в изучении JMM много часов и теперь делюсь с вами знаниями в простой и понятной форме.
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
Information
- Rating
- 4,971-st
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity