Как выучить Java с нуля. Книги, видеоуроки и технологии

Привет всем. Меня зовут Виктор. Я работаю в американской продуктовой компании инженером, где пишу в том числе и на Java. В своей статье «Как пройти плен, не сломаться и стать программистом» я вскользь коснулся темы, как я начинал учить программирование, здесь я расскажу об этом подробнее.

Эта статья в первую очередь для тех, кто только собирается начать заниматься программированием. Будет круто, если мои коллеги-программисты в комментариях добавят что-то из своего опыта. Мое мнение сугубо субъективное, так как большую часть учил я сам, по видеоурокам и книгам.

Как научиться программировать

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

Большую часть этого времени обязательно должна занимать практика. Кодить, кодить и еще раз кодить. Забудьте об Instagram, TikTok, играх и видосиках на YouTube на то время, пока будете учить программирование. Без тайм-менеджмента тут никуда. Если у вас есть с этим проблемы, почитайте эту статью, где я поделился, как с этим бороться.

Не верьте тем курсам, которые обещают вас обучить Java и устроить работать за 3 месяца. Это принципиально невозможно, если у вас уже нет базовых знаний. На курсы, которые прошел я, и о которых расскажу ниже, был конкурс — 15 человек на место. Там было 4 этапа! Все поступившие туда студенты уже знали Java Core на нормальном уровне.

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

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

Могу сказать одно — в IT нет ограничений по возрасту. Я знаю программистов с уже 5 годами реального опыта в 19 лет и людей, которые устроились работать далеко за 40.

Если вы не готовы тратить каждый день выделенное время (минимум 2 часа) на теорию и написание кода, тогда вы никогда не достигните своей цели. Даже если у вас есть время, вы должны быть готовы к тому, что что-то в вашем коде часто не работает как надо, к тому, что на работе будет отсутствовать нормальная документация, старшие коллеги в большинстве своем не будут иметь ни времени, ни желания что-то вам объяснять или учить.

Почему именно Java?

В первую очередь вам нужно понять, для чего вы хотите учить Java. Для веб-разработки? Тогда вам придется выучить и JavaScript. Разработка по Android? Лучше обратить внимание на Kotlin, это язык-наследник Java для мобильной разработки, плюс он поддерживается Google. Думаете о Machine Learning или AI? Тогда смотрите в сторону Python и C#.

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

Вот этот гайд на DOU, маст хэв для каждого, кто хочет изучать Java. Некоторая информация уже устарела, но он все еще актуален.

Всем начинающим я бы посоветовал канал Сергея Немчинского — наверное, одного из самых известных джавистов в СНГ и точно самого известного в Украине.

Фото с Немчинским

Для пообщаться есть группа в Телеграме, основанная студентами киевского КПИ.

Интересный канал — rozho)))k.

Я начну с того, что если вы чего-то не понимаете, это не значит, что вы безнадежны! Часто это может означать, что вас плохо учат или подача информации вам не подходит.

Если вы в чем-то не разбираетесь, значит вы это еще не выучили и с этим не работали! Не обращайте внимания на разработчиков, которые могут на вас смотреть из-за этого свысока. Принимайте критику, но игнорируйте снисходительное отношение.

Нужно ли идти в университет ради программирования? Не обязательно. Корочка вам пригодится, но в Украине фундаментальные знания по технологиям и алгоритмам преподаются плохо в большинстве случаев.

Мой рецепт успеха такой: Учишь основы — Идешь на бесплатные курсы (интернатуру) в большую IT компанию — Устраиваешься на работу туда или в другую компанию.

Огромный мир Java-разработки

Java (вимовляється Джава) — об’єктно-орієнтована мова програмування, випущена 1995 року компанією «Sun Microsystems» як основний компонент платформи Java. З 2009 року мовою займається компанія «Oracle», яка того року придбала «Sun Microsystems». В офіційній реалізації Java-програми компілюються у байт-код, який при виконанні інтерпретується віртуальною машиною для конкретної платформи. Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об’єктну модель С++, проте її модифіковано.

Один из последних мемов о Java

Книги

Изучать язык я начал с «Философии Java» Брюса Эккеля. Книга хороша, но для начинающего будет совсем не понятна. И наверное она уже немного устарела, так как ее давно не обновляли.

