LINUX.ORG.RU

[java] Помогите подогнать курс по java

 


1

2

Решил освоить Java, прочитал рекомендации на всяких Q&A сайтах и составил себе программу:
1. Horstmann - Core Java I
2. Horstmann - Core Java II
+2.1. Apache Ant User Manual - спасибо анонимусам за совет
3. Schildt - Java Cookbook
4. Фаулер - Основы UML
5. Фаулер - Рефакторинг
6. Joschua - Effective Java
7. Фаулер - Архитектура корпоративных программных приложений

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

Вопросы уважаемой публике ЛОРа:
1. Как вам вышеприведенный список, что бы вы добавили/убрали?
2. Подскажите какой-нибудь небольшой open-source проект на java, который будет полезно изучить.



Последнее исправление: xhat (всего исправлений: 2)

>> Подскажите какой-нибудь небольшой open-source проект на java, который будет полезно изучить.

Maven может?

anonymous
()
Ответ на: комментарий от anonymous

ок, спасибо, добавил в список apache ant

xhat
() автор топика
Ответ на: комментарий от xhat

Там, где у вас Java EE. Поскольку ее не нашел, можно добавить в конец что-нибудь про сервлеты и JSP, например Курнявана.

vurdalak ★★★★★
()

Шилдта не читайте. После Хорстманна или Эккеля пустая трата денег и времени.

Если же мы говорим о проектировании ПО а не о джаве, то Фаулера, основы УМЛ, не покупайте. Вместо этого купите:

Ларман, применение УМЛ и шаблонов проектирования

Буч, ООАиД

Эванс, DDD

Кириевски, рефакторинг с использованием шаблонов

не помню кто, рефакторинг БД

Spring, Hibernate, EJB, по желанию изучайте тоже - дельный совет

anonymous
()

после изучения платформы начинать учить технологии. Причем сразу применяя на практике. Т.е. всякие Рефакторинги читать уже тогда, когда есть куда это применять. То же про Cookbook - хз зачем читать его от начала до конца, это же справочник!


Из фундаментальной литры, добавь к списку «совершенный код», если ты его еще не читал.
Из прикладной «Экстремальное программирование: разработка через тестирование» Кента Бека. Тесты - это важно!

stevejobs ★★★★☆
()

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

stevejobs ★★★★☆
()
Ответ на: комментарий от anonymous

ого, спасибо!

а что сначала читать «проектирование» или же EE+Spring+Hibernate?

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

xhat
() автор топика

2. Подскажите какой-нибудь небольшой open-source проект на java, который будет полезно изучить.


github.com/maxcom/lorsource

Karapuz ★★★★★
()

> Решил освоить Java

Неправильно это всё. На первом месте должна стоять задача. Какая у вас задача?

Вполне может оказаться, что ява для вашей задачи не подходит.

Обучение? Дело полезное, но наиболее продуткивно только тогда, когда есть реальная задача.

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

Если пишете сеть - говорят библиотека Netty хороша. Сам чутка поковырял - и правда хороша. Потом правда понял, что часть задачи можно сделать лучше если работать с TCP/IP практически напрямую и парсить пакеты вручную. Сейчас вот копаю С, netfilter и т.п.

Успехов.

П.С. когда будете устраиваться на работу, у вас первым делом будут спрашивать: а что вы сделали? Потом спросят: как? Потом спросят: а почему вы выбрали этот язык/технологию и т.п. И только в конце разговора поинтересуются что вы читали (если вообще). В уважающей себя конторе.

gandjubas
()
Ответ на: комментарий от gandjubas

>> На первом месте должна стоять задача. Какая у вас задача?

устроиться на работу в стране где 70% вакансии на .NET, 30% на Java. учить .NET мне запрещает религия.

П.С. ...

а эта часть мне действительно была интересна.

xhat
() автор топика

Вот ссылка на вебинар о том как Джуниору найти работу (http://javatalks.ru/ftopic19120.php), так вот там есть список книг, которые крайне желательно прочитать (их там штук семь). Ну и там вообще немало интересного для начинающих в Java.

Моё мнение: UML сдвинуть в самый конец списка. Про рефакторинг и архитектуру читать тоже ближе к концу — для лучшего усвоения желательно понаизобретать велосипедов и понабивать шишек самостоятельно :)

php-coder ★★★★★
()

Да не парься ты. Все равно вначале жуниором будешь. Я вот до сих пор только JCIP прочел по жаве. Считаю, что язык и коре я знаю достаточно хорошо. Конечно, если захотеть, то можно предраться, но мне как-то пох, мне хватает.

dizza ★★★★★
()

Может стоит эту тему прикрепить? За последние несколько месяцев очень много подобных тем создавали. А здесь вся необходимая информация будет в первом же сообщении.

P.S. Cписок одобряю, хорошо составлен (правда, в конец бы добавил мануалы по фреймворкам, по выбору).

eternity
()
Ответ на: комментарий от eternity

Ну, список этот далеко не полон, и плохо структурирован. Слабое внимание уделено Java EE, фреймворкам - конкретных книг-то не указано. Вопросы проектирования ПО смешались с Java и Java EE. Так что прикреплять нет смысла.

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

В то же время, стоит иметь такую модерируемую тему прикрепленной, которая будет поплняться информацией о книгах, описывающих новые Java и Java EE технологии. Но в таком случае, это должен быть целый раздел из таких тем;)

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

anonymous
()
Ответ на: комментарий от gandjubas

Это конечно все так! Из задачи следуют средства решения, из средств - обучение их использованию. Это естественно для компании, решающей свои бизнес задачи.

Есть только одна проблема. Задачи - это у работодателей. И средства для их решения тоже у них. И так уж получилось, что среди этих средств широко распространены Java EE, .NET и т.п.

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

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

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

Максимум что спросят - на какую тему диплом был, и пару вопросов по соответствующим технологиям зададут, чтоб общий уровень узнать. Другое дело - человек с опытом работы. Но там уже и так есть что рассказать, не так ли? ;)

anonymous
()

Всем спасибо за ответы!

пересобрал курс так:
Java:
1. Horstmann - Core Java I
2. Horstmann - Core Java II
3. Apache Ant user manual
4. Java Cookbook
5. Head First Analysis and Design
6. Head First Design Patterns
7. Effective Java
8. Java EE tutorial
9. Spring in Action
10. Beginning Hibernate
11. JBoss in Action

проектирование:
1. Ларман, применение УМЛ и шаблонов проектирования
2. Буч, ООАиД
3. Эванс, DDD
4. Кириевски, рефакторинг с использованием шаблонов
5. Stephane Faroult - Refactoring SQL Applications

xhat
() автор топика

А как же Big Java от Хортмана?

anonymous
()
Ответ на: комментарий от anonymous

Ну, основная мысль как бы была: поставить себе интересную задачу и решить её. А пока будешь решать - узнаешь много нового и так (придётся много читать), поскольку при решении задачи появится всяких но и если. Какбэ мотивация что либо читать и понимать будет выше - будешь не просто зевая перелистывать страницы учебников а именно искать ответы на свои вопросы - которые могут возникнуть только при решении конкретной задачи.

gandjubas
()
Ответ на: комментарий от xhat

Я ошибся с названием книги Буча, хотя английская транскрипция верна, сорри. Вот правильное название:

Объектно Ориентированный Анализ и Проектирование (Design, Дизайн - но переводчикам виднее) с Примерами Приложений.

Дополнительно отмечу, что Ларман делает большой упор на RUP - нормальным людям, не работающим в IBM, делать этого не стоит) Лучше книги Эванса и Буча поглубже изучить.

Далее, Рефакторинг SQL приложений это конечно тоже очень интересная книга, но изначально речь шла о книге Рефакторинг Баз Данных - Эволюционное проектирование, а это совсем другая история) Ну конечно же я не запомнил как зовут авторов) ибо зовут их Скотт В. Эмблер и Прамодкумар Дж. Садаладж

Они, как мне кажется, делают слишком большой упор на разделение объектной и информационной моделей. Часто говорят об изменении БД и об изменении объектной модели независимо - выглядит просто, но рекомендую Эванса почитать перед этим.

Далее, где же Архитектура корпоративных приложений потерялась во второй версии списка?) А вот Архитектуру реализации Бека, бесспорно, лучше заменить чем-нибудь другим)

Тогда уж, давайте разделим список на следующие категории: Basic Java, Java, Java EE и фреймворки, Проектирование

anonymous
()

Версия 3.

Java Basics:
1. Horstmann - Core Java I
2. Horstmann - Core Java II

Java и сборка проектов
3. Schildt - Java Cookbook *
4. McLaughlin - Head First Analysis and Design **
5. Freeman - Head First Design Patterns ***
6. Bloch - Effective Java
7. Apache Ant user manual
8. Maven: The Definitive Guide

Java EE & frameworks
9. Java EE tutorial
10. Spring in Action
11. Beginning Hibernate
12. JBoss in Action

Проектирование:
13. Ларман - Применение UML и шаблонов проектирования
14. Буч - Объектно-ориентированный анализ и проектирование с примерами приложений
15. Эванс - Domain-Driven Design
16. Кериевски - Рефакторинг с использованием шаблонов
17. Фаулер - Архитектура корпоративных программных приложений
18. Ambler - Refactoring Databases: Evolutionary Database Design

__
* несмотря на то, что опытные товарищи выше говорили, что эту книгу после Хорстманна можно не читать, все же включаю в свой список из-за того, что считаю серию cookbook «мастрид».
** и *** - эти две книги не являются книгами по java, но необходимы для понимания " Bloch - Effective Java"

xhat
() автор топика
Ответ на: комментарий от anonymous

>А вот Архитектуру реализации Бека, бесспорно, лучше заменить чем-нибудь другим)

а ее в списке и не было

p.s.
вот бы вернуть счастливо-беззаботное детство с верой в «выучи %language% за 24 часа»

xhat
() автор топика
Ответ на: комментарий от xhat

