>>3009028 (OP) Но ведь так и есть. Котлин ничего не дал по сравнению с Джавой. Ему попросту нечего предложить. Был довольно сильный хайп на Котлин каких-то несколько лет назад. Даже в бигтехе что-то пытались переписывать и стартовать на Котлине. Но менеджеры, да и сами тимлиды очень быстро поняли, что никаких особенных преимуществ у Котлина перед Джавой нет. Людей искать сложнее, а фичи выкатываются +- такого же качества да еще и медленнее. Сейчас все эти проекты переписываются на микросервисы на Go + gRPC, между прочим. Но у Go отличное преимущество перед всей этой Спрэнг-братией - он невероятно простой. Затраты на инфраструктуру смешные, скорость у него просто безумная, а набирать и учить новых сотрудников - дело одной, максимум двух недель. Мир JVM проиграл и в скором времени будет убран со сцены
>>3009485 >Ему попросту нечего предложить. Nullable типы, extension functions, string inline, перегрузка операторов - вот минимум того что не хватает мне в джаве
>>3009545 >что не хватает мне в джаве А ты то здесь причем? Тебе лишь бы поиграться. Ты хотя бы отдаешь себе отчет в том сколько компания выкидывает денег каждый день на содержание команды дармоедов вроде тебя? От тебя требуется выкатывать фичи без багов и в срок, а не играться с новым языком на который еще хуй людей найдешь
>>3009485 > Go + gRPC > он невероятно простой > скорость у него просто безумная, а набирать и учить новых сотрудников - дело одной, максимум двух недель
>>3009485 >>Go отличное преимущество перед всей этой Спрэнг-братией - он невероятно простой Это только пока ты пишешь невероятно простые сервисы, где спринг на самом деле и не нужен. Когда появляется бизнес логика, оказывается что использовать джэва спринг удобнее, чем велосипедить свой спринг на го.
>>3009485 >Сейчас все эти проекты переписываются на микросервисы на Go + gRPC, между прочим. Но у Go отличное преимущество перед всей этой Спрэнг-братией - он невероятно простой. Затраты на инфраструктуру смешные, скорость у него просто безумная, а набирать и учить новых сотрудников - дело одной, максимум двух недель. Святая толстота
>>3010234 Многострочные строки, например. Аналог var (в груви это def). Охуеннейшие литералы коллекций. Лямбды (кложуры) были ещё задолго до java 8. Стримообразный api для коллекций тоже. И очень много разного другого.
Причём, очень многие вещи можно компилить с аннотацией для класса @CompileStatic и не будет никакого пенальти из-за динамической типизации. Так что на роль better java груви прекрасно подходит. Валидный джава код является подмножеством валидного груви кода. И это очень практичный язык. И нет ощущения нечитаемого говна как в котлине.
>>3010258 Блядь, какой же даун, его спросили про разницу между 8 и 21, а он свою ретроградскую хуйню про лямбды из времён джавы 5 тащит, просто пиздец.
Как меня заебал гредл. Вот как блять мне сделать два build types, так чтобы в одном случае src/main/dvach/Zalupa.java был в исходниках, а в другом случае src/dev/dvach/Zalupa.java использовался?
Это пиздец какой-то, я через exclude пробовал - не работает. Я через setIncludes пробовал - не работает. Сука, в рот шатал этот гредл.
>>3010296 Гениально пофиксил проблему. Создал symlink на main папку в другом гредл модуле, после чего заменил симлинк на нужный файл на альтернативную реализацию и о чудо оно собирается. iDE правда пердит красным, но мне пох, оно работает, я протестил.
Есть нормальное решение у этой задачи? Я что-то в ахуе как приходится костыли строгать, чтобы простейшие вещи сделать по сборке. Тьфу-тьфу, но в cmake я аналогичную задачу решил за 5 минут и без костылей.
Вот вам нравится ваш проект, он крутой? Почему все проекты говно? Скучные и однобразные: джава, спринг бут(дата, сесурити, актуатор), кафка, постгрес, дженкинс/тим сити. Все. Больше нет нихуя. Получить джейсонины и сохранить их или отправить не сохраняя. Это просто пездец.
>>3010666 Нет, всё говно. Каждый раз как делаю нормально раздается нытье на тему того, что раньшебылолучше, в основном из-за того, что раньше фича делалась за 1 день, а теперь за 3 дня.
Если увеличиваешь качество приходиться чем-то жертвовать. Или деньгами (нанять дополнительного разработчика) или временем (тратишь 3 дня на фичу вместо одного).
>>3010873 Потому что качество ПО незаметно до тех пор пока оно есть. Поэтому когда в очередной раз прод падает, то все ПМ обещает увеличить время на новые фичи, чтобы можно было хотябы тестами её покрыть. Проходит месяц, багов нет, значит можно забыть о своем обещании и опять грузить по полной пока через месяц прод опять не упадет.
>>3010931 Моча съела говно. А вообще мавен без вариантов, в нем хотя бы можно разобраться за конечное время, в отличие от граблей, в которых на каждый новый конфиг смотришь как будто в первый раз видишь грабли
>>3010931 Мавен. Градл - это DSL. Который ещё и постоянно меняется. Т.е. тебе, по сути, надо учить новый язык, причём, довольно паршивого качества, и регулярно и непредсказуемо меняющийся.
Я большой фанат груви. Но, такие вещи как градл - это прекрасный пример того, что на груви делать не надо. DSL - это очень сильная магия, её надо использовать осторожно и в малых дозах.
Подозреваю, что за этим стоят дурачки-рубисты и им сочувствующие, потому, что такая хуйня в руби очень популярна - на каждую хуитку - пишут свой DSL, и вместо одного языка и 10 API тебе надо учить 10 языков. Очень напоминает перл - пока на нём пишешь - всё охуенно. Перестал ненадолго - всё, пиздец, ничего не понимаешь в том, что писал месяц назад.
>>3010801 >И что это за хуйня? Где сравнение с дегенерадлом? Тебе каждую буковку объяснять надо? У тебя интеллект хлебушка?
Задача - сделать два типа билда так, чтобы в одном типе использовался класс А, а во втором класс Б с теми же сигнатурами. По моей ссылке пример: в csproj файле константный путь файла заменяешь на путь с переменной с именем конфигурации. Соответственно когда билдится код с одной конфигурацией, используется один файл, а с другой - другой. Как анон это решал с градлом - можешь прочитать выше сам.
Если тебе всё ещё не всё понятно, то медицина тут бессильна.
>>3010296 >Вот как блять мне сделать два build types, так чтобы в одном случае src/main/dvach/Zalupa.java был в исходниках, а в другом случае src/dev/dvach/Zalupa.java использовался? 1. Вынести из дефолтной директории: src/dev/dvach/OpHui.java src/release/dvach/OpHui.java 2. В зависимости от установленного флага подключать ту или иную директорию: sourceSets{ main { java { if (project.hasProperty('releaseBuild')) { srcDirs("src/release") } else { srcDirs("src/dev") } } } }
>>3011086 Проблема в том, что в этом случае он мне пишет redeclaration definition на этот класс. Хотя вообще вот прям как ты указал я не делал, я пытался указывать srcDirs в sourcesSets.dev.java { }. Приду домой попробую как ты указал сделать. >>3011092 От того, что самолёт без предвзлетной проверки (тестирование в ПО) не упал ещё не значит, что проверка не нужна вообще.
>>3011102 Лолчто? Чатгпт ещё пару дней назад спокойно заходил по ссылкам, что я ему давал
> I'm unable to access external websites directly, including Reddit. This limitation is in place to ensure user privacy and secure interaction. However, I can provide general assistance, answer questions, and offer advice based on the information available to me. If you need specific details from the Reddit thread, I would recommend accessing it directly and then sharing any specific questions or topics you'd like me to assist with.
>>3011447 Во первых это три строчки вместе с обозначением места куда писать, во вторых у тебя две строчки, так как надо объявить переменную с именем конфигурации, во вторых никто не мешает вместо if'а также написать с переменной srcDirs("src/${project.configurationName}").
>>3011620 Мне 35, я мечтаю о загранице, штатах, гуглах, кококонадах, но я не особо скилловый и английский у меня так себе, вероятно я жидко обосрусь, так и останусь тут. Выходит что план у меня неопределнный, мне надо как-то и рыбку съесть и в случае чего на хуй не присесть. Что посоветуешь?
>>3011700 Посоветую сначала проработать жизненный план. Например у меня жизненный план заработать 157 000 евро, чтобы жить РНН господином в Алматы. Как поймёшь чего реально хочешь, то ответ на твой вопрос станет понятней.
>>3011857 Иметь план лучше чем не иметь. И это никак не зависит от удачи. >>3011861 Не всегда. Твои планы могут быть значительней чем жить РНН в рлнушке в Алматы.
>>3011870 Нет, но денег жить там хватит жить в любом казахстанском городе, а также я пиздец как далеко от 157 000 евро, что решил не думать об этом пока не накоплю хотя бы половины суммы.
>>3010969 в 3.0 задепрекейтили многие классы , в 3.2 их выпилили к хуям. технически в спринг 6.0 и спринг 6.1 которые ими используются Обычно спринги апают не минорными версиями, а сразу на последнюю. И после такого перехода с 2.6 на 3.2 оказывается что ресты не работают, базы не грузятся, код не компилируется и хуй у лида не стоит. В общем надо внимательно читать гайды по миграции и ченжлоги.
>>3011469 >никто не мешает вместо if'а также написать с переменной srcDirs("src/${project.configurationName}") Тебе надо определить дефолт для project.configurationName или фейлить билд если не задано. А это дополнительная конфигурация.
>>3012549 А много таких контор? Джава это же про банки/бигтех/прочие заведения, любящие засунуть сапог поглубже. Даже в аутсорсе заказчики бывает пробивают сотрудников на всякое.
аноны, живу и учусь в ростове на дону. сейчас обучаюсь на 3 курсе, т.е. через 1.5 года уже выпуск будет. подумал, что хватит мне вола ебать, надо думать о будущем. из вводных - изучал только питон и плюсы по учебе, знаю(л) норм, особенно плюсы. запреметил вот язык java, но я хз как вкатываться, время еще есть, а вакансий хуй да нихуя, только начиная с мидлов что-то встречается. я правильно понимаю, что единственный шанс на вкат мне только какая-нибудь стажировка в тинькофф, и то, если пройду?
>>3012603 >Кем надо быть? Надо быть челом который с первого дня трудоустройства не пытается обойти коллег за прибавку в 10% дроча таски в выходные, вынуждая и их наращивать темп. Надо быть челом который просто выполняет задачи в течении дня, середнячком, можно даже слега проебываться. Короче не выебывайся, лучше преуменьшай свой скилл и преувеличивай сложность задач, все от этого в выиграше, даже кабан, потому что если ты предешь и начнешь всех подгонять, то другие просто съебут в другое место, на тебя повесят изх задачи, а кабан роняя кал будет искать новых гребцов.
Аноны, а есть на ютубе что-нибудь посмотреть адекватное, чтобы например не ебаться выбирая javafx или свинг, или например заставить мавен нормально собирать jar статиком.
Книги я читаю, там например нет инфы, что в javafx таблички ведут себя, как говно, хоть и собрать их вроде как проще методами класса. Про мавен я вообще толкового ничего не нашёл на русском. На ютубе я искал - всё это выглядит, как лужа коричнево-красного говна, хотелось бы найти сразу, а не нырять с головой.
>>3012648 Пруф? хорошо я ленился учить котлин, как чувствовал что любой язык который паразитирует на жвм пойдет нахуй. Если честно мне кажется и голанг нахуй пойдет года через 2, может только в гугле и будет использоваться
>>3012805 И где здесь выкидывание на помойку? Они обновили курс на современный фреймворк для котлина. >>3012786 Нахуй пошла джава за последние пару лет, а голанг уже набрал критическую массу вне гугла.
>>3012637 JavaFX - не нужен. Его пиарят с самого его мертво-рождения. Но, на нём так никто ничего путного и не сделал. Потому, что это говно. И, да - учи английский.
>>3012905 >JavaFX - не нужен. Яскозал! >Его пиарят с самого его мертво-рождения. Но, на нём так никто ничего путного и не сделал. Потому, что это говно. Яскозал! >И, да - учи английский. Яскозал!
>>3012997 > Ты спаммер, что ли, сука? Не я снабженцем работаю, переодически хуиту всякую искать надо. А пока этот яндекс загрузишь, пока он тебе 10 раз предложит установить свой говнобраузер. А потом на "шедевры" сайтостроения разных контор смотреть. Да ну на, я утилитку написал, она емайлы собрала, я ручками письма расскидал по шаблону. Потом васе-инжинегру на согласование посла кп-шки, а сам сижу чот по теме читаю или код пишу. >>3012993 > Нахуй ты что-то заучиваешь там? Оно не всё просто так, по крайней мере для нулевого челика, я сегодня пока придумал, как в табличку засунуть по колонкам: "линк" "ссылка" Чуть не охуел, смотрите какой говнокодец написал: String[][] mail = new String[arl.size()][arl.size()]; for(int i=0; i< mail.length;i++) {
String ur = arl.get(i);
for(int j=0; j< 2;) { if (j ==0) mail [j] = ((SearchEmail.SearchtoMail(ur, rmail)).toString()); //метод из другого класса скрапящий емайлы j++; if (j ==1) mail[j] = ur; //а в эту ячейку засовываю линки. //System.out.println(Arrays.deepToString(mail)); } } this.mail = mail; return this.mail; }
>>3013013 >смотрите какой говнокодец написал Если тебе не надо редактировать таблицу, а надо просто смотреть, или переходить по ссылкам, то не надо делать десктопный GUI (не важно на чём). Для "нулевого челика" это может быть сложно, и может отбить охоту. Просто генерируй html файлы, например, через шаблоны FreeMarker. Или просто голым кодом.
Алсо, такие вещи (особенно снабженцу) лучше делать на питоне. Включая GUI - на wxPython или на PyQt. Если хочется именно джавы - то Groovy.
А как блять понять эту вашу жабу и выучить? Собеседования которые щас проходят - ахуенно сложные, там задают вопросы которые нигде не заучишь. А Джуны никому не интересны
>>3013074 Да понятное дело, что с консоли можно даже на винде поток в файл закидывать. Это скучно. А так я написал табличку на свинге, оно все выводься, но с ide, на неделе допишу кнопку старта, переключатели поисковиков, а там дальше sql. Идейка у меня есть перекатиться в IT, а на qt если это не с++ бабок не заработаешь.
>>3013092 А зачем? Это c++ библиотека, и от скрещивания с джавой ничего путного не родится, будет жуткий мутант. Так пытались делать лет 25 назад. Была ещё QtJava, но, это (насколько я помню) была именно джава-библиотека, сделанная по образцу Qt, той же компанией. И это была лютая хуйня.
Пример более-менее удачного скрещивания нативных виджетов и джавы - это SWT (Standard Widget Toolkit, используется в Eclipse). Но, за пределами Eclipse эта библиотека большого распространения не получила. Хотя, местами, это довольно удобная штука. Но, там есть заморочки, связанные с тем, что api нативных виджетов ОС отображается в джаву 1:1, и даже, если я правильно помню, надо немножечко управлять памятью руками).
>>3013101 Можешь попробовать сделать всё это через веб. Без заморочек, базово - локальный сервер (Tomcat), jsp, html-формы. Потому, что спринг ты с нуля не потянешь, да он и нахуй не нужен в такой задаче. Этим можно будет пользоваться удалённо. В процессе узнаешь массу полезного. Потом можно добавить интерфейс на Vue. И т.д. и т.п.
>>3012619 >>на тебя повесят изх задачи, а кабан роняя кал будет искать новых гребцов. >>роняя кал будет искать кек, кабан будет неделями неспешно выбирать самого лучшего и дешевого грузчика, пока ты будешь помирать от нагрузки.
>>3013096 Всё так, потому что собеседования, это по большей части не про понимание жабы, а про то как угадать что хочет услышать интервьюер. Т.е. проходить собеседования - это отдельный скил от джавы.
>>3012869 Мудило пиздоглазое, если бы умело читать, то заметило бы ещё в самом начале что >надо определить дефолт >А это дополнительная конфигурация. И твой высер вообще не в тему.
>>3014520 Они набираются ума. Перестают быть двачерами. И говно-видео-блогерами. Перестают писать зумерскую хуиту в интернетах. И просто занимаются своим делом.
>>3011591 Если только на жабе со спрингами, то скучный проект в банке. Если в стартапе будет что-то еще помимо классического стека и оно будет интересным, то лучше стартап
>>3015021 Это когда мы не копим какашечку, чтобы потом вывалить в самый неподходящий момент, а высираем сразу, как приспичило. Доктора рекомендуют, кстати.
>>3015021 Потому что нет смысла ломать всё из-за поломки какой-то части. Напоминание о том, что что-то пошло не так и отказ системы разные вещи, и совмещение их не нужно. Если бы апологеты фейл-фаста появились пораньше и имели побольше власти, то при выбросе рантайм эксепшена наверное компьютер должен был бы отключаться, а за ним вся электросеть по всей планете.
Аноны, а правильно ли я понял, что коллекции которые значения которых присвоено в Runnable r = () -> { ... a.add(x) ... } Значения существуют только в этих фигурных скобках и за скобку их вынести не удастся? А как собрать значения и использовать их вне потоков исполнения. Про потокобезопасные коллекции я в курсе.
>>3015635 >Значения существуют только в этих фигурных скобках и за скобку их вынести не удастся? >А как собрать значения и использовать их вне потоков исполнения. Я уже выше написал про ComplegableFuture. И только потом прочитал этот твой коммент.
Если коротко - ты задался очень серьёзными вопросами, не имея даже базовой подготовки (см. вопрос про "фигурные скобки"). Короче - либо найди хороший гайд по CompletableFuture. Либо - готовь вазелин и кури мануалы по конкурентности. Могу посоветовать начать с Java Concurrency In Practice. Но, это будет нелегко.
Также - последнее издание Effective Java, это и вообще полезно, и про конкуррентность там тоже хорошо написано. Это вообще библия джависта.
>>3015600 Вкатун спокуха, ты просто тупой не разобрался. Смысл фейл фаст, это про то, что проблему надо стараться обнаружить как можно раньше. Например проверять что обязательное поле заполнено при получении запроса, а не при попытке записи в базу.
>>3015635 Нет, если коллекция существует вне того потока и ты в нем добавляешь к ней элемент - он сохраняется в коллекции. Только что избежать канкаррент модификейшн без синхроколлекций тебе придется добавление в синхронайзд обернуть
>>3010666 Да,моя первая работа,связь,шифрование,вот это все. Дохуя данных,кафка,монга,17 джава,я в восторге,думал буду круды писать как и пугали в джава треде
>>3015672 Да действительно в методе main чот не прокатило, вынес в тестовый статик метод, действительно коллекция сохранилась. А большего мне и не надо. >>3015667 Спасибо найду почитаю.
>>3015645 >>3015669 Какой бы там не был смысл в идеях карла фейлфаркса, в реальности эту мантру постигает судьба всех разносимых школотой мантр, и она превращается в завершение программы по любому пуку. И вот это плохо.
>>3015703 Ну, пока что в роли школоты выступаешь ты. И да, когда всё вот так вот падает - это неудобно. Но, смысл ведь не в том, чтобы тебе было удобно, а в том, чтобы программа не падала в продакшне. Понимаешь?
>>3015707 >>3015703 Как использовавший и тот и другой подход скажу, что во время разработки/тестирования лучше fail fast, но как уехало на прод выключать эти проверки.
Мне вообще нравится подход с уровнями отказа, когда отказывает ближайшая к ошибке часть системы. Легче всего реализуется, и ближе всего к желанию "не работать должно только то, чему ошибка не позволила работать". Лучше всего это демонстрируется при обработке реквестов, при ошибке сервера просто код 500 возвращается и в лог серет, но сервер не падает.
>>3015786 Блядь, ну те не путай тёплое с мягким же. С хуя ли у тебя сервер должен падать в этом случае? Сервер - это совершенно другая подсистема, не имеющая отношения к твоей программе, понимаешь? Поэтому 500 = упала твоя программа. А сервер, в данном случае - исполнитель.
Джаваны чё за скалу скажете? Я недавно тут вкатился за плечами имею около 7 лет опыта проганья в другой области нашел работу. Смешанные ощущения. Тулинг дерьмо, непонятное будущее, комьюнити странное (слишком академически ориентированное, я не представляю что я могу дать опенсорс сообществу лол когда phd ебашут свои ФП либы), но на ФП ебашить довольно весело задорно. Интересует мнение прозженных джаваёбов.
Интересует вопрос о нативных методах. Пока ни разу такое пробовать не довелось, но вот собираюсь.
У меня есть некоторая библиотека для c++. Три вопроса: Если некоторые методы в классах, которые описаны в библиотеке, используют new, то где будет выделяться память для объекта в такой ситуации? Будет ли это(если это скомпилировано уже в бинарник) работать так, что будет выделена память вне памяти jvm? 2) Можно ли вообще создавать объекты посредством new из c++ или malloc из c? 3) при рекурсии стек вызовов ограничен стеком из jvm или каким-то внешним стеком?
>>3016958 Нативные методы это просто говённый медленный интероп. Как вызывается нативный, напримар, педальный код, всё начинает происходить на правах педалей, jvm тут умывает руки.
>>3016958 1. Если это сишный malloc то будет создаваться вне хипа джавы, там же где JVM под свои нужды создаёт объекты. 2. Какие объекты Java или C++? Создать можно и те и те, но это делается по разному. Java объекты создаются через API JNI. C++ обычным способом. 3. Стек JVM.
Можно как-нибудь выключить нахуй обновления джавы? Или хотя бы сделать так, чтобы оно не сносило автоматически установленную рабочую версию? А то я просто охуеваю каждый раз. Это ж надо было так придумать - сначала удалять рабочий софт, а потом просить обновить его(поставив перед фактом, что у тебя нет другого выбора, так как предыдущая версия уже удалена). Я хочу посмотреть в глаза человека, придумавшего эту хуйню. А потом вогнать ему девять грамм свинца промеж этих глаз.
>>3017060 Возможно он про десктопный апдейтер джава 8. Но насколько я помню он просто заёбывает напоминаниями что вышла охуенно важная новая сборка легаси говна, но само ничего не ставит.
Видели ли вы когда-нибудь более опущенную чмошную вакансию? Кабаны чет совсем охуели
Java-разработчик #удаленка #офис #100k Требуемый опыт работы: 3–6 лет Компания: 7RedLines ЗП: от 120 000 до 150 000 ₽ Требования: Опыт коммерческой разработки от 5 лет; Уверенное знание Java 8+, понимание принципов работы JVM; Уверенное знание Java EE, EJB, JMS и опыт работы с Oracle WebLogic Server от 3х лет; Уверенное знание спецификации JSF; Знание спецификации JPA и опыт работы с Hibernate; Знание SQL и опыт работы с базами данных Oracle DB и PostgreSQL; Знание Spring Framework (XML-Based конфигурации) и опыт работы от 3х лет; Опыт работы с очередями Kafka, Rabbit MQ, Active MQ и т.д; Опыт работы с многопоточностью и асинхронностью; Знание XML, XSLT и опыт работы с JAXB; Опыт работы с протоколами REST, SOAP; Знание HTML, CSS; Опыт работы с Git и процессами Gitfow; Знание систем автоматизации сборки (Maven, Ant, Gradle); Знание процессов CI/CD и опыт работы с GitLab; Знание принципов SOLID, DRY, ACID. Условия: Трудоустройство в штат на основании ТК; Удаленная работа по времени Мск, любой город; Уровень дохода в соответствии с навыками, по результатам встреч. Почему к нам стоит присоединиться? Потому что у нас: Можно развиваться: Интересные задачи, постоянный профессиональный рост; Всё гибко: гибридный график – удаленка+офис или полная удаленка, гибкое начало дня с 7.00 до 11.00 – комфортно и жаворонкам, и совам, нет бюрократии ради бюрократии; Зарплаты в рынке: ежегодная переоценка, белая зарплата, официальное трудоустройство; Надежно и стабильно: аккредитация в реестре ИТ организаций (льготная ипотека, отсрочка от армии); Интересно работать: задачи, которые не дают выгорать. Возможность реализовать свой потенциал в различных ролях; Классный коллектив: средний возраст 30-32, крутые наставники, отзывчивые коллеги.
>>3017812 >Oracle WebLogic Server >Знание XML, XSLT и опыт работы с JAXB; >Опыт работы с протоколами REST, SOAP; >Знание Spring Framework (XML-Based конфигурации) Даже Generic Legacy Fullstack Java developer, это всё просто неимоверное старьё
>Интересно работать: задачи, которые не дают выгорать. Лол
>>3017923 >Знание XML, XSLT и опыт работы с JAXB; >Опыт работы с протоколами REST, SOAP; Без этого никак, увы. Неиронично сижу на буте 3.2 с 21 джавой и до сих пор стучусь по соапу ибо гос конторы и всякие страховые не хотят на рест садиться.
>>3017995 Да ниче не надо учить. Один раз просто поебаться с плагином, что классы сгенерит из xsd, поменять там на jakarta устаревшие библиотеки. Потом написать конфиги и поебаться с тем что у тебя оказывается 10 инстансов разных фабрик стартует. Остальное зависит от апишек. Есть челы которые требуют всё в CDATA вместе с кастомными xml элементами, приходится лезть в SOAPBodyElement и прочее, а потом анмаршалить как ебанутый по типу > webServiceTemplate.getUnmarshaller().unmarshal(new StreamSource(new StringReader((((SaajSoapMessage) response).getSaajMessage().getSOAPBody().getFirstChild().getFirstChild().getFirstChild().getNodeValue()))))
>>3018002 С этого тоже проиграл. Наверняка там заставляют писать самому соап сервисы, а не просто с горем поглощать всякое легаси гос говно. >>3018005 Тип того, умные дядьки уже всё сделали.
>>3009485 По котлину всё так. Неудачный язык, который жив только потому что его держит гугл в андроиде и форсят жидбрейнсы. В бэкэнде весьма быстро поняли, что он не нужен. Про го чушь написана. Го медленней, чем джава. Его киллер-фича на момент выхода - горутины, уже есть в джаве и сделаны они гораздо лучше. Про то что сам язык говнина и его экосистему вообще молчу. Статистика в принципе подтверждает это - рост го остановился и он стагнирует. Еще подрыгается какое-то время и отомрет.
Мы - настоящие Java-волшебники, ведущие вас в удивительный мир абстракций и оптимизации! 🚀 Здесь каждая строка кода - это сияющая звезда, каждая клавиша клавиатуры - волшебная палочка, а наш код - это билет в галактику Java, где каждый день - новое приключение! 💫🌌😜
Что тут у нас:
🔮 LOOM: Потоки без швов, словно магия! 🧩 Pattern Matching: Проверки данных на стероидах. 📚 Sequenced Collections: Теперь .getLast() доступен всем!
В превью: 🌟 Structured Concurrency - контроль над асинхронностью. 🔑 Scoped Value - гибкий ThreadLocal. ✨ String Interpolation - вставка переменных просто как ABC. 🚀 Unnamed Classes и Instance Main Methods - для хелло-ворлда в одну строчку!
Java 21 - это как праздник для программистов, только без торта (но с мороженным)! 🍰🍦💻🎉
>>3018037 >Его киллер-фича на момент выхода - горутины, уже есть в джаве и сделаны они гораздо лучше. Пиздежь. У горутин вытесняющая многозадачность, а у виртуальных потоков кооперативная. synchronized блоки вызывают pin треда.
>>3018030 >Один раз просто поебаться с плагином, что классы сгенерит из xsd, поменять там на jakarta устаревшие библиотеки. Потом написать конфиги и поебаться с тем что у тебя оказывается 10 инстансов разных фабрик стартует. Остальное зависит от апишек. Вообще уже на этапе: >классы сгенерит из xsd, поменять там Стало ясно, что это неподдерживаемое говно.
>>3018599 Дело не в приоритетах, а в том, что если у тебя есть виртуальный тред, который не блокируется на io или java.util.concurrent. То у тебя этот виртуальный тред никогда не будет отцеплен от хост треда и будет занимать его вечно. А в Го такой проблемы нет, планировщик умеет останавливать такие горутины.
inb4: я понимаю что 99% крудошлепов никогда не столкнуться с этой проблемой. Но утверждение, что виртуальные потоки лучше горутин не правда. Виртуальные потоки лучше корутин.
>>3018667 Стоп, падажжи. Есть допустим код: while(calculateDolgayaZalupa()) { } ну и там че-то вечно считается. С какой стати его вообще снимать? Типа говно просто по приколу может стопать вычисления в треде и кидать туда че-то другое? Вообще для числодробилок используется свой тредпул, а не виртуальные треды. Твоя претензия выглядит очень странной. Ты пытаешься обвинить инструмент в том, что он не работает там, где и не должен работать в принципе бай дизайн.
>>3018741 >Покажи пример кода или статью, где ты это вычитал Что это, еблан?
>>3018854 >С какой стати его вообще снимать? Типа говно просто по приколу может стопать вычисления в треде и кидать туда че-то другое? Именно так и ведёт себя система с вытесняющей многозадачностью. Даже если тред не отдает время сама, система будет принудительно ее останавливать и давать время другим тредам.
>Вообще для числодробилок используется свой тредпул, а не виртуальные треды. Твоя претензия выглядит очень странной. Ты пытаешься обвинить инструмент в том, что он не работает там, где и не должен работать в принципе бай дизайн. Это просто ты читаешь жопой: >inb4: я понимаю что 99% крудошлепов никогда не столкнуться с этой проблемой. Но утверждение, что виртуальные потоки лучше горутин не правда.
>>3018599 >у виртуальных тредов кооп многозадачность Хорош ФЕЙКИ тут постить, в Loom виртуальные треды вполне себе реализуют вытесняющую многозадачность. При ИО блоке они прекрасно отдают управление. Единственное их отличие от стандартной модели вытесняющей многозадачности - там нет таймслайсов (как это принято) по которым шедулер раздает управление. Они назвали это "work stealing scheduling": Worker threads that run out of things to do can steal tasks from other threads that are still busy., вот чё пишут.
>>3019119 >Хорош ФЕЙКИ тут постить, в Loom виртуальные треды вполне себе реализуют вытесняющую многозадачность. При ИО блоке они прекрасно отдают управление.
>Cooperative multitasking, also known as non-preemptive multitasking, is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process. Instead, in order to run multiple applications concurrently, processes voluntarily yield control periodically or when idle or logically blocked. Подсказка для тупых: logically blocked включает в себя ожидание io. Виртуальные треды переключаются в тех же случаях когда происходит переключение в кооперативной многозадачности. JVM не переключает running, non blocked треды.
>>3019142 >A virtual thread still runs code on an OS thread. However, when code running in a virtual thread calls a blocking I/O operation, the Java runtime suspends the virtual thread until it can be resumed. The OS thread associated with the suspended virtual thread is now free to perform operations for other virtual threads. https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html#:~:text=A%20virtual%20thread%20still%20runs,operations%20for%20other%20virtual%20threads.
>Виртуальные треды переключаются в тех же случаях когда происходит переключение в кооперативной многозадачности
в кооперативной многозадачности ничто никуда не перключается, тред явно должен отдать управление шедулеру.
чё сказать хотел?
То что ты там себе что-то придумал про виртуальные треды можешь верить в это дальше. Я написал по факту по доке как оно работает. Вот тебе от техлида Лума - Рона Пресли - цитата прямая, если сам можешь только на двощах пиздеть вместо включения головы: https://cr.openjdk.org/~rpressler/loom/loom/sol1_part1.html
>Virtual threads are preemptive, not cooperative — they do not have an explicit await operation at scheduling (task-switching) points.
Но шедулер их не переключает по таймингу, это work stealing треды.
>>3020032 Вон из профессии, идиотина. Тебе прямым текстом сказали как это работает. А ты кукарекаешь тут что-то про неявное, ставшее явным.
Я кстати твоим батей являюсь хоть и мамке твоей присунул лишь неявно, это подразумевается, мне твою мать в общем то ебать и не надо, чтобы быть твоим батей.
Понимаешь какую ты тут чепуху и метафизику несешь?
>>3018854 > С какой стати его вообще снимать? Потому что горутин тысячи, а потоков дай бог десять. > Типа го просто по приколу может стопать вычисления в треде и кидать туда че-то другое? Может, если горутина явно не берёт поток в монопольное использование через runtime#LockOSThread. Тогда шедулер ничего не будет делать с горутиной пока она не отпустит тред.
>>3019539 А че дальше то не процитировал? Там как раз самая мякотка: >they are preempted when they block on I/O or synchronization. Platform threads are sometimes forcefully preempted by the kernel if they occupy the CPU for a duration that exceeds some allotted time-slice. Т.е. он сам признает ригидность своей многозадачности.
По факту они просто вставили yield в IO и JUC операции и пиздят всем что у них preemptive потому что не надо вызывать yield явно. А по факту, это все кроме нормальных стектрейсов реализовали жыдбрейновцы на уровне компилятора.
>>3021369 Не понял тряски. То что жвм шедулер не блокирует треды это концептуально ничего не меняет. Они у тебя все равно работать будут так как скажет ос (тонкостей имплементации не знаю, но полагаю что там тоже выделяется пул реальных тредов и на них гоняют зеленые), а в тех ос под которые мы пишем кооп многозадачности нет
>>3021419 Я вообще не пишу на джаве лол. Мимо проходил и тред почитал Да и вообще на джаве ничего нормального кроме курдов не напишешь, так что неплохо быть и джавакрудошлепом. Соап? Хмл? Лол или расскажи мне про легаси фабрики абстрактных методов Вместо того чтобы выебываться и высокомерить мог бы научить ребят читающих тред как оно на самом деле например, желательно не доебываясь до слов и со ссылками на доку, а то фантазеров в треде и так хватает.
>>3021395 >То что жвм шедулер не блокирует треды это концептуально ничего не меняет. Меняет. ОС будет переключать ядра на другие треды других процессов, но каждый тред, занятый джавой под виртуальный тред, будет продолжать выполнять этот виртуальный тред, пока не заблокируется на IO. И если у джавы в тредпуле, например, 10 тредов, а виртуальных тредов 100, и при этом каждый виртуальный тред выполняют большую задачу без блокировок, то сначала выполнятся полностью эти 10 задач, а остальные 90 будут сосать бибу, потом выполнятся ещё 10 и так далее.
И если первые 10 задач вдруг окажутся с бесконечными циклами, то всё, встанет вся программа по заветам кооперативной многозадачности. ОС сама, конечно, не повиснет, потому что у неё многозадачность вытесняющая. Как писал >>3018667, большинство крудошлёпов с подобными проблемами не столкнётся.
>>3017812 >>Опыт работы с Git и процессами Gitfow; Смутило только это. Если это легасная параша для потухшего скуфа, то зачем ему гитфлоу?
>>удаленка+офис или полная удаленка >>гибкое начало дня с 7.00 до 11.00 Типа если я на удаленке начну работать с 6 я регламент нарушу? Зачем это "от" для удаленки?
>>Классный коллектив: средний возраст 30-32 Ну как я и сказал скуфокоманда. Технологии и зепки так и остались в 2007.
>>3018037 >Го медленней, чем джава А зажигалка горячее газовой горелки. Принёс бы хоть бенчмарки где спринг чуть быстрее джанги
>>3018037 >Его киллер-фича на момент выхода Его киллер-фича это простой синтаксис, на котором могут писать все при этом получая бинарник почти как в сишке с нюансом в виде ГЦ и планировщика горутин это основное почему на нем так много пишут
java и android 2024
Аноним27/01/24 Суб 13:19:08№3021799268
Добрый день. Знаю, что раньше можно было написать на java'е программу, скляпать xml и собрать руками apk.
Теперь вопрос: сейчас можно так сделать? Есть ли компилятор из java в байт-код для delvik в 2024? Раньше использовал какую-то фигню, но я имею такой бардак в файлах, что я потерял соответствующий .deb файл.
Если этот вопрос не сюда нудно отправлять, прошу прощения.
>>3021799 Там ниже Андроид тред. Ответ на твой вопросы: 1. Да, всё также можно создать приложение. Гуглы пишут говнокод, но что такое обратная совместимость знают 2. Да, вроде андроид студия умеет показывать байт-код, но я таким никогда не пользовался, лишь на ютубе видел
>>3021556 А куда еще идти скуфам? На сишарпе агрессивные зуммеры всех скуфов, кто не учит новые версии, выгоняют на легаси windows-only framework и десктоп, и не подпускают дедов к своим микросервисам. Приходится даже на конференциях видео выпускать для пожилых сеньоров... https://www.youtube.com/watch?v=j1vsXfhYrn8
>>3021897 Ну ээээ типо ээээ. Вот если бы сделали у record возможность записывать мутабельные поля или же например добавить mut перед record тогда норм бы было. А пока что приходится раскручивать рекорд до лобкового кода если надо добавить стейт.
>>3021431 >Вместо того чтобы выебываться и высокомерить мог бы научить ребят читающих тред как оно на самом деле например, желательно не доебываясь до слов и со ссылками на доку, а то фантазеров в треде и так хватает. Все ссылки уже были в этом треде >>3019539 тем не менее это не мешает по пятом кругу просить ссылки на доку.
>>3022335 Нет. Он как раз более гибкий, в конце жепа такой пример как у тебя приводится в качестве альтернативы. Именованные аргументы тут особо не решают. Мне сам синтаксис не нравится, схуяли это должно быть новой конструкцией языка?
>>3021559 >Если это легасная параша для потухшего скуфа, то зачем ему гитфлоу? Так гитфлоу это легаси, молодые шутливые используют tbd, а потом наплодив флагов съебывают с 6 месяцами работы
>>3022355 >Именованные аргументы тут особо не решают. Мне сам синтаксис не нравится, схуяли это должно быть новой конструкцией языка? Именно, что именованные аргументы решают! В Котлине есть именованные аргументы искаропки. Ты можешь сам реализовать метод copy() в котором разрешить менять только часть, аргументов.
А в Джаве ничего такого нет, поэтому самый идиоматичный метод это лобковый builder()/toBuilder().
>>3022813 Отфильтровать использования класса наверное можно будет. Только надо будет им иссую завести на это, а то они без пинка нихуя делать не будут.
>>3022798 >Вот пример из статьи. Весьма хуевый пример. Этот with не пришей кобыле хвост, совершенно новая синтаксичаская конструкция, которая выглядит как будто спиздили котлиновский apply. Я на 100% уверен, что это говно не пройдёт ревью.
А в котлине именованные параметры и значения по умолчанию есть и так. И ты сам можешь сделать свой copy().
Как же сука в джаве не хватает конструкции import static extension classname.*; где класснейм это класс с экстеншенами в формате лобкового @ExtensionMethod и автокомплита от идеи для этого. Пиздец как охуенно было-бы.
>>3023254 >Ты может на вопрос ответишь? Тебе уже ответили: > val nextLoc = oldLoc.copy(x = point.x 2) смотрится не так элегантно как > Point nextLoc = oldLoc with { x = 2; }; Но это единичный, специально подобранный случай. А если там будет строка, то сразу получается залупа: > User newUser = oldUser with { name = name.toLowerCase()};
При этом семантика with это вообще хтонический пиздец.
>>3023641 Я другой анон. Просто потешно вы пытаетесь коупить "НИНУЖНА", а каждый раз, когда в жабу заносят подобие kotlin фичи, у жаберов сразу перемога, сразу "ВОТ ЖАБА ДОГНАЛА КОТЛИН, ТЕПЕРЬ ЖАБА ТОЖЕ ТАК МОЖЕТ, КОТЛИН НИНУЖЕН". Даю бесплатный совет: не пытайтесь дефать возможности и синтаксис жабы она уже никогда не станет современным ЯП. Вам надо перемогать тем, что на жабе всё ещё дохуя работы и проектов, а вкатуны в Kotlin нинужны. Поменяйте стратегию.
>>3023554 Вообще-то вот так будет > User newUser = oldUser with { name = name.toLowerCase()}; > User newUser = oldUser.copy(name = oldUser.name.toLowerCase());
>>3023686 >>3023688 Вообще-то так будет > User newUser = oldUser with { name = name.toLowerCase()}; > val newUser = oldUser.copy(name = oldUser.name.lowercase())
>>3023716 Хахаха, вот об этом я и говорил. В какой-то версии появился var в Java, теперь Kotlin НИНУЖЕН. Но если проект старый, то Kotlin чут-чут нужен всё равно, а так НИНУЖЕН. Он НИНУЖИН, но var добавили. Котлин не убивает жабу, но фичи пиздить будут и дальше для новых версий ой, легаси проекты всё ещё в говне
Ты серьезно перемогаешь тем, что в новые версии жабы что-то из котлина тащат, какой потешный. Ещё расскажи, что в жабе есть свои лямбды и ниибически крутой костыль .stream(), который доступен только на новых версиях, а не по дефолту, как в Kotlin.
>>3024020 >А че в котлине нет стримов? Есть называется Sequence.
>>3024147 >Они там не нужны, ты сразу можешь юзать екстеншоны типа .map {} и прочее. Екстеншены коллекций после каждой операции создают новую коллекцию, а Sequence нет. Если надо выполнить несколько последовательных операций map().filter().xxx() то Sequence лучше.
>>3024629 >Они че ебанутые? Нахуй так делать? Ты не понял. Есть методы map/filter у коллекций, они сразу возвращают коллекцию. Они удобны когда надо сделать одну операцию с коллекцией, не нужно городить огород с stream().filter().collect().
А если тебе надо несколько операций то тогда Sequence.
>>3010666 >Почему все проекты говно? Скучные и однобразные: джава, спринг бут(дата, сесурити, актуатор), кафка, постгрес, дженкинс/тим сити. Все. Больше нет нихуя. Получить джейсонины и сохранить их или отправить не сохраняя. Это просто пездец. Потому что вместо шарящих программистов продолжают нанимать каких-то даунов, по-прежнему использующих спрингопарашу и кафку в 2024. Ояебу, слава небесам, что хотя бы постгрес, а не фаерберд.
>>3010666 >Почему все проекты говно? Скучные и однобразные Так тебя на другие и не возьмут, лол. Благодари, что в принципе дают работу и платят хоть какие-то деньги
>>3025852 Да чел выебнуться решил что у него проект нитакой как все и используют какой нибудь микронавт, кваркус или еще какое узкоспециализированное поделие, а то и вовсе облачные хуитки на лямбдах.
>>3027379 Так речь про то, что местный гуру (>>3025015) пишет, что кафка - хуита, и что в 2024-м её его? используют только дауны. Его попросили пояснить за базар. А он куда-то ушёл. видимо, на хуй
>>3026933 Ю ноу, Spring, Каfka (интегрейшен через Spring Integration мандатори), также мандатори Mongo через Hibernate через Spring Data JPA. Это самый дизраптив блидинг эдж. Пиздец, понаберут имбецилов-снежинок, без Тик-Тока пукнуть не могут.
>>3028077 Очень просто. Пришел на собес. Гоняли вопросами по кубернетесу, стрим апи и спринг клауду. Дали офер. Посадили на проект на пятой джаве в glassfish-е.
>>3028104 Ну, в этом нет ничего страшного. Более того - это закаляет характер.
Кстати, я не очень понимаю, почему они до сих пор не переползли на java 8? В смысле - с то же кодовой базой на новую jvm, а потом уже и код перепиливая потихоньку. Я сталкивался с подобным. И единственная серьёзная проблема была в драйвере jdbc-odbc под windows, который в 8-й просто похерили. Но, это решилось установкой стороннего драйвера. И ещё были какие-то мелкие проблемы со Swing (на клиентах), уже не помню какие.
Senior Java-разработчика #удаленка #senior #500k Компания: DatsTeam ЗП: 4 500€ - 5 500€ (net) Сейчас мы в поиске Senior Java-разработчика на международный Blockchain проект. Задачи: - Разработка нового функционала в соответствии с требованиями - Взаимодействие с бизнес-аналитикой и проектирование элементов системы - Покрытие кода тестами (юнит тесты, интеграционные) - Code-review - Сопровождение системы и исправление дефектов Мы ждём опыт работы с : - java 11/17 (на проекте 17) - postgresql - kafka - spring/spring boot/spring cloud - junit5/mockito/wiremock/etc - grafana/prometheus - k8s/docker - hazelcast - понимание микросервисной архитектуры и возможностей spring cloud - понимание базовой криптографии и принципов технологии blockchain - понимание многопоточки и распределенной архитектуры - рассматриваем строго от 5 лет в коммерции Мы готовы предложить: • Мы работаем удаленно, вы можете выбрать любую страну для проживания • Оформим по международному контракту или по ТК РФ • Гибкий график работы - лояльное начало дня, 8 часов рабочий день • Возможность выбрать привычное оборудование (mac, linux, windows, мониторы и пр.) • Performance review, на котором мы поможем выстроить цели • Непрерывное обучение: у нас есть внутренняя Академия, а также много партнёрских программ, которые поделятся знаниям не только в профессиональной сфере, но и поддержат хобби Митапы, конференции, хакатоны, квесты, онлайн-игры – лишь небольшая часть наших активностей, в которых ты сможешь участвовать • Разнообразные корпоративные программы: английский, мастер-классы, развлечения и отдых
>>3028552 Если это b2b то это нормально. Запросов мало, но клиенты это какой нибудь росгазнефтьстройбанк, а не вася решивший купить дилдак. И если васю можно послать нахуй с его ошибками, то такого клиента - уже нет.
>>3029011 Как это не приносит? Мусорный язык, напоминающий один большой грязный хак не приносит оверхеда в разработку? Да он туда один только оверхед и приносит. На андроиде это ещё как-то оправдано, т.к. он вообще для gui делался, а для бека - и на хуй он не нужен.
>На шарпе можно делать, что угодно. Хоть бэк, хоть игры, хоть фронтэнд, хоть десктоп На фри паскале, хачкеле, перле тоже иногда пишут такие аппы, что я слюни пускаю. И что теперь, даунитос? Без юшки обойдешься кстати.
>>3029342 На джаве есть дохуя всего. Например процессинг платежной системы МИР написан на Акка. Спотифай использует Guice + gRPC или Apollo. Revolut Guice и самописный REST эти вообще знатные велосипедостроители.
Наверное ИП К.А. Банов не выходит за пределы Спринга, но вроде есть много чего и оно реально используется.
>>3029342 Хуинг, ёпта. Понарожали зумеров, лол. Весь бизнес-софт во всём мире крутится на джаве. Просто на гитхаб это не выкладывают. И на ютупе кино не показывают.
Когда мы у экзекьютора делаем scheduleAtFixedRate() он переданную таску запускает по таймеру или он на каждом обороте пересоздает таску и ее запускает?
Хочу сделать пет-проект. Нормально будет, если один докер-контейнер будет с бэкендом на джаве+спринг, а второй - фронт на шаблонах таймлиф джава+спринг? Получается на сайт заходит пользователь, нажимает какие-то кнопочки, фронт обрабатывает запрос, возвращает странички, но все данные запрашивает у бэкенда через JSON. Только бэкенд работает с базой данных и весь его внешний интерфейс - это API с JSON. Фронт-часть можно спокойно заменить на обычный фронт на js с реактами всякими. Но так как я такое делать не умею, то решил сделать на джаве с шаблонами. Насколько говняно это будет смотреться в резюме? Меня возьмут на работу с таким пет-проектом?
>>3029715 В смысле в uberjar какой-нибудь? ХЗ, я такое не делаю, и со спрингом не работаю вобще, и начинать не планирую.
Но, вообще - jsp компилируется в класс. Потому оно и быстрое. Проблемы, наверное, могут быть, когда оно лезет за какими-то (местными) ресурсами по url, теоретически. Но, это проблема не jsp, а контейнера.
>>3029726 На всякий случай уточню - компилирует его сервер. Причём сам, при любом изменении. Скомпилированные файлы потом лежат в каталоге work в WEB-INF. Как это должно выглядеть в случае юберджара я не знаю, не сталкивался. Возможно, делается прекомпиляция перед сборкой.
>>3028135 >>3028104 Ну если безвыходка и один проект, то в принципе можно навелосипедить удобное, я так на престарелый спринг эндпонив на аннотациях приделал. Однажды даже на 4й джаве писать пришлось
Там стиль текста отдельно доставляет. Русский явно не родной. И вообще, возникает непреодолимое желание никогда не иметь никаких дел с этими людьми и продуктами их жизнедеятельности.
Заголовки файлов изменили, навтыкали туда своих копирайтов?
Поздравляю "сделавших" с успешным импортозамещением, когда запад в очередном пакете санкций закроет java и другие стёки, предлагаю им продавать openjdk не меньше сотки тысяч за лицензию.
>>3030044 Сбер засрал своими вакансиями хх, не уверен что реально разрыв 2 раза будет если отбросить бигтех. Алсо >На джаву в 2 раза больше чем на Шарп. А во сколько раз больше конкуренция на эти места? А сколько там легаси?
>>3029695 >>один докер-контейнер будет с бэкендом на джаве+спринг, а второй - фронт на шаблонах таймлиф джава+спринг? Ты просто сделаешь 2 сервиса - один чистый бэк, второй - мвц (фротнт+бэк). Нахуй тут нужен первый не понятно.
Если ты хочешь бэк отдельно то делай рест. Но тогда и для фронта лучше использовать рякт или подобие.
Если не хочешь дрочить жаваскрипт но морду надо - делать обычный мвц с шаблонизатором без жсонов.
>>Насколько говняно это будет смотреться в резюме? >>Меня возьмут на работу с таким пет-проектом? на пет всем будет похуй в 90% случаев, я подобный пилил чтоб понять спринг и потом когда вкатился это пригодилось
>>3029703 таймлиф удобнее, много фич встроено для спринга, есть лэйауты и поддержка вебджаров а так то все шаблонизаторы - сорта говна
>>3030003 >>завезли асинхронное программирование спустя 14 лет, как это стало трендом а разве в 1995-2000 это было в тренде?
>>смешные пропагандистские названия, валхала, грааль. лучше когда все называется "фреймворк для интернета", "база данных", "фреймворк для базы данных" ?
>>3030032 Нахуя этот даун постоянно носится по тредам со своим сравнением платформы с какой-то васянской сборкой и постоянно получает мочи на ебало с напоминанием о том, что есть опенждк?
Я пишу простой чат на Java с использованием сокетов для сервера и клиента. У меня возникли трудности с написанием юнит-теста для метода sendMessage клиента. Когда я запускаю клиент и сервер, оба немедленно запускают потоки, читающие входящие сообщения в бесконечном цикле. Поэтому, если в моем тесте я вызываю readMessage, чтобы проверить входящее сообщение от клиента, запущенный поток сервера считывает его первым, и тест завершается неудачей. Что следует сделать в данной ситуации?
Mockito может быть вариантом, но он вероятно не работает, когда сообщения пересылаются через порты, верно?
>>3030178 >>3030294 Потому что Шарп для молодых и шутливых, да и не используется практически. Серьёзный бизнес не любит обновляться, банки вон до сих пор на коболе сидят
>>3030297 Ты думаешь как шарпопутех, у кого есть только одна контора и только одна версия чего угодно. А все что не от корпорации индусов - васянки от нонеймов.
В джаве мире сам оракл - мелкая контора на которую всем похуй. Для джавы есть бесплатный опенждк и десяток других версий даже духосрепный ахиос, помимо спринга есть другие фреймворки, а дефолтные либы можно поменять на несколько годных аналогов. Пилят все эти либы крупные конторы типа гугла или орги вроде апача.
>>3030308 >>Шарп для молодых и шутливых молодых и шутливых скуфов которых выпнули из питухона?
>>банки вон до сих пор на коболе сидят это в европе, там все хуево с технологиями
>>Серьёзный бизнес не любит обновляться Бизнесу похуй на самом деле джэва там или го, главное чтоб фичи пилили побыстрее и не очень дорого и прод не падал от этого. С джавой на микросеврисах получается хорошо. Обновлять ее до 21 или сидеть на легаси 17 - дело СТО.
>>3030365 >на микросеврисах получается хорошо. Ты к нам из 2017 го? Хайп уже давно прошёл, микросервисы это очень нишевая хуйня и не для обобщенного энтерпрайза
>>3030365 >Бизнесу похуй на самом деле джэва там или го, главное чтоб фичи пилили побыстрее и не очень дорого и прод не падал от этого Все верно, а это значит что? Технология где легче всего найти спецов и технология проще всего реализовать задуманное. И порезе обновляться чтобы ничего не упало. Куда ни кинь всюду джава в общем.
>>3030164 >таймлиф удобнее, Нет. Кусок кала на котором банально неудобно писать. Вместо удобного удобного ${foo.bar.govno?'idi na huy'} нужно корячится th:text или обносить все как правых пабликах вагонами скобочек. Вдобавок ?. не работает на мапах и ты словишь эксепшн. >много фич встроено для спринга, есть лэйауты и поддержка вебджаров Поебать вообще. Фримаркер можно положить куда угодно и не ебать себе мозги.
>>3030479 Фримаркер действительно удобнее. Причём, для чего угодно, включая кодогенерацию. Я на нём делал довольно нетривиальные вещи. А этот таймлиф - откровенная хуита, не могу понять, зачем его так упорно пиарят.
>>3029376 >Revolut Guice и самописный REST Да ну нахуй? Их СТО же кукарекал: "Прув зэт ёр сервис из микро - ДОН'Т @Inject", и я думал, у этих говнокодеров-дизрапторов вообще всё самописное. Есть ещё какие-нибудь инсайды по их технологиям?
>>3030509 Блять, я сейчас чеканул в проекте, там все ЕЩЕ хуже. Да чтобы просто высрать по ключу без ебли с тегами нужно: [[${user}]] А теперь внимание, отключение автоэскейпинга для ссылок: <img th:src="@{|${url}/foo/bar.png|}" alt=""> Что блять нахуй курили эти бляди?! @? Фигурная скобка? Потом еще |? Это уже Perl нахуй? В рот ебал, и все темплейты засраны этим говнищем. Просто в рот ебал дефективных создателей этого дерьма. Их матери-шлюхи при родах их просто ебошили головой о бетонный пол.
>>3030853 Вот кстати да. Енумы нужно использовать очень и очень осторожно, и если и предъявлять кому-то что-то связанное с енумами, то только за необдуманное их использование, и точно не за спам паблик финал курренси. В большинстве случаев енум не нужен, и я не видел ни одного случая, когда использование енума было оправдано с 5+ ключами.
Всем приветы, аноны. После небольшого вката в java core, решил потренироваться и написать первые ооп приложения. В абстрактных примерах по типу зоопарков, машин и.т.п. идейно понял основные принципы ООП, но когда дело дошло до разметки своих проектов пососал бибу
Вопрос к вам, аноны, кто сталкивался с таким же, как научиться в построении логики в ооп? Хочу научиться, но не понимаю даже что гуглить/читать.
>>3030885 Обычно абстрактные и слабо определённые цели аля "научиться строить логику в ООП" не приводят к результату. Ставь конкретные задачи и решай. Но вообще есть один прекрасный подход — представить, что все возможные методы и классы в мире реализованы, и использовать эти мнимые классы, реализовывая их по завершению написания высокоуровневой логики.
>>3030892 Цель зачастую не совсем абстрактная, например, терминальный туду лист. Когда создаю новый проект и приходит время для разметки на классы, пакеты, совсем нет идей как все разбить, хотя если прибегнуть к функциональщине - то все попрет. Но после того как изучил, допустим, интерфейсы, енумы, наследование мне хочется впихнуть, хотя на деле кроме инкапсуляции в проекте ничего профитов реальных не приносит.
Собсна поменяю вопрос, есть ли смысл сейчас наяривать построение приложений, или дальше погружаться в жабу?
>>3030905 Ну так на джаве нормальный веб стек, если по всем сделать сравнение, а не только срыг-аспнет, то джава будет в списке долбящихся в абсолютный предел железа на 7 миллионах ответов в секунду.
>>3030906 >в абсолютный предел железа Странно слышать такие пафосные речи от программиста на Java, компиляторы которого не могут в нативный код.
Это в какой Вселенной байткод обеспечивает производительность равную, я цитирую: "абсолютный предел железа".
Не, оно понятно что алгоритмы решают. Но не существует причин, по которой те же самые алгоритмы нельзя реализовать на языках, компилирующихся а нативный код.
>>3030895 C двух до семи процентов, ошеломительный рост. Там точно что-то поменяли, джанго тоже под 300 теперь выдает. А тест бд вообще зачем принес непонятно, сейчас бы бд и драйверы к нему тестить (да и все равно шарп уделывает).
>>3030986 Да я просто офигел, раньше там джаве 1 место рисовали, ну или 2, а тут еще пару месяцев и шарп обгонит. Все такие пинок от котлина и андроида дал результат, не удивлюсь реальные позиции джавы куда ниже, тут даже деврелы не спасут уже.
>>3030921 >Странно слышать такие пафосные речи от программиста на Java, компиляторы которого не могут в нативный код. > >Это в какой Вселенной байткод обеспечивает производительность равную, я цитирую: "абсолютный предел железа". Могут - Graal VM Native image, JIT - какой код он по твоему производят?
>>3030885 Во-первых, нужно понять, что абстракция в объектно-ориентированном подходе – это не абстракция реального мира. Объяснять долго – загугли прямоугольник, квадрат, абстракция, наследование, проблема. И ты найдешь необходимую информацию.
Во-вторых, старайся не использовать наследование. То есть глубина наследования должна быть 1. Вот у тебя есть интерфейс, у тебя есть класс, который реализует интерфейс. Все, точка. Дальше у тебя не должно быть наследования. Если у тебя нет интерфейса, у тебя сразу класс, то лучше, чтобы он сразу был закрыт к наследованию. Почему? Во-первых, потому что редко получается соответствовать принципу Липсков. И поведение твоего базового класса часто будет отличается от поведения твоего класса наследника. Во-вторых, если у тебя используется синхронизация в базовом классе, то там появляются приколы когда ты позволяешь переопределять базовые методы. Тебе нужно будет очень четко разделять состояние твоего базового класса и состояние класса наследника, чтобы они не влияли друг на друга. В общем, это все тоже не то, что делает твою жизнь легче, когда мы говорим про сложные проекты.
В-третьих, я советую почитать книгу Practical API – Java Framework. В ней автор критикует объектоориентированный подход. В частности, он критикует интерфейсы для разработки SDK. Он указывает на то, что интерфейсы вас сильно ограничивают в расширении функциональности библиотеки без ломания обратной совместимости. Он критикует, в принципе, концепцию наследования. И он указывает на важность использования композиции, на то что нужно использовать закрытые классы и паттерны.
Книга правда тяжёлая из-за хуевых примеров и такого стиля письма. Советую читать с чатомгпт.
>>3031139 Насчёт наследования - полезно отделять мух от котлет. Т.е. сразу делить сущности на "данные" и "сервисы". Для данных наследование - зло. И должно быть запрещено. Хотя, иногда оно напрашивается, но, такое надо решать через композицию и делегирование. А вот для сервисов наследование нормально. Инфраструктурные методы - в базовом классе, а собственно логика - в производных. Но, это тоже можно решить через композицию, зависит от ситуации.
>>3031236 О помню как у меня от этого попец сгорел и пришлось ручками писать. Там вообще по мелочи много wtf, вроде приватные геттеры нельзя написать или сеттеры, не помню, в общем, ощущение что студентота все это разрабатывала. Очень практичный язык.
>>3030791 Самый главный кек это написанный лично Владом меседжинг на базе постгреса. Естественно это всё тормозит неимоверно и его пытаются разогнать добавляя новые ноды. Причем этот ЧСВшный мудак и слышать ничего не желает про кафку.
Рест самописный на базе sparkjava.com
Для работы с базой Влад написал библиотеку которая выполняет jooq в одной транзакции. Тот ещё Франкенштейн.
Пробовали Котлин, и даже написали на нём пару сервисов. Но Владу он не зашёл, плюс плохо работал с Франкенштейном и его запретили для новый сервисов.
Влад лично пишет код, периодически смотрит пул реквесты. Однажды пришёл в мой пул реквест и высрал своё особо ценное мнение.
В целом очень гоняться за фичами, поэтому качество кода очень низкое. Плюс народ работает год - полтора и сваливает.
>>3017812 Блять это шутка что ли? У вас команда 30-32 года, у них уже дети свои, какие нахуй 120 срублей.
Это зарплата нищего зумера-студента, которому слегка за 21. На такие деньги в 2024 не выжить, Петровичи с тремя годами опыта на заводе больше зарабатывают. Я вахуи с этих клоунов.