Конференцiя React fwdays. Приєднуйся безкоштовно або бери квитки поки regular | 27 березня
×Закрыть

Запутался в порядке изучения Java

Всем привет, в последнее время сильно запутался в технологиях, что изучать первым, на что тратить время в первую очередь. Я прочел Head First Java от К. Сиерра и Б. Бейтс, сейчас читаю Java 8 Полное Руководство Шилдта и Head First Design Patterns. Знаю что зачастую нужно junior java developer-у знать Spring, Hibernate, Maven, Git, Java Core..
Нашел codewars для решения задачек, где еще можно попрактиковаться? Где можно оценить уровень знаний Java? P.S.: учусь на 4 курсе в инсте, осталось пол года до дедлайна) и я хочу стать десктоп разработчиком(не знаю правильно ли это назвал) и хотел бы узнать что стоит мне учить! Спасибо за внимание!

👍НравитсяПонравилось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 Core (базовый синтаксис, ООП, Collections, Exceptions, Threads, Reflection API etc.) -> базовый HTML/CSS -> Servlets, JSP, JSTL -> SQL -> JDBC -> JPA/ Hibernate -> Spring IoC, MVC -> Spring Boot, Spring Data, Spring Security.

Desktop разработчиком на Java становиться не надо — нет спроса. Выбирайте Backend разработку или Android.

Servlets, JSP, JSTL

Вот это лучше не учить. Чтобы случайно не попасть на проект, где в это придется макнутся.
Фронтенд — фронтендерам.
Круды — джуниорам
Джавистам — интересную работу!

Я бы сказал, что было бы хорошо это не учить, но надо :) Кроме новых проектов ещё много legacy, а у джунов обычно нет возможности сильно крутить носом и выбирать только современные проекты.

Актуальный вопрос. Делаю почти как Владислав, но начинал с Файна. Теперь понимаю, почему его не советуют, как книгу для старта. После 50 страниц про операторы, массивы и тд сразу пошел Свинг и это при том, что классы и почти половина всего просто игнорировалась. А книга называлась Java для детей. Дочитал, но понял, что потратил время ибо только часть книги оказалась полезной.
Читаю Шилдта, Чувствуется разница. Страниц хоть и 1100+, но на многие вопросы уже ответ получил из книги. Рассматривается все подробно и дает понимание того, с чем имеешь дело.

Дабы не плодить, задам свои вопросы, возможно ответы помогут и ТСу:
1. Стоит ли сначала дочитать Шилдта и только потом что-то пытаться. В эклипсе ежедневно практикуюсь по итогу того, что прочел за день. Если мне непонятно, как работает строка, то прорабатываю и не продолжаю, пока не пойму, что она из себя представляет.
Половину синтаксиса еще не знаю, это понятно. Поэтому придерживаюсь мнения, что стоит подучить теорию и вливаться в практику. Я правильно дышу или кто, что посоветует? Какие задачки решать? Все пишут — пиши проект, но по моему это уже для людей, который знают, что значит то или иное слово.
2. Собственно в какой IDE лучше практиковаться. Скачал NetBeans, во всех обучалках пишут, что он не используется почти нигде и лучше IDEA. Юзал IDEA, но она слшком умная, как везде и пишут. В плане, что половина кода доступна подсказками по типу psvm, все же скачал эклипс и делаю там. Понимаю, что неудобно, по сравнению с IDEA, но лучше ручками учиться и лишний раз написать. Какие комментарии по этому вопросу?
3. Какие ресурсы или задачники кто посоветует для тренировок? Прошел бесплатный режим Javarush, вроде прикольно, познавательно, но комменты по нему неоднозначные. Думал пойти на оффлайн курсы в Киеве, но понимаю, что основа это самообучение, а на курсах мне ничего не дадут (имел опыт по другому языку, просто прослушивание лекций). Думал ментора найти, но опять же вопрос, а не рано ли мне?
Собственно, буду рад любому фидбеку. Комментарий Oleg Kariakin дал некое понимание, что вообще нужно, в некоторых аспектах понял, что движусь верно.
P.S. Отчетливо понимаю, что англ — залог успеха и его не забрасываю.
Данный план — теория, дойти до момента, когда буду знать, что что значит, какое слово или атрибут применить, активно начать практику (скорее всего с ментором), подключаться в изучение фреймворков, ну и профит — трудоустройство)
Насколько он плох?