В Java-мире есть две основные книги-справочника об этом языке программирования — книга Герберта Шилдта Java: The Complete Reference 11 edition и книга Кея Хорстманна Core Java Volume I—Fundamentals (Core Series). Я читал книгу Шилдта. Можно также прочитать две книги для подготовки к OCA: Oracle Certified Associate Java SE 8. Написаны очень доходчиво.

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

Погуглив «изучение Java», вы обнаружите, что первой ссылкой после рекламы там будет JavaRush. Это очень популярная платформа именно для начинающих джавистов. Мне подача информации не зашла, и я почти опустил руки, думая, что программирование — не мое. Помучавшись там пару недель, я ради интереса загуглил в Youtube «Java за час», и там наткнулся на видео Гоши Дударя. Неспроста там уже почти 800К просмотров. Парень дело говорит и доходчиво объясняет.

Очень рекомендую прочитать книгу: The Complete Software Developer’s Career Guide: How to Learn Your Next Programming Language, Ace Your Programming Interview, and Land The Coding Job Of Your Dreams. Автор специфический. Но книга очень хорошая, там собраны по крупицам умные мысли и лайфхаки, похожими с нами делятся такие ребята, как Сергей Немчинский, Владимир Рожков и другие.

Большинство моих знакомых разработчиков не рекомендовало идти на платные курсы, и я начал учить все сам. Обширный видеокурс по Java. Очень быстро я понял, что мне обязательно нужно выучить Spring.

Spring фреймворк

Java и Spring в наше время — не разделимые вещи. Что такое Spring? Это модульный фреймворк, я бы сказал, целая экосистема, которая конкретно облегчает разработку и уменьшает количество бойлерплейт-кода. Есть отличный курс по Spring. Автор доходчиво объясняет на простом языке.

ORM

Работа бэкенд-разработчика подразумевает под собой взаимодействие с базами данных, и тут на сцену выходят ORM (Object Relational Mapping) tools. Де-факто, в Java-мире Hibernate — монополист при работе с базой. Большинство опытных разработчиков расскажет вам, сколько спагетти-кода приходилось писать на чистом JDBC (Java Database Connectivity), пока на сцену не вышла JPA в связке с Hibernate. Все еще есть проекты, которые работают олдскульно, но это все будет легаси, соглашаться на такое можно только за адекватные деньги.

Системы сборки проектов

Каждый Java-проект так или иначе работает с одним из автоматизаторов сборки. Это будет или Maven или Gradle. Что лучше? Я работаю и с тем, и с тем. Принцип работы у них схож, они используют общий репозиторий, но внутренности кардинально отличаются. Gradle активно развивается и работает на Groovy, что добавляет гибкости в сборку проекта. Вы буквально можете запрограммировать его под себя. Maven старше, работает на XML. Конфиг pom.xml получается увесистым, развивается медленно. Вы сами можете взвесить все «за» и «против» здесь.

Тестирование

В программировании никуда без тестирования. Мидлы-сеньоры тесты писать не любят, поэтому будете их писать вы. По большей части тесты делятся на интеграционные и юнит-тесты. Интеграционные подразумевают под собой бизнес логику, обращение к реальному API и часто работают с реальной базой данных, а юнит-тесты или модульные тесты просто принимают значение от вызова метода и сравнивают полученное с желаемым. Тут рулит JUnit и Mockito.

Прелесть всех описанных выше технологий в том, что они бесплатны.

Java-курсы

Прочитав несколько книг и посмотрев пару курсов, я параллельно начал пилить свои маленькие проекты, и подаваться на разные интернатуры от компаний, в основном от EPAM.

Если сравнивать сложность входа, то попасть на курсы (интернатуру) в SoftServe было конечно сложнее, чем в EPAM.

Я был принят везде где подавался, кроме эпамовских курсов ,но я выбрал Сёрв. Хочу заметить, что у меня за плечами уже было больше года изучения Java и Английский B1. Английский жизненно необходим везде — и в учебе, и в работе. Учите его как можно больше. В этом обсуждении на DOU можно просмотреть и выбрать школу.

Важно уметь продвигать себя. О ваших успехах никто не узнает, пока вы сами о них не расскажете. Из 150 людей, желающих прийти в Сёрв, я знал не больше всех, я уверенно держался на последнем финальном техническом собеседовании, ну и ребус правильно решил в конце.

