
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 21.03.2020, 16:29 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  На новом проекте встретил очень частое использование CompletableFuture. "Частое" это слабо сказано, почти сплошняком. Проект - типичный rest со spring внутри. CompletableFuture используется везде: в контроллерах, сервисах, репозиториях. Почти все методы возвращают или принимают CompletableFuture. Может это и нормально, но как-то непривычно. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 16:32 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Уточнение. Почти все методы возвращают или принимают CompletableFuture/ ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 16:47 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Или это какой-то новый стиль программирования и все что касается работы с ресурсами (базы, файлы и т.п.) нужно делать через CompletableFuture. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 17:17 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Или это какой-то новый стиль программирования и все что касается работы с ресурсами (базы, файлы и т.п.) нужно делать через CompletableFuture. Все правильно, это пародия на функциональное программирование, но увы из-за долгой истории java эти концепты не получается сделать красиво и на мой взгляд код становится просто п..ц ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 18:48 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970, Сабж служит для удобного асинхронного кодирования. Вопрос, нужна ли асинхронность при БАНАЛЬНОМ REST? Мое имхо - не нужна. Платформа java и контейнер аппСервера сделали все чтобы прогер не задумывался о потоках и асинхронности. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 19:26 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  PetroNotC Sharp bob1970, Сабж служит для удобного асинхронного кодирования. ... Видел бы ты это удобно. Мозг в трубочку сворачивается. Представь себе код, где обычные объекты практически не используются, все завернуто в CompletableFuture. Я не против CompletableFuture. Все правильно. И удобно, и производительность. Но где грань применимости? Понятно что при обращении к внешним медленным ресурсам, и тогда получается что правильно запросы к БД нужно делать через CompletableFuture. Как-то бы определить эту границу. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 19:47 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Все правильно. И удобно, и производительность. Но где грань применимости? Понятно что при обращении к внешним медленным ресурсам, и тогда получается что правильно запросы к БД нужно делать через CompletableFuture. Как-то бы определить  эту границу. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 20:27 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Андрей Панфилов, Удобно/неудобно. Размышляю пока. Почему выбрано такое решение. Вот пару ссылок: CompletableFuture : A new era of asynchronous programming Сама статья ниочем, но заголовок внушает. И другая Synchronous or asynchronous, and why wrestle with wrappers? Может и в самом деле ушла эра синхронного программирования. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 20:55 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Может и в самом деле ушла эра синхронного программирования. Вот для просветления: Чем асинхронные сервлеты отличаются от Sping WebFlux ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 20:58 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970, мы-же кода не видели. Вполне возможно что существует кейс когда асинхронные микро-задачки удобны. Как-по мне - не очень. Неудобно отслеживать статус ошибки. Если у тебя вся логика - короткая и отбивается одним методом рест-контроллера - тогда ручная CompletableFuture - не имеет смысла. Сам рест-контроллер и так обеспечивает множество конкурирующих сеансов. Чтобы понять что CompletableFuture являлся ненужным обвесом - надо взять полностью этот проект и переписать на классической rest архитектуре и просто посмотреть как оно вышло. Возможно кода станет меньше. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 21:25 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  mayton мы-же кода не видели. Там страшно. Очень. mayton Вполне возможно что существует кейс когда асинхронные микро-задачки удобны. Именно. Меня бы не смутили мелкие вставки, обращения к микро=задачкам. Но когда все. Сплошь. Маленький пример: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Это базовый репозиторий. Как можно понять все остальные репо-ии наследуются. Сервисы , контроллеры в том же духе. Ну и можете представить implementation. mayton Чтобы понять что CompletableFuture являлся ненужным обвесом - надо взять полностью этот проект и переписать на классической rest архитектуре и просто посмотреть как оно вышло. Возможно кода станет меньше. Это нереально. Очень много кода. В общем-то тему, наверное, нужно переименовать в Реактивная Java и закрыть. А решать каждый для себя. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 21:33 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970, а как при таком контракте репозитория хоть какую-то бизнес-логику организовать (ну банально: записать информацию о транзакции и списать сумму со счета)? или там CRUD и ничего больше? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 21:53 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Видел бы ты это удобно. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 21:56 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Если рассмотреть такой упрощенный круд-реп Код: java 1. 2. 3. 4. И я допустим хочу с ним поработать. Я добавил документ entity. И вызываю сраз-же getItemReference. Код: java 1. 2. И во второй строке я получаю ошибку или исключение. Мой фьючерс еще не завершил работу. Тоесть я видимо как-то не так работаю. Очевидно чтобы гарантировать что причинно-следственная цепочка отработала я должен ставить искусственный барьер на первый и второй фьючерс. И усложнять простой и очевидный код. И теперь вопрос. Ради чего это делалось? И ведь это даже не CQRS. В той методике есть хотя-бы темпоральная хронология в КОМАНДАХ. Команда которая дана раньше - раньше будет исполнена. Но только не здесь. Почему нельзя было просто сделать так? Код: java 1. 2. 3. 4. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 21:58 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Андрей Панфилов, Примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. И повторюсь -там не только CRUD. Там ВСЕ. Вообще ВСЕ. Сервисы с бизнес-логикой, контроллеры и прочий код. Все на future ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:07 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  PetroNotC Sharp, Сравни Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. и Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Это отсюда ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:08 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Как будто-бы калька с другого фреймворка. Может даже не на Java а на другом языке или технологии где такие штуки красиво заворачиваются в аспекты или лябды. Здесь как-бы мясо вот серединке Код: java 1. 2. 3. А сверху и снизу просто одинаковые обёртки которые обеспечивают трансфер in/out параметров. Вот почему мне и напомнило аспекты. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:11 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  mayton, Да, это главное. Но как завернуто Код: java 1. 2. 3. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:11 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:15 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Андрей Панфилов, Примерно так Код: java 1. 2. 3. 4. 5. 6. 7. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:18 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Примерно так Код: java 1. 2. 3. 4. 5. 6. 7. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:24 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  Андрей Панфилов А на ACID забить? Оххх... Там до таких страшных слов, как до Китая. А вообще, я не про конкретный проект. Я про подход. Реактивная Java есть и используется. И похоже использовать ее нужно как-то так. Короче, надо изучать это дело. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.03.2020, 22:32 
 | 
