Популярный ORM-фреймворк Hibernate начинает использовать Byte Buddy (библиотеку кодогенерации и манипуляции байткодом) вместо ранее использовавшейся Javassist. Это можно было бы посчитать внутренними делами Hibernate и оставить без внимания, но есть любопытные детали:
- Во-первых, это уже второй случай за последнее время, когда популярный проект переходит на Byte Buddy: в октябре то же самое сделали в Mockito (в обоих случаях с миграцией помог создатель Byte Buddy Рафаэль Уинтерхалтер). Поскольку библиотеку применяют ещё и в средстве сборки Bazel от Google, список проектов, использующих Byte Buddy, становится всё более громким. Лукас Эдер шутит, что самое время взять и сменить лицензию на коммерческую (сейчас Byte Buddy полностью бесплатна для использования, Уинтерхалтер берёт деньги только за консультации).
@rafaelcodes excellent. Now change the license to commercial pic.twitter.com/QdU2PPFBv4
— Lukas Eder (@lukaseder) November 17, 2016
- Во-вторых, по такому поводу developer advocate Hibernate Влад Михальча взял у Уинтерхалтера небольшое интервью. Там Рафаэль рассказывает и о различиях между использованием Byte Buddy в Mockito и Hibernate, и о различиях Byte Buddy, Javassist и cglib, а также высказывает любопытное мнение о том, что проблема многих подобных проектов кроется не в их коде: «Я написал статью «cglib: The missing manual», чтобы поделиться своим знанием, которое не было отражено в документации. Я считаю, это одна из главных проблем библиотек кодогенерации: из-за нехватки документации многие люди боятся использовать их, несмотря на их полезность, потому что не понимают, как они работают».
- Rafael WinterhalterRafael works as a software consultant in Oslo, Norway. He is a proponent of static typing and a JVM enthusiast with particular interest in code instrumentation, concurrency and functional programming. Rafael blogs about software development, regularly presents at conferences and was pronounced a JavaOne Rock Star. When coding outside of his work place, he contributes to a wide range of open source projects and often works on Byte Buddy, a library for simple runtime code generation for the Java virtual machine. For his work, Rafael received a Duke's Choice award and was elected a Java Champion. @rafaelcodes