Курсы при компании хороши тем, что ты работаешь в команде и часто на проектах, приближенных к реальным. Хотя я знаю funny stories о таком подходе от других ребят.

Итак, с Java-миром мы закончили, переходим к вещам, которые необходимо знать в современных реалиях кроме программирования.

Технологии

Базы Данных

Делятся на реляционные и нереляционные. Большой популярностью пользуются именно реляционные. Туда входят RDBMS (Relational Database Management System), такие как MySQL, PostgreSQL и другие. Суть у них одна — запросы и еще раз запросы. Как они работают, знать нужно. Хороший ресурс: SQL Tutorial.

Из нереляционных я знаю MongoDB и Redis. Работал больше с Redis на проекте. Их принцип кардинально отличается от SQL. Вот симпатичный Youtube-курс по MongoDB.

Git — система контроля версий

Ни один проект не работает без Git. Эта штука позволяет разработчикам, работающим на одном и том же проекте, не портить жизнь коллегам своими изменениями в коде. Запилил фичу, создал пулл реквест, заапрувили и в develop смерджили. Только желательно, когда работаете над своим куском кода, почаще стягивать себе последние изменения, иначе это будет тяжело.

Linux

Девяносто с чем-то процентов серверов в мире работают на Linux. 100 процентов супер-компьютеров работает на Linux. Вот вам 111 фактов о линуксе, взрывающих мозг.

Да, перейти с Винды на Линукс — это больно. Зато он быстрее работает, особенно на старых ноутбуках и компьютерах, и не греет процессор. Чем быстрее вы с ним подружитесь, тем вам будет легче в продакшене. Выберете себе подходящий дистро и вперед. Рекомендую Ubuntu, Mint или Centos.

Линукс использует в терминале bash. Ему «сто» лет и он никуда не собирается деваться.

Обязательно поставьте себе сверху fish или zsh. zsh — практически тот же bash, но удобнее.

Облака

Все Java enterprise проекты крутятся на облаках и меньше на собственных серверах. Есть три крупных игрока на этой почве: AWS, Google Cloud и Azure. Я работаю с AWS от Amazon, так что тут на ваше усмотрение.

IDE

IDE — среда разработки программного обеспечения. Я не знаю, как люди раньше в принципе жили без IDE и Maven-Gradle. Intellij IDEA — тут стандарт, и точка. Есть еще Eclipse. Но она не конкурент IDEA. Есть бесплатная урезанная версия и платная. Студентам, кстати, предоставляется бесплатно. Нужен только .edu имейл.

О Docker, Kubernetes тоже можно вспомнить. Но это совсем уже будут DevOps-задачи.

Когда будете готовиться к собесу, есть хороший сборник вопросов на DOU.

Эпилог

Ну вот мы и подошли к концу. Перед вами просто непаханое поле. Но его можно пройти шаг за шагом. Потом будете оглядываться назад на все свои мучения с удовольствием, отдыхая на Бали с коктейлем и красивым пляжем. Стучитесь ко мне в LinkedIn, если у вас появятся вопросы.

Сподобалась стаття? Натискай «Подобається» внизу. Це допоможе автору виграти подарунок у програмі #ПишуНаDOU

👍ПодобаєтьсяСподобалось17
До обраногоВ обраному9
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-мире Hibernate — монополист при работе с базой. Большинство опытных разработчиков расскажет вам, сколько спагетти-кода приходилось писать на чистом JDBC (Java Database Connectivity), пока на сцену не вышла JPA в связке с Hibernate

Так але не так.
Хібер фактично використовується «під капотом» багатьох джава проектів.
Але навіть на рівні JPA, програмісту вже значно простіше ніж працювати з хібером.
В проектах на SpringData від хібера та JPA лишаються лише анотації, а вся робота йде через інструменти спрінга.

«Спагетті» з прямою роботою з JDBC теж вже давно ховають за зручнішими інтерфейсами типу Spring JdbcTemplate (та інші обв’язки)

А как же мапперы в Jdbc Template☺️

ORM

