schegloff (schegloff) wrote,
schegloff
schegloff

Category:

Деградировал до программиста, или Опыт разработки Java-GXT-web-приложения

Чем я занимался последний месяц (помимо прочих директорских обязанностей): писал код. Да, да, как самый последний быдлокодер, разрабатывал web-приложение. На языке, которого не знал (Java) и под фреймворк, знакомый лишь по его javascript-версии (GXT, он же Ext-GWT, java-библиотека для Google Web Toolkits).

Почему я

Во-первых, идея приложения была моя (Веб-GUI для заполнения форм, хранящихся на локальном диске, а не в сети), срок для реализации неожиданно оказался очень коротким (месяц до рабочей альфы), другому программисту можно и не успеть все объяснить. Во-вторых, знакомые программисты, почитав техтребования, разбегались как черт от ладана (да и пойди найди Java-GXT программиста в Перми!). В-третьих, незнакомые на объявления вообще не откликнулись. Так что другого выхода не было.

Метрики проекта

Старт 12 ноября, альфа-версия 15 декабря, всего 33 дня. Разумеется, без выходных, и так в месяц не уложился. Всего 3482 строки java-кода, из них примерно 1000 строк добавились в последнюю неделю (когда пошло дописывание очевидных методов). 2 рефакторинга. 9 промежуточных сборок. 15 мелко исписанных (TODO и заметками) листов А4.

Запомнившиеся проблемы

1) GXT 2.2 несовместимость с компилятором GWT версии 2.1: NumberField в Firefox просто отказался работать (а вводить надо именно цифирки). Как обухом по голове, чуть не выбросил компьютер в окно. Потом по совету разработчиков GXT откатился на компилятор 2.03 и продолжил работу.

2) Java Date() - чтобы что-то делать с датой, в Java нужно прикручивать другие классы (календари и форматтеры), что меня просто шокировало. Написал пару нужных оберток, и двинулся дальше.

3) Невозможность использования HTML парсера браузера для разбора XML - не обрабатывает русские теги. А я было раскатал губу использовать GXT DOMQuery для обработки всех данных! Черта с два, нет русских тегов в HTML, халява обломилась.

4) Полный тупик с асинхронной работой - как ловить асинхронную нить из синхронной, если синхронная быстро кончается?! Долго возился с Java wait, но так ничего и не понял. Использовал GWT Timer, а потом перешел на назначение Listener'ов.

5) Управление "резиновой" отрисовкой виджетов Ext-GWT - это просто слезы. В разных сочетаниях они ведут себя по-разному, причем я так и не смог понять (методом экспериментального тыка), что там с чем связано. Пришлось остановиться на более-менее стабильных Layout'ах, а остальные отложить до лучших времен. Но горькое послевкусие поражения - осталось.

Не проблема

1) Полное незнание Java и Ext-GWT на начало работы практически не помешало. Async и Layout - вот те мета-навыки, которых на самом деле не хватало; а конструкции языков выучились по ходу кодирования.

Отсюда мораль: учить нужно не языки, а концепции; если у кого есть на примете хорошая статья по Layout в Ext-GWT - поделитесь ссылочкой, иначе самому писать (статью) придется!

Общие ощущения от Java и GXT

1) Java - намного лучше, чем ожидал, строгая типизация оказалась весьма удобна (за все время разработки не сделал ни одной ошибки, потребовавшей больше 3 минут на обнаружение), а набор вкусностей в IDE Eclipse - шире, чем я мог даже мечтать.

2) GXT - это реально круто. Программировать GUI на Java, с развитой типизацией - и получать его работающим под любым браузером. Даже не знаю, смогу ли я теперь делать сайты не на GXT :)

Результат

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

Второй результат: устал как собака, и смотреть на код больше не могу :)
Subscribe

  • Цитата дня: что есть истина

    Восприятие мира таким, как он есть, НЕ является эволюционным преимуществом, а, наоборот, вредит выживанию. Эволюция поддерживает не "правильное"…

  • Цитата дня: позор какой-то, а не коррупция

    Расследование ВБ показало сознательное и некорректное улучшение в 2018 году рейтинга DB Китая, в 2020 году — Саудовской Аравии и ухудшение в 2020…

  • Цитата дня: мы не туда попали

    Годы назад меня удручал пессимизм поздних произведений Станислава Лема, который на протяжении всей жизни был для меня примером относительно светлого…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 14 comments

  • Цитата дня: что есть истина

    Восприятие мира таким, как он есть, НЕ является эволюционным преимуществом, а, наоборот, вредит выживанию. Эволюция поддерживает не "правильное"…

  • Цитата дня: позор какой-то, а не коррупция

    Расследование ВБ показало сознательное и некорректное улучшение в 2018 году рейтинга DB Китая, в 2020 году — Саудовской Аравии и ухудшение в 2020…

  • Цитата дня: мы не туда попали

    Годы назад меня удручал пессимизм поздних произведений Станислава Лема, который на протяжении всей жизни был для меня примером относительно светлого…