При разработке клиент-серверного приложения у меня всегда возникает вопрос: как мне его развернуть на сервере, упаковать в jar/war/docker после написания кода, а потом еще нужно перенести на сервер и сделать много других вещей, просто чтобы запихнуть кусок кода на сервер.
Было бы неплохо просто передать код на сервер как лямбду, точно так же, как мы передаем лямбду в функцию, точно так же передаем ее на сервер.
Но у меня была идея, как облегчить этот процесс, и мне это удалось.
Вот Java-код,1 | var query = TcpQuery 2 | .
create(IEnv.class).
host("myserver.com").
port(9988) 3 | .
build(); 4 | 5 | query.apply( 6 | env -> env.processes().
stream().
filter( 7 | p -> p.getName().
contains("java") 8 | ) 9 | .
collect(Collectors.toList()) 10| ).
forEach(System.out::println);
- Строки с 1 по 5 включительно и 10 - работа на клиенте
- И строки с 6 по 9 (тело лямбды env-> .
) работают на сервере.
Действительно, код строк с 6 по 9 (тело самой лямбды) передается на сервер и выполняется на сервере, при этом сервер ничего не знает об этом куске кода, он принимает этот код, выполняет его и отдает. обратно к клиенту - и затем продолжаю писать код без какого-либо развертывания, не выходя из IDE (Idea/Eclipse/etc.).
Статья будет о том, что такое Serializable Lambda в Java, и как передать байт-код таких лямбд на сервер, без перезапуска сервера, т.е.
в теории отказаться от привычных схем развертывания приложений и написать более удобный API (это моя фантазия).
Допустим, у нас есть следующий интерфейс IEnv:
public interface IEnv {
Теги: #программирование #java #языки программирования #компиляторы #пиар
-
Ремонт Экрана Thinkpad – Что Включает В Себя
19 Oct, 24 -
Внешнее Резервное Копирование Данных
19 Oct, 24 -
Менять Или Не Менять, Вот В Чем Вопрос
19 Oct, 24 -
Apple Macintosh Перформа 475
19 Oct, 24 -
Wm > Банк = Технический Овердрафт
19 Oct, 24 -
Open Office – Скрытая Угроза?
19 Oct, 24