Работа бэкенд-разработчика подразумевает под собой взаимодействие с базами данных, и тут на сцену выходят ORM (Object Relational Mapping) tools. Де-факто, в Java-мире Hibernate — монополист при работе с базой. Большинство опытных разработчиков расскажет вам, сколько спагетти-кода приходилось писать на чистом JDBC (Java Database Connectivity), пока на сцену не вышла JPA в связке с Hibernate. Все еще есть проекты, которые работают олдскульно, но это все будет легаси, соглашаться на такое можно только за адекватные деньги.

А чому саме «має на увазі»?
Є купа проектів, які не використовують бази даних. Це може бути той самий мікросервіс, який взаємодіє тiльки з іншими мікросервісами.
І Hibernate — це не ORM tool, це ORM фреймворк.

Спасибо за комментарии Сергей. Я надеялся, что вы что-то напишите. Уважаю ваши статьи и курсы 👍

Як я розумію, ви хотіли написати простою та зрозумілою мовою, щоб цей текст зрозуміли люди, які тільки хочуть потрапити до ІТ, не особливо вдивляючись у деталі.
Але ж тут на ДОУ більшість — саме люди з великим досвідом роботи в ІТ, які звикли вчитуватися в деталі.

Я описал именно то, что сам и большинство моих знакомых джавистов прошло за последние пару лет

И так и так правильно.
Wikipedia — Hibernate ORM (or simply Hibernate) is an object—relational mapping tool for the Java programming language

Hibernate состоит не только из ORM, там несколько проектов,
Hibernate = ORM + Search + Validation + OGM + Tools + Reactive + Shards

hibernate.org

Тестирование

В программировании никуда без тестирования. Мидлы-сеньоры тесты писать не любят, поэтому будете их писать вы. По большей части тесты делятся на интеграционные и юнит-тесты. Интеграционные подразумевают под собой бизнес логику, обращение к реальному API и часто работают с реальной базой данных, а юнит-тесты или модульные тесты просто принимают значение от вызова метода и сравнивают полученное с желаемым. Тут рулит JUnit и Mockito.

Прелесть всех описанных выше технологий в том, что они бесплатны.

Ще один «опус».
У сучасних проектах будь-який програміст пише тести на код.
Це по-перше. По-друге, саме юніт-тести перевіряють бізнес-логіку, а інтеграційні тести — взаємодію (інтеграцію) між юнітами.
І що таке «реальний API»? Чим він відрізняється від нереального?

Типова стаття 2 річного сіньйора.

Наверное имелось ввиду тот который будет потом использоваться в продакшене...

Ну так API буде один і той же, що в тестах, що на production. А ось реалізація цього API справді може відрізнятися.

Да так и есть, через апи будет эмулироваться передача дефолтных данных, например в тех же юнит тестах или в спец апликухах, например, постман или тандер клиент....Если все зеленое зальют на продакт...

я знаю где не пишут

Ви написали свій пост, щоб люди знали, як не треба робити?

То путь, что я описал имеет и плюсы и минусы. Проекты о которых вы говорили выше, использующие Java EE, Guice и т.д. в меньшинстве. Если посмотреть на вакансии по Java, большинство содержит стек сейчас:
Java 8-11, Spring, Hibernate, SQL.
Новичку нет смысла учить то, что потом скорее всего мало пригодится.

Системы сборки проектов

Каждый Java-проект так или иначе работает с одним из автоматизаторов сборки. Это будет или Maven или Gradle. Что лучше? Я работаю и с тем, и с тем. Принцип работы у них схож, они используют общий репозиторий, но внутренности кардинально отличаются. Gradle активно развивается и работает на Groovy, что добавляет гибкости в сборку проекта. Вы буквально можете запрограммировать его под себя. Maven старше, работает на XML. Конфиг pom.xml получается увесистым, развивается медленно. Вы сами можете взвесить все «за» и «против» здесь.

Що означає Maven «працює на XML»?
Різниця між ними якраз величезна, тому що Maven використовує XML файли для конфігурації, а Gradle є свій DSL, який ви можете використовувати в скриптах на Groovy або Kotlin.

Spring фреймворк

Java и Spring в наше время — не разделимые вещи.

А чого ви це взяли?
Є купа людей, які пишуть на Kotlin та використовують Spring.
Це по-перше. По-друге, є ВЕЛИЧЕЗНА кількість проектів, які використовують все, що завгодно, крім Spring — Java EE, чистий Guice, різні microwebframeworks, самописні фреймворки і т.д.

