пятница, 27 ноября 2009 г.

Boxing is an enemy of concurrency

Пост Дуга Ли о вреде boxing'а:
http://mail.openjdk.java.net/pipermail/closures-dev/2009-November/000342.html

Последний абзац:
I really,
really don't want to do is release an overhyped
facility for parallel programming that doesn't
actually speed up anyone's applications.
... про STM что-ли :)

четверг, 26 ноября 2009 г.

Докладываю на Coffee’n'Code #3

Докладываю на Coffee’n'Code #3 - «Многопоточность в Java».

Java SE 6 Performance White Paper

Java SE 6 Performance White Paper.

Особенно обратите внимание на
2.1.1 Biased Locking
2.1.2 Lock Coarsening
2.1.3 Adaptive Spinning

For more on Biased Locking, please refer to the ACM OOPSLA 2006 paper by Kenneth Russell and David Detlefs: "Eliminating Synchronization-Related Atomic Operations with Biased Locking and Bulk Rebiasing".

вторник, 24 ноября 2009 г.

Java Core

По моим представлениям Java Core состоит из:
1) синтаксис
2) java.lang.*, java.util.*, java.io.*
3) работа с исключениями
4) Java Collection Framework
5) начальные знания по многопоточности

Для детального изучения я рекомендую:
а) "Effective Java (2nd Edition)" by Joshua Bloch
б) "Java Puzzlers: Traps, Pitfalls, and Corner Cases" by Joshua Bloch and Neal Gafter
в) "Java Generics and Collections"
г) "Java I/O"
д) по многопоточке я ранее публиковал, там было пару вводных книг (Java Thread Programming или Java Threads)

P.S. Обновилось concurrentlib.livejournal.com.

Sun Certification: SCJP

В Java главными и, пожалуй, единственными признаваемыми Серьезными Конторами сертификатами являются сертификаты от Sun.
Третий уровень: SCEA
Второй уровень: SCJD, SCWCD, SCBCD, SCDJWS, SCMAD
Первый уровень: SCJP

Экзамены следующего уровня можно сдавать только сдав хотя бы один из экзаменов предидущего уровня.

Сама подготовка к SCJP позволяет не просто узнать действительно много нового из java core, но и досконально это самое коре изучить.

Для подготовки к сдаче SCJP рекомендую:
1) кроме чтения специальной литературы по подготовке именно к SCJP;
2) отличная статья Дениса Жданова на rsdn.ru "Подготовка к Sun Certified Java Programmer(SCJP) exam";
3) JavaRanch Rule Round-up Game;
4) The new and improved JavaRanch Rules Round-up Game;
5) SCJP 1.6 Mock Exam Practice Questions.

P.S. По моим личным впечатлением ничего сложнее SCJP по Core Java я не встречал (ни в других тестах, ни на собеседованиях), в Украине сдают в Киеве, вроди есть в Харькове (в ХИРЭ). Стоит порядка 1500-2000гр. При поступлении на работу стоит обговорить с работодателем возможность оплаты экзаменов (многие конторы имеют такую опцию).

понедельник, 23 ноября 2009 г.

PJP: Parallel/Concurrent GC

Небольшое замечание по сложившейся терминологии для описания типа GC.
Parallel - значит представляет собой несколько ПАРАЛЛЕЛЬНЫХ потоков. Т.е. сам уборщик мусора состоит из нескольких потоков, которые все вместе лопатят кучу.
Concurrent - значит работает ОДНОВРЕМЕННО с потоками пользователя. Т.е. не требуется делать паузу всей системы(stop-the-world).

Как видно, понятия совершенно независимые. Т.е. каждая конкретная реализация уборщика может обладать этими свойствами независимо.

Некоторые заметки о прохождении интервью при устройстве на работу в Праге

Некоторые заметки о прохождении интервью при устройстве на работу в Праге.
"... Устраивался я на должность Ведущего Разработчика J2EE."
"Сениор — 50000-80000крон (1800-3000евро), Архитект или Тим Лидер около 85000крон (3200евро)."
"1.Чем отличается абстрактный класс от интерфейса? (Да, такие вопросы тоже задают)
2.Для чего в классе Object есть метод hashCode() и как он связан с методом equals()?
3.Вы строите кэш. Вам нужно удалять из кэша некоторые объекты при каждой сборке мусора. Как это сделать?

PJP: Доктор, холодеют ноги ...

Возможно проектировать системы, которые отходят в мир иной по частям. В таком случае связи между подсистемами должны осуществляться не на основе обычных ссылок, а на основе java.lang.ref.Reference, точнее ее наследников
- java.lang.ref.SoftReference
- java.lang.ref.WeakReference
- java.lang.ref.PhantomReference
из пакета java.lang.ref.
Все это добро в момент перехода к загробной жизни помещается в ReferenceQueue.

PJP: Garbage Collector (GC)

После смерти Одиссей, как один из величайших людей, прежде чем выпить воды из Реки Забвения и забыть все воспоминания (кануть в Лету) для возвращения на Землю в новом обличии имел право выбрать кем ему быть в следующей жизни ...