(1,3) Не знаю, что там в конкретных книгах, но каждый приличный учебник содержит задачи по теме каждой главы. Делай.
Если нет в твоем конкретно — возьми любой другой, в котором задачи есть. Даже если это будет учебник по Питону и С++ — инструмент другой, но постановка задачи от этого не меняется.
По крайней мере на уровне бегиннера. Меньше заморачивайся специфичным, больше думай об алгоритмах и типах данных.
(2) Пока твои творения занимают не больше пары файлов и двух скроллов экрана — делай в любом текстовом редакторе, собирай в командной строке — когда перейдешь на ИДЕ будет четкое понимание, что она делает под капотом.
Глубокое ИМХО по ИДЕ — Netbeans какой-то более аккуратный и собранный, на начальном этапе с ним определенно будет легче. Eclipse более глючный и расхлябанный, но зато имеет миллион плагинов на все случаи жизни — от каких-нибудь 8-битных микроконтроллеров до поддержки внутренних корпоративных систем — т.е. навык крайне полезный, но советую лезть уже имея определенный опыт — новичок может попасть на длинную демотивирующую дорогу сплошных граблей.

Мне очень нравится NetBeans) Особенно в теме darcula!)

Десктоп вообще мертв. Акценты сместились в сторону веб и мобайла, облачные версии рулят и скоро захватят рынок (в некоторых отраслях уже захватили). Разве что ты хочешь какую-нибудь IDE разрабатывать

Как я тебя понимаю, в свое время очень много усилий потратил чтобы выучить Java и попасть в ИТ, пока учился в универе буквально каждый год начинал и бросал, потому что в странных книгах были всякие J2ME, JINI и тд без полного понимания куда это применить.

1) Английский — найди самые лучшие курсы, какие сможешь и туда иди, 80% сил трать на изучение и совершенствование языка.

2) Head First — Learning Java 2-е издание или позже. Именно эта книга объясняет как что работает и именно она дала мне базовые знания.

3) Maven освоить на уровне создать проект из архетипа, добавить зависимости, билдить

4) Git / SVN освоить на уровне веток, мёржей, сразу создал свой проект и подрубил туда это все

5) Head First — Servlets & JSP — фундаментальный труд, также все понятно излагается.

6) Spring + Hibernate — возьми какой-нибудь курс на udemy на 10-20 часов, запили пару приложений, больше для трейни и не надо

7) JUnit тоже очень базово

8) Чистый код Р. Мартин — обязательно прочитать и следовать.

9) Шаблоны проектирования — желательно знать, GOF 24 штуки поучил и норм, главное не тули везде синглтоны)))

10) Базы и SQL, знать 3 нормальные формы, Join-ы, подзапросы, развязывать Many-to-Many
какой-нибудь Postgres уметь прикрутить

11) Желательно посмотреть JIRA / Jenkins хотя бы видосы в ютубе как это работает.

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

В какую нить ацтойную контору 😂 лучший совет

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

Если бы кто-нибудь описал так же подробно как и вы, но только по .net :|

замени технологии в 3, 4 и 6 на альтернативы из любого языка и готов универсальный мануал

ты хотел сказать 2,3,6 ? Потому что на чем же кроме гита работать?

да, чуть мимо нажал :)

на чем же кроме гита работать

TFS

C_#

3) Maven освоить на уровне создать проект из архетипа, добавить зависимости, билдить

А чем gradle не угодил?

Шутка про Gradle Kotlin. Ну и всегда можно написать Gradle плагин. А в плагине хоть C#.

Смотря какая ваша цель.
Если пройти собеседование, тогда прорабатывайте вопросы для собеседований.
Практиковаться — пишите свой проект.
Оценить свой уровень — ходите на собеседования.

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

Java для десктопа это не самый лучший выбор, правда. =)

C++ в первую очередь, QT например. Если под винду — то .net. Если уж очень хочется джаву — то можно посмотреть на JavaFX. Но джава лучше для веба всё-таки.

Я только джаву, JavaFX делал курсач с ней, но я хз, как оценивать свои знания в том или ином фреймворке?

Не стоит тратить время на JavaFX, смотрите в сторону EE

Буду параллельно учить Java Core + Spring, Hibernate, MySQL, Maven. Это же можно между собой связать в проекте?

Похоже я не разбираюсь в этом) А что это тогда?

backend стек же. Можно, конечно, это все и в десктопное приложение запихнуть, но не нужно (только уж если хочется особенных извращений)

Вообще, как уже сказали, Java для десктопа плохой выбор

и вправду, значит я хочу стать back-end разработчиком!) Спасибо за просвещение!

Точно? Back-end это сервера еслишо, а не десктоп. У back-end вообще может не быть интерфейса.

