Что же там происходит в параллельной галактике? Нужен ликбез о Java для .NET разработчиков

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Я .NET разработчик, работаю больше с web приложениями.

Возник простой интерес и кроме желания помочь своему другу в устройстве на Java разработчика(JDev). И пришло понимание, что я ничего не знаю о «параллельной галалкити», а именно Java галактики.

И в голове начали возникать весьма простые вопросы и некоторые даже из них весьма банальные.
— так же популярны ли у JDev-ов IoC контейнеры, microservice архитектура, SOLID принципы, DDD, MVC паттерн?
— какие стек технологий must have для современного JDev?
— интересно какая ORM сейчас в тренде?
— restful фреймворк?
— фреймворк для написания тестов?

Да, мне стало вообще очень стыдно, за то что я закрылся в коконе .Net-а и совсем даже не знаю, какие в основном приложения пишут JDev-ы? Это mobile или это web? Кто больше востребован и в какую сферу проще попасть?

Да, одно точно знаю, что JDev-ы могут себе позволить сыры подороже чем мы.

Друзья, мною движет весьма благородные мотивы: помощь другу и интерес. Предвкушаю разно рода дискусии, обзывательство, юмора, но попрошу тролей 90 левела воздерживаться от вспышек срача и колких острот, буду благодарен.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Очередной .нотчик обчитался доу и решил уйти в Java?

Коментар порушує правила спільноти і видалений модераторами.

-

Происходят разговоры, помрет или нет

А так Spring, Hibernate, JUnit, Mockito/Powermock, Maven/Gradle — среднебольничный набор

ессно субъективное мнение, на основе личного опыта, общения и чтения в интернетах.
без своей версии причин, чтобы без дискуссий и срача :)

— так же популярны ли у JDev-ов IoC контейнеры, microservice архитектура, SOLID принципы, DDD, MVC паттерн?
IoC контейнеры — Spring наше все.
microservice — мейнстримом в Джава мире не стали.
SOLID принципы — ну это как бы общий принцип, идеал к которому стремятся все.
DDD — мертвее чем microservice.
MVC паттерн — Spring наше все.
какие стек технологий must have для современного JDev?
среднее значение можно вывести из вакансий. и это будет надежней любого мнения в этой теме.
интересно какая ORM сейчас в тренде?
Hibernate бессмертен. он даже перевоплотился в мире PHP в виде Doctrine.
restful фреймворк?
хвалят Jersey.
Но я везде видел только Spring.
фреймворк для написания тестов?
продвинутые команды гордятся использованием Mockito.
jUnit тоже вполне жив.
в основном приложения пишут JDev-ы? Это mobile или это web?
эммм... сервер сайд пишут. а уж под что — второй вопрос.
обычно в проектах две команды — джависты=бекендщики, и фронтэндщики (на ExtJS, Angular, etc). нередко сидят в географически разных офисах :)
по другому — full-stack программист на джаве — это нонсенс, абсурд. или талантище, реальный синьор
Кто больше востребован и в какую сферу проще попасть?
ммм... если вычеркнуть из мира Джавы Андроид, то попасть можно в сервер-сайд. и все. больше некуда :)
самая массовая работа у нас — аутсорс легаси проектов.
есть конечно немного и продуктовых и стартапоподобных (в америке кто-то нашел деньги на супер-проект — тут педалят), но туда берут от хорошего мидла и выше.
Да, одно точно знаю, что JDev-ы могут себе позволить сыры подороже чем мы.
легаси проект потому и нужно сопровождать, что он оказался успешен для бизнеса.
и бизнес понимает что много дешевле будет заплатить дорого за его сопровождение, чем написать с нуля, или перейти на другое ПО.

кстати, мне казалось что в мире .NET сопоставимо платят — клиенты то того же уровня.
позволить себе лицензионное серверное ПО, — уже показатель что небедные.

так что вы может отдельным постом расскажите что там у вас, в параллельной галактике происходит. как Azure — прирост заказчиков серьезный? и т.п.

P.S.
да, насчет трендов.

на них можно «не смотреть». в легаси проектах новое использовать низя. (утрировано конечно)
тренды это о новых проектах.
куда, как уже писал — берут только от серьезного мидла и выше.

Спасибо за комент. Отпишусь позже о нашей галактике )

продвинутые команды гордятся использованием Mockito.jUnit тоже вполне жив.
 и еще Spock (хоть и не так популярен, но после него jUnit кажется сильно неудобным и ограниченным)
