Слайд 2О проекте Apache Harmony
история/текущее состояние
Создан 2 года назад совместными усилиями группой компаний
и институтов, среди которых такие как Apache, Intel, IBM, BEA
Цель: создать открытую реализацию J2SE под лицензией Apache.
Слайд 3О проекте Apache Harmony
текущее состояние
Близкая к 100% реализация J2SE APIv5
Несколько виртуальных машин
Несколько
JIT компиляторов и интерпретаторов
Несколько различных сборщиков мусора (garbage-collectors)
Большой набор тестовых пакетов
Инструменты входящие в JDK
Слайд 4О проекте Apache Harmony
внутренняя структура / участие в проекте
Committers ~ 20 человек
Developers
– все желающие
Caйт проекта: http://harmony.apache.org
Issue/bug tracker: http://issues.apache.org/jira/browse/HARMONY
Архив дискуссий по проекту: http://dir.gmane.org/gmane.comp.java.harmony.devel
Слайд 5Примеры задач
/варианты участия
Компиляторы: реализация оптимизаций
Сборщик мусора: оптимизация времени работы и планов
сборки мусора.
Виртуальная машина: содержит большое количество подкомпонент каждую из которых можно улучшить.
Пример: 1 неделю назад в Harmony был выложен новый и самостоятельно разработанный bytecode verificator, который в несколько раз быстрее имеющегося.
J2SE API: реализация недостающего и оптимизация существующего Java API
Анализ производительности открытых benchmarks ( DaCapo, SciMark…) с целью внесения улучшений в любой из компонентов JVM
Слайд 6Примеры задач
/варианты участия
Примеры задач для компилятора: http://wiki.apache.org/harmony/JIT_Development_Tasks
Java bytecode translator refactoring
Reduce overhead
from Back Branch Polling
Implement interface call devirtualization
Higher bounds checks of array accesses are not eliminated
Improve loop unrolling and the code produced after the optimization
Implement versioning of hot loops
Implement bytecode-based edge profiling
Register allocation improvements and tuning
Support X87 based floating point math
…. И много других задач
Слайд 7Что нужно для успешного выполнения задачи
Участие в выборе тематики вашей работы.
Научный руководитель,
заинтересованный и разбирающийся в данной тематике.
Работа в Intel Labs или дома (~10-15 часов в неделю). Доступ в Интернет.
Понимание, зачем это нужно вам самим.
Слайд 8Необходимые и желательные навыки
Необходимые навыки
Языки Java или C/C++
Желательные навыки
Письменный английский
Умение читать код
Умение
работать с профилировщиками (VTune)