думаю я сам не понимаю что именно я хочу. Я не хочу быть веб разработчиком который там сайты клепает, всякие дизайны, хочу писать на джава, это же back-end? Растолкуйте глупцу

Да, back-end. Можно и Андроид, но то отдельная тема. А для бэкенда у интервьюеров есть два распростаненных подхода к интервью: одни хотят, чтобы кандидат отлично знал Core Java, а остальное необязательно; другие предпочитают, чтобы кандидат знал хоть и по-немногу, но все. Я бы посоветовал отлично знать Core Java, а все остальное для начала поверхностно, но с широким охватом (’Effective Java’, GoF, SQL, Хибернейт/JPA, Spring, Maven, Gradle, и совсем чуть-чуть Git, Linux CLI, HTML, CSS, JavaScript, JSP, JSTL). И нагуглить типовые вопросы на собеседованиях на джависта.
’Head First ...’ - отличная серия. ’... in Action’ тоже.

Спасибо! Какого типа проекты мне тогда создавать для практики этого всего? За пол года реально подтянуть это все?

Проект рівня петклінік (projects.spring.io/spring-petclinic) буде достатньо

Если учиться каждый день по 8-10 часов в течение полугода, проходить теорию и делать упражнения, то большинство упомянутых тем будешь знать на отлично. Джуны, как правило, так много не знают. Если же учиться полгода по 3-4 часа в день, то будешь вполне средним джуном, что тоже, в общем-то, неплохо, но первую работу будешь искать дольше.
Для практики надо делать много упражнений, взять из одной-двух книг по джаве и поделать. Плюс пару проектов вроде упомянутой Pet Clinic для комплексной проработки материала, чтобы охватить весь стек. Плюс по SQL есть отличные онлайновые бесплатные песочницы с упражнениями. Плюс по шаблонам прочесть не только теорию, но и одну-две книги или подборки статей, где показывается применение шаблонов, в том числе в стандартом Java API.

Только вот ещё нюанс: знание английского сильно упрощает поиск работы. Если английский слабоват, pre-intermediate или того хуже, то есть смысл часть времени инвестировать в английский. Статистикой не располагаю, но по моим ощущениям не меньше половины проектов (вакансий) требуют общения с заказчиком на английском, без английского туда просто не возьмут.

На Java делается серверная часть, в том числе для сайтов и мобильных приложений. С дизайном/версткой в классическом понимании связываться, скорей всего, не придётся. Но вот если пойдёте в Android — то дизайн натягивать будете аж бегом :D

пока нету желания на андроид))спасибо

Java для десктопа нормальный выбор, просто сама парадигма десктопных приложений сейчас не в моде. Эта ниша рынка весьма узкая и для развития карьеры имеет туманные перспективы (с точки зрения бабла и количества вакансий). Вряд ли вы увидите вакансию «чистого» десктопного разработчика, чаще требуется «разработчик который умеет ВСЕ» 😀

На моем опыте — вакансии чисто десктоп разработчиков есть (Или я везучий, и на всех проектах на которых я видел десктоп — были специальные люди-десктопщики), которые спасали остальную команду от невеселой работы с гуем.
Бывает что есть команда, в которой есть люди которые умеют делать

«ВCE»

, но не хотят марать руки об UI (Будь то десктоп, или веб). Потому набираются люди, которые специализируются именно на десктопе.

ну они есть, но мало по сравнению с количеством вакансий веб и «фулл стек» разработчиков

Spring можно юзать не только для бэкэнда, да и все вышеперечисленное тоже.

я там дальше это и написал. Можно, но зачем?

Можно, но зачем?

А почему собственно не использовать спринг?
Какие противопоказания у спринга скажем на десктопе с FX-ом?

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

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

В андроиде спринг напримре не используется только из-за особенностей работы рефлекшна под андроидом. Но используются другие вещи вроде dagger, которые решают ту-же задачу, но без рефлексии, @Autowired и куртизанок.

Maven

А какие есть альтернативы мейвену кроме Грейдла?
Ант? Или может быть цепь шелл скриптов, которые запускают друг друга по очереди, и собирают проект, исполняя песню агонии, гимн Шпака.

это все понятно, сказано было именно о том что java не лучший выбор для десктопа (и, соотвественно, java инструменты тоже)

Для десктопа — да. А java в GUI на терминале заводских датчиков — достаточно хорошо себя показало. *MAD*

Тут не все так однозначно. С одной стороны да, джава это веб.

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

Я согласен, что это не топ индустрии, но аж никак не похоже на метрвую технологию. Скорее что просто вокруг нее нет хайпа.

Эклипс, Нетбинс, Идея на чем написаны?

Коммандная строка рулит

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