Java задумывалась как язык, в котором на уровне синтаксиса и стандартной библиотеки обеспечивается более высокая безопасность в сравнении с обычными компиляторами вроде С и одновременно с этим более высокая производительность в сравнении с обычными интерпретаторами.
Именно с такими мыслями создавался объект String. Строка в Java является немодифицируемой. Как и для оберток, это сделано с целью обеспечить потоковую безопасность. Ведь если объект константен, то он thread-safe(en). Итак, вопрос с поточной безопасностью решен. А что же с производительностью?
Именно с такими мыслями создавался объект String. Строка в Java является немодифицируемой. Как и для оберток, это сделано с целью обеспечить потоковую безопасность. Ведь если объект константен, то он thread-safe(en). Итак, вопрос с поточной безопасностью решен. А что же с производительностью?
( Read more... )
Сегодня я затрону больную для Java тему передачи параметров по ссылке.
А ведь и в С# есть передача примитивов по ссылке - out параметры, и в C++ есть передача по ссылке и указателю - Type &, Type *, и даже в паскале есть такой способ передачи! Уверен, что мои читатели смогут назвать еще 20 языков с передачей примитивов по ссылке. Почему в Java их нет? История умалчивает.
С объектами всё попроще. Объекты всегда передаются в методы по указателю - и метод, соответственно, может изменить состояние объекта. Сложнее с объектами, не меняющими своё состояние, например, обертками. Как же быть со всеми этими "трудными" случаями?
А ведь и в С# есть передача примитивов по ссылке - out параметры, и в C++ есть передача по ссылке и указателю - Type &, Type *, и даже в паскале есть такой способ передачи! Уверен, что мои читатели смогут назвать еще 20 языков с передачей примитивов по ссылке. Почему в Java их нет? История умалчивает.
С объектами всё попроще. Объекты всегда передаются в методы по указателю - и метод, соответственно, может изменить состояние объекта. Сложнее с объектами, не меняющими своё состояние, например, обертками. Как же быть со всеми этими "трудными" случаями?
( Read more... )
Если мы хотим сказать, что данное поле конкретного примитивного типа, то используем примитив.
Если мы хотим сказать, что данное поле какого-то примитивного типа, то используем базовый тип всея объектов - Object.
( Read more... )
JDK - как много в этом звуке для сердца джавера слилось!

Действительно ли так много? Да, 19184 класса в моей JDK 1.6.0 UPDATE 3. Большая часть из них закрыта, но и оставшихся нескольких тысяч открытых классов больше, чем достаточно. Но ведь даже сертифицированному Java программисту нелегко на память перечислить хотя бы полсотни из них!
Почему мы так мало знаем о классах JDK? Причины у всех свои, но думаю, что основным стоппером в использовании малоизвестных классов является незнание того, как именно они могут помочь более эффективно решить поставленную задачу. Обзору особенностей популярных и возможностей менее популярных классов JDK будет посвящен этот цикл статей.
С чего начнем? Конечно, с java core!
Действительно ли так много? Да, 19184 класса в моей JDK 1.6.0 UPDATE 3. Большая часть из них закрыта, но и оставшихся нескольких тысяч открытых классов больше, чем достаточно. Но ведь даже сертифицированному Java программисту нелегко на память перечислить хотя бы полсотни из них!
Почему мы так мало знаем о классах JDK? Причины у всех свои, но думаю, что основным стоппером в использовании малоизвестных классов является незнание того, как именно они могут помочь более эффективно решить поставленную задачу. Обзору особенностей популярных и возможностей менее популярных классов JDK будет посвящен этот цикл статей.
С чего начнем? Конечно, с java core!
( Read more... )
По вашим многочисленным просьбам выкладываю примерный список тем, которые собираюсь осветить в ближайшее время.
Темы моих читателей:
- Паттерны/Антипаттерны.
- Рефакторинг. Автоматический рефакторинг в Intellij Idea
- Алгоритмическая оптимизация. Обзор основных алгоритмов. Динамическое программирование против тормозных задач.
- Языковая оптимизация.
- Хитрости стандартной библиотеки.
- Библиотеки apache commons как расширения стандартной библиотеки.
- Hibernate. Как его приручить?
- Spring vs Struts.
- DWR, GWT, другие Ajax фреймворки. Сравнение, рекомендации по выбору подходящего.
- Java Generics vs C++ Templates.
- Новшества Java 6
Темы моих читателей:
- Velocity
- Веб сервисы
А вот и не хватит! В современном научном мире и мире программирования колёса изобретают только
Java - это такой особенный язык, разработчики которого очень продуманно подошли к проблеме разработки стандартных библиотек. Так что колес здесь своих достаточно на любой вкус и цвет.
Вот список из 6 причин использовать существующие наработки для тех, кто еще не уверовал:
( Read more... )
Допустим, я изучил новый язык программирования. Пусть это будет ... Java. Я уже прочитал книжку неизвестного автора "введение в Java", умею создавать приложение "hello world", и даже читать строчки из одного файла и записывать их в другой. Куда мне теперь стремиться как разработчику? Какие умения нужно развивать и какие характеристики программ улучшать? Для того, чтобы ответить на эти вопросы, нужно сформулировать критерии хорошей программы:
- Хорошая читаемость кода
- Безошибочность
- Компактность кода
- Высокая производительность
- Невысокие требования к оперативной памяти
- Небольшой объем исполнимого кода на диске
( Read more... )
Добрый день, дорогой читатель!
Это первая запись в моем блоге, посвященном разработке на платформе Java. Сначала я хочу пояснить, кому может быть интересен этот блог.
Мой читатель :
* разработчик ПО или соболезнующий разработчикам ПО
* владеет основами программирования на java или другом с-подобном языке.
* не думает, что ООП - это организация освобождения Палестины
* интересуется вещами, выходящими за рамки учебников
* любит оптимизировать и автоматизировать свои ежедневные задачи
Если для тебя хотя бы три из пяти пунктов совпали, то нам по пути! :)
Часто для того, чтобы объяснить, чем блог является, проще указать, чем он не является:
* Это НЕ форум о java, алгоритмах и прочем IT
* Это НЕ учебник по Java
* Это НЕ обзор Java технологий в чистом виде
Поздравляю! Эту строчку читают те самые стойкие из вас, кто не ушел гулять по предыдущим ссылкам. Обещаю за это каждого вознаградить сполна!
До новых встреч!
Это первая запись в моем блоге, посвященном разработке на платформе Java. Сначала я хочу пояснить, кому может быть интересен этот блог.
Мой читатель :
* разработчик ПО или соболезнующий разработчикам ПО

* владеет основами программирования на java или другом с-подобном языке.
* не думает, что ООП - это организация освобождения Палестины
* интересуется вещами, выходящими за рамки учебников
* любит оптимизировать и автоматизировать свои ежедневные задачи
Если для тебя хотя бы три из пяти пунктов совпали, то нам по пути! :)
Часто для того, чтобы объяснить, чем блог является, проще указать, чем он не является:
* Это НЕ форум о java, алгоритмах и прочем IT
* Это НЕ учебник по Java
* Это НЕ обзор Java технологий в чистом виде
Поздравляю! Эту строчку читают те самые стойкие из вас, кто не ушел гулять по предыдущим ссылкам. Обещаю за это каждого вознаградить сполна!
До новых встреч!
