Главная

Эндрю Бахман рассказывает о работе над Джава для BeOS.

Эндрю Бахман, интервью с которым недавно появилось в The BeOS Journal, известен BeOS–сообществу в основном своим пакетом HybridDivX и работой над ffmpeg, входящим в этот пакет. Однако 27–летний Эндрю воспринял коцепцию многопоточности, которой так славен BeOS, всерьез, и, кроме своей основной работы программистом–исследователем в NASA, поет, танцует, учит мандаринский диалект китайского языка и работает над несколькими BeOS–проектами: совершенствование редактора программиста Pe, создание версий StyledEdit и Terminal с открытым кодом, и, наконец, работает в команде, портирующей Java под BeOS. И хотя у нас есть «свой человек» в этом лагере, сей муж скрылся в Ирландии от вопросов российских компетентных BeOS–органов и от публичных допросов злостно уклоняется. Так что, как в былые годы, правду мы узнаем из забугорных «голосов». Итак, отрывок из интервью, посвещенный JDK ( вопросы задавал Крис Симмонс, TheBeOSJournal):

----------------------–

Эндрю: В работе над портированием Sun JDK под крылом BeUnited я работаю уже примерно 15 месяцев. Верю, что мы преодолели уже большую часть проблем. Одной из первых проблем была проблема «вытаскивателя-себя-за–волосы» (bootstrap). Копилятор Jikes оказал нам неоценимую помощь в этом деле, так как некая предварительная работа с ним была уже выполнена группой spmc для порта версии 1.3. В связи со сложно–составной природой современной JVM (Виртуальная Машина Джава) у нас получилось запустить определенные части проекта раньше других частей. Например, довольно быстро запустился режим интерпретации, после чего уже был сделан и режим JIT (Компиляция в Реальном Времени).

Другие проблемы были связаны с необходимостью принятия архитектурных решений. Например, в какой степени использовать специфические BeOS–возможности? Есть традиционный путь Unix (напр. Linux/Solaris), частично применимый и для BeOS ввиду некторой POSIX–совместимости последнего, но это зачастую малоэффективно и малоестественно. Хотя использование некоторых решений из других платформ временами может быть целесообразным.

(Многие отмечают заметную идеологическую близость Java с BeOS API и архитектурой. Известно также, что собственный порт Java от Be Inc. максимально использовал эту идеологическую близость, в частности Джава–потоки практически напрямую проецировались на нативные BeOS–потоки. Мой собственный скромный опыт по копанию в коде Mozilla в общем, подтверждает тот факт, что часто использование решений из *nix для BeOS по эффективности и естественности сильно напоминает операцию по удалению гланд автогеном через прямую кишку — C.Д.)

Крис: Объяcни нам коротко про этот bootstrap («шнурок») и почему с ним в BeOS были такие сложности?
Эндрю: Ага, это концепция самораскрутки или самовытаскивания, из ныне не очень популярной фразы «Поднимать себя за шнурки». К примеру, для загрузки BeOS в качестве операционной системы со всеми ее драйверами, нужен загрузчик, уже являющийся в некотором смысле ОС в миниатюре, например, он должен уметь работать с файловыми системами и запускать образы на выполнение.

В Java SDK такой подход обязателен, поскольку актуальная версия всегда собирается средствами предыдущей. Так как у нас не было этой самой «предыдущей» версии, мы должны были её проимитировать. Мы подменили jikes и Javac, C++ и Javah, ну и кое–что еще.
Кроме того мы портировали часть кода, необходимого для сборки из Java в С++, для облегчения работы. В общем, создание «загрузчика» было не особенно трудным, но по ходу проекта пришлось вносить дополнения, так как требования к нему росли. Кроме того, некоторое время было потрачено на обход багов в jikes, Javah и т.д.

Крис: Что с точки зрения BeOS делало работу над портом приятной или неприятной?
Эндрю: Как я уже говорил — я страстный поклонник BeOS Tracker–a. В какой бы среде и на каком бы языке я не программировал, работа с файлами для меня всегда на первом месте. Я также большой поклонник TermHire (открывает терминал в папке соответствующей папке Tracker–а, другая версия называется Summon- C.Д.) — кстати в версии Terminal от OBOS, над которой я работаю, эта функциональность уже будет встроенной.

Поэтому для меня работа над проектом Java в BeOS гораздо большее удовольствие, чем работа в Windows или Solaris, к примеру. Понятно, что это относится и к любому другому проекту. Думаю, многие разработчики со мной согласятся по этому поводу.

Крис: Имеется в виду способность BeOS легко переключаться между GUI и командной строкой?
Эндрю: Да нет, это нечто большее. В Windows ты тоже переключаешься запросто. Опыт работы в Tracker не может быть разъяснен в одной фразе -:)

Крис: Насколько готова Java для BeOS к сегодняшнему дню? Можно ли ее уже использовать в FireBird/Mozilla, или, даже если Джава будет готова, здесь есть трудности с плагин–архитектурой?
Эндрю: Надо сказать, что я никогда не был стронником применения Java на интернет–страницах. Я всегда скорее здесь видел инструмент для серьезных разработок, а не для болталок и примитивных интернет–игрушек. Но вообще я не думаю, что скомпилить плагин для Mozilla будет особой проблемой.