Базы Данных

Делятся на реляционные и нереляционные. Большой популярностью пользуются именно реляционные. Туда входят RDBMS (Relational Database Management System), такие как MySQL, PostgreSQL и другие. Суть у них одна — запросы и еще раз запросы. Как они работают, знать нужно. Хороший ресурс: SQL Tutorial.

Вибачте, але суть реляційних БД — це не запити. Своя мову запитів є і Mongo, і Redis. Поєднує між собою всі реляційні БД — наявність relations (таблиць) та зв’язків між ними.

1. А стоит ли Java того? Интересуюсь для себя, так как сам изучаю Java, но посматриваю в сторону Node.js. Сложилось ощущение, что в Node.js и на входе и на senior позиции намного меньше требования

2. Подскажите, читал, что многие жалуются о том, что проекты на Java явное legacy, где ты не будешь получать удовольствие от работы и не будешь видеть результат своего труда. Какое соотношение таких проектов на рынке? Всё ли так плохо?

А стоит ли Java того? Интересуюсь для себя, так как сам изучаю Java, но посматриваю в сторону Node.js.

Не вартує. Не знаю чого саме, але на такі питання іншої відповіді не буває.

2. Подскажите, читал, что многие жалуются о том, что проекты на Java явное legacy, где ты не будешь получать удовольствие от работы и не будешь видеть результат своего труда

Таке саме, як і на інших мовах. Проблема в тому, що багато людей починали свою кар’єру через джаву і не мають досвіду з типовими проектами на інших стеках, а ще джунів часто беруть на такі собі проекти. Як результат люди вважають, що у сусіда трава зеленіша. А ще це стереотим з початку 2000-х, коли весь ентерпрайз був на джаві.

Просто проекти на Node.js до легасі не доживають )))

Просто проекти на Node.js до легасі не доживають )))

Доживають, просто ті хто його бачив не виживають, щоб про це розповісти :)

А стоит ли Java того?

Для чего стоит? Для рынка труда? Возможно. В любом случае хорошая база и материала много. А дальше посмотрите, все развивается очень быстро.

Сложилось ощущение, что в Node.js и на входе и на senior позиции намного меньше требования

Синьорная позиция она вообще не о языках программирования или о стеке. Просто в каких-то сообщеставах существуют бородатые и веками оформленные практики и золотые стандарты. В данном случае Java бородатей и традиций больше. Node.js куда моложе и привлекательней когда освоил немного JavaScript-а и хочется в бекенд пойти, а другого еще не выучил.

многие жалуются о том, что проекты на Java явное legacy, где ты не будешь получать удовольствие от работы и не будешь видеть результат своего труда

Из-за возраста Java это логично. Такое есть в каждом языке и платформе которой больше 10-15 лет от роду: C# (ASP.NET), Python, JavaScript, Ruby on Rails и иже. Но жалуются не на старый язык или платформу, а на подход в проектировании и общую архитектуру, качество кода. Если писали обезьянки, то не мудрено (90% случаев так и будет). Перед тем как зайдете на проект, уточняйте с чем работать прийдется и кто наставники.

Вот видео, очень толково объясняет, хоть оно и 2011 года, для начала пойдет
www.youtube.com/watch?v=iq7lfo_KL6g
Книги вот эти можно почитать,
careers.epam.by/training/books
если вспомню еще, потом добавлю...

Мидлы-сеньоры тесты писать не любят

Тесты — единственный способ быть уверенным что твое поделие работает.

Гоните такого синьора ссаными тряпками!
Бейте его, насмехайтесь над ним!

Принижуйте щодня. В ранковій каві молоком малюйте слово «Fact».

В ранковій каві молоком малюйте

то нэ молоко

«Да, перейти с Винды на Линукс — это больно. Зато он быстрее работает, особенно на старых ноутбуках и компьютерах, и не греет процессор. Чем быстрее вы с ним подружитесь, тем вам будет легче в продакшене. Выберете себе подходящий дистро и вперед. Рекомендую Ubuntu, Mint или Centos.»

Linux Desktop — какаха. Не треба на нього переходити.

какаха