IoC контейнеры — Spring наше все.
или Google Guice
хвалят Jersey.Но я везде видел только Spring.
особенно SpringBoot хорош ... но есть еще и DropWizard, Ratpack .... Vert.x — хотя это не сугубо про REST ....
full-stack программист на джаве — это нонсенс, абсурд.
:) абывает еще + автоматизация серверов для комплектности :)
Hibernate бессмертен.
... бывает еще и jOOQ, но он не так популярен ... или еще лучше без ORM, но надо гуманную обертку над JDBC (Groovy.sql например ...)

бывает конечно.

и Tapestry5 где-то бывает.

речь о массовости, а не о том что бывает в мире Джава. он огромный, чего в нем только нет.

DDD — мертвее чем microservice.

Вроде в Axon Framework были какие-то зачатки для этого?

не знаю, не смотрел.

прочтение одной из книг по DDD(редкое дело, купил бумажную!) у меня вызвало двоякое ощущение.
с одной стороны идеи здравые.
а с другой стороны, глядя на примеры кода, было постоянное дежавю, что я уже это все где-то видел.

а когда понял что это академический ООП с его — вот фигура, наследуем прямоугольник, от прямоугольника, квадрат, ... только в свежей упаковке, интерес пропал дочитывать.

потом еще правда пару статей по методологии прочел, и окончательно решил подождать когда первопроходцы покажут как предлагаемый ими очередной вид waterfallа переложить на аджайл.

ну, прошло сколько, 2, или 3 года... и статьи о DDD вообще перестали мне попадать на глаза. наверное первопроходцы, евангелисты, и т.д. еще в пути. просто козьими тропами пошли. огородами и тылами.

думаю как дойдут — мне придется пересмотреть свои поверхностные выводы что привел.

Встречается много интересного. Вот, можно посмотреть www.youtube.com/.../UC3PGn-hQdbtRiqxZK9XBGqQ, www.infoq.com/...ns/ddd-microservices-2016, почитать vladikk.com/.../tackling-complexity-ddd. В моем дайджесте чаще начали появляться интересные материалы по теме. Концепция отлично ложится на микросервисную архитектуру.

Пережившая хайп одна технология отлично ложится на пережившую хайп другую технологию. Верю.
Как и то что если поискать — то найти можно инфу про ушедших за кулисы. Кому интересно.
А кому неинтересно — и не заметит что они живы. Вот об чем я. Ну и о том почему DDD неинтересно лично мне.
Про микросервисы — на яп и инфраструктуре типа джавы и дотнет они дают мало пользы, искуственны. Вот на питоне, ноде, ввиду их динамической природы, или на Go ввиду его простоты и заточенности рантайма на многопоточность — да.

DDD неинтересно лично мне
не повод вводить в заблуждение других о жизнеспособности подхода.
на яп и инфраструктуре типа джавы и дотнет они дают мало пользы, искуственны
Не хочу вступать в дискуссию, но надеюсь, Вы допускаете мысль, что можете ошибаться в своих выводах. Еще можно на досуге поинтересоваться Actor Model, которая тесно пересекается c DDD и микросервисами и реализована на обеих платформах. Вот любопытная статья по теме highscalability.com/...tions-daily-using-ju.html.

Я и не вводил. А знаю что одной из моих сильных сторон является широкая осведомоленннсть. Типа журналист обозреватель. И если технология ушла в подполье, исчезла из обсуждений, то конечно она может и жива, просто прошла пик хайпа.
Но так я ею еще и интересовался как программист, как и микросервисами, то и поделился соображениями — почему она ушла.
А то что есть ее фаны — так свой досуг на ушедшую технологию я трачу когда интересна лично мне.
Так что как раз вы вводите в заблуждение некропостингами о невзлетевшем DDD

А ошибаться я конечно могу. И даже написал условие — когда она вернется и станет обязательной для звания мидла.

Про Actor model вы тоже похоже не в курсе, почему в Go применяется не она.
Вы точно хотите обсудить ее недостатки, которые не сделали ее мейнстримом?
И, в том числе и в хайскалабилити ;)

ушедшую технологию
Чушь. DDD — это набор подходов (в том числе, и общения с бизнесом), практик и шаблонов проектирования. Про репозиторий слышали? — Оттуда.
когда она вернется и станет обязательной для звания мидла
Обязательной она не станет потому, что добавляет сложности разработке и стоит применять не везде, а с головой. Если нужно пыщь-пыщь и в продакшен — transaction script наше все.
Про Actor model вы тоже похоже не в курсе, почему в Go применяется не она.
Похоже, что вы не в курсе, что это паттерн, и что применять его можно и в Go. Это инструмент который для некоторых задач пододит, для некоторых нет github.com/rogeralsing/gam. Или Вы не программист, раз не знаете об этом?
Вы точно хотите обсудить ее недостатки, которые не сделали ее мейнстримом?
Нет, точно не хочу. Все более-менее сложные технологии нужно уметь готовить. Что, очевидно, не для всех. Ниасилившим, видимо, проще оправдаться тем, что они не взлетели или не стали мейнстиримом, чем понять какие задачи и проблемы они помогают решать.
DDD — это набор подходов ...

