Изучение java

DenisMO
Posts: 4
Joined: 26 Feb 2014 09:13

Изучение java

Post by DenisMO »

Всем привет.

Программирую на php. Планирую в следующем году найти работу в США, вероятнее всего бодишоп.
Как я понял, с php меня врядли повезут. Нужна джава.
Начал смотреть как обстоят дела с джавой. Там огромный стек всего, что нужно знать вместе с джавой.
Не совсем пока понятно что именно нужно, без чего можно обойтись и как долго каждая технология осваивается.

Из того, что я понял:
1) Java Core (Сам язык)
2) Spring, Struts, Play (Фреймворки. Спринг самый популярный, плей для хипстеров и поклонников рельсов и джанго)
3) Hibernate (ORM для java)
4) JBoss, Tomcat, GlassFish, Weblogic, WebSphere (Application servers. Мне кажется любой в состоянии открыть конфиг и гугл, чтобы настроить это. В продакешене должен делать админ. Я не прав? Это как писать знание Apache, nginx или unicorn. Ну сделать пару конфигов и настроить приложение в продакшене я смогу. Это одно и тоже?)
5) JUnit (писал спеки, не думаю, что в юнит тестах что-то архисложное)
6) Maven, Gradle, Ant (В порядке популярности. Автоматический билдинг проекта. Что тут нужно знать тоже не совсем понятно)
7) PL/SQL (Работаю с PostgreSQL, Oracle в глаза не видел)
8. JSP (Это просто шаблонизатор типа haml, erb и тд?)
9) JSF (Пока туманно представляю что это и зачем. Похоже на какой-то слой между фронтэндом и бэкэндом. А как же MVC?)
10) Servlets (Что-то между юзером и http сервером)
11) JDBC (Либа для работы с базой)

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

Направьте, пожалуйста, падавана в нужное русло. За что хвататься и какую литературу лучше почитать. Купил на амазоне пару книг по джаве, так там 30 страниц объясняют циклы.

Что посоветуете для практики? Какие есть интересные опенсорс проекты, где нужны руки?
Хочется иметь фидбек и ревью кода.
Найти удаленку на джаве видится мне маловероятным, а уходить с нормальной позиции и зарплаты в джуниоры не хотелось бы.
User avatar
_Lenchik
Уже с Приветом
Posts: 1237
Joined: 10 Nov 2005 03:51

Re: Изучение java

Post by _Lenchik »

Вроде как ImageJ (открытый код) написан на Java. Вряд ли там нужны руки, но попрактиковаться в написании плагинов для ImageJ наверно можно. Программе уже лет 15.

Это совет ботаника, я использовала ImageJ как пользователь.
Я знаю, как надо. Но сделаю, как хочу.
User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Изучение java

Post by valchkou »

ненужное удалил.

1) Java Core (Сам язык)
2) Spring, Spring MVC (RESTFul web services), annotation based
3) Hibernate (обратить особое внимание на one-2-many, many-2-many, cache, performance https://docs.jboss.org/hibernate/orm/3. ... mance.html)
4) Tomcat (start, stop, deploy app, tail logs)
5) JUnit, Spring mock, Mockito и тп
6) Maven, Ant(уже не обязательно) - уметь настроить build jar, war, запустить тесты.
10) Servlets - сервлеты на прямую уже мало кто использует, но знать не помешает на уровне стандартных ответов на интервью
11) JDBC - опционально, чисто с целью ознакомления

книги
- Data Structures & Algorithms in Java(Robert Lafore)
- SCJP Sun® Certified Programmer for Java™ 6 Study Guide Exam (310-065) (не смотрите на версию и даты, книга по сей день актуальна включая ява 7/8)
- Effective Java (Joshua Bloch)
- Spring/hibernate/tomcat - читать не нужно, нужно сделать свой pet project, выложить код на гитхаб и по возможности запустить в паблик доступ.
User avatar
Vоvan
Уже с Приветом
Posts: 4288
Joined: 20 Mar 2004 03:19
Location: KO69

Re: Изучение java

Post by Vоvan »

насчет пробного проекта : советую сделать что нить из разряда portfolio management - куча данных в разных группах, грузить, хранить, многопользовательский доступ и т.п. Сейчас любят UI + много данных : "плоские" или не реляционные, или реляционнные с кучей зависимостей причем так чтобы эти зависимости повторно не грузились. Любая комбинация явы (desktop/web) и какой нить базы данных будет очень полезна. Статистика тоже - но там больше упор на скорость вычислений и всякую комбинаторику, очень интересно, но ниша небольшая.

--
В.
DenisMO
Posts: 4
Joined: 26 Feb 2014 09:13

Re: Изучение java

Post by DenisMO »

valchkou, спасибо большое!

Vоvan, вы не могли бы пояснить, что такое portfolio management :) Я планировал сделать интернет-магазин или твиттер, но мне не принципиально что, главное побольше скилл прокачать.
User avatar
Vоvan
Уже с Приветом
Posts: 4288
Joined: 20 Mar 2004 03:19
Location: KO69

Re: Изучение java

Post by Vоvan »