Так, тільки вінда ще гірша

Linux Desktop — какаха. Не треба на нього переходити.

Все там нормально. А для розробника корисно мати девопсячі скіли які набуваються за роботою з лінуксом.

Страждання за лінуксовим десктопом розвиває скіл стресостійкості. Або розхитує нерви.

Страждання

Які страждання?

Боротьба з кривим гуі і багами

Боротьба з кривим гуі і багами

В мене немає кривого гуі та багів. Ви працювали за лінуксом?

За Убунтою(ГНОМ) і КДЕ. Перше менш баговане але більш страшне. Друге менш страшне але більш баговане. Загалом юзер експіріенс негативний в обох. Може я і дев, але на погані інструменти не підписувався.

За Убунтою(ГНОМ) і КДЕ

Коли?

баговане

Які баги у вас були?

Коли?

Пів року назад.

«Які баги у вас були?»

Від дрібних до повного зависання системи в КДЕ.

Пів року назад.

І як довго?

Від дрібних до повного зависання системи в КДЕ.

Цікаво що ви там там таке робили.

І як довго?

На протязі року десь. Я юзав цю ОС для девелопменту.

Цікаво що ви там там таке робили.

Нічого особливого.

Линукс хорошо освоить для работы, но это точно не лучшая система для Домашнего использования.
У меня были Ubuntu 18.04 на Thinkpad T450 и сейчас 20.04 на Thinkpad T490.
Одни и те же проблемы.
После нескольких часов гибернации отваливается wifi. И это не лечится лог аутом и рестартом сервиса — только перезагрузка. Бывает не ложится спать и работает на полную, разряжая батарею в ноль. TWS наушники работают похабно.

Бывает не ложится спать и работает на полную

Також мав подібне регулярно. Десктоп.

Нихера там не нормально. Десктопный линукс это боль.

Нихера там не нормально.

Що саме ненормально?

Десктопный линукс это боль.

Вже два з половиною роки з лінуксом на десктопі, ніяких болей не маю.

А для розробника корисно мати девопсячі скіли які набуваються за роботою з лінуксом.

За серверным линуксом собственно, без иксов и GUI в принципе: кубик настроить там, апачи или ядро пересобрать.
Да и все те же навыки вполне так же получаются в WSL, GitBash и прочем cygwin ранее под виндами. Собственно ту же полноценную убунту из microsoft store туда ставите и радости море

Как альтернативу Хиберу рекомендую JOOQ

Бесплатный для бесплатных баз, платный для платных.

Он же платный вроде

Гірше, він поцоватий:
www.jooq.org/download/#databases

PostgreSQL (latest versions) — безкоштовно
Aurora PostgreSQL Edition — платне

І тут всі бігають і з’ясовують чи не порушили ліцензію

Найнеочевидніший момент з курсами від контор—це те що туди треба йти вже з досить непоганими знаннями.

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

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

Те що вона там використовується — беззаперечний факт. Але було б дуже цікаво почути чим саме Java там краща за dotnet core? Тільки тим що вона була перша і до неї всі звикли?
Звісно не варто забувати що донедавна dotnet core банально не інувало. Був тільки звичайний .NET для shitdows. Але все змінилося. І як би я не хейтив мілкомяких, але dotnet core у світі GNU+Linux показує себе доволі добре. На жаль я не маю досвіду з Java щоб порівнювати.

Тільки тим що вона була перша і до неї всі звикли?

Важливо дивитись під правильним кутом. «Перша і звикли» розкривається в:
— пул розробників
— пул готових рішень
— зрілість рішень

Але було б дуже цікаво почути чим саме Java там краща за dotnet core?

І тут знову ж неправильна постановка питання. Джава — це опція по замовчуванню. І питати треба чим дотНет, пітон, джаваскріпт кращі. Проблема в тому що в загальному випадку нічим (бо зараз і джава нічим суттєвим для бізнесу не краща за них).
І якщо «селінг поінти» пітона, джаваскріпта чи якогось го мені зрозумілі, то для чого брати дотНет, окрім бажання когось із стейкхолдерів поки не ясно.

то для чого брати дотНет, окрім бажання когось із стейкхолдерів поки не ясно.

