Home

Реклама


Java задумывалась как язык, в котором на уровне синтаксиса и стандартной библиотеки обеспечивается более высокая безопасность в сравнении с обычными компиляторами вроде С и одновременно с этим более высокая производительность в сравнении с обычными интерпретаторами.

Именно с такими мыслями создавался объект String. Строка в Java является немодифицируемой. Как и для оберток, это сделано с целью обеспечить потоковую безопасность. Ведь если объект константен, то он thread-safe(en). Итак, вопрос с поточной безопасностью решен. А что же с производительностью?

Сегодня я затрону больную для Java тему передачи параметров по ссылке.

А ведь и в С# есть передача примитивов по ссылке - out параметры, и в C++ есть передача по ссылке и указателю - Type &, Type *, и даже в паскале есть такой способ передачи! Уверен, что мои читатели смогут назвать еще 20 языков с передачей примитивов по ссылке. Почему в Java их нет? История умалчивает.

С объектами всё попроще. Объекты всегда передаются в методы по указателю - и метод, соответственно, может изменить состояние объекта. Сложнее с объектами, не меняющими своё состояние, например, обертками. Как же быть со всеми этими "трудными" случаями?

Классы оберткиВ java в отличие от например С потребовалось четко разделить понятия примитивных типов и объектов. Здесь объекты всегда хранятся по ссылке, а примитивы - всегда по значению.

Если мы хотим сказать, что данное поле конкретного примитивного типа, то используем примитив.

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


JDK - как много в этом звуке для сердца джавера слилось!
 Классы Java
Действительно ли так много? Да, 19184 класса в моей JDK 1.6.0 UPDATE 3. Большая часть из них закрыта, но и оставшихся нескольких тысяч открытых классов больше, чем достаточно.  Но ведь даже сертифицированному Java программисту нелегко на память перечислить хотя бы полсотни из них!

Почему мы так мало знаем о классах JDK? Причины у всех свои, но думаю, что основным стоппером в использовании малоизвестных классов является незнание того, как именно они могут помочь более эффективно решить поставленную задачу. Обзору особенностей популярных и возможностей менее популярных классов JDK будет посвящен этот цикл статей.

С чего начнем? Конечно, с java core!

По вашим многочисленным просьбам выкладываю примерный список тем, которые собираюсь осветить в ближайшее время.

  • Паттерны/Антипаттерны.
  • Рефакторинг. Автоматический рефакторинг в Intellij Idea
  • Алгоритмическая оптимизация. Обзор основных алгоритмов. Динамическое программирование против тормозных задач.
  • Языковая оптимизация.
  • Хитрости стандартной библиотеки.
  • Библиотеки apache commons как расширения стандартной библиотеки.
  • Hibernate. Как его приручить?
  • Spring vs Struts. 
  • DWR, GWT, другие Ajax фреймворки. Сравнение, рекомендации по выбору подходящего. 
  • Java Generics vs C++ Templates.
  • Новшества Java 6
В этот список могут попасть темы, предложенные вами!

Темы моих читателей:
  • Velocity
  • Веб сервисы

Tags:


Колёса для марсианских роверов - Ну хватит уже этих банальностей про колёса, надоело! - скажешь ты.

А вот и не хватит! В современном научном мире и мире программирования колёса изобретают только идиотыбунтари и студенты - в качестве домашнего задания.
 
Java - это такой особенный язык, разработчики которого очень продуманно подошли к проблеме разработки стандартных библиотек. Так что колес здесь своих достаточно на любой вкус и цвет. Глотай бери - не хочу!
Вот список из 6 причин использовать существующие наработки для тех, кто еще не уверовал:

Оптимизируй с умом

  • 28 Июн, 2008 at 1:12 PM

Допустим, я изучил новый язык программирования. Пусть это будет ... Java. Я уже прочитал книжку неизвестного автора "введение в Java", умею создавать приложение "hello world", и даже читать строчки из одного файла и записывать их в другой. Куда мне теперь стремиться как разработчику? Какие умения нужно развивать и какие характеристики программ улучшать? Для того, чтобы ответить на эти вопросы, нужно сформулировать критерии хорошей программы:
  • Хорошая читаемость кода
  • Безошибочность
  • Компактность кода
  • Высокая производительность
  • Невысокие требования к оперативной памяти
  • Небольшой объем исполнимого кода на диске

Добрый день, дорогой читатель!

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

Мой читатель :
* разработчик ПО или соболезнующий разработчикам ПО
* владеет основами программирования на java или другом с-подобном языке.
* не думает, что ООП - это организация освобождения Палестины
* интересуется вещами, выходящими за рамки учебников
* любит оптимизировать и автоматизировать свои ежедневные задачи

Если для тебя хотя бы три из пяти пунктов совпали, то нам по пути! :)

Часто для того, чтобы объяснить, чем блог является, проще указать, чем он не является:
* Это НЕ форум о java, алгоритмах и прочем IT
* Это НЕ учебник по Java
* Это НЕ обзор Java технологий в чистом виде

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

До новых встреч!