DenisMO wrote:valchkou, спасибо большое!

Vоvan, вы не могли бы пояснить, что такое portfolio management :) Я планировал сделать интернет-магазин или твиттер, но мне не принципиально что, главное побольше скилл прокачать.
используется часто в финансах/планировании :

у вас есть набор акций - пользователь имеет по 5-10 груп по 30-50 штук в каждой. Программа хранит/читает из онлайн их стоимость за последние например два года. Задача - написать хранение такого типа данных, какие обьекты будут использоваться, какие методы для выборок и т.п.

или :

есть толпа людей с определенными знаниями и их рейтом - надо сделать несколько расписаний их занятости на период времени и просчитать скольо они буду стоить в разных комбинациях

--
В.
User avatar
geek7
Уже с Приветом
Posts: 20198
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Изучение java

Post by geek7 »

DenisMO wrote:1) Java Core (Сам язык)
как правило под этим рекрутеры понимают не просто язык а
как антоним JEE. т.е. программы не предназначенные для контейнеров - библиотеки или собственные специализированные сервера. Почему-то часто считают что для Core Java multithreading, понимание работы JVM (типа garbage collection) нужно, а JEE - нет.
DenisMO wrote:2) Spring, Struts, Play (Фреймворки. Спринг самый популярный, плей для хипстеров и поклонников рельсов и джанго)
Play для скалолазов - Asynchronous programming и все такое.. IMO перспективно
DenisMO wrote:4) JBoss, Tomcat, GlassFish, Weblogic, WebSphere (Application servers. Мне кажется любой в состоянии открыть конфиг и гугл, чтобы настроить это. В продакешене должен делать админ. Я не прав? Это как писать знание Apache, nginx или unicorn. Ну сделать пару конфигов и настроить приложение в продакшене я смогу. Это одно и тоже?)
гугл, конечно поможет, но скажем у WebSphere открыть конфиг - идея плохая. или через консоль (при навигации по которой интуиция плохой помошник) или по-взрослому, через jython-скрипты. Полезно знать что в принципе можно настраивать иначе что гуглить догадатся сложно.. а эти знания приобретаются из практического опыта или трейнингов.

DenisMO wrote:8. JSP (Это просто шаблонизатор типа haml, erb и тд?)
Это ответ Java на ASP,PHP,.. Гослинг говорил, что сделали чтоб отвязались, надеялись показать какой это идиотизм.. ан прижилось и фиг выкинеш :)


DenisMO wrote:9) JSF (Пока туманно представляю что это и зачем. Похоже на какой-то слой между фронтэндом и бэкэндом. А как же MVC?)
JSF это стандарт для MVC фреймворков, есть куча имплементаций .. ну как в ORM - JPA стандарт и Hiberante, DataNucleus, EclipseLink
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Изучение java

Post by valchkou »

geek7 wrote:JSF это стандарт для MVC фреймворков, есть куча имплементаций
это такой интересный стандарт, который теперь никому нафиг не нужен и за бесплатно
User avatar
Vоvan
Уже с Приветом
Posts: 4288
Joined: 20 Mar 2004 03:19
Location: KO69

Re: Изучение java

Post by Vоvan »

valchkou wrote:
geek7 wrote:JSF это стандарт для MVC фреймворков, есть куча имплементаций
это такой интересный стандарт, который теперь никому нафиг не нужен и за бесплатно
это точно.

Поэтому я бы ему советовал делать упор на Model & Controller, а со View - потом бодаться. Серьезным конторам нужно понимание области и как данные хранить/обрабатывать. Для View у многих есть отдельные люди у которых более опыт направлен на UI. Core IMHO лучшее в чем нужно натаскиваться.

--
В.
User avatar
valchkou
Уже с Приветом
Posts: 4185
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Изучение java

Post by valchkou »

Vоvan wrote:
valchkou wrote:
geek7 wrote:JSF это стандарт для MVC фреймворков, есть куча имплементаций
это такой интересный стандарт, который теперь никому нафиг не нужен и за бесплатно
это точно.

Поэтому я бы ему советовал делать упор на Model & Controller, а со View - потом бодаться. Серьезным конторам нужно понимание области и как данные хранить/обрабатывать. Для View у многих есть отдельные люди у которых более опыт направлен на UI. Core IMHO лучшее в чем нужно натаскиваться.

--
В.
основной скилз который нужно натаскать
это правильно отвечать на любой стандартный жава вопрос на собеседовании по англицки.
сертификация не будет лишней или хотябы подготовка к ней
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Изучение java

Post by Мальчик-Одуванчик »

valchkou wrote:
Vоvan wrote:
valchkou wrote:
geek7 wrote:JSF это стандарт для MVC фреймворков, есть куча имплементаций
это такой интересный стандарт, который теперь никому нафиг не нужен и за бесплатно
это точно.

Поэтому я бы ему советовал делать упор на Model & Controller, а со View - потом бодаться. Серьезным конторам нужно понимание области и как данные хранить/обрабатывать. Для View у многих есть отдельные люди у которых более опыт направлен на UI. Core IMHO лучшее в чем нужно натаскиваться.