Модні фічі, в тому числі фп, модна технологія(60% молоді з тих хто вивчає, якщо не помиляюсь), хороша швидкодія, компонентна модель.

Джава — це опція по замовчуванню

У кого? Где? Кто сказал? Ток пожалуйста без укуренных рейтингов от TIOBE, хотя даже и там от Java стабильно убывают проценты по динамике.

І якщо «селінг поінти» пітона, джаваскріпта чи якогось го мені зрозумілі

Сейлинг поинты у джаваскрипта? это же какие, кроме безысходности от того что браузеры понимают только его? Ну ладно, то лирика. Ожидаемые сейлинг поинты очевидно это веб. Но современные тенденции — транспайлить с нормального языка в джаваскрипт и WASM. Примеров уйма на всех платформах, начиная от того же тайпскрипта, Dart, Elm, Fable и так далее. Эти штуки тока набирают обороты. Так что сейлинг поинты хоть пока долгое время еще будут в силе но не такие уж очевидные.

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

Го тоже прост, быстр и прямолинеен и имеет свою нишу в микросервисах и инфраструктуре

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

Я бы еще кое-как понял если бы такое говорили лет 7-8 назад. Сейчас это унифицированная, кросс-платформа для всех случаев жизни: веб, мобайл, микросервисы, ентерпрайз, машинное обучение и далее по списку. А по производительности уже давно обошла джаву (пруф: benchmarksgame-team.pages.debian.net/...​sgame/fastest/csharp.html). И кстати свой клауд имеется что добавляет сейлинг поинтов немало.

чим саме Java там краща за dotnet core?

Открытостью, отсутствием вендор-лока, пулом технологий.

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

Если ты придешь в некую усредненную ентерпрайз компанию, то дефолтным бекендом там будет джава, начиная от древнего легаси, кончая современными разработками на микросервисах и хайповых монгах с кафками. В тоже время днонет — это всегда какое-то легаси, написанное тремя студентами в 2007-м году на волне хайпа сишарпа, эту систему все ненавидят, она тормозит и падает, но ее переделка не на часі.

Открытостью

Ну это уже не уникально только для Java. Весь Azure стоит на линуксовых серверах а майкрософт уже как бы контрибьютит в Linux Foundation, OSI и поменяла порядком лицензий на открытые (DLR, xUnit, Mono и т.д.) и частично опен сорснули код .NET. F# так и вообще под Apache License 2.0. Тот же PowerShell работает под линукс и опен сорс. С 2010 как Сатья Наделла стал у руля этот корабль поменял курс.

пулом технологий

А что там такого что нет в .NET или что на Java можно сделать такого что не потянет .NET? Ну не придумывайте :)

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

Уже нет, хватит ностальгировать :)

Если ты придешь в некую усредненную ентерпрайз компанию

То там будет и C и C++ и Java и еще большой зоопарк включая C# , Python и все что попало.

начиная от древнего легаси

Вот это легко

и хайповых монгах с кафками

Причем тут инфраструктура вообще до ЯП и платформы? Слышали може про SDK и протоколы?

. В тоже время днонет — это всегда какое-то легаси, написанное тремя студентами в 2007-м году на волне хайпа сишарпа

Про легаси лучше бы не заикались, в контексте то Java :)

эту систему все ненавидят, она тормозит и падает, но ее переделка не на часі.

Хахаха... если она тормозит и падает и при этом умудряется перегонять Java по производительности (benchmarksgame-team.pages.debian.net/...​sgame/fastest/csharp.html), то что говорить о том как спотыкается старушка?

В целом у вас очень ограниченное и поверхностное представление о текущем положении дел в .NET

fish или zsh. Практически тот же bash, но удобнее.

Яким чином «fish» є «практично тим же що і bash»? От не треба писати брехні.
Всім раджу zsh + OhMyZsh. Отак дійсно зручно. Синтакс для скриптів у zsh та bash майже ідентичні. Треба тільки пам’ятати про кілька дрібничок якщо хочете писати у zsh, а потім запускати у bash на якомусь хості. Для прикладу у кінці блоку з круглих чи фігурних дужок перед закриваючою у zsh можна і не ставити «;», а у bash воно обов’язкове.

Не плохо 😏 теперь давайте тоже самое только по JS😁

Это будет статья минут на 30 чтения :)

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