среда, 12 сентября 2012 г.

Итоги семинара Embarcadero посвященному выпуску Delphi XE3 в Москве 12.09.2012

Сразу оговорюсь, я работаю в Delphi 2010, поэтому я шел на семинар с достаточным интересом,  ожидая увидеть значительные нововведения в ХЕ3 по сравнению с 2010. Нет, ну конечно я следил за изменениями в ХЕ и ХЕ2, но как-то так получилось, что данные продукты у меня не получилось пощупать собственноручно. Подготавливаться к семинару начал загодя. В связи с тем что в последнее время в интернете прошла череда достаточно неприятных новостей, рисующих достаточно туманную для Delphi перспективу, сразу же составил примерный список вопросов по данным пунктам. (А новости были разноплановые, от полного разгона команды разработчиков и передаче разработке в Румынию, до недавней, о запрещении разработки Client/Server на версии Professional). Так-же в список были включены вопросы о FireMonkey в связи с претензиями к ее стабильности и т.п. Часть вопросов помогли составить участники форума "Мастера Дельфи".

Вопросов получилось почти два десятка (на часть из них ответы к сожалению получить не удалось, по разным причинам) и с учетом того что на секцию вопросов отводилось в программе семинара всего 30 минут, становилось понятно, что если даже буду их задавать один я, то все равно не получится уложиться в отведенный промежуток времени, а ведь есть еще и другие участники со своим "наболевшем" :)

Изначально на семинар собиралась достаточно большая команда разработчиков с форума "Мастера Дельфи", но как-то так получилось что в итоге к отелю "Корстон", что на улице Косыгина, мы прибыли в составе "малого пехотного подразделения" всего лишь из трех человек :) Отсидев вступительную часть Джона Томаса было принято стратегическое решение, чтобы узнать необходимую информацию и не пропустить семинар, мы решили разделиться. Оставив одного из коллег в зале, со вторым я выдвинулся в сторону курилки, где и была организована засада :)




Буквально через три минуты на горизонте появился Сергей Кожевников - менеджер по работе с партнерами Embarcadero и Андрей Совцов - менеджер по продуктам Embarcadero.
Поздоровавшись и испросив разрешения на минибрифинг, сразу приступили к расспросам. Правда нас сразу попросили что все, что будет сказано, не для публикации, поэтому здесь я расскажу только о том, на что было дано разрешение.

А начали мы с вопроса правдива ли информация о передаче разработки в Румынию. Отсмеявшись Сергей ответил (цитирую): "это не слухи, но нет" :)
В действительности в Румынии ведется работа над Delphi. Но данная работа заключается в тестировании продуктов Embarcadero, но не в их разработке.

По поводу местонахождения отдела разработки, оказывается он находится в Питере (сам в шоке:). Там-же ведется большая часть работы над новым компилятором.

Ну а слух о грядущих изменениях в Eula оказался вбросом.

Разговаривали на тему разработки под мобильные устройства, поддержки WinRT, но об этом попозже.

В сумме мы пробеседовали в районе полутора/двух часов, как раз до наступления кофебрейка. Жаль что я не могу рассказать о большем, но беседа было очень приятная, за что Сергею и Андрею огромное спасибо :)

А в тот момент пока мы беседовали в зале рассказывали о нововведениях в XE3.

Основные позиции:
Metropolis UI - грубо набор стилей позволяющих изменить внешний вид приложения в зависимости от выбранной платформы (win/ios/android). Поддержка работы с сенсорными экранами. Набор дополнительных уникальных элементов управления. Работа с LiveTile. И т.д.

Изменения в FireMonkey - помимо проведенной большой работы в плане стабильности и оптимизации добавились Actions, поддержка стилей Metropolis UI, удобный инструментарий для записи и воспроизведения видео/звука, расширенная поддержка 3D. Поддержка растровых контролов - тут немного не понятно, ибо я не работал ранее с FireMonkey, по видимому ранее все было только через вектор, точнее сказать не смогу... Ну и еще несколько различных изменений о которых можно узнать по ссылке.

LiveBinding - визуальное связывание элементов. Ну... данное нововведение осталось для меня не понятым, зачем?

Добавили поддержку SQLite - это не моя область, поэтому ничего не расскажу, заинтересованные могут просветиться по данной ссылке.

Появились хэлперы для типов. Т.е. вы теперь сможете реализовывать собственные методы для типа (например) string. Более того, часть из них уже присутствует. Например теперь мы сможем написать вот такой код:

var 
  S : string;
begin
  S := ' СТРОКА В ВЕРХНЕМ РЕГИСТРЕ, ОБРАМЛЕННАЯ ПРОБЕЛАМИ ';  
  ShowMessage(S.ToLower.Trim);
end;

В результате отобразиться строка в нижнем регистре с убранными пробелами. 
Очень не плохо :)

