9

Java Simple Server для микросервисов?1

Серия Java Simple Server

Главное помни - эта либа не подойдёт для разработки сложной бизнес логики.
©Я

Возможно кому-то, кроме меня, пригодится такая реализация java сервера. Это opensource библиотека, распространяемая по лицензии Apache (возможно стоит сменить лицензию?), которая была создана в тот момент, когда стало понятно, что я раз за разом использую один и тот же код. Базируется эта либа на com.sun.net.httpserver и доступна в Maven Central.

Запустим сервер!

Довольно просто и быстро. Сервер запускается на указанном порту и создает thread executor с пулом потоков равным количеству потоков процессора. При запуске вешает родительский поток в ожидание на две секунды. В stdout плюнет вот такое:

Теперь можно проверить работает ли сервер. Делается предельно просто. Открыть браузер и стукнуть по адресу http://localhost:8080/alife. В ответ придет текст life. (Думаю всем понятно, что GET запрос можно не только браузером сделать).

Добавим endpoint!
Main.java

Hello.java

После запуска, в stdout плюнет

Это был пример создания конечной точки с методом GET. С методом POST создается схожим образом.
Для всего остального есть мастеркард HttpHandler. Почему так? Ну мне другое пока не особо нужно, вот и не добавил. По той же причине ответы принимают String (я в основном с json работаю).

Короче кому надо - юзайте на здоровье. Кто хочет помочь - прошу на GitHub проекта. Есть пожелания - пишите тут или в issue на гите.

P.S.
Попытка попасть на habr

Лига программистов

2.3K постов12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Скажи, пожалуйста, а в чем выгода использовать этот сервер, а не спринг веб?

раскрыть ветку (5)
0
Автор поста оценил этот комментарий
раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Это я читал. Это словесные обороты без явного перечисления плюсов и минусов

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Ну я явно не возьмусь говорить, что моя либа 100% лучше)
Причины не использовать спринг - необходимость втаскивать в проект тяжелый фреймворк, необходимость написания конфигураций, использование большого кол-во аннотаций (я их не люблю. Личный заеб). При этом спринг запускает встроенный в него веб сервер, который мне не особо нужен.

Например при написании тех-же плагинов для серверов майнкрафт у меня возникает необходимость поднять один - два эндпоинта и при этом не делать плагин слишком тяжелым. В таком случае я нахожу спринг излишним. Моя либа работает с пакетом sun httpserver, который по умолчанию существует в установке java, а значит не тянет лишних зависимостей и не делает плагин тяжелее (в java 17, этот пакет вроде как вырезали). Потом уже я начал использовать свою либу и в других проектах, где не требуется слишком сложная логика и большое кол-во эндпоинтов (возможно это просто привычка)

Вот как-то так)
раскрыть ветку (2)
2
Автор поста оценил этот комментарий

необходимость втаскивать в проект тяжелый фреймворк

"Втискивать, "тяжелый"  - просто слова, оценочное суждение. Веб-сервер спринга на пустом проекте стартует за 5-6 секунд. Быстрее - мы же не на бирже? - и не надо.

Спринг "тяжелый" из-за обилия доп. билиотек? Так их все равно придется подключать, если захочется сделать хоть боле-менее что-то работающее.


Не нравятся аннотации? Так они заменяют кучу кода. А ты решил провернуть стрелочку и заменить аннотации кучей однотипного кода.


необходимость написания конфигураций

Каких? Если только надо запустить сервер, то добавил зависмость на веб-стартер и все. Конфиг там есть дефолтный. Ну ок, можешь указать порт сервера.


Моя либа работает с пакетом sun httpserver, который по умолчанию существует в установке java, а значит не тянет лишних зависимостей и не делает плагин тяжелее

Место в памяти сейчас чуть ли не бесплатное, то есть килобайты никто скурпулезно не считает.


В общем, выводы:

1. Ты - молодец, взялся за проект и сделал его. Это дано не каждому

2. Ты не побоялся критики (даже справедливой), так что респект.

3. ИМХО - сфера применения твоего проекта непонятна и туманна.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

1. Спасибо)
2. Глупо её бояться.
3. Тут уж скорее по принципу "авось кому пригодится".

Место в памяти сейчас чуть ли не бесплатное, то есть килобайты никто скурпулезно не считает.

Я тоже так думал, пока не столкнулся с магазином плагинов от SpigotMC (в котором в придачу нельзя обфусцированный jar выложить) и серверами майна на панельных хостингах😵‍💫

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества