Да, в Java нет свойств объектов на манер Object Pascal, C#, Python и иже с ними. По этому поводу осознанно или неосознанно страдают много Java-разработчиков, и в их стане выделилось две существенные группы: одна следует Sun coding conventions и всегда все поля, кроме статических, делает private, оборачивает их геттерами и сеттерами, а другая следует зову сердца и просто выставляет public-поля наружу. (Есть ещё третья группа, которая понимает что к чему и перемешивает оба подхода; таких, к сожалению, мало).
Что же кроется за требованием convention’а, которому следуют разработчики из первой группы? Кроме очевидного требования об инкапсуляции, есть ещё одна тонкость. Читавшим спецификацию или хотя бы «Thinking in Java» она очевидна с пол-пинка, для всех остальных представляю задачку:
Что выведет эта программа?

Теги ‘java’
![]()
В продолжение первой части. Сегодня будем рассматривать ресурсы о Java в интернете, которые подразделим на 4 части: вендоры, JUG, форумы, новости. А заодно подведём итоги.
Вендоры
Sun Microsystems
![]()
Основной сайт компании Sun содержит чисто рекламную информацию, поэтому рассматривать мы будем Сеть Разработчиков. Итак, что же здесь есть:
- JavaFX — хит сезона. В рамках продвижения Sun проводит конкурсы по этой технологии, ещё вы можете найти документацию на русском языке и даже Wiki.
- Академические программы — информация об образовательных программах. В основном это курсы для преподавателей и учебные материалы — лекции, написанные в рамках грантов.
- Java SE, Java EE, Java ME, JavaCard за 2009 год не содержат практически никаких обновлений, а за предыдущие года есть разве что переводы некоторых статей.
- Форум довольно мёртвый, за исключением раздела о JavaFX.
- Ещё есть переводы англоязычных блогов The Aquarium и The Planetarium, посвящённых новостям о Java EE и Java для всех других платформ(SE, ME, FX, etc…) соответственно.
Я продолжаю переводить источник первой статьи. Всё больше очевидных вещей, не смотря на это я все же решил, что повторение — не такое плохое занятие.
И коли источник исчерпыет себя — призыв к
JDK tools
Почти все в курсе, что в поставку JDK входит внушительное число tools’ов. Однако в повседневной работе, думаю, многие кроме как java, javac, jar не используют. Что же ещё можно взять из папки bin:
По мотивам «JAVA ? Java по-русски. Часть первая: Книги» habrahabr.ru/blogs/java/66568/
Добрый день, уважаемые хабровчане!
В предыдущем обзоре Java книг, проведенном пользователем Scala, было рассказано о «практических» книгах, вышедших на рынок в последние три года. Я же хочу рассказать об этих и других книгах с несколько иного ракурса: попытаться выделить ценность информации книг.
Я не любитель читать с монитора, и предпочитаю книги покупать в бумажном варианте. Чтобы сделать осознанный выбор, следует отдавать себе отчет в том, что книга несет некие фундаментальные знания, но никак не сборник «последние фишки». Также в данной статье я хочу упомянуть о других известнейших трудах, не касающихся Java напрямую. Посмотрим, что лучше всего выбрать для обучения языку?
Некоторые вещи иногда работают не так, как подсказывает интуиция. Это утверждение можно отнести к обработке исключений в Java. Далее — ситуации и примеры кода, которые отражают имеющиеся нюансы.
Java — язык простой. И после года активного использования для Вас не остаётся секретов. Совершенно случайно я обнаружил, что на stackoverfow люди решили поделиться скрытыми возможностями (Hidden Features of Java). Вышло очень занимательно, получился своеобразный рейтинг нетривиальных возможностей, который я далее запротоколирую в вольном переводе на русский.
double brace
С большим отрывом лидирует «double brace», уже обсуждавшийся ранее в статье Эффект «double brace» by zeroed. Подробное описание метода —
http://www.c2.com/cgi/wiki?DoubleBraceInitialization
несомненно это самое забавное и неочевидное из списка. Однако как уже отмечалось, метод имеет свои минусы в виде анонимного класса на каждое использование этого метода. А также невозможности использования метода equals () для подобных объектов.
Если вы не очень часто программируете на Java, то этот топик скорее всего будет для вас бесполезен. Не читайте его
Недавно понадобилось решить следующую задачу: определить класс, которым параметризован generic-класс.
Если кто-то сталкивался с подобной задачей, то наверное также сразу попробовал написать что-то вроде этого:
public class AbstractEntityFactory<E extends Entity> {
public Class getEntityClass() {
return E.class;
}
}
Увы, IDE либо компилятор сразу укажут вам на ошибку («cannot select from a type variable» в стандартном компиляторе): "E.class" — не является допустимой конструкцией. Дело в том, что в общем случае во время исполнения программы информации о реальных параметрах нашего generic-класса может уже и не быть. Поэтому такая конструкция в Java не может работать.
Многие тесты на сертификацию Java программистов содержат большое количество вопросов с вариантами выбора. От таких тестов толку немного: многие вещи, касающиеся API можно быстро узнать чтением документации или исходников. При этом, умение программировать, которое состоит по большей части из умения правильно сформулировать алгоритм и логически мыслить, совершенно не тестируется.
Компания betterprogramming.com из Сан-Франциско решила исправить эту проблему. Тест, находящийся на их сайте, вместо множества вопросов предлагает решить несколько задач. Задачи заключаются в реализации несложных алгоритмов (уровня районной олимпиады по программированию, первого тура ACM ICPC или легких задач в topcoder). Текст программы, написанный разработчиком исполняется на сервере, и по его результатам а также по времени, ушедшем на прохождения теста, выставляется оценка.
Попробовать этот тест можно здесь: www.betterprogrammer.com/
![]()
Не так давно я проводил опрос «Какие материалы о Java вас интересуют на русском языке?» среди посетителей Хабра. Вторым этапом моего исследования будет обзор существующих русско-язычных ресурсов.
Книги
За 2009 на Ozon.ru можно найти 8 книг по Java (всего за последние 3 года их вышло 22 — примерно по 7 в год, на books.ru набор примерно такой же, так что наша выборка довольно репрезентативна). Посмотрим, что это за книги?
UP: по результатам обсуждения в комментариях, поправлен код Python (около 40% ускорения), написан код на Perl, компилируется Ruby (надо же попробовать), поправлен код на Java (на моей машине корректнее тестировать int, а не long). Скоро в статью добавятся новые графики
Вопрос производительности (скорости работы) различных языков часто всплывает в комментариях, на форумах, часто необоснованные
. Встречаются статьи, в которых авторы приводят примеры, где выигрывает реализация на том или ином языке.
После прочтения очередной статьи мне захотелось самому разобраться «здесь и сейчас». Сначала захотелось сравнить Java и C++ (не верил я, что в вычислительных тестах ява может догнать и обогнать cpp). 10 минут и простой код на C++ и яве готов: простой цикл и математические операции. После написания теста подумал и перевёл их на php и python.