Воть... а компилятор для MacOS iOS и Андроида из ХЕ3 убрали, и асм вставок ждать в 64 битном компилятора похоже не имеет смысла.

После кофебрейка, успешно "опоздав" на рассказ о возможностях так и не понятого мной Visual LiveBindings, мы слушали доклад о разработке под Windows 8. В принципе все было понятным еще в первой части, единственный нюанс - это работа с LiveTile. Если я правильно понял, то Microsoft не дает возможность сторонним продуктам работать с WinRT, только продуктам выпущенным при помощи Microsoft Visual Studio. Поэтому ребята из Embarcadero выкрутились следующим образом - они реализовали некую утилиту на MS VC++, которая и работает с LiveTile, а то что она должна в этом LiveTile отображать ей говорит уже Delphi приложение посредством класса TLiveTile. Более подробнее здесь.

Доклады о HTML5 Builder и FastReport я благополучно пропустил, ибо не моя тема и плавно переместился обратно в "засаду" в курилке, куда через некоторое время подошел глава представительства Embarcadero в Москве, Кирилл Раннев.

С ним я побеседовал по поводу слухов о грядущем переводе компилятора на LLVM, на что получил подтверждение что это не слухи, правда на технические детали он не смог ответить перенаправив на Джона Томаса, но (если я правильно понял) поддержка LLVM уже реализована в бете С++ Builder XE3.
Поговорили на тему мобильных приложений, в кратце была озвучена позиция что сейчас уже есть готовое решение, это HTML5 Builder, но т.к. оно накладывает достаточно жесткие ограничения (более медлительное чем натив, необходимость подключения к интернету) то готовится к выходу еще один продукт - MobileStudio, в которую, кстати, и перекочевали компиляторы для iOS и Андроида (блэкбери и т.п. мобильности). На вопрос о стоимости данного пакета и сроках выхода было опять предложено обратиться к Джону Томасу, однако Кирилл меня честно предупредил, что шанс на получение ответа минимален. 
Так оно и оказалось, а Кириллу спасибо за беседу :)

И собственно настало время сессии вопросов и ответов. Их я частично записал на диктофон и выглядели они следующим образом:

  • какие наработки по поводу многопоточности при работе с FireMonkey?
  • до конца этот вопрос не решен, вкратце могу сказать что проблема обеспечения нормального одновременного доступа при многопоточности сложная и пока вам придется решать ее в каждом конкретном случае самостоятельно. Делать простые способы обеспечения многопоточности нам не позволяет производительность, поскольку есть блокировки.

  • Поддерживаете ли вы WinRT API для нативных Windows приложений?
  • Windows классический и Windows with RT абсолютно разные операционные системы, между ними барьер очень высокий, поэтому при помощи Metropolis UI мы преодолеваем его определенным образом, но пока WinRT нами не поддерживается.

  • Поддерживается ли загрузка приложений в Windows Market?
  • Ну пока нельзя сказать что Microsoft достигла потрясающих успехов на базе WinRT и ARM процессорах, поэтому мы считаем что пока достаточно поддержки Intel base девайсов, т.е. тогда нам не нужно использовать Windows Market для того чтобы загружать приложения, потому что десктоп приложения загружаются обычным способом дистрибуции. А вот для WinRT придется делать "различные вещи", но мы все это прекрасно понимаем, поэтому пока ситуация останется такой-же.

  • В контексте С++ Builder упоминался LLVM, а как обстоит ситуация с компилятором для Delphi?
  • В будущем мы придем к архитектуре с back-end/front-end и все компиляторы будут так или иначе с LLVM. 

  • И еще вопрос, если посмотреть в QC по поводу расширений языка, то можно заметить, что очень многие предлагаемые расширения для Delphi, уже реализованы в том или ином виде в Delphi Prism. Ну например предложения по расширению WITH, что например эквивалентно объявлению переменной в любом месте кода. Ну или например инициализоторы/финализаторы для record, достаточно много расширений, которые можно реализовать в Delphi. Не обязательно например сборщик мусора.
  • Ну для нас драйвером является не просто некий, так называемый, синтаксический сахар, мы смотрим через призму поддержки различных платформ. В частности для поддержки мобильных платформ нам понадобилось (как пример то, о чем вы сказали - не надо)  внедрить в язык подсчет ссылок. У нас тут драйвером является не чисто данный синтаксический сахар, а именно необходимость поддержки платформ с позиции языка.

  • Вопрос по поводу производительности FireMonkey. Но не просто абстрактный, а готова ли она для разработки 2D/3D игр на ее платформе?
  • Мы работает над оптимизацией конвейера для более быстрого использования шейдеров. Кое каких хороших результатов мы добиваемся, но сказать что это законченный движок для разработки игр... все зависит от того, какого плана игру вы хотите сделать. Нам в принципе не сильно важна производительность каких-то навороченных игр, 2D игрушка была бы в принципе нормальной и очень было-бы здорово если бы она смогла работать на разных платформах. Для 2D игр она в принципе подходит, но надо понять что надо не сцену перерисовывать целиком, а "квадратиками", ну т.е. поддерживается классическая анимация при помощи спрайтов.

  • Сейчас приложения тесно связаны с социальными сетями и прочими интернет ресурсами и планируется ли в FireMonkey написание компонента вроде веббраузера?
  • Т.е. вы хотите веббраузер в FireMonkey?
  • Ну не обязательно полноценный, но чтобы мог отображать простейшую разметку.
  • Ой, а уже все сказали что хотят интегрировать веббраузер в FireMonkey?
  • Ну что-то вроде того, ну компонент, разве вы не знаете компонент TWebBrowser в VCL?
  • Ммм... Не, не слышал :)) 
    Ну а если серьезно, то у нас уже ведется разработка данного компонента, рано или поздно сделаем. 