JVM 1.4.2 весьма близка к завершению, каких либо страшных багов уже нет. В смысле тех, о которых нам известно -:) Достаточно исчерпывающим тестом является уже сама сборка полного комплекта Java. В результате получается около 1.5 GB рабочих файлов. Паниковать не надо :) — это по большей части временные/промежуточные файлы. А не то что бы это все пришлось устанавливать на ваш несчастный BeOS–box. :–)

Общее число файлов после сборки — около 20,000. Я запускал «розовый» набор тестов, и он проходил на 98%. Думаю, сегодня эта цифра уже выше 99%. «Розовый» набор включает в себе около 1000 тестов.

Крис: Каковы планы по выпуску JVM 1.4.2 для народа? В каком виде оно будет доступно Васе–юзверю, будет ли компактная версия пакета в противовес полной (для разработчиков).
Эндрю: Я не очень в курсе планов работы над релизом. Это должно быть сделано совместно с Sun Inc, и сроки во многом зависят от того, когда Sun признает работу удовлетворительной. Что касается Васи, то у него скорее всего будет выбор между JRE (среда для выполнения Джава–программ) и комплектом разработчика JDK(кроме JRE включает в себя Javac, Javah и многое другое). Как это и сделано для всех других платформ.

Крис: А какая разница между ними в размерах?
Эндрю: Думаю, такая же, как и в пакетах для linux/solaris/windows.

Крис: Учитывая темпы работы над проектом, надеешься ли ты на то, что Sun опубликует это дело в ближайшие месяцы? Скажем к концу года, в какчестве прекрасного подарка сообществу BeOS–пользователей?
Эндрю: Понятия не имею, что там и как делается внутри Sun при принятии решений о релизах вроде этого. Я полагаю, что в этом деле должны участвовать и юристы, что делает для меня предсказание затруднительным:)

Крис: Честный ответ, по крайней мере. Попробуем спросить кого–нибудь из BeUniited или Sun;)
Эндрю: Что я могу, так это заверить, что когда проект все же будет публично доступен, мы приложим все усилия к тому, чтобы работали все аспекты использования JDK, от RMI до CORBA и так далее.

Крис: Расскажи еще про Java для BeOS… Будет ли скорость той же что в Windows? Или даже быстрее?
Эндрю: Я не занимался сравнительным тестированием скорости для разных платформ, и вряд ли кто из нашего проекта. Могу только сказать, что оптимизированная версия весьма отличается по скорости от отладочной:). Кроме того, значительная часть кода для разных платформ совпадает. Поэтому в том, что касается функций, реализованном в этом общем коде, можно предполагать приблизительно одинаковую производительность. У других платформ было достаточно времени для шлифовки, и мы от этого выиграли. В общем, нет причин думать, что наша версия будет меделенней, кроме того у нас есть несколько фокусов в загашнике, для улучшений производительности в будущем. -:)

Крис: Насколько Sun «был в помощь» вам этом проекте?
Эндрю: Настолько, насколько можно было надеяться. Они выставили перед нами несколько целей–вех, которых мы должны были достичь перед тем, как Sun начнет тратить на это дело свои драгоценные человеко–часы. Значительную часть из этих поставленных задач мы уже выполнили. Так что я полагаю увидеть вскоре кого–либо из Sun, сотрудничающего с нами на регулярной основе.

Крис: Ну а какие из этих целей еще осталось достичь?
Эндрю: Из главных — осталась одна. Не буду пока говорить подробнее, и, хотя я слаб в предсказании дат, твердо надеюсь, что до конца этого год мы задачу выполним. Хотя обстоятельства могут подзатянуть этот процесс чуть дольше.

Крис: Можно ли так понимать, что если «веха» достигнута, то это мостик к появлению чего либо, что можно сгрузить с сайта Sun?
Эндрю: Скорее это создание дорожки, по которой могут идти дальше ребята из Sun. Но это скорей относится к административным вопросам, отвечать на которые — компетенция лидера проекта.

Крис: Тем не менее, внушает… Будешь ли ты сам использовать Java в BeoS? Ранее ты упоминал, что использование на веб–сайтах тебя не привлекает. А для чего она тебе еще может пригодиться?
Эндрю: Я уже ее использую под BeOS. На своем официальном рабочем месте. И там она вполне меня удовлетворяет. Java — превосходный язык для целей сложного моделирования, чем я и занимаюсь на работе. И я уверен, что найду большое число Java–приложений, которые буду использовать.

Крис: А есть уже какие–нибудь компоненты из версии 1.5, включенные в ваш проект 1.4.2, или которые в планах включить?
Эндрю: Хм, про 1.5 мы еще не готовы говорить на публике. :–)

Крис: Будет ли PPC–версия для BeOS/OpenBeOS?
Эндрю: У нас есть один человек в команде, работающий над такой версией. Думаю все же, что версия для Intel появится раньше.»

Re: Эндрю Бахман рассказывает о работе над Джава для BeOS.

Очень радует. Но мне кажется, что Sun будет тянуть кота за хвост, и релиз мы получим в лучшем случае к следующему новому году =(

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
t
h
3
a
t
y
Enter the code without spaces and pay attention to upper/lower case.