Обсудим Разработка Spring под bukkit api

CodeLomer

Пользователь
Сообщения
48
Решил я недавно перейти к разработке сайтов и понял что за чудесное чудо этот Spring. Так много помогающих инструментов. Мне очень его не хватало в разработке плагинов. Было очень трудно отвыкать. Готовых api заточенных конкретно под плагины не было поэтому я подумал а почему бы не сделать свой. И знаете что? Я начал :)

Идея была в том чтобы поместить все самое полезное и необходимое в мой api плагин. Туда будут входить на данный момент несколько систем:

Dependency injection (DI)
JPA
Validation
Controller система под команд

Это будет полноценным фреймворком цель которой будет удобная и понятная разработка плагинов. Но это трудно сделать одному. Чтение кода Spring занимает много времени. Сложность даже не в самой сути того как работает контекст Spring а в точках расширения и возможностей api которая она представляет. Очень много полиморфизма но в то же время система очень гибкая. Если кто то хочет поучаствовать присоединяйтесь.


Пока я на этапе создания схемы классов.
 
Последнее редактирование:
Не вижу в этом особого смысла, когда уже есть отличные фреймворки, сделать лучше которых будет очень сложно. Guice, Hibernate и LiteCommands полностью закрывают перечисленные потребности
 
Не вижу в этом особого смысла, когда уже есть отличные фреймворки, сделать лучше которых будет очень сложно. Guice, Hibernate и LiteCommands полностью закрывают перечисленные потребности
Сложно будет да но я некуда не тороплюсь. Это что то типо хобби проект на чиле)). Слишком уж удобно.
 
У меня пет проект (телеграмм бот) на Spring и мне нравится работать с Spring, будет круто если и для кубов такое будет :)
 
У меня пет проект (телеграмм бот) на Spring и мне нравится работать с Spring, будет круто если и для кубов такое будет :)
offtop имхо, телеграм боты на джаве это страх и ужас
 
Решил я недавно перейти к разработке сайтов и понял что за чудесное чудо этот Spring. Так много помогающих инструментов. Мне очень его не хватало в разработке плагинов. Было очень трудно отвыкать. Готовых api заточенных конкретно под плагины не было поэтому я подумал а почему бы не сделать свой. И знаете что? Я начал :)

Идея была в том чтобы поместить все самое полезное и необходимое в мой api плагин. Туда будут входить на данный момент несколько систем:

Dependency injection (DI)
JPA
Validation
Controller система под команд

Это будет полноценным фреймворком цель которой будет удобная и понятная разработка плагинов. Но это трудно сделать одному. Чтение кода Spring занимает много времени. Сложность даже не в самой сути того как работает контекст Spring а в точках расширения и возможностей api которая она представляет. Очень много полиморфизма но в то же время система очень гибкая. Если кто то хочет поучаствовать присоединяйтесь.


Пока я на этапе создания схемы классов.
По моему, вы господин занимаетесь изобретением велосипеда

Разработка и так проще не куда - единственное очень сильно ограничены возможности, по сравнению с forge/fabric, но не суть
Подключить новую либу можно за 5 минут, и не тащить все остальное ненужное

+ Надеюсь ты не будешь грешить с использованием рефлексии а сделаешь через ASM, иначе производительность сильно упадет

Поясняю

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

Выпусти форк spigot-а, который исправляет эту херню на нормальную кодогенерацию сначала, 10+ лет назад forge сделали это - но ни 1 ведроспигот - нет
Единственный вариант, как избежать этой долбаной рефлексии - сделать это вручную
 
Последнее редактирование:
По моему, вы господин занимаетесь изобретением велосипеда

Разработка и так проще не куда - единственное очень сильно ограничены возможности, по сравнению с forge/fabric, но не суть
Подключить новую либу можно за 5 минут, и не тащить все остальное ненужное

+ Надеюсь ты не будешь грешить с использованием рефлексии а сделаешь через ASM, иначе производительность сильно упадет

Поясняю

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

Выпусти форк spigot-а, который исправляет эту херню на нормальную кодогенерацию сначала, 10+ лет назад forge сделали это - но ни 1 ведроспигот - нет
Единственный вариант, как избежать этой долбаной рефлексии - сделать это вручную
Я заметил что asm вроде не работает на Java 8
 