поставьте вместо DDD — X

и убедись сами что фраза пустопорожняя.

хотя, понятно, не сможете.

ок, берем типа «определение»
X — это набор подходов (в том числе, и общения с бизнесом), практик и шаблонов проектирования.

Мы можем с него понять что такое X?

маректинг базз это.

Обязательной она не станет потому, что добавляет сложности разработке
«Ты сказал!»

(кто не в курсе — это восклицание, которое стало известно благодаря нередкому применению в самой массовой книге — Библии — означает
ты САМ сказал то, что я и подразумевал, объяснял. Ты сам привел мои аргументы, сам подтвердил то что я тебе говорил)

Похоже, что вы не в курсе, что это паттерн, и что применять его можно и в Go.
похоже вы не в курсе что практически любой паттерн можно применять где угодно.
что не говорит о том что такой-то паттерн применяется где угодно, или массово.

«аргумент блондинки» — любимый у большинства программистов, да.

Ниасилившим, видимо, проще оправдаться тем, что они не взлетели или не стали мейнстиримом
не разумеющих вопрос топикастера попробую разжевать

вопрос был о массовых, применяемых технологиях в мире джава.

поэтому конечно, .NET Developer лучше знает что происходит в мире джава чем ниасилвиший ее за почти 5 лет, да.

Или Вы не программист, раз не знаете об этом?
стопицот раз повторял, и повторю — такого кретина, неуча как я — еще нужно поискать не только на доу, а вообще в айти тусовке.
любой грамотный типа вас может полистать уж свыше 6 тыс постов на доу и со всей очевидностью прийти к такому выводу.

так что да, вашая правда, вы попали не в бровь а в глаз.
вы очень умны и проницательны.

Спасибо, Ваши коментарии не перестают радовать :)

О боже, какие мы ленивые, что даже лень погуглить или посмотреть актуальные стеки в Java вакансиях. В ленте dou как раз в целей просвещения ведется java дайджест.

....
Русский форум. Украинский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты мудак. ©

Олег, нисколько не лень и поверь что уже посмотрели вакансии и проанализировали. А насчет дайджеста, меня .Net дайджест вообще не радует, какой либо полезной информацией.

dou.ua/...sers/silverwolf/articles вот 27 выпусков Java дайджеста. Очень толково как по мне написано в плане трендов. Может ты ищешь серебряную пулю, так ее здесь нет.

Присылай линки на инфу, которую считаешь полезной.

Да, одно точно знаю, что JDev-ы могут себе позволить сыры подороже чем мы.

Только в кровавом энтерпрайзе.

— какие стек технологий must have для современного JDev?
ну еще счас для джавистов мастхэв Scala (ну и всякие фреймворки типа Play), насколько я понимаю.
Хотя если друг еще не очень опытный программер (junior), то скалу возможно ему рано будет (хотя кто знает, может заинтересует его и понравится)...
-

з.ы. а так из ide и редакторов для джавы, кроме упомянутых

IDE — IntelliJ/Eclipse
есть еще NetBeans, а также по-моему довольно известный редактор jEdit (правда он не только для джавы, но он написан на джаве и у него есть плагины для джава девелопинга, отладки и прочего). Хотя для профессиональной джавы наверное лучше все-таки IDE сразу юзать.
мастхэв Scala (ну и всякие фреймворки типа Play)
Да ладно?
Скала она как бы сама по себе

как язык да, но она тоже поверх jvm (как и джава). ну и видел такую инфу, что одно время (может и счас) она рассматривалась как замена джавы.
Поэтому как я понимаю (судя по конференциям по джаве и скале), многие джависты либо юзают скалу как второй язык, либо перешли с джавы на скалу.

Сам не джавист поэтому о реальном положении вещей ни в джаве, ни в скале не знаю (возможно у скалы действительно своя экосистема, уже не имеющая с джавой ничего общего помимо jvm)...

так вроде как тиобе составляет рейтинг языков по статистике запросов в гуглах и яндексах, насколько я знаю)
т.е. инфу по скале просто мало ищут в инете (ну и самой инфы по-видимому не так уж много, особенно по сравнению с той же джавой).

