>>1050932 не торопись с выводами. сам подумай, почему такой плохой и отсталый язык как java при этом пользуется просом? потому что у него все это время не было нормальной конкуренции. сейчас .NET фактически является более лучшей и совершенной java'ой; все, что раньше можно было делать только на java'е, теперь можно делать и на .NET, только лучше, быстрее, эффективнее и производительнее. люди еще по инерции конечно несколько лет просидят на своей java'е, но только дурак не заметит очевидных превосходств .NET. в конце-концов java не выдержит конкуренции с .NET.
>>1050935 Помню начало 2000x, что-то подобное читал в электронных журналах, интернета тогда не было, журналы распространялись на дисках, прилагавшихся к журналам бумажным. Помню с убийством жабы самой лучшей платформой .net, там еще упоминались преимущества Modula/2 перед всем что придумали до и придумают после.
Кто щупал - книжка Блинова норм? Слышал, что там нету совсем уж хелловорлдов и воды мало, т.е. охуенно для вкатывания тех, кто имеет представление о ООП.
>>1050994 Я не читал, но знаю по своему опыту, что технические книги, от русских авторов это дерьмецо еще то. Чем тебе Хорстманн и Эккель не устраивает?
>>1050994 Вот серьезно, что движет этим молодым человеком учить java'у. Я понимаю, необучаемые старперы сидят на жаве потому что они этим зарабатывают и больше ничего не умеют. Но зачем молодому человеку в это время тратить свое время на это говно динозавра. Опомнись. Иди лучше учи C#, подумай о бущуем.
БАБКА на видео советует , уже в 2017 нужно переходить/изучать язык Golang. К тому же скоро выйдет Golang 2.0, в котором будут исправлены недостатки первой версии.
Как быстро можно вкатиться в сабжевый язык до уровня написания полезной для себя хуйни (например простеньких приложений на ведро), имея базовое представление в ООП, и занимаясь 9000 часов в день?
>>1051086 В 10 не выпустят их, можете скринить. Это будет стабилизирующий релиз после девятки: допилят модули, http клиент и может быть выведение типов добавят.
>>1051086 >ждёт фич из java 10 >value type >generic'и без боксинга >>1051105 >В 10 не выпустят их Хотел сначала посмеяться над вами, но потом понял, что над больными смеяться грешно. Ждите дальше value type и верьте в чудеса, может однажды они исполнятся, кто знает.
>>1050935 Для тебя будет открытием, но net просто клон java от ms, в свое время майкам отжать у сан джаву не удалось и они ее просто стащили. Как низопробный клон может быть лучше высококачественного оригинала?
>>1051684 Разжигаешь, набрасываешь, лол. Синтаксис дохуя похож. Если я буду джаваблядью, у меня получится быстро вкатиться в дотнет, или там есть какие-то радикально иные плюшки?
>>1051686 Если бы ты был джаваблядью, то тебе был бы смысл вкатываться в scala, kotlin или clojure. Но никак не в сраный, никому ненужный на рынке, мелкософтовский дот.нет
>>1051686 >Синтаксис дохуя похож. Ага, как и у всех си-подобных языков. На этом схожесть заканчивается. В C# очень много возможностей, которых нет в java. Будет точным сравнение C с C++. Сначала у тебя при переходе на C# будет конечно кружится голова: это как и тесной, спертой и вонючей лачуги выйти в роскошный просторный зал. Но ты быстро разберешься и привыкнешь к комфорту С#, потому что там на самом деле все просто.
>>1051701 очень много. долго перечислять. на самом деле около 90% возможностей C# просто не имеют аналога в java. Если только сравнить ключевые слова, то в java их 48, а в C# больше 110
>>1051696 Net подчистую с java слизан, начиная с синтаксиса c# и заканчивая идей vm и jit. Вот только в jvm это было сделано с прицелом на переносимость, а зачем типы из мс вкорячили виртуалку поверх винды они и сани вероятно не знают. Какая нахрен эволюция
>>1051722 >vm,jit Тебе еще предстоит много веселых открытий Smalltalk Так то переносимость с рождения была... windows/unix ничто по сравнению с разницей x86/x64. >>1051086 >value types А разве не дали задний ход и не решили делать обрезанные костыли aka value capable classes
У меня в репозитории на гитхабе есть JSP-файлы, но если посмотреть языки проекта, то там нет HTML, только Java, JavaScript и CSS. Гитхаб не учитывает HTML-код, написанный в JSP?
>>1051722 >Net подчистую с java слизан, начиная с синтаксиса c# Идиотина, Java ckизана с C++ и Delphi. А C# тоже - но уже с Delphi и C++. Потому что C# разрабатывал содатель Delphi.
>>1051738 >Ну ты хотя бы начни. Ну ладно, продеймся хотя бы по первым ключевым словам: as - каст, который в случае неудачного каста возвращает null checked - проверка чисел на overflow decimal - в жаве нет такого типа delegate - в жаве нет делегатов и не будет enum - в жаве enum это просто синтаксический сахар для обычных классов event - нету в жаве эвентов explicit в жаве нету ни кастомных операторов конверсии, ни вообще перегрузки операторов extern - в .net очень мощная interop-библиотека с помощью которой можно очень просто использовать существующие нативные библиотеки. в java без костылей вызывать нативные функции нельзя fixed - использование поинтеров
>>1051882 Сейчас бы спорить с дегенератом, насчет as - очевидного антипаттерна, зафиксированного в языке по непонятным основаниям. К тому же, as(A.class, instance) - всегда можно реализовать статический метод и простреливать ноги с помощью его
checked - хз что такое, но вот данные с гитхаба https://github.com/search?utf8=%E2%9C%93&q=language%3Ac%23&type= - 147,687 available repository results, добавить слово checked в поиск: 39 repository results - и это тупо поиск по строке, т/е собственно случаев использования в коде может быть и 0. Из чего делаю вывод - такая же редкая ебала, как ключевое слово strictfp в жабе.
decimal - спорить про типы в языке, где можно определять пользовательские типы данных nough said.
delegate - lambda expressions
enum - здесь я прервусь, т/к утомился немного - все споры с сисярп фанбоями, это споры на уровне синтаксиса. Т/е по сути, у них нет толковой аргументации, к тому же, я на Kotlin мигрировал.
>>1051896 >мам, а почему в java нет as? >это антипаттерн, сынок >мам, а почему в java нет делегатов >НИНУЖНО >мам, а почему... >СПОРЫ НА УРОВНЕ СИНТАКСИСА
>checked да просто мало кто знает про это, да и проверка на переполнение мало где нужна
>lambda expressions это совсем другое. костыль костыля анонимных классов
>спорить про типы в языке да я и не спорил. просто первые ключевые слова из списка. это я так, только поскреб вершину айсберга.
C# задумана как киллер Java что не вышло и свое личное контролируемое казино Microsoft с блэкджеком и шлюхами что само собой получилось.
Для того и сделан похожим на Java, чтобы переманиватиь программистов. Для того и вносятся всякие плюшки, чтобы "ниуступить" и быть клевее.
Да, Java изначально получила пороки развития, вовремя не исправленные, но тем не менее у Микрософта не получилось ее угробить, хотя крылья все же подрезала.
>>1051935 но ведь инфраструктура, окружение, обратная совместимость, кроссплатформенность, стабильность, легкость, логичность и прочее гораздо важнее синтаксического сахара. Майкрософт думал победить одним синтаксическим сахаром?
>>1051938 Ну планы меняются со временем, кое-что из задуманного не получается, кое-что кое-как получается. MS видела угрозу в Java. Кроме MS Office, IE и Windows она была поставщиком средств разработки, и конкурировала с Borland и другими, а тут еще вылез страшный Java, кроссплатформенный, который быстро попер во все телефоны и устройства, подминая под себя все платформы, даже браузеры. Кроме того, если бы удалось быстро всех перевести на .NET, у Microsoft ,s появилось преимущество - тут уже не от Intel все бы зависели, а от владельца платформы .NET. Конечно были у них и планы по своей кроссплатформенности, но что-то не пошло. И - наученные сложным переходом с 16bit на 32bit, уже думали про грядущий переход на 64bit, а потом и на 128bit. Короче много причин появления .NET и C# - MS не может что-то кому-то передоверить, хочет все сама делать, чтобы контролировать.
>>1051810 Ну давай старичок, напиши софтец который запустится и в 16-битном режиме и в 32-битном (нет, не в режиме эмуляции с помощью оси) без рекомпиляции
Не могу понять как вы живёте с автоматическим сборщиком мусора, который никак не отключить, которому можно только предложить собрать мусор и вы никогда не будете знать сколько ресурсов он на это потратит, почему разработчики языка настолько дебилы, что не предусмотрели возможность разработчику напрямую контролировать память, как в плюсах, хвалёная кроссплатформенность по по факту не работает, всё равно приходится ебать с реализацией виртуальных машин под конкретную архитектуру, а эта реализация всё равно не даст одинаковый результат на всех машинах
получается, что хвалёная джава по факту дичайшая шляпа.
>>1051935 >C# задумана как киллер Java >Для того и сделан похожим на Java Чушь пишете. Если бы хотели сделать киллер Java, сделали бы сразу кроссплатформенным. Тогда-бы жава умерла еще 10 лет назад. Это изначально было задумано как windows-платформа
На жаву он похож только си-подобным синтаксисом и тем, что оба являются управляемым кодом?
>>1051967 а зачем тогда они делали виртуальную машину? Не могли обеспечить бинарную совместимость в пределах своей виндоус? Так и сейчас по факту написанное на дотнете не получится запустить на древней винде
>>1051967 >сделали бы сразу кроссплатформенным А Microsoft оно надо - чужие платформы? Головой думай. Может они и собирались, как МС Офис и Windows для Мака, но не оcилили.
На Джаву он похож. Точка. И для переманивания программистов прежде всего.
>>1051970 >а зачем тогда они делали виртуальную машину? потому что управляемый код - это next-gen высокоуровневых языков. Ты получаешь безопасный код, сборщик мусора и прочие плюшки
>>1051963 Так и знал, что наткнусь на взрыв жабоадепта, почему тебя рвёт от элементарных и логичных вопросов? >>1051965 разработчики языка и виртуальных машин, кто же еще,
ну а почему раньше об этом нельзя было подумать? Году в 90м, когда стало понятно, что куча ресурсов уходит впустую?
>>1051996 >разработчики языка и виртуальных машин, кто же еще, они и придумали - сборщик мусора. И только тебе не хватает ручного управления памятью >Году в 90м, когда стало понятно, что куча ресурсов уходит впустую? уже в 95 было понятно, что будущее за сборщиками мусора
>>1052003 >придумали - сборщик мусора. И только тебе не хватает ручного управления памятью Слышал, где-то такое есть - ручное управление мусоросборщиком. Не подскажете где?...
А управление автоматическим мусоросборщиком? Почему вы отрицаете, что это нужная фича и почему вы готовы мириться с тем, что просираете ресурсы впустую?? Ответьте ,пожалуйста, кто-нибудь внятно, без взрывов пердаков итд,мне правда интересно,
>>1052032 Лысого ты себе на губу заменджишь. Аллокации в ключевых местах отлично эскейпятся и выделяются на стеке. А если тебе этого мало можно вопользоваться оффхип решениями, но это все для конченных наркоманов.
Что-то я не могу понять, что означают фазы install и deploy у Maven? Там имеется в виду репозиторий системы контроля версий что ли? Типа при install должна выполняться команда git commit, а при deploy - git push, так что ли? Тогда где фаза получения изменений из удаленного репозитория? Поясни, анон, совсем запутался.
>>1051961 Потому жаба специально создавалась для тупых индусов. В нормальных языках, таких, как C++, Objective-C, Swift вместо GC используется подсчет ссылок, и программа не виснет при очередном stop-the-world. Но для этого надо разрабатывать правильную архитектуру и избегать циклических зависимостей, чего тупая жабоблядь не умеет.
>>1052221 советую тебе почитать на досуге про перформанс GC и "подсчета ссылок". >программа не виснет насчет jvm не скажу, но в нормальных платформах уже давно ничего не виснет
> Если вы не укажете никакого модификатора доступа, будет использован public. Это значит, что весь код данного объявления будет виден из космоса; > public var bar: Int = 5 // свойство видно со дна Марианской впадины
>>1051970 Потому что нативный 32-битный код не совместим бинарно с 64 битным (не говоря уже о всяких итаниумах), а с виртуализацией - управляемый код вполне переносим. .Net вполне с рождения был кроссплатформенным, привязан к винде он был библиотеками и имплементацией (оптимизация вызовом нативных функций), при этом вполне запускался не только на винде, ибо был в наличии Platform Adaptation Layer (что вылилось в урезанный .Net Micro на таблетках, Silverlight крутящийся в браузерах, Rotor, Mono) Ничего нового в VM для Microsoft не было, первые версии экселя были написаны поверх виртуальной машины (поэтому портирование его занимало три дня), Microsoft p-code опять же. Некоторые вещи конечно были потырены напрямую с джавы (имена стандартных типов в C#, гребаная ковариантность массивов), но большая часть - с C, Delphi и Smalltalk
>>1051882 > as - каст, который в случае неудачного каста возвращает null В джяве тоже есть каст, только он нахуй не нужен. Для нормальных людей есть паттерн-матчинг.
> checked - проверка чисел на overflow Там где оверфлоу представляет угрозу используют BigInteger.
> decimal - в жаве нет такого типа Дабел есть, бигдецимал есть.
> delegate - в жаве нет делегатов и не будет Костыль над анонимной функцией.
> enum - в жаве enum это просто синтаксический сахар для обычных классов Так это плюс.
> event - нету в жаве эвентов Зачем это в конструкциях языка? "Реактивных" библиотек под яву навалом.
> explicit в жаве нету ни кастомных операторов конверсии, ни вообще перегрузки операторов Ну ок. В других жвм-языках есть.
> extern - в .net очень мощная interop-библиотека с помощью которой можно очень просто использовать существующие нативные библиотеки. в java без костылей вызывать нативные функции нельзя JNR
> fixed - использование поинтеров Поинтеры? С арифметикой?
> >А в крестах вообще охуеешь сколько, но это как раз минус. > выразительность языка может быть только минусом для неосилятора. Переусложненность может плюсом только для говноеда. Стандарт на 1500 страниц совсем не делает крестопарашу супер-мощным языком на котором за вечер пишется любая ёба, да и выразительность там уровня голанга.
>>1052279 Чтобы быть кросплатформенным, нужно работать на разных платформах (не Windows). У .NET этого небыло, вплоть до появления Mono, которое настолько глюкавое, что серьезно о нем говорить невозможно.
А всего лишь наличие интерфейсов с прицелом на будущее не делает что-либо кросплатформенным.
>>1050914 (OP) >>1050914 (OP) Господа, с нуля вкатываюсь в кодинг в 25 лет. Попробовал питон, пхп, в итоге остановился на джаве. Сейчас учу верстку (т.к. во всех объявлениях на джависта требуют верстку) и потом собираюсь начать изучать джаву и возможно пойду на курсы по джаве. После курсов попытаюсь устроиться в какую-нибудь кампанию хотя бы за 400 баксов в месяц. Что скажете про мой план? Нужна критика, потому что хочется как можно раньше начать зарабатывать на кодинге и не хочется проебаться на ненужную хуйню, или на ненужные действия. Буду благодарен любой критике и советам. Спасибо
>>1052519 Может он с JS попутал? Я вот собираюсь вкатиться наконец в работу, везде к Java требуют SQL. Олсо, курсы нужны только с трудоустройством, от той конторки, на которую нацелился. Если ты ленивый хуй, работать они тебя не заставят, а если не ленивый хуй - самостоятельно эффективнее, ящитаю.
Учу тут Spring по-тихоньку, столкнулся с обычной для меня проблемы: Не могу придумать себе задание или проект, который помог бы практически доучить спринг. Киньте идею, что можно написать, чтобы было логично использовать Spring..
>>1052664 Нужно понимать концепцию выражений и стейтментов в языках программрования. Выражения всегда возвращают значение. то есть a = b = 1 это тоже самое что b = 1; a = b; так-как сначала эвалуируется правая часть, а потом ее результат используется как правая часть уже другого выражения конпелятор так скорее всего и переведет этот кусок кода.
Есть ли в intellij hotkey, который позволяет на выделенной строчке кода перенести указатель в скобки? Ну например есть какой-нибудь метод void apple() { } И на этой строчке кода я хочу не тыкать мышкой в скобки и вставлять нужные параметры, а хочу сделать это через хоткей. Так удобней и быстрей. Чёт я все хоткеи протыкал и нужного не нашел. И уж совсем наглость. Поскольку я только недавно изучил core и приступил к изучение паттернов, то может есть какой-нибудь плагин, который подскажет мне, как реализовать нужный мне паттерн или вообще сгенерирует его? :D
>>1052747 >И уж совсем наглость. Поскольку я только недавно изучил core и приступил к изучение паттернов, то может есть какой-нибудь плагин, который подскажет мне, как реализовать нужный мне паттерн или вообще сгенерирует его? :D
>>1050914 (OP) Сап, джаваны, снова тупой мудак на связи. Есть одна ебанина (Spring Data MongoDB + Spring Security). В контроллере есть метод, в котором для безопасности высняется либо принадлежность сообщения залогиненному пользователю, либо к юзеру с админской ролью. Мой воспалённый мозг породил следующее решение: [CODE] @Secured({"ROLE_ADMIN", "ROLE_USER"}) @RequestMapping(value = "/delMessage", method = RequestMethod.GET) public String delete(HttpServletRequest request) { String messageId = request.getParameter("id"); if (SecurityContextHolder.getContext().getAuthentication().getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN")) || messageService.findById(messageId).getUser().equals(userService.findByUsername(securityService.findLoggedInUsername()))) { messageService.deleteById(messageId); } else LOGGER.error("The message is belong to another user");
return "redirect:/"; } [/CODE] Как вы можете заметить, это дико монструозная проверка, которая мне сильно не нравится, но она работает. Внимание, вопрос! Как можно сделать это более красиво и изящно?
>>1052747 >Есть ли в intellij hotkey, который позволяет на выделенной строчке кода перенести указатель в скобки? Ну например есть какой-нибудь метод >void apple() { }
контрл+стрелка вправо а потом еще раз стрелка вправо уже без контрла. не знаю как в общем, но в винде это - дефолтное поведение.
>>1052747 > Есть ли в intellij hotkey, который позволяет на выделенной строчке кода перенести указатель в скобки? Открой для себя стрелочки на клавиатуре.
>>1052497 Начал с самого легкого для вката и зарабатывания денег, остановился на самом сложно безденежном для вката. Где логика? > Что скажете про мой план? Нужна критика, потому что хочется как можно раньше начать зарабатывать на кодинге Говнище. Учи JS или PHP и со свистом сможешь зарабатывать деньги на фрилансе. На джаве ты с удаленной работой хуев насосешься, потому что нет. А что есть, то не для вас удалено, молодой человек. >>1052785 Хуиту написал.
>>1050914 (OP) Сап. Изучил Core, знаю основы sql(простые запросы, проектирование бд), написал простейший сайт на servlets+jsp+jdbc, сборщик - maven. Куда двигаться дальше? Фреймворки, структуры данных, паттерны? В какой последовательности?
Мне в проекте для нескольких классов нужны одинаковые final переменные. Но не объявлять же их в каждом классе отдельно. Где их грамотнее будет разместить? Думал, абстрактный класс создать отдельный, но от него нужно наседоваться в любом случае и это как-то не хорошо.
сап, джавач я нуб и ночью совсем не могу втупить, как лучше сделать. Есть вещи, которые должны быть константами, например: private static final ImageView PIC = new ImageView(new Image(getClass().getResourceAsStream("pic.png"))); но компилятор ругается, что не может вызвать статический метод здесь. Что тут будет лучшим решением?
>>1052019 >Почему вы отрицаете, что это нужная фича Потому что опыт языков с ручным управлением памятью показывает, что автоматический GC сделает это в любом случае лучше, чем индус перед монитором. В любом проекте на C++ большая часть багов — утечки памяти. Это была одна из киллер-фич Java на момент её создания, настолько крутая, что перевесила тормознутость JVM и громоздкость языка.
>почему вы готовы мириться с тем, что просираете ресурсы впустую?? Почему просираем, почему впустую? Мань, создаётся впечатление, что ты делаешь скоропалительные выводы о том, в чём не особо разбираешься.
Могу я сказать на собеседовании, что хочу 700$, а потом как я читал они могут торговаться со мной и сойтись, на около 500-600$? Или мне скажут, что перезвонят с такими-то запросами?
>>1054105 так а если у меня нет опыта и знакомых в этой сфере нет, что бы спросить? Вы, ребятки, моя последняя надежда, что бы узнать за сколько я могу отдать свое джуниорское очко корпоративным ублюдкам
>>1054111 Мы тебе помочь не можем. Некоторые уже себя джуниорами называют, прочитав head first java. Зависит вообщем-то от твоих знаниях и конторы, в которую ты идешь
>>1054115 ок. вот смотри я это все не знаю на уровни профи, но пользоваться умею. java core, oop,DI(Ioc) sql(простенькие запросики), hibernate, servlet api, jsp, spring: boot, mvc, security, data jpa. html, js, css на базовом уровне. сколько такой специалист стоит?
>>1054121 >hibernate, servlet api, jsp, spring: boot, mvc, security, data jpa. тут важно сколько проектов/сколько лет по каждой из данных статей чалился. я на мидле могу тебе сходу 20 таких слов написать, тк в курсе что это, но реального опыта дай бог в пяти есть - и только это ценится.
если у тебя только java core и по хеллоуворлду на каждом онли писал - ты джуниор и стоишь нихуя.
про oop и DI(Ioc) - зависит от требований. тебе может только казаться что ты это понимаешь.
>>1054124 два чаю анону, гитхаб в студию, оценщики уже выехали.
>>1054133 так я же и пишу про джуниорскую должность и знаю что мне со старта никто 3к$ платить не будет. но мне интересно сколько джуниору без реального опыта с хелловорлдами будут платить. примерно(!) на что рассчитывать?
>>1054138 я более чем уверен, что меня пока что вообще хуй куда возьмут, но мне не хочется выглядеть дебилом на собеседовании, если вдруг меня спросят про зп
>>1054121 Я бы взял в нашу контору, зп со старта около 50-60к, ДС2, госник. Один хуй новички примерно все одного уровня, разве что есть необучаемые/слаообучаемые -- тут уж как профильтруешь на собеседовании. На местных галерах джуны примерно столько же получают вроде.
>>1054394 > сам всё выучил > прошел джавараш и может быть сделал hello world с бутом Так ведь по резюме и не скажешь - баззворды одинаковые у войтивайти.
>>1053938 > киллер-фич Java Да, и закиллила много софта своими тормозами когда не надо. Ты еще скажи, что в тогдашней Джаве GC был оптимизирован как будто он сейчас намного лучше
>>1054129 Если не хочешь светить github, то можешь написать что не так с этим >>1052785 кодом, а мы посмотрим, можно ли тебя допускать к реальному проекту.
>>1053829 Просто левый интерфейс или интерфейс одного из классов, в котором нужны эти переменные? >>1053706 Вроде и да, но как-то не очень красиво выходит
>>1051882 >выразительность языка может быть только минусом для неосилятора.
Наконец, хотя этот предмет не из приятных, я должен упомянуть PL/1, язык программирования, документация которого обладает устрашающими размерами и сложностью. Использование PL/1 больше всего напоминает полет на самолете с 7000 кнопок, переключателей и рычагов в кабине. Я совершенно не представляю себе, как мы можем удерживать растущие программы в голове, когда из-за своей полнейшей вычурности язык программирования - наш основной инструмент, не так ли! - ускользает из-под контроля нашего интеллекта. И если мне понадобится описать влияние, которое PL/1 может оказывать на своих пользователей, ближайшее сравнение, которое приходит мне в голову, - это наркотик. Я помню лекцию в защиту PL/1, прочитанную на симпозиуме по языкам программирования высокого уровня человеком, который представился одним из его преданных пользователей. Но после похвал в адрес PL/1 в течение часа он умудрился попросить добавить к нему около пятидесяти новых "возможностей", не предполагая, что главный источник его проблем кроется в том, что в нем уже и так слишком уж много "возможностей". Выступающий продемонстрировал все неутешительные признаки пагубной привычки, сводящейся к тому, что он впал в состояние умственного застоя и может теперь только просить еще, еще, еще... Если FORTRAN называют детским расстройством, то PL/1, с его тенденциями роста подобно опасной опухоли, может оказаться смертельной болезнью.
>>1054407 Да я и так могу сказать что там порождение ненужных сущностей. Но чот не могу поку осилить решатель из Безопасной Весны (лень, да и JUnit пока захватил моё внимание).
нужен совет. писал проект на джавке с nosql базой, сейчас встала задача перекатить работу на mysql. посоветуйте ORM , или же лучше использовать просто jdbc? всем спасибо, с меня как всегда
>>1055883 Питон, у груви особо задач нет - нахуйнуть по-быстрому скрипт какой-нибудь, запилить плагин для гредла и насрать в пайплайне в дженинсе. Хотя все это можно и на других языках сделать.
>>1055895 да вот тоже к этому склоняюсь, хотя сперва понравился синтаксисам, плюшками по сравнению с джава. но чем больше узнаю про него, тем больше понимаю, что особо смысла в нём и нет, питон лучше во всём
>>1056338 Я тебя не понял, ты в 2017 кого-то хочешь удивить маппингом строки джейсона в объект?
Я от других вещей охуел - совмещения нормальных расширяющих анус методов, без динамикодрисни, автозаполнения и тормозов как в груви, и годным воркэраундом проблемы, что в рантайме jvm дженериков нету, если тип дженерика известен из контекста.
>>1056345 > Я тебя не понял, ты в 2017 кого-то хочешь удивить маппингом строки джейсона в объект? Предположу что твой код не генерирует 100% статический маппинг на этапе компиляции, и не может совмещать мапперы для любых типов через имплицит.
> Я от других вещей охуел - совмещения нормальных расширяющих анус методов, без динамикодрисни, автозаполнения и тормозов как в груви, implicit class Mocha(govno: Govno) { def kudah = ??? def kukarek = ??? }
> и годным воркэраундом проблемы, что в рантайме jvm дженериков нету, если тип дженерика известен из контекста. def kudah[T: ClassTag] Всё это было в языке богов много лет назад.
Вот мне тут предлагают пойти на курсы в универе, веб-разработа на жабе. Как оно вообще работает-то? Как коннектится к фронтэнду и всякое такое? Полный 0 в вебе, интересно, что читать. Нет, с JS не перепутал.
>>1056417 Либо пилить REST API бэкэнд, либо какой-нибудь из MVC фреймворков. Первое в принципе достаточно востребованная, но однообразная работа - принять запрос с фронта, как-то по-простенькому обработать или сделать несложную логику (сходить в базу данных и забрать/отдать). Если при этом не пишешь какой-то сложной бизнес-логики, то очень быстро сгораешь, развития никакого. Если второе, то скорее всего какой-то энтерпрайз не оч современный, работает по типу шаблон верстки + несколько конструкций для биндинга кода из явы (переменные, условия, простенькие циклы), фреймворк тебе на основе этого генерит готовую статичную страницу и отдает ее. Из браузера приходит новый запрос - шаблон перегенерируется (или берется новый) с новыми параметрами и опять отдается клиенту. 1990-style.
>>1056423 У меня на первом месте работы крутился в эмуляторе код, написанный на асме для ЕСок в семидесятых, авторы которого уже умерли. Отвечает за критическую часть завязанную на бабки. До сих пор еще работает. Подозреваю, что долго. Рынок вакансий будет постепенно уменьшаться, а зп чувака, который может это разгрести - расти.
>>1056364 > Предположу что твой код не генерирует 100% статический маппинг на этапе компиляции Предположение неверно. 100% статика. > implicit class Mocha(govno: Govno) { > def kudah = ??? > def kukarek = ??? > } Если бы я хотел сделать новый класс, чтобы неявно расширить существующий класс, то я бы просто сделал декоратор и не ебался с неявными новыми объектами, неявной иерархией рептилоидов и скалой вообще. Я уточка, я хочу сделать так: > fun Govno.kudah() = println("$this koodahchet") > fun Govno.kukarek() = println("$this kookarekaet") И это лучше. И еще я могу это вызвать в джаве без пердежа уровня new ScalaGovno(govno).obmazatsya() > def kudah[T: ClassTag] > Всё это было в языке богов много лет назад. Вот только твой язык богов компилируется столько, что смертные умрут к хуям, пока он скомпилируется.
>>1056444 > > Предположу что твой код не генерирует 100% статический маппинг на этапе компиляции > Предположение неверно. 100% статика. Ну покажи как ты маппер создал.
> > implicit class Mocha(govno: Govno) { > > def kudah = ??? > > def kukarek = ??? > > } > Если бы я хотел сделать новый класс, чтобы неявно расширить существующий класс, то я бы просто сделал декоратор и не ебался с неявными новыми объектами, неявной иерархией рептилоидов и скалой вообще. > Я уточка, я хочу сделать так: > > fun Govno.kudah() = println("$this koodahchet") > > fun Govno.kukarek() = println("$this kookarekaet") > И это лучше. Чем лучше? Как по мне, класс делает иерархию более логичной.
> И еще я могу это вызвать в джаве без пердежа уровня new ScalaGovno(govno).obmazatsya() Зачем тебе вызывать такое из джявы в 2017? Ты решил разбавить тырпрайз легаси хипсторскими языками?
> > def kudah[T: ClassTag] > > Всё это было в языке богов много лет назад. > Вот только твой язык богов компилируется столько, что смертные умрут к хуям, пока он скомпилируется. Купи себе компьютер, заместо дедушкиной коры дуба.
>>1056453 > Ну покажи как ты маппер создал. Что тебе показать? Я уже все показал выше. Или ты про ObjectMapper? Так это жи джексон с дефолтными настройками. > Чем лучше? Я тебе сейчас от души распишу. 1) В два раза меньше кода 2) Нет какого-то мутного нового класса, еще и неявного. Мне нахуй не впился новый класс - мне нужна новая функция. Если бы я хотел новый класс, то сделал бы декоратор. Создание класса для существующего класса, если в существующем классе нужна новая функция - это оверхед. > Как по мне, класс делает иерархию более логичной. 3) Какая нахуй иерархия? Зачем она вообще нужна? Мне не нужна иерархия, тем более неявная. Я просто хочу научить говно кукарекать и все. У тебя аргумент "любишь с горки кататься, люби и саночки возить", если можно просто с горки кататься. > Зачем тебе вызывать такое из джявы в 2017? Ты решил разбавить тырпрайз легаси хипсторскими языками? Как что-то. > Купи себе компьютер, заместо дедушкиной коры дуба. Это хороший аргумент, когда у тебя проект это хуйловорлд.
>>1056457 > > Ну покажи как ты маппер создал. > Что тебе показать? Я уже все показал выше. Или ты про ObjectMapper? Так это жи джексон с дефолтными настройками. Так ведь джексон использует рантайм рефлексию. А в скале это считается зашкваром.
> > Чем лучше? > Я тебе сейчас от души распишу. > 1) В два раза меньше кода Только для простого примера.
> 2) Нет какого-то мутного нового класса, еще и неявного. Мне нахуй не впился новый класс - мне нужна новая функция. Если бы я хотел новый класс, то сделал бы декоратор. Создание класса для существующего класса, если в существующем классе нужна новая функция - это оверхед. Класс это всего лишь абстракция. Если пометить его как AnyVal, то все методы станут статик функциями.
> > Как по мне, класс делает иерархию более логичной. > 3) Какая нахуй иерархия? Зачем она вообще нужна? Мне не нужна иерархия, тем более неявная. Я просто хочу научить говно кукарекать и все. У тебя аргумент "любишь с горки кататься, люби и саночки возить", если можно просто с горки кататься. Не нужна, пока у тебя хеллоуворлд. В любом большом коде, все функции придётся как-то рассортировывать, а не мешать обработку жсон и костыли для ридера.
> > Зачем тебе вызывать такое из джявы в 2017? Ты решил разбавить тырпрайз легаси хипсторскими языками? > Как что-то. Что-то будет для тех, кому потом достанется этот франкенштейн.
> > Купи себе компьютер, заместо дедушкиной коры дуба. > Это хороший аргумент, когда у тебя проект это хуйловорлд. Инкрементальная компиляция как бы по умолчанию.
>>1056423 Ну у меня сейчас на работе spring mvc. Если кто-то думает, что спринг - это легаси-говно, то он отчасти прав, но он даже не представляет что такое настоящее легаси-говно, по сравнению с которым spring mvc - это очень даже нормально и современно.
>>1056467 > Так ведь джексон использует рантайм рефлексию. А в скале это считается зашкваром. Нормальный джексон, не пизди. И если так хочется, то на его месте может быть любой другой (де)сериалайзер, умеющий маппить в передаваемый класс, например тот же DSL-JSON. > Только для простого примера. Только для простого примера в два раза меньше. Для более сложных просто меньше кода. Меньше кода и меньше сущностей. Не плоди сущностей, а то GC заебется. > Класс это всего лишь абстракция. Да нахуй он все равно нужен? Тем более с неявной иерархией. Я просто хочу научить говно кукарекать. И могу это сделать или прямо на месте, или в файле GovnoExtension. И никакого оверхеда. > Не нужна, пока у тебя хеллоуворлд. В любом большом коде, все функции придётся как-то рассортировывать, а не мешать обработку жсон и костыли для ридера. Капитан? Вот только следование SRP не обязывает делать то, что ты предлагаешь. На полном серьезе не всрались новые классы и новые экземпляры для каждого вызова расширенной функции, если я хочу добавить новую функцию. Функцию, не класс.
Серьезно, с таким же успехом можно просто сделать обычный декоратор и все. > Что-то будет для тех, кому потом достанется этот франкенштейн. Если юзать скалу, то да. > Инкрементальная компиляция как бы по умолчанию. Обожаю этот кукарек. Инкрементальная сборка никак не избавляет от полной компиляции. Переключаешь веточки - изволь скомпилировать. Я уж не говорю, что в больших проектах, которые через джарники тянут зависимости других немаленьких проектов, инкрементальная сборка часто фейлится и в райнтаме ты получаешь веселые NoMethodFoundException caused by PoshelNahooyPeedourException, после чего еще более весело делаешь полную пересборку. Ни инкрементальная сборка, ни хотсвоп через jrebel не избавляют от принципиальной необходимости полной сборки проекта.
Так что даже не пытайся в "тормозная компиляция - так это же почти хорошо, только выиграли и вообще сам мудак".
>>1056642 Сап работающий анон, я джун с полугодовым опытом, команда пишет продукт уже 4 год, хотя и на спринге, но выглядит как легаси. Имеет ли смысл учить ee7 ? Давали таски по правке вебсервиса на ее6 - +- тоже гавно что и спринг
>>1056722 Да я сам чуть меньше года, не знаю. Мне кажется, стоит доки глянуть, просто чтобы быть в курсе, а чтобы прям учить смысла нет. А какой у вас спринг версии? Какие модули используете?
>>1056707 > > Так ведь джексон использует рантайм рефлексию. А в скале это считается зашкваром. > Нормальный джексон, не пизди. И если так хочется, то на его месте может быть любой другой (де)сериалайзер, умеющий маппить в передаваемый класс, например тот же DSL-JSON. Всё равно, компилтайм макросы, scala-meta, shapeless только в скале.
> > Только для простого примера. > Только для простого примера в два раза меньше. Для более сложных просто меньше кода. Меньше кода и меньше сущностей. Не плоди сущностей, а то GC заебется. AbstractSingletonProxyFactoryBean.metod1 AbstractSingletonProxyFactoryBean.metod2 AbstractSingletonProxyFactoryBean.metod3 ... AbstractSingletonProxyFactoryBean.metod999
> > Класс это всего лишь абстракция. > Да нахуй он все равно нужен? Тем более с неявной иерархией. Я просто хочу научить говно кукарекать. И могу это сделать или прямо на месте, или в файле GovnoExtension. И никакого оверхеда. GC и JIT получше тебя знают, как оверхеды убирать.
> > Не нужна, пока у тебя хеллоуворлд. В любом большом коде, все функции придётся как-то рассортировывать, а не мешать обработку жсон и костыли для ридера. > Капитан? Вот только следование SRP не обязывает делать то, что ты предлагаешь. На полном серьезе не всрались новые классы и новые экземпляры для каждого вызова расширенной функции, если я хочу добавить новую функцию. Функцию, не класс. Вызывается как функция, в байткоде функция. Что тебе не нравится?
> Серьезно, с таким же успехом можно просто сделать обычный декоратор и все. > > Что-то будет для тех, кому потом достанется этот франкенштейн. > Если юзать скалу, то да. Ну правильно, индусов сложнее надрессировать на скалу.
> > Инкрементальная компиляция как бы по умолчанию. > Обожаю этот кукарек. Инкрементальная сборка никак не избавляет от полной компиляции. Переключаешь веточки - изволь скомпилировать. Большая редкость. SBT кэширует небо и аллаха.
> Я уж не говорю, что в больших проектах, которые через джарники тянут зависимости других немаленьких проектов, инкрементальная сборка часто фейлится и в райнтаме ты получаешь веселые NoMethodFoundException caused by PoshelNahooyPeedourException, после чего еще более весело делаешь полную пересборку. Если юзать котлин, то да.
> Ни инкрементальная сборка, ни хотсвоп через jrebel не избавляют от принципиальной необходимости полной сборки проекта. Так ты не пересобирай после каждой строчки.
> Так что даже не пытайся в "тормозная компиляция - так это же почти хорошо, только выиграли и вообще сам мудак". В Dotty пофиксили же.
>>1050914 (OP) Анон, подскажи название фреймворка, я знаю такой есть, который помогает убрать в коде геттеры и сеттеры, но оставляющий их в логике чтобы потом к ним можно было обратиться из другого класса.
Сап зекач, джун 20 лвл, сижу на тырпрайзе(жаба) зарплата не ахти - 300 тугриков, стоит ли менять галеру ? Зарплата хоть и маленькая, но я въебую от силы часа 3 в день.
>>1057129 У тебя в директории билда кроме собственно резултатат еще куча прмоежуточных и сгенерированных штук валяется, оттуда и знает. Увы идея генерирует их на каждый чих, но может эот как-то чинится.
>>1056917 Он изменяет процесс сборки, добавляя отдельный этап. Что часто достовляет много проблем.
Поэтому, я предпочитаю использовать вместо него AutoValue: там нормальный annotation processing вместо костылей, нормальная иммьютабилити. Ну или вообще Kotlin data classes берите, там всё это из коробки
>>1056883 Мне лень спорить дальше, тем более нить беседы потеряна - я так и не получил ответа нахуй мне нужен класс, когда нужна функция. Тем более неявные говноиерархии. > Если юзать котлин, то да. В хуй свистни, джава. > Большая редкость. SBT кэширует небо и аллаха. Чет сомнения, что в больших проектах с большими и множественными зависимостями не будет таких проблем. > Так ты не пересобирай после каждой строчки. Орнул. ТОРМОЗИТ КОМПИЛЯЦИЯ? @ ТАК ТЫ КОМПИЛИРУЙ ПОРЕЖЕ > В Dotty пофиксили же. Это хорошо, если пофиксили.
сап, джавач помогите нубу, есть executorsservice, который выполняет потоки демоны. И иногда он выполняет io операции. Как бы так это сделать правильно, чтобы в случае завершения программы, поток работающий с файлами там чего-нибудь не сломал?
>>1057268 Смотря что ты понимаешь под завершением программы. Если остановка JVM, то вешай shutdown hook на Runtime и там закрывай файлы. Это в дополнение к стандартному try-with-resources в самом потоке с файлами, которого будет достаточно, если под завершением понимается shutdown ExecutorService'а или cancel Future (очевидно, файлы закрывать в finally).
>>1057219 > Мне лень спорить дальше, тем более нить беседы потеряна - я так и не получил ответа нахуй мне нужен класс, когда нужна функция. Тем более неявные говноиерархии. Всё с тобой ясно.
> > Если юзать котлин, то да. > В хуй свистни, джава. Мавен нормально собирает. Или ты вручную джары подкладывал? И создавал классы через ссаную рефлексию и шпринг.хмл?
> > Большая редкость. SBT кэширует небо и аллаха. > Чет сомнения, что в больших проектах с большими и множественными зависимостями не будет таких проблем. Не будет с нормальной архитектурой, и если не менять какой-то костыль используемый в каждом классе каждого модуля.
> > Так ты не пересобирай после каждой строчки. > Орнул. > ТОРМОЗИТ КОМПИЛЯЦИЯ? > @ > ТАК ТЫ КОМПИЛИРУЙ ПОРЕЖЕ Давно заметил, что частая конпеляция на девелоперском пека - признак кривых ручек и отладки print-ами.
>>1057312 >> Мне лень спорить дальше, тем более нить беседы потеряна - я так и не получил ответа нахуй мне нужен класс, когда нужна функция. Тем более неявные говноиерархии. >Всё с тобой ясно.
Парни, подскажите почему этот код не работает? interface Vinn { void aaa(); } abstract class Vout implements Vinn { } class my extends Vout { void aaa(){ System.out.print("fef"); }
} Но если сделать метод в интерфейсе и в реализующем классе публичными то все заработает. А нахуя их делать публичными, если по определению все методы в интерфейсе публичные?
>>1057415 Нельзя ужесточать модификатор доступа, только наоборот (т.е. если в контракте метод public, то нельзя реализовывать его с любым другим более жёстким модификатором, например, protected; и наоборот, если в контракте protected или package-private, то можно экспозить его в том числе и с модификатором public).
>>1057415 Т.е. конкретно в твоём примере метод aaa имеет модификатор public (т.к. объявлен в интерфейсе). А реализуешь ты его в классе my с модификатором package-private, что нарушает вышеописанный принцип.
>>1057130 Если ты препод Сергей Ирюпин - то я надеюсь, что тебе в Ростове разобьют ебало скоро за то, насколько хуево, отвратно и мерзко ты преподаешь, говно. Вечер за ебаным хэдферстом, хотя бы страниц 200, дает больше информации, чем твое месячное обучение, с содранными дз из этого же хэдферста. Если тут есть вкатывальщики - в жидбрейнс не ногой. Явараш, хекслет, степик, но не жидбрейнс.
>>1057796 Специалист - одно, преподавание - другое. Когда преподавание идет ровно полтора часа, материала дается писечка, льется настолько дохуя воды, что город потопить можно, когда из полутора часов уходит 40 мин на разбор дз и еще 15 на рекламу лингвалео, где он пиздато учит инглиш и не может произносить слова правильно, когда весь курс он пишет на нотпаде, вместо того, чтоб хоть какую-то ИДЕ показывать и давать лайфхаки, когда он ошибки в своем же коде допускает прям сразу, как написал и молча ебланит, на него смотря - это все настолько хуево, что не отпускало чувство в пустую проебаных денег. Материал преподается максимально томно и нудно, видно, что человек просто отбивает деньги. Насчет того, как надо вести курс - спизди с торрентов курс Долгова с вашего же гб, бывшей шп. Вот именно так они должны проводиться, с полной самоотдачей и менторством. 46 человек заплатило по 11к, а получили хуйню полную, это абсолютно отвратительно. Может сергей хороший человек, или специалист, но как препод он полнейшее говно, и со мной солидарны более 20 человек из группы, которые так же занимаются самообучением, а не тупо слушают курсик хуево проведенный и думают, что что-то учат, выполняя домашку из хэдферста и одной главы хорстманна.
Как думаете курсы гикбрэинс норм? Хочу купить курс за 80000 после которого обещают что можно будет устроится в маил ру на 120к. Если заплатить за курс 200к то возможна устройство гугл. Что выбрать?
>>1058178 Там просто нужно свой компаратор написать, который будет сравнивать числа по их цифрам, и затем скормить этот компаратор любому алгоритму сортировки.
Насколько хорошо изучающему java нужно знать javaCore, что бы приступить к изучению javaEE/Spring? К примеру, должен ли он на зубок знать все методы класса Object/Как написать свой компаратор/что такое стирание типов/etc или достаточно понимание этого? типо если представить собеседование и меня вдруг спросят одно из этого, то я могу и не ответить, т.е знать все это я буду, но не вспомню. Это нормально? А то начитавшись статей dou про java перфикционизм говорит мне что нужно сначала изучить javaCore до уровня сениора, что бы приступать к изучению других вещей. Но так скорее всего можно учить хоть всю жизнь, не видя прогресса
>>1058475 > Почти нечего Печально, я думал, что это не так. Чего только список книг про многопоточность стоит, чёт слишком их много, учить есть что, как по мне.
>>1058482 Одну прочитать и понять НЕ ЛЕЗЬ СУКА ДЕБИЛ ЕБАНЫЙ В РУЧНУЮ МНОГОПОТОЧНОСТЬ, ОНА ТЕБЯ СОЖРЕТ, что она не нужна, а когда нужна, то нужно подумать и сделать так, чтобы была не нужна.
>>1058485 Ну утешил, спасибо. Вот такая херня еще есть - типо что-то изучал пару мес назад, а потом забыл, т.к не применял это больше - это нормально вообще или я даун-аутист?
>>1058937 > Нет ты. > Я, шарпобог и то больше знаю о жаве, чем дауны из жаватреда Возомнивший о себе диванный петушок решил выебнуться и ожидаемо обосрался.
Только одно слово для тебя, чтобы обрушить на тебя поток мочи, который ты прилежно проглотишь литр за литром.
>>1058937 Пошел нахуй из треда уебок, может в шарпее это и так, хотя я сомневаюсь, но в джавке это специально блять переделывали что бы нормальному было, не лезь в чужую кухню если не шаришь мудило.
>>1058941 >INVOKEDYNAMIC лол. дурачок увидел незнакомое слово и от радости зассал весь тред. какая разница на каких ебучих костылях это в JVM сделано. суть в том, что с точки зрения синтаксиса это упрощенная запись анонимного класса, а не новая фича, и они могут быть 100% взаимозаменяемы.
>>1050935 Только если ты гворишь про формошелпство. Для бекенда и нет и жаба - говно. Есть божественный Го и сабжи больше не нужны. Петушня, конечно, покукарекает в духе "а у вас генериков нет", но прогресс это не остановит и топовые конторы продолжат переходить на Го.
>>1058988 Это логично, так и должно быть. Ошибка - тип возвращаемого значения из функции. А трай-кетч это уже ебанина, т.к. получается, что не факт, что функция вернет значение, она же теперь и экспшн может бросить, у которых, блеать, есть целая иерархия и которые нужно оборачивать в блоки, чтобы поймать. Да err != nill - элегантная простата, на фоне этой беатории.
>>1059324 Ну и хули, ты проверки на null отдал на откуп библиотеке, реализующей Optional, только и всего. Я не говорю, что так не надо делать, но везде хуярить опшенал, где можно обойтись тривиальной проверкой -- тоже перебор.
>>1059328 null - это нормальное состояние ссылочного типа, значит переменная ни на что не указывает. вы еще начните с нулями бороться, поехавшие, а то вдруг будет деление на ноль!
>>1059510 > Количество фич вообще ни на что не влияет, посмотри на кресты. Там не фичи, там нахуй не нужные костыли.
> > Не говоря уже про утонувшую инфраструктуру. > Што? У скалы есть свой огромный стек, Akka, Play, Spark, Scala.js и т.п., а также сотни уникальных библиотек, которые из явы даже не вызовешь. А котлин позиционируется как облегчённая джява, поэтому кроме явовских костылей ничего не завезли.
Я тут подумал -- зачем ждать value types (для маленьких объектов <= 8 байт), когда уже сейчас можно прятать данные во всяких лонгах? Тот же Point {final int x, y} как раз займёт один лонг.
Если ещё сделать какое-нибудь расширение языка, которое позволит работать с таким лонгом как с объектом типа Point.
Есть ли такие проекты уже и вообще, какие подводные камни в такой идее?
>>1059975 Это байтоебство, причем не удобное, в ведре есть measureSpec, для вьюхи, в одном инте с помошью итовых масок спрятаны два значения, только одно для сосбвтенно высоты/ширины. А работать очень просто - статический метод или прямая ебля с битовой маской.
Читаю спеки jvm, пишут что при nan результат сравнений типа if_icmpel и т.д вседа false т.е в яве сейчас нету пеки чтобы проверить Float num = Float.NAN if(num => 0){ 1 } else { -1} выдаст -1, а if(num < 0) { -1 } else { 1} вернет 1 Не кажеться ли вам, господа яваебы, это нелогичным, несмотря на то, что это неЧисло?
>>1052207 Просто фазы сборки. деплой, например, позволяет залить продукт сразу в нексус,скажем, если у тебя конечно он настроен. инсталл соберет таргет,сунет в него жар фай, и закинет его еще и в репозиторий, считай что пекедж с бонусом
Давайте за Скалу поговорим. Что вы все какие скучные. >>1060052 Может неправильно тебя понял, но по-моему реализация осталась старой, просто тебе кажется что классов нет....
>>1060356 Результат зависит от привычки программиста. Если он привык использовать отрицательные условия, то получит один результат, если положительные - другой. Ну ок, Defined behavior, но не лучше ли было бы кидать эксепшн, чем делать хуйню, которая по сути нарушает семантику ifelse при работе с флоатами?
>>1060509 Пошел нахуй со своим индусом. У них не только в коде 90% воды, но и в речи. 5 минут охуительных словестных придатков, которые можно сократить в одно, сука блять, предложение.
>>1060579 >Массовые увольнения затронули около 2500 сотрудников, работающих над операционной системой Solaris, платформой SPARC и системами хранения данных ZFS Storage Appliance. Уноси свою хабрапарашу.
>>1060661 за java деньги не дают, поэтому ее давно уже никто не пилит и не собираются. бросили вам за 10 лет как собакам кость java 8, в которой кроме сахарных лямбд ничего нету, а вы и рады
>>1060662 Си вот уже лет 50 не развивается, но оно на коне. Упаси боже от впихивания в джаву как можно больше синтаксического сахара, как это произошло с плюсами и шарпом
>>1060686 а зачем си развиваться? это низкоуровневый язык конпелируемый в ассемблер. в него в принципе нечего добавить. ты java с си? сравниваешь? ну в принципе по функциональности java от си действительно недалеко ушла
>>1060706 За это часто и не любят фичи, за то, что на каждый конкретный случай отдельная фича и язык превращается в свалку как C#, C++.
Вместо async await нужны например как в scala for comprehensions, которые являются обобщением — тут тебе и async/await, и проходы по спискам, и обработка ошибок.
>>1060741 В шарпе тоже никаких революций никогда не было, накопипастили фич из других языков, а за основу вообще взята ява. Но промыткам преподносят это как СУПИР ЮНИК ФИЧИ, РЕВОЛЮШН ИН ПЛ ДЕЗИГН.
Eсть два класса Т и Т2. Т2 унаследован от Т. у меня есть две коллекции - ArrayList<T> и ArrayList<T2>. в обе я записываю одни и те же объекты типа Т2. потом вызываю ArrayList<T>.get(i).someMethod(), но у объекта ArrayList<T2>.get(i) этот метод не вызывается. правильно ли я понимаю, что я на самом деле сделал дубли своих объектов, а не скопировал ссылки? если да, как можно сделать так, чтобы обе коллекции содержали "одни и те же" объекты, и вызов метода у объекта из одной коллекции имел бы тот же эффект, что и вызов у "того же" объекта из другой?
то есть если бы я писал на с++, я бы в массивы пихал указатели и горя бы не знал, а тут как?
>>1060706 так по сути ведь async/await это инкапсуляция многопоточности, чтоб вручную не усыплять/будить треды? Для этого есть CompletableFuture. В спринге 5 появится вкусные реактивный фреймворк. Точно такая же инкапсуляция по сути
Народ, вопрос новичка на тему наследования. Могу ли я в наследуемом классе избавиться от метода класса родителя? Я так понял если я определю в родительском классе метод финальным он все равно передастся наследнику. Как оборвать такую наследственную линию?
>>1061097 Никак. Потому что скастив ссылку к типу родителя, я всё равно вызову метод. Разве что в наследнике исключение кидать. >>1061130 Вынести функционал лая в стратегию.
>>1061097 class Dog { public void bark() { System.out.println("doggo is borking"); } }
// лучше так не делать, потому что это не то поведение, которое люди ожидают при наследовании class NotReallyADog extends Dog { @Override public void bark() { throw new UnsupportedOperationException(); } }
>>1061257 Пример из жизни: в интерфейсе Collection есть методы, которые изменяют коллекцию: add, remove и т. д., при этом есть иммутабельные коллекции, которые имплементят этот интерфейс. Например, Collections.emptySet возвращает иммутабельный сет, поэтому если ты сделаешь Collections.emptySet().add("qwe"), то вылетит UnsupportedOperationException.
Такое поведение - результат ошибки проектирования стандартной библиотеки джавы. По-хорошему должен быть интерфейс ImmutableCollection, от него должен наследоваться интерфейс MutableCollection со всякими методами типа add и remove и Collections.emptySet должен возвращать ImmutableCollection (примерно так, но сложнее сделано в скале).
>>1061259 >По-хорошему должен быть интерфейс ImmutableCollection, от него должен наследоваться интерфейс MutableCollection со всякими методами типа add и remove и Collections.emptySet должен возвращать ImmutableCollection В котлине так и сделали. ну и скала, да
>>1061259 Такое поведение — результат отсутствия приватного наследования, т.е. проёб при проектировании самого языка. Так бы просто взять, приватно унаследовать и переопределить нужные методы, а ненужные клиент не видит — и хуй бы с ними. А так имеем то, что называется «сломаная абстракция».
>>1061259 Нету никакой ошибки. Лучше так, чем ебля с кучей интерфейсов ради интерфейсов, 90% которых все равно никогда никому не нужны. нужно сделать только свойства canRead, canWrite и т.д.
>>1061325 >приватного наследования какое еще приватное наследие? Ты имел ввиду приватную реализацию интерфейсов как в C#?
Господа уровня предприятия, поясните по-хардкору за embedded http server VS servlet. Что и когда пользовать? Зачем нужно первое, если второе настолько нативное?
>>1061628 >>1061645 На сам деле, EE и так говно. Но теперь у сообщества будет больше возможностей на него повлиять. Если раньше разработка велась только ораклом, то теперь любой сможет предлагать свои изменения.
В общем эта, буду джва семестра учить эту вашу джаву, базы и структуры данных тоже должны завезти. За сим вопрос - какой профит можно извлечь из этих знаний? Сам поадминиваю мелкошарагу, есть ли маза перекатиться в крутые и нужные специалисты, если основательно налечь на изучение языка?
>>1061653 За кота не скажу, но жеття имбедится и даже очень советует делать это. Jetty has a slogan, "Don’t deploy your application in Jetty, deploy Jetty in your application!"
В треде опытный специалист на всех языках кроме джавы, стоит ли читать Core Java от Хортсмана или же просто взять Core Java for the Impatient от него же? Не пропущу много важной инфы, которой заебут на собеседовании?
Новый ньюфаг в этом итт треде вопрошает, с помощью каких книг можно вкатиться в яву? И что-то я не понял, писать в текстовом файле и компилировать дрочить консольку это так и задумано? В С такой хуйни небыло.
>>1062611 Сомнительная практика использовать счетчик цикла как-то кроме инкремента, декремента и right value в выражениях. Один инкремент на цикл - не обязательно на единицу. Для разных циклов - разные счетчики.
Если вдруг встретите книгу "Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications", то скиньте в тред. Её сам глава Jigsaw рекомендует, но книга только вышла, поэтому хуй найдёшь пока.
Здаров, джависты. Прочитал head first, половину 1 тома java core, прошёл основы программирования на степике и 1 часть по вэб-сервисам. Щас хз что делать, родители говорят получать сертификат начальный от oracle, но я думаю это всё херня. Мне хотелось бы какой-нибудь практике. Аноны подскажите что мне делать?
>>1063434 Во-первых нах по половинкам читаешь, дочитай java core хотя бы. Во-вторых - замути приложение, любое говно в пару-тройку тысяч строк. Дальше чуть подтяни базовые вопросы по алгоритмам и паттернам и можешь идти на джуна. Алсо почитай исходные коды любых известных джава библиотек, попробуй понять, что происходит и охуей от того, как можно.
Вот есть такой код: List<Man> ls = Arrays.asList(new Man("maks"), new Man("maks"), new Man("charli")); ls.stream().collect(Collectors.groupingBy(x -> x));
У класса Man только одно поле "name". Переопределил метод equal у класса man, чтоб сравнивал по этому полю. Проблема в том, что gropingby сравнивает просто по '==', а не через equals. Как сделать чтоб через equals работал? Или это свой кастомный groupingBy писать? Вариант с x -> x.name нахуй не нужен.
В java generic реализованы через жепу! Все конвертится в object а потом компилятор раставляет приведение типов... В шарпе сделано нормально(логично, по человечески). Вот спрашивается нахуя такое говно вобще надо было тащить в язык? и почему нельзя было сделать вывод типов как в шарпе? Че так действительно стало лучше ArrayList<Person> pl = new ArrayList<>()
>>1064193 Сисярп это пиратская джава и там сразу некоторые вещи могли сделать нормально и при этом не иметь в виде необходимости поддержки обратной совместимости тонны легаси.
>>1064287 Интересует создание самого сервера, который будет по КД, допустим раз в 15 минут запускать парсер, обрабатывать данные и прочее, и как это совместить с парсером.
>>1064321 Обобщённые типы данных (дженерики) отличаются от параметрически полиморфных систем тем, что используют ограниченную квантификацию, и потому не могут иметь ранг выше 1-го.
Здарова, аноны. Прочитал 2 книжки у вас из шапки, проходил курсы в инете по джаве. Подскажите какой проект начинать? Что можно начать писать, чтобы понять как всё происходит? Какое приложение написать?
>>1064747 Поглядел коротко пару недель назад. Функционал убрали в аннотации. Киллер-фич при поверхностном взгляде не заметил. Так, meh. >>1064797 Ты че охуел. >>1064816 > Java EE 8 А вот это уже неблохо. Хоть юнион в JPA-то добавили наконец? Только откуда они его так быстро высрали? Буквально же неделю назад отдали в попенсорс, типа нам корова не мила, сделайте с ней что-нибудь. Пожалуйста.
Джависты, поясните за задачку из Core Java: In the RandomNumbers class, provide two static methods randomElement that get a random element from an array or array list of integers. (Return zero if the array or array list is empty.) Why couldn’t you make these methods into instance methods of int[] or ArrayList<Integer>?
Я про вопрос в конце - какой он хочет ответ? Что в Java нет extension-методов, как в шарпах, или я пропустил какую-то мелочь языка?
>>1065560 На месте первого рэндома может стоять более общая структура, чем просто тип того же класса, объект которого ты создаешь. Там может быть и суперкласс, и интерфейс.
Начал учить джаву(такая вот у меня мечта появилась с момента прохождения курсов четырехлетней давности по яве, на которых я вообще ничему не научился и ничего не понял), и не понимаю одной вещи: зачем таки нужны интерфейсы, если в классе, имплементирующем этот интерфейс, все равно придется переопределить этот интерфейс?
>>1066141 Ты не будешь его переопределять, т.к. в интерфейсе нет реализации. Ты будешь его реализовывать.
Интерфейсы - это колдунство, нужное в глубоком энтерпрайзе с развитой системой классов. Интерфейс - это грубо говоря контракт, обязательство. Тимлид сделал, чтобы этот класс реализовывал конкретный интерфейс. И теперь, когда джун-еблан унаследует от того класса и захочет наворотить в нем какой-то свой блэкджек, то он соснет, т.к. по крайней мере названия методов, типы принимаемых и возвращаемых значений, которые он обязан создать - уже заданы интерфейсом.
>>1066141 Ну и еще как вариант. Можно создать объект типа List<String> listHuev
Только фишка в том, что такого класса Лист - не существует. Это интерфейс. Но этот интерфейс реализуют ArrayList и LinkedList. Т.е., если создать так, то можно будет по ходу программы засунуть в listHuev как ЭррейЛист, так и ЛинкдЛист.
Можно ли ловить RuntimeException? Неоднократно слышал, что ловить RuntimeException — это плохая практика, но что если мне действительно надо? Например, мне приходит http-запрос, котором есть параметр, скажем, itemID, который мне нужно преобразовать в int. Я делаю это через Integer.parseInt(), но ведь пользователь может вписать туда что угодно. Можно проверять с помощью регулярки и не пропускать строки, в которых содержатся не только цифры, но и это тоже может не помочь, так как можно ввести огромное число, которое выйдет за пределы int. Ловля NumberFormatException решает все проблемы, но это типа считается зашкваром. Что делать?
аноны, помогите! разбираюсь с тестированием. Есть тестовый метод https://pastebin.com/y9rVjAjV в нем я пытаюсь протестировать поведение контроллера и сервиса. Но почему то ловлю java.lang.NullPointerException на 22 строке Assert.assertEquals(Integer.valueOf(3), client.getId()); через брэйкпоинты посмотрел, что у меня не выполняется метод в анонимном классе (строчка 11). что в нем не так, делаю по книжке, все тоже самое что и в ней
>>1066214 Каким, блять, зашкваром? Если тебе надо обработать исключительную ситуацию -- ловишь эксепшн и делаешь дела. Исходя из ситуации, можешь пробросить исключение повторно, опционально обернув в другой эксепшн (например, который ты прописал в доке к методу. Чтобы пользователь ожидал только ShitHappenedException, а не зоопарк из всяких NullPointerException, IllegalStateException, VasyanException, RuntimeException...).
>>1066231 >>Эт што за хуйня? Может "3"? Хули ты интежер в интежер хочешь переделать? без этой хуйни будет ошибка при компиляции "Error:(74, 15) java: reference to assertEquals is ambiguous both method assertEquals(java.lang.Object,java.lang.Object) in org.junit.Assert and method assertEquals(long,long) in org.junit.Assert match" да и в книжке такой пример
>>1066309 Ты какой-то хуевый программист, если не можешь себе нормальную IDE позволить. А если только вкатывальщик, то разницы с бесплатной версией и не увидишь.
>>1066222 Часом дело не в том, что ты объект newClient объявляешь final, а потом что-то там добавляешь? У тебя тупо нью айди у него будет нулл как мне кажется.
>>1066500 >Часом дело не в том, что ты объект newClient объявляешь final, а потом что-то там добавляешь? final для ссылки не так работает. Он всего лишь не даёт переназначить ссылку. Менять свойства объекта можешь сколько угодно.
>>1066550 Ну тык у тебя там в контроллере return clientService.save(new Client(client.getFirstName(), client.getLastName())); , а в качестве clientService ты подсовываешь мок, где мокнут save только для определённого экземпляра Client -- newClient. Поэтому мок для метода и не отрабатывает, т.к. он ожидает, что ему придёт экземпляр Client'а по ссылке на newClient, а в контроллере ты суёшь вместо этого ему new Client(...). Сделай ockito.when(clientService.save(any())).thenAnswer ... и в Answer с помощью InvocationOnMock сделай добавление в список и возврат того, что тебе передали в мок-метод. Только этого будет не достаточно, т.к. ты в контроллере при передаче клиента сервису теряешь информацию об id (вызываешь конструктор, где только имя и фамилия). Соответственно, id клиента, которого вернёт мокнутый метод, будет null.
>>1066676 Заработало, конечно, но т.к. ты не менял поведение мока, то в итоге тестируешь какую-то хуйню. Подумой: ты даёшь в мок любого клиента, а потом в лист записываешь конкретный экземпляр и возвращаешь этот же экземпляр. Т.е. даже если ты вызовешь service.save(new Client("Vasya", "Pupkin")), то в лист запишется объект newClient={3, "Dmitriy", "Zub"} и вернётся он же. Это баг или фича?
>>1066682 ну да что хуйню какую-то я сделал. просто если я правильно понял, для того что бы протетстировать метод контроллера и сервиса по сохранению, мне надо создать клиента, передать его в мок, аписать в лист и проверить как он записался. как мне тогда это протестить
синхронизированные методы в потоках, по сути, выполняются будто мы пишем без потоков, т.е. обычным способом(последовательно выполняются в общем)? Просто немного не догоняю
автор создает ArrayList, ложит туда единственный объект и передает в функциию. Все, больше этот ArrayList не используется. Нахер создавать аррайлист(выделение памяти)? Да как так то?
Железо в современных смартах реально мощное что бы такое исполнять без тормозов!
>>1067006 > синхронизированные методы > не догоняю Не лезь, она тебя сожрет!
Если тебе нужна ручной многопоточный код (особенно в джаве) - крепко подумай зачем он тебе и сделай так, чтобы был не нужен, или это делал за тебя фреймворк. Если подумал и понял, что нужен ручной многопоточный код - думай опять, пока не додумаешься как сделать без него. Особенно когда сам в конкарренси не понимаешь. это норма
>>1066686 Я тебе уже выше писал -- весь контекст, в котором был вызван мок-метод, находится в аргументе InvocationOnMock метода answer. Берёшь клиента, которого сунули в мок-метод как аргумент, и делаешь с ним что хочешь.
такой вопрос. Написал прогу, которая парсит информацию с нескольких сайтов на стену в вк. Кто может объяснить, как мне сделать сервак, который бы по кд запускал бы эту прогу+создавал бы очередь, т.е. 1 пост - раз в 15 минут. если собирается информации больше - хранить её в каком-нибудь месте, пока не понадобится(т.е. предположим парсинг идёт с новостного сайта, за 15 минут вышло 3 статьи, все их нужно разместить на стену, но с периодичностью в 15 минут) Алсо, нужен ли тут сборщик проекта? Зачем, как и почему?
>>1067150 >как мне сделать сервак, который бы по кд запускал бы эту прогу Покупаешь любой vds с линуксом на борту, запускаешь свою прогу по расписанию с помощью cron. >создавал бы очередь А вот это дописывай в своей проге.
>>1067160 >Не хотелось бы покупать выделенный сервак, хотелось бы самому написать. Чего написать? Тебе в любом случае нужно на чем то запускать свою поделку. Если ты хочешь сам сделать расписание - используй что-то вроде java.util.Timer.
>>1067150 Самую дешевую vps'ку покупаешь и запускаешь на ней свою прогу. А в ней уже реализуешь очереди и прочее. Данные можешь в бд хранить, гугли jdbc. Сборщик по желанию, можно и без него обойтись.
Ребята, есть говнокод графического калькулятора на JavaFX. Подскажите куда проще вылодить, чтобы опытные помогли в корректировке кода. С гитхаб никак не получается разобраться пока, есть что - нибудь попроще?
>>1067348 Ну загугли ты юз-кейсы, ёбана, что как маленький? Я этой хуйнёй вообще не занимался практически, но в гугле много нашёл, чтобы тебе помочь. Дальше мне чтобы тебе расписать, надо самому гуглить, но я думаю, тебе самому будет полезно это сделать.
>>1067158 Какой cron, вы чо, ябанутые? В Java есть ExecutorService с периодическим запуском тасков. Если хочется ещё дальше абстрагироваться, то в Спринге есть аннотация @Scheduled, кажется.
>>1067781 ну почему бы не использовать 2 функции(паттерны там всякие придуманы) или еще лучше - шаблонные методы? в шаблонном методе смотришь какой объект и запускаешь нужный алгоритм. выносишь логику обработки в отдельную функцию, на пример procUser. Если аррайлист то запускай procUser в цикле for, если один объект то просто запускай procUser
>>1070637 Прочитал полностью Шилдта для нуфагов, сейчас гляжу основы Хорстмана - на мой взгляд Хорстман куда лучше. У Шилдта везде ввод с клавы реализован через всратый System.in.read(), про удобный Scanner - полтора слова, у Хорстмана сразу сканнер - без изъебств. Куча полезных советов и в целом не так сухо.
>>1071182 Уже который год захожу сюда по привычке, обоссать вкатывальщиков и подогреть жопу тем что раздел стал ещё мертвее. Куда перекатываться - хуй знает.
Прошлый тонет тут: