Брюс Эккель. “Философия Java”, 4-е издание
Для тех кто в танке, хочу сообщить, что вот уже как несколько месяцев мы имеем возможность читать шедевр Брюса Эккеля “Философия Java” в 4-ом издании на русском языке. Для информативности привожу аннотацию: Java нельзя понять, взглянув на него только как на коллекцию некоторых характеристик, — необходимо понять задачи этого языка как частные задачи программирования в целом. Эта книга — о проблемах программирования: почему они стали проблемами и какой подход использует Java в их решении. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как они используются для решения определенных задач. Эта книга, выдержавшая в оригинале не одно переиздание, за глубокое и поистине философское изложение тонкостей языка считается одним из лучших пособий для программирующих на Java. В четвертом издании автор постарался полностью интегрировать усовершенствования Java SE5/6, включить и использовать их во всей книге.
Просмотрев книгу за 5 минут, могу сказать слудующее: судя по картинкам
в книге мало что изменилось, те же лампочки, те же UML диаграммы, а вот по тексту – хз, ещё не читал. Цена книги тоже не очень радует, стоит в районе 160 едениц украинской девальвирующей гривны. Хочу обратить Ваше внимание на то, как правильно нужно подходить к развитию бизнеса в сфере IT
внимательно рассмотрев обложку книги и прочитав 6-ю страницу
А вы уже прочитали мегахит всех времён и народов “Философия Java“, 4-е издание?
Любовь к программированию
- Ты хочешь, чтоб я от тебя ушла? Ты этого хочешь?! Этого да?!
- Нет. Не хочу я этого.
- А почему ты тогда относишься ко мне как чужому человеку?!
- Ты же со мной не разговариваешь. Я пробовал…
- Да! Я не разговариваю. Ты не приходишь домой потому что! Каждый день в одиннадцать! Не ешь дома!
- (пожимая плечами) Ты перестала меня кормить ужином. Я работаю до позднего вечера. Потом приходится идти в ресторан, чтоб не ложиться спать голодным. Пока закажешь , пока принесут..
- Да! Я перестала кормить тебя ужином! Мы спим порознь уже две недели! За что тебя кормить?
- Милая, ты не путай. Я сплю там же где всегда – на нашей кровати. А ты почему-то стелишь себе отдельно.
- Ты мог бы и попросить, чтоб я не стелила отдельно.
- Я просил. Ты не ответила ничего.
- Не ответила! Потому что я с тобой не разговариваю!
- Ну и чего мне делать? Я же не могу в одностороннем порядке с тобой разговаривать?
- Он еще спрашивает! Мог бы и извиниться.
- За что?
- Он еще спрашивает! Ты даже не замечаешь, когда обижаешь меня!
- Ну и на что ты обиделась? Скажи – я извинюсь.
- Я обиделась.. (more…)
Какими должны быть EntityBean’ы?
Вот уже в который раз мне пришлось исправлять ранее написанные сущностные бины (в моем случае это OpenJPA) таким образом, что бы они соответствовали следующим требованиям:
- Каждый класс должен быть объявлен с модификатором public
- Каждый класс должен реализовывать интерфейс Serializable
- Каждый класс должен иметь публичный конструктор без аргументов
- Если класс является внутренним, он должен быть статическим
- Метод equals должен быть реализован таким образом, чтобы он обеспечивал уникальность сущности в соответствии с теми полями, которые непосредственно обеспечивают уникальность в таблице. (more…)
SpringSource анонсировал Spring 2.5.6. Качаем господа!
Вчера, 2008-11-04, в 19:08 SpringSource анонсировал Spring 2.5.6. Источник: http://www.springsource.org/taxonomy/term/4
ORM и подводные камни реализации equals и hashCode.
Думаю каждому, кому приходилось работать в плотную с ORM (аля Hibernate, TopLink, OpenJPA, …), приходилось сталкиваться с подводными камнями при реализации классов. Тоже самое случилось и со мной, когда мне поручили искать бажину в одном из наших приложений …. окна дебага поглотили меня не на один час… Проблема заключалась в том, что при вызове утильного метода ListUtils.subtract(list1, list2) (данный метод исключает list2 из list1) на выходе получалось совсем не то что ожидалось, а получалось так потому, что лажа скрывалась в реализации метода equals. Просто не нужно в equals обрабатыать ВСЕ поля класса, ну не нужно, я Вас умоляю. В моём случае в equals обрабатывалось поле lastUpdated – о чём это говорит, думаю Вы догадываетесь. Именно по этой причине некоторые классы входящие в список list2 не исключались из списка классов list1, которые были детачены ранее. Плюс ко всему, старайтесь реализовывать метод equals таким образом, что бы он обеспечивал УНИКАЛЬНОСТЬ сущности в соответствии с теми полями, которые непосредственно обеспечивают уникальность в таблице! (more…)