|||
|---|---|---|---|
  
  | 
|||
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  mayton Почему нельзя было просто сделать так? Код: java 1. 2. 3. 4. Это самый главный вопрос. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 22.03.2020, 00:31 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 Или это какой-то новый стиль программирования и все что касается работы с ресурсами (базы, файлы и т.п.) нужно делать через CompletableFuture. ты прям плей фреймворк описал ))) в нем тоже все возвращает футуры. все что связано с взаимодействием со сторонними сервисами или ресурсами (бд, веб, акторы и тп) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 22.03.2020, 00:34 
 | 
|||
|---|---|---|---|
Очень много CompletableFuture  | 
|||
| 
 #18+ 
  
    
  bob1970 PetroNotC Sharp bob1970, Сабж служит для удобного асинхронного кодирования. ... Видел бы ты это удобно. Мозг в трубочку сворачивается. Представь себе код, где обычные объекты практически не используются, все завернуто в CompletableFuture. Я не против CompletableFuture. Все правильно. И удобно, и производительность. Но где грань применимости? Понятно что при обращении к внешним медленным ресурсам, и тогда получается что правильно запросы к БД нужно делать через CompletableFuture. Как-то бы определить эту границу. дело привычки. мозг перестает скручиваться в трубку если ты постоянно тащишь все через функторы монады (мап флатмап или зенкомпос зенаплай вроде). да. это асинхронка, но вот мне лично кажется, что в этих кишках ошибки ловить прям отдельный челлендж. особенно когда проблемы возникают с многопоточкой. а они возникают. кто говорит нет - тот обманывает. другая проблема. у джавы комплитабл фьюча выглядит как гамно. в скале лучше. в ней хоть форкомпрехеншн есть который отображает это не в таком идиотском виде. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=59&tablet=1&tid=2120860]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    62ms | 
get topic data:  | 
    12ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    60ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 229ms | 
| total: | 398ms | 

    | 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...