Есть мнение, что составлять списки из такого кол-ва литературы - глупость. Сколько времени у тебя займет только чтение? Впрочем, хозяин - барин.

Ok
()
Ответ на: комментарий от Boy_from_Jungle

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

xhat
() автор топика
Ответ на: комментарий от Ok

времени я думаю уделить полгода, так же во время/ближе к концу думаю сделать какой-нибудь маленький open-source проект.

xhat
() автор топика
Ответ на: комментарий от xhat

>устроиться на работу в стране где 70% вакансии на .NET, 30% на Java. учить .NET мне запрещает религия.

на мой взгляд, дотнет у нас не так уж доминирует

annulen ★★★★★
()
Ответ на: комментарий от xhat

прочтение 18-ти книг не заменит практического опыта, который можно было бы получить за потраченное на это время

annulen ★★★★★
()
Ответ на: комментарий от xhat

Ну, в общем и целом, на мой взгляд - да. Всю это хунту нужно осваивать на практике. Возьмем вот это:

16. Кериевски - Рефакторинг с использованием шаблонов
18. Ambler - Refactoring Databases: Evolutionary Database Design

Что это за чушь? зачем она тебе нужна? Ты его ничего не писал, понятия не имеешь ни о каким проблемах, которые тебе придется решать и сразу забиваешь этим голову. Я уже не говорю, что до этих нумеров в своем списке ты просто не доползешь. Ну и так почти обо всем твоем списке. Проще надо быть, ВСЕ освоить невозможно, тем более за полгода.

Ok
()
Ответ на: комментарий от Ok

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

Решил оставить пайтон поприще, так как найти в моем городе работу на нем - анреал. Между Java и .NET выбрал Java, и решил сразу, что не буду повторять ошибок прошлого и освою больше чем core+frameworks. Ибо уже представляю некоторые проблемы, с которым столкнусь во время работы. ЧЯДНТ?

xhat
() автор топика
Ответ на: комментарий от Boy_from_Jungle

Например, я обычно читаю по 4 часа из 8 на работе) Кстати, всем рекомендую такой подход) И на выходных обычно пару часов. Получается в неделю средняя книга около 500 листов.

Сразу запоминается мало) Чего уж греха таить)))

Но самое главное! Информация о том что изложено в какой книге и насколько качественно сохраняется в голове где-то на пол года-год и даже больше. И когда в работе встречается вопрос, о котором стоит перечитать - сразу помнишь где именно и что.

Наивную точку зрения о том, что практика и только практика способна научить чему-то отправьте туда, где ей и место - в топку. Читайте и изучайте новое не менее половины времени. Инвестируйте в знания постоянно!

А такие списки - это же не список книг на лето. Это что-то вроде плана стратегического развития программиста) Ну, может конечно, в очень упрощенном виде и слишком детализированный) Он, разумеется, будет много раз пересмотрен в будущем, чтоб адаптировать его под изменяющиеся условия. Вы еще не составляете таких планов?

Вобщем, вот мой совет) Скептиков в топку. Пишите программы и читайте книги параллельно. Инвестируйте в знания постоянно! прагматично и своевременно, и своевременно используйте отдачу от таких инвестиций - применяйте новые знания. Только не слишком рьяно)))

Все остальное придет со временем! А список нормальный! Первая итерация, можно сказать)

anonymous
()
Ответ на: комментарий от xhat

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

Мир уже не тот, что раньше. Сегодня вы уже должны предполагать, чем займетесь через месяц, год, пять лет, и инвестировать в соответствующие знания.

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

anonymous
()
Ответ на: комментарий от anonymous

>обычно читаю по 4 часа из 8 на работе

Это как у вас так получается? :) У меня, например, каждая минута рабочего времени расписана, а самообразование - только в свободное время. Да и у многих так же.

eternity
()
Ответ на: комментарий от anonymous

Например, я обычно читаю по 4 часа из 8 на работе) Кстати, всем рекомендую такой подход)


Если я буду читать на работе по 4 часа, то мне потом набьют дружно морду!

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от Boy_from_Jungle

Ох уж эти сказки, ох уж эти сказочники) Если я вижу человека интеллектуального труда, работающего регулярно 8 часов в день непрерывно, у меня две мысли-лентяй или дурак. Без обид, граждане) Никто вас не убьет, если вы сделаете свой труд более эффективным.

anonymous
()
Ответ на: комментарий от anonymous

а у вас есть свой блог или жж?
видно, что в своем деле вы профи, интересно было бы и далее не терять с вами связь.

xhat
() автор топика
Ответ на: комментарий от xhat

Увы! я лор и то очень изредка только почитываю. А времени на ленты новостей, блоги и форумы не люблю тратить-вот и сейчас пишу из аэропорта). Да и не профи я ни разу) Так, доводилось пару раз кое-что самому проектировать. А все больше - чужое творчество сопровождать. По сравнению со мной тут такие зубры обитают) Смотрят наверное на это обсуждение и смеются)

Вообще, наверное никто не осудит, если я еще одну книгу порекомендую. Pragmatic Thinking And Learning.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.