так вроде как тиобе составляет рейтинг языков по статистике запросов в гугле, насколько я знаю)
совершенно верно.
хотя там и чуть хитрее, но суть да, такая.
т.е. инфу по скале просто мало ищут в инете)
то есть потому что

— толи скала такая простая, что с ней все много проще, чем с той же джавой, раз по ней столько запросов что она в топе с таааким отрывом.
— толи скалисты такие супер умные, и им хватает доки, книг, и профильных форумов
— плюс еще может скалисты практически не пользуются гугло поиском в профессиональных интересах.

— толи скала такая простая, что с ней все много проще, чем с той же джавой, раз по ней столько запросов что она в топе с таааким отрывом.
— толи скалисты такие супер умные, и им хватает доки, книг, и профильных форумов
— плюс еще может скалисты практически не пользуются гугло поиском в профессиональных интересах.
может быть)
может быть)
я тоже не исключаю что человек может воскреснуть на третий день.

Кем рассматривалась?

хз. просто как-то смотрел пару видео на ютубе про jvm-языки и скалу, где проскальзывало типа «скала это улучшенная джава» или что-то вроде того. Но это наверное были давнишние видосы. когда скала еще была новым языком, а в джаву еще не добавили всяких функциональных плюшек.
Т.е. сейчас это уже наврное не актуально, скала просто заняла свою нишу на jvm-платформе и все.

Ну так фанаты языка могут считать как угодно, это же хотелки.

Этих замен уже сколько было. Сейчас вон Котлин пиарят.
Это просто Еще Один Язык который работает на jvm.

Коль мы сравниваем здесь две экосистемы, то параллель следующая:
Scala ~= F#.

Концептуально языки очень похожие, и по области применимости тоже. Скале добавляет популярности, скорее, не Play, а удобство написания кода под задачи обработки больших и потоковых данных в Hadoop и Spark.

удобство написания кода
fxd

С чтением, впрочем, тоже ситуация лучше.

Веб stack базируется вокруг экосистемы Spring (Spring MVC, REST, Hateouse, security). Поговорявают, что мол Oracle решило забить на Java EE.

ORM — связка Spring Data + Hibernate

UTs — Mockito, jUnit.

Build systems — Maven, Gradle (больше для Ведра).

Из сторонних либ — Apache commons (странно, что её не включили в JDK).

IDE — IntelliJ/Eclipse

Больше интересует, не веб стек. Так как я понял, что веб разработка не сильно популярна в Java сфере.

Смотрите в сторону Spring DI (dependency injection) + Spring Data + Hibetnate as the persistence provider. Эта связка везде есть, где есть Java backend

Если вам интересно ML, то лично я не видел хороших либ по ML, написанных на Java.

супер, спасибо. Это то что надо.

Кстати, забыл сказать, что вы столкнётесь с понятием конфигурация. Так вот, забивайте болт на XML config, и сразу учите Java configuration. Параллельно смотрите в сторону Groovy configuration.

В .Net еще не работал в команде, где бы отказались от XML config. Хоть и есть решения перехода на json config и работал с yaml-ом.

Тут просто есть trade off.

При помощи языковых конструкций (например, Java or Groovy) можно добиться динамической конфигурации контекста.

А вот при помощи xml такого не добьешься, хотя можно без проблем переделоить приложение.

+ еще по

Java configuration
можно пройтись отладчиком усли что :)
Тут просто есть trade off.

При помощи языковых конструкций (например, Java or Groovy) можно добиться динамической конфигурации контекста.

В .NET это тоже есть, в Katana так точно.

Человек спросил про джава и попросил воздержаться от сравнения языков.

Вопрос на 5 минут гугления.

— так же популярны ли у JDev-ов IoC контейнеры, microservice архитектура, SOLID принципы, DDD, MVC паттерн?

да. (есть мнение, что в .NET они стали популярны под воздействием Java, но это явно за гранью вопроса)

— какие стек технологий must have для современного JDev?
— интересно какая ORM сейчас в тренде?
— restful фреймворк?
— фреймворк для написания тестов?

Spring — IoC, Spring MVC и/или Jersey для Web API, Hibernate ORM, jUnit для тестов — это хороший стек для Web.

в основном на Java пишут энтерпрайзный и не очень веб, много BigData и Machine Learning. Есть еще Android — но это совсем отдельная ветка.

Спасибо, за дельный комент.

(так как вы попросили воздержаться от срача в комментариях — потому комментариев пока и нет, не считая этого)

Підписатись на коментарі