Я заметил что asm вроде не работает на Java 8
Хз - я +- нормально так понаписал c ASM - в т.ч и запскал на java-8 - все норм работает

(Loand-инжекторы полей + доступы к ним и Var-Only методы и поля для Elca Server)
 
Последнее редактирование:
кто знает
Хз - я +- нормально так понаписал c ASM - в т.ч и запскал на java-8 - все норм работает

(Loand-инжекторы полей + доступы к ним и Var-Only методы и поля для Elca Server)
я одолжил пакет asm кода у Spring мне интересно что будет лучше и легче взять готовое или свое сделать))
Объединено

а и еще proxy
 

Вложения

  • asmSPidzid.PNG
    asmSPidzid.PNG
    79.9 KB · Просмотры: 18
я одолжил пакет asm кода у Spring мне интересно что будет лучше и легче взять готовое или свое сделать))
Любые большие проекты бесполезны без документации, в том числе сторонней, созданной сообществом. Обычно на этом этапе и непопулярности решения все вянет стремительно быстро. Наверное, какой-нибудь Adventure + MiniMessage можно считать большим проектом, в значительной степени взлетел благодаря тому, что его разработкой занимались люди из PaperMC и по итогу вшили в ядро никого не спрашивая – впрочем, правильно сделали.
 
Последнее редактирование:
я вот что думаю почему бы все же не использовать рефлексию для di. Будет медленнее чем на прямую читать файлы классов но все же обычно все запускается в начале. Так ли много бывает prototype объектов в плагинах ?
Объединено

после таких плагинов я еще больше замотивирован
 

Вложения

  • arsg.PNG
    arsg.PNG
    59.8 KB · Просмотры: 7
  • clan casg.PNG
    clan casg.PNG
    161.8 KB · Просмотры: 7
Последнее редактирование:
По моему, вы господин занимаетесь изобретением велосипеда

Разработка и так проще не куда - единственное очень сильно ограничены возможности, по сравнению с forge/fabric, но не суть
Подключить новую либу можно за 5 минут, и не тащить все остальное ненужное

+ Надеюсь ты не будешь грешить с использованием рефлексии а сделаешь через ASM, иначе производительность сильно упадет

Поясняю

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

Выпусти форк spigot-а, который исправляет эту херню на нормальную кодогенерацию сначала, 10+ лет назад forge сделали это - но ни 1 ведроспигот - нет
Единственный вариант, как избежать этой долбаной рефлексии - сделать это вручную
пилить целое ядро ради такого ? Сомнительно. Насколько рефлексия в этом случае влияет то?
 
Последнее редактирование:
я изучил подробнее про ASM и как я понял из утверждений а разницы ты в скорости нет оказывается
 
я изучил подробнее про ASM и как я понял из утверждений а разницы ты в скорости нет оказывается
У меня есть конкретные сравнения до и после - как оно было при использовании рефлексии и после - когда я перешел на кодогенерацию - разница огромна
пилить целое ядро ради такого ? Сомнительно
Я и не говорил это
Замутить патч, к-рый исправляет это для нужного ядра - если повезет оно будет на большом числе ядер для 1-ой версии, но есть так же вероятность (крайне низкая) что патч вообще без редакций сможет работать на почти всех ядрах,
Объединено

Насколько рефлексия в этом случае влияет то?
Это все равно что сравнивать во сколько раз 0 (значение близко к этому) меньше единицы
Кодогенерация - 2 вызова invokeVirual и 1 переход по ссылке и на этом все
Рефлексия - 20+ вызовов 30+ переходов + 1 вызов через native (что в 10-100+ раз медленнее обычного) + вся логика работы мэнэджера безопасности
 
Последнее редактирование:
пока я изучал Spring я увидел такую вещь как AOP аспектное программирование. Это что то типо создание Listener только уже для методов в разных точках его действия. Вся эта каша регистрируется динамически через proxy. И мне кажется жрет эта хрень много ресурсов если таких штук будет много поэтому добавлять это бессмысленно походу.
Объединено

и вообще как вы относитесь к proxy в bukkit api? Мне кажется все эти runtime оболочки принесут много вреда чем пользы
 
Последнее редактирование:
и вообще как вы относитесь к proxy в bukkit api?
Слава богу что я отошел от этого и больше не отношусь - посмотрю что за херня там происходит
Я давно сменил основную платформу
Слава Forge и Миксинам
 
Назад
Сверху Снизу