Река Забвения (Лета) в Java зовется Garbage Collector. Она стирает все прежние предназначение участков ОЗУ и обновленными возвращает их к жизни.

воскресенье, 22 ноября 2009 г.

PJP: Сложные Системы и архетип Смерти

Профессионально написанная система не только хорошо работает в стандартных режимах, но также корректно переносит всякого рода переходные режимы:
- пуск
- останов
- пауза
- истощение ресурсов
- backup
- пуск после сбоя

Фактически, профессионализм высокого уровня заключается в одновременном рассмотрении проектируемых/реалируемых систем с различных сторон. Жизненный цикл - одна из таких сторон.

Далее вас ожидает несколько постов посвященных таинству Смерти в Java.

The Tale of Java Performance

The Tale of Java Performance
Abstract
The Java platform introduced Virtual Machines, JIT Compilers and Garbage Collectors to the masses and to mainstream software development. Demand and competition drove impressive improvements in the performance of Java implementations, and while the state of the art can be learned from JVM research papers and product benchmarks, we offer a “Making Of” exposing the challenges, tensions and strategies behind this history, extrapolating to similar platforms such as Microsoft .NET’s CLR.

суббота, 21 ноября 2009 г.

JPA Performance, Don't Ignore the Database

JPA Performance, Don't Ignore the Database

Locking and Concurrency in Java Persistence 2.0

Locking and Concurrency in Java Persistence 2.0

При разработке J2EE приложения встает необходимость работы с Базой.
Типичный "путь" данных: SomeMiddleware(Spring,EJBContainer(WebSphere,WebLogic))<->SomeORMFramework(Hibernate,TopLink,OpenJPA,EclipseLink)<->JDBCDriver<->TCP/IP<->RDBMS(Oracle,DB2,PostgresQL,MySql).

An Interview with Dr. Jay Hoeflinger about Automatic Parallelization

An Interview with Dr. Jay Hoeflinger about Automatic Parallelization.

Карантин окончен.

В связи с окончание карантина, семинары продолжаются в прежнем режиме:
- Пн 17.00 - "Профессиональное Java программирование"
- Чн 17.00 - "Многопоточное программирование на Java"

среда, 18 ноября 2009 г.

Пучок ссылок от remark (Дмитрий Вьюков)

Собственно пучок.
Многие я уже публиковал, но повторение не помешает :).
Материал вводного характера.

СУПЕРКОМПЬЮТЕРНЫЙ КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ

Создан СУПЕРКОМПЬЮТЕРНЫЙ КОНСОРЦИУМ УНИВЕРСИТЕТОВ РОССИИ.
7 октября 2009 года состоялось годичное собрание Суперкомпьютерного консорциума университетов России.

Материалы скорее обзорного характера.
Особенно поразило:

вторник, 17 ноября 2009 г.

Список литературы от к.ф.-м.н. Карпова В.Е. (МФТИ)

Список литературы от Карпова Владимира Ефимовича, к.ф.-м.н., доцента кафедры информатики Московского физико-технического института (ГУ) со страницы Аннотации лекций выбираем Карпов В.Е. Введение в распараллеливание алгоритмов и программ. Вот оттуда список литературы:
+ Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.
+ Гергель В.П. Теория и практика параллельных вычислений // М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2007.
+ Барский. Параллельные технологии. // М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2007.
+ Топорков В.В. Модели распределенных вычислений // М.: Физматлит, 2004
+ Миллер Р., Боксер Л. Последовательные и параллельные алгоритмы.// М:. Бином, 2006.
+ Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования // «Вильямс», 2003.
+ Jordan H. F., Alaghband G. Fundamentals of parallel processing // Pearson Education, 2003.
+ Quinn M. J. Designing efficient algorithms for parallel computers // McGraw-Hill Book Company, 1988.
+ Selim G. Aki The Desing and Analysis of Parallel Algorithms // Prentice Hall International, Inc., 1989.
+ http://www.ida.liu.se/~chrke/courses/APP/papers.html
+ http://www.owlnet.rice.edu/~comp422/

МФТИ: Летняя школа по высокопроизводительным вычислениям

Летняя школа по высокопроизводительным вычислениям
23 – 30 августа 2009 года в МФТИ в Долгопрудном впервые состоялась межвузовская научная молодежная школа по высокопроизводительным вычислениям в прикладном численном моделировании. Программа научной школы предоставила российским студентам, аспирантам и молодым ученым уникальную возможность интенсивной стажировки и дополнительной профессиональной и научной подготовки в сфере современных HPC технологий.

Акцент школы - практика работы на вычислительных кластерах (архитектуры Intel и NVidia).

Было около 40 участников, разбитых на две группы, по принципу двух платформ: Intel, NVDIA.
Основным отличием школы было большее погружение в проблему, в которой естественным образом появляются технологии НРС. А именно, через цепочку задача - методы - алгоритмы - архитектуры - код ... показать современные технологии в работе.

Программа школы
Аннотации лекций
Презентации лекций
Методические материалы
Бизнес презентации

OpenCL. Что это такое и зачем он нужен? (если есть CUDA)

OpenCL. Что это такое и зачем он нужен? (если есть CUDA)