В 20 минутную запись к сожалению попало только семь вопросов. Сказываются задержки при переводе туда и обратно, собственно о чем я и говорил, что в таком режиме задать больше 10-15 вопросов за 30 минутный промежуток практически не реально. За кадром остались три вопроса по HTML5 Builder и что-то опять связанное с оптимизацией FireMonkey с использованием GPU, а так-же не отвеченный вопрос по поводу использования в составе FireMonkey браузера на базе Хрома. Джон сказал взять его карточку и задать вопрос по почте ибо он сейчас не может ответить не разобравшись в вопросе.

Ну а в самом конце был бонус, разыгрывались призы :) 
Штук пять маек, тройка флешек на 8 Гб, два внешних накопителя на 500 Гб и беспроводная клавиатура. 
Во время розыгрыша призов на сцене зажигал Всеволод Леонов
Жалею, что не включил в финале диктофон, ибо в некоторых местах зал просто взрывался от смеха, но кто ж знал что оно так будет :)

Резюмируя: семинар отличный, проведено на высшем уровне, перспективы у Delphi есть и достаточно не плохие. В целом ушел с семинара в приподнятом настроении, чего и вам желаю :)





19 комментариев:

  1. Трям, Розыч!

    >> "А начали мы с вопроса правдива ли информация о передаче разработки в Румынию. Отсмеявшись Сергей ответил (цитирую): "это не слухи, но нет" :)
    В действительности в Румынии ведется работа над Delphi. Но данная работа заключается в тестировании продуктов Embarcadero, но не в их разработке."

    Хм, ну я конечно не знаю на 100%, но видел на delphifeeds.com блог одного разработчика (не тестировщика!) из Румынии, так он в Embarcadero работал, причем уже не один год на тот момент. Так что есть предположение, что товарищ Кожевников врет (как это не краснея делает его коллега Всеволод Леонов). Сейчас лень искать, но если интересно, то могу :)

    >> а компилятор для MacOS и Андроида из ХЕ3 убрали
    А он был? Для компиляции под Мак использовался ФриПаскаль, а под Андроид его наверно и в проекте не было (кроме обещаний Всеволода Леонова и других его коллег).

    >> В частности для поддержки мобильных платформ нам понадобилось (как пример то, о чем вы сказали - не надо) внедрить в язык подсчет ссылок.
    Как же это Джава без подсчета ссылок под Андроидом работает... А тем более нативный C/C++ код.

    >> какие наработки по поводу многопоточности при работе с FireMonkey?
    Как платформа, так или иначе предназначенная для мобильных устройств, может обойтись без нормальной поддержки многопоточности? Да это же самая первая заповедь разработчика под такие устройства: все что можно делать в фоне, в основном потоке - только интерфейс.

    В общем - не вселяет это все оптимизма :(

    ОтветитьУдалить
    Ответы
    1. Вы напутали! В XE2 у ЭМРО есть собственный компилятор под OSX x32, а для iOS использовался FPC.

      В XE3 из поставки убрали FPC, то есть поддержку iOS. Компилятор под OSX так и остался, к сожалению - по прежнему устаревший x32 а не x64.

      "Подсчет ссылок" - это на тематику iOS и ARC из ObjC. Это нужно для взаимодействия с фреймвоками на платформе. Интересно, как они победят селекторы ObjC))

      Java и Андроид работают в основном как managed-платформа, со сборщиком мусора. Подсчет ссылок там неявный и скрыт от пользователя, аналогично .NET. C/C++ с Андроидом работают через NDK на уровне ниже, чем Java -фреймвоки платформы, и используют собственную модель управления памятью.

      Многопоточность в FMX есть, но очень хочется увидеть OTL под OSX/iOS.




      Удалить
  2. Ну, за что купил - за то продал :)
    По поводу компилера озвучивалось что FPC был как раз для андроида. Что было под iOs не уточнял. Кстати забыл сказать про поддержку линуксов, она будет когда переведут компилер под LLVM

    ОтветитьУдалить
  3. Кстати по поводу многопоточности по всей видимости имелось ввиду работа с GUI. У меня на записи начало вопроса отрезано - поздно включил, а более точно вспомнить не могу о чем шла речь.

    ОтветитьУдалить
    Ответы
    1. +1, ибо обычное использование TThread никто из FMX никуда не убирал.


      >>> а компилятор для MacOS и Андроида из ХЕ3 убрали
      убрали компилятор iOS, а компилятора для андройда ранее не было. Мобильные компиляторы будут вынесены в MobileStudio. Компилятор MacOS X остался на месте.

      Удалить
    2. Да, пардон, конечно - убрали мобильный компилер.

      Удалить
  4. >> Ну, за что купил - за то продал :)
    Тебе за репортаж огромное спасибо!

    ОтветитьУдалить
  5. Александр, спасибо!
    Очень хороший и (главное) честный репортаж, выполненный в высокохудожественном и легкочитаемом стиле. Начали рабочий день с чтения именно Вашей статьи.

    Естественно, что в таком темпоритме, а также "курилочном" формате некоторые факты могли немного трансформироваться.

    Embarcadero исторически имела подразделение в Румынии (продукты линейки DBTools).
    FireMonkey в целом как платформа развивается в Питере, на семинаре 11-го сентября по приглашению Главы представительства Кирилла Раннева и Джона Томаса присутствовали разработчики (нативно-российские).

    Вопрос про "многопоточность" был задан в контексте текущей ситуации с FireMonkey, а не будущей реализации в рамках проекта Mobile Studio.

    Так что насчёт "систематического вранья", то эта ситуация имеет место, сложно не согласиться. Если это происходит неумышленно и вследствие плохого слуха/памяти, то:
    skype: vsevolod.leonov
    phone: +7(495)708-43-93
    email: vsevolod.leonov@embarcadero.com

    Но это никак не относится к автору статьи, которому российского представительство Embarcadero очень выражает искреннюю благодарность за объективность и качество проведенной работы. Всегда рады видеть Вас на наших мероприятиях :)

    ОтветитьУдалить
    Ответы
    1. И Вам спасибо за отличный семинар, позитивный настрой в наше время просто необходим :)

      Удалить
  6. Фотографий с семинара ни у кого не завалялось?

    ОтветитьУдалить
    Ответы
    1. В принципе нас всех там обильно фотографировали, а когда я спросил у фотографа (Татьяна - фамилию к сожалению забыл) где посмотреть результаты, мне сказали, что все будет опубликовано в блоге эмбаркадеро вместе с видеозаписью, после того как она пройдет монтаж. Так что думаю стоит просто подождать :)

      Удалить
    2. Подскажите, пожалуйста, по какому адресу находится блог Эмбаркадеро?
      (Никогда ранее не пользовалась blogpost.com, попала просто из гугля, ища отчёты о конференции)

      Удалить
    3. Ну вообще вот тут: http://blogs.embarcadero.com
      Будет ли выкладывать здесь или еще где-то пока не знаю.
      Как появится информация дам тут-же ссылку.

      Удалить
  7. Первое огорчение после семинара. Продемонстрировали нам пример захвата изображения с камеры, при этом так нахваливали этот компонент, мол "запустил на первом попавшемся ноутбуке с первой попавшейся камерой и все заработало". Запустил вчера демку CustomCaptureDevice не на первом попавшемся компе, а на вполне себе приличном iMac и обломался, встроенная камера не была обнаружена. Сдается Всеволод "слегка приувеличил" достоинства этого компонента и использовать его не представляется возможным, так как может тупр не заработать.

    ОтветитьУдалить
  8. >> инструментарий для записи и воспроизведения видео/звука

    это где такое в FM ?

    ОтветитьУдалить
    Ответы
    1. Я же ссылку дал:

      http://docwiki.embarcadero.com/RADStudio/en/What%27s_New_in_Delphi_and_C%2B%2BBuilder_XE3#FireMonkey_Changes_for_XE3

      Audio-video
      FireMonkey offers support for capturing media data (audio and video). For this purpose the following classes are introduced:
      TCaptureDevice, which is the base class for capturing devices.
      TCaptureDeviceManager, which offers the possibility to access and manage capturing devices.
      FireMonkey offers support to play media files (audio and video). The TMedia class is introduced to support playback for media sources.
      For easy access, the nonvisual component TMediaPlayer is introduced.
      For displaying video files, the TMediaPlayerControl component is introduced.

      Удалить
    2. Ну или вот здесь более подробнее:
      http://docwiki.embarcadero.com/RADStudio/en/Audio-Video_in_FireMonkey

      Удалить