--
В.
основной скилз который нужно натаскать
это правильно отвечать на любой стандартный жава вопрос на собеседовании по англицки.
сертификация не будет лишней или хотябы подготовка к ней
Это дельный совет. На стандартных вопросах завалить проще всего.
Мой любимый - оператор new.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Изучение java

Post by Alexandr »

Мальчик-Одуванчик wrote: Это дельный совет. На стандартных вопросах завалить проще всего.
Мой любимый - оператор new.
Мне аж интересно стало :)
Что про new спрашиваете?
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Изучение java

Post by Мальчик-Одуванчик »

Alexandr wrote:
Мальчик-Одуванчик wrote: Это дельный совет. На стандартных вопросах завалить проще всего.
Мой любимый - оператор new.
Мне аж интересно стало :)
Что про new спрашиваете?
че-нить простенькое типа, в каком случае А а = new A; ... delete a; влечет за собой косяк.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Изучение java

Post by Alexandr »

Мальчик-Одуванчик wrote:
Alexandr wrote:
Мальчик-Одуванчик wrote: Это дельный совет. На стандартных вопросах завалить проще всего.
Мой любимый - оператор new.
Мне аж интересно стало :)
Что про new спрашиваете?
че-нить простенькое типа, в каком случае А а = new A; ... delete a; влечет за собой косяк.
если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]

я в правильном направлении мыслю или у вас затея другая была? :-)
ElGuapo
Уже с Приветом
Posts: 610
Joined: 21 Jan 2004 11:43
Location: CA

Re: Изучение java

Post by ElGuapo »

Мальчик-Одуванчик wrote: че-нить простенькое типа, в каком случае А а = new A; ... delete a; влечет за собой косяк.

В первый раз слышу про delete оператор в джаве, просветите пожалуйста.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Изучение java

Post by Интеррапт »

Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Изучение java

Post by Интеррапт »

Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Изучение java

Post by dotcom »

Массивы вобще зло несусветное. :D
User avatar
M. Ridcully
Уже с Приветом
Posts: 11999
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Изучение java

Post by M. Ridcully »

dotcom wrote:Массивы вобще зло несусветное. :D
Хмм, попытался представить "беззлобную" программу. Не смог.
То есть теоретически, оно конечно можно - взяли Lisp, и вперёд - cons, car, cdr - но на практике я таких программ не знаю - думаю, их просто нет.
Мир Украине. Свободу России.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Изучение java

Post by Мальчик-Одуванчик »

Alexandr wrote:
Мальчик-Одуванчик wrote:
Alexandr wrote:
Мальчик-Одуванчик wrote: Это дельный совет. На стандартных вопросах завалить проще всего.
Мой любимый - оператор new.
Мне аж интересно стало :)
Что про new спрашиваете?
че-нить простенькое типа, в каком случае А а = new A; ... delete a; влечет за собой косяк.
если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]

я в правильном направлении мыслю или у вас затея другая была? :-)
Правильно конечно.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Изучение java

Post by Мальчик-Одуванчик »

Интеррапт wrote:
Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
А Александреску утверждает что иногда так охренительно удобно.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Изучение java

Post by Интеррапт »

Мальчик-Одуванчик wrote:
Интеррапт wrote:
Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
А Александреску утверждает что иногда так охренительно удобно.
Ну разве что если в имя typedef-а вставлять суффик Array, что-то вроде MyCoolArray. Иначе стремно.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Изучение java

Post by Мальчик-Одуванчик »

Интеррапт wrote:
Мальчик-Одуванчик wrote:
Интеррапт wrote:
Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
А Александреску утверждает что иногда так охренительно удобно.
Ну разве что если в имя typedef-а вставлять суффик Array, что-то вроде MyCoolArray. Иначе стремно.
фишка в том что такими типами удобно специализировать шаблоны, особенно в сочетании с SFINAE
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Изучение java

Post by Интеррапт »

Мальчик-Одуванчик wrote:фишка в том что такими типами удобно специализировать шаблоны, особенно в сочетании с SFINAE
Век живи - век учись. Я эту аббревиатуру SFINAE и не слышал, хотя считал, что C++ хорошо знаю. Глянул описание, с этим встречался ес-но, но не знал, что это СВИНОЕ (и как следствие - некошерное).
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Изучение java

Post by Alexandr »

Мальчик-Одуванчик wrote:
Интеррапт wrote:
Мальчик-Одуванчик wrote:
Интеррапт wrote:
Alexandr wrote: если A - это массив, определенный через typedef?
тогда явно косяк, нужно delete[]
Скотт Мейерc в Effective C++ поэтому и предупреждает, что не надо так массивы через typedef определять.
А Александреску утверждает что иногда так охренительно удобно.
Ну разве что если в имя typedef-а вставлять суффик Array, что-то вроде MyCoolArray. Иначе стремно.
фишка в том что такими типами удобно специализировать шаблоны, особенно в сочетании с SFINAE
ну да, в общем-то boost::mpl идею двигает дальше и говорит - по фиг что, главное, что у типа есть T::type, а там это может быть и массив и список и дерево и чего там только не может быть :D

Return to “Работа и Карьера в IT”