Oracle ADF Development


oracle adf environment

(Это не я)



Для комфортной разработки лично мне видится, необходимо:

  • Современный 4х ядерный процессор.
  • 16 GB оперативной памяти
  • SSD. Разница с обычными HDD колоссальная.
  • В Ubuntu 14.04 / Oracle Linux 7.X мне работать комфортнее, чем в Windows 10.


В Linux при русской раскладке не работает copy / paste (по крайней мере из коробки. Как победить?)


Намного удобнее программировать с использованием 2-х мониторов. На одном Jdeveloper, на другом браузер с приложением или PL/SQL Developer, или техническое задание, или видео с обучающими примерами.


По возможности рекомендую использовать Oracle JET (набор из javascript фреймворков с подготовленными компонентами визуально аналогичными или очень похожими с Oracle ADF компонентами).

От Oracle ADF использовать только бизнес компоненты, бины, task flow.

Правда для этого нужно будет еще разобраться с реализацией REST и получить базовые знания программирования с использованием таких js фреймворков, как knokout.js.

Впрочем, непопулярный knokout.js, по всей видимости, можно заменить более популярным vue.js (но это не точно!)


Oracle ADF (Application Development Framework)

В предисловии книги Oracle Fusion Developers Guide написано, “To old dogs learning new tricks”.


Пара слов о технологии Oracle ADF


Oracle ADF - Один из множества фреймворков для разработки приложений с использованием технологий JavaServer Faces. Фрейморк закрытый, но корпорация Oracle готова предоставить его исходники компаниям-партнерам после специальной процедуры письменного согласования с особыми условиями хранения и ответственности.

Приложения, написанные с помощью данного фреймворка могут быть запущены на серверах приложений Weblogic. На других серверах новые версии ADF официально не поддерживаются. Есть сильно урезанная бесплатная версия, которая работает на Glassfish. Не вижу вообще какого-либо смысла ее копать, может быть имеет смысл только ее закопать, дабы не отвлекала.

АDF может быть использован с использованием технологий EJB, JPA (и д.р.) или с использованием компонентов BC4J (Business Components for Java). Если при разработке используются компоненты BC4J, в качестве баз данных, могут использоваться только сервера баз данных Oracle. Собственно вся разработка на ADF имеет смысл преимущественно (как я думаю) с использованием как раз BC4J.

Приложения на Oracle ADF очень удобны для банков, страховых. Т.е. там, где много всяких менюшек и чекбоксов. К сожалению в книгах и обучающих курсах обычно представлена всякая бесплолезная пурга, которая реально не особо и нужна.

Для разработки обычно используется бесплатная среда JDeveloper. (Самая тормознутая и глючная среда с которыми мне когда-либо приходилось работать). Впрочем альтернатив не просматривается.

Приложения, написанные на Oracle ADF (на взгляд администратора сайта) не отличаются какой-то особой красотой. (По мне, так они просто уродские :)). Особенно со стандартными скинами.

Зато один опытный разработчик, может достаточно быстро разрабатывать ПО, используя набор уже подготовленных компонентов. Создал SQL запрос, пару кликов и таблица с возможностью добавлять, удалять и реадктировать записи уже на форме и с ней почти сразу можно работать.

Разработка приложения на Oracle ADF подобно разработке приложений на Delphi или Visual C++ (но только для веб), когда на палитре компонентов выбирается компонент, перетаскивается на холст и в редакторе свойств задаются значения для данного объекта. Программирование на Oracle ADF в первую очередь заключается в умении манипулировать данными объектами и их свойствами.

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

Также, следует отметить, что среда разработки достаточно глючная. Начинает подвисать от простого внесения изменений в исходный код. Jdeveloper может закрыться или зависнуть в любой момент. То, что отображается в среде разработки может сильно отличаться от того, что будет получено на выходе при запуске приложения в браузере.

Для развертывания приложения на мой локальный сервер, требуется в среднем 2-10 минут, из-за чего разработка сильно затягивается. (Впрочем, после апгрейда моего компьютера, скорость развертывания увеличилась в разы.)

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

С приобретением опыта данные проблемы, конечно решаются, но требуется время. Очень хорошо, если ваше руководство отнесется к этому с пониманием и отправит вас на какие-нибудь курсы. Но так бывает не всегда.

Книг на русском практически нет. Единственная книга, которую удалось раздобыть - по 10 версии. Хотя основы понять можно, но для тех задач, которые нужно выполнять (впрочем достаточно простых) ее скорее всего окажется недостаточно.

И главное… Никогда не начинайте новый проект на Oracle ADF, если у вас нет ни одного человека с хорошим опытом работы с этой технологией (здесь я не про себя) … Когда-то я начинал именно на таком проекте. Получилось не очень!



Для информации:


Недостатки Oracle ADF:

  1. Одна процессорная лицензия на ADF может, в некоторых случаях стоить $5,800. Проверяйте стоимость использования заранее! Скорее всего стоимость будет бесплатной в случае приобретения Weblogic, но лучше узнать заранее, чтобы не было недоразумений. Да и про цену Oracle DataBase забывать не стоит, если планируется использовать платную версию базы данных.

  2. Сами клиенты, т.е. компьютеры на которых дожно запускаться web приложение должны быть не самыми слабыми. Я думаю, что-то от топовых core 2 duo с 2 GB оперативной памяти. У клиента, крупной сети магазинов не все компьютеры отвечали требованиям.

  3. Разработчиков мало, проектов мало. Может быть интересно компаниям, если те уже используют Oracle DB, Weblogic, SOA, RPAS и д.р. и им нужно написать свой UI.

  4. Очень не нравится, что нельзя одновременно открыть несколько страниц проекта в одном браузере.

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

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

  7. Глюки, Баги заполонили весь фреймворк. Еще много чего кешуруется и ошибка то воспроизводится, то нет.

  8. До дизайн Alta UI, все вообще выглядело отвратно. Сейчас стало намного лучше. Как если сравнивать старую ладу и новую.

  9. На момент переноса сайта на новый движок, нет ни одной вакансии на всю Россию на крупнейшем сайте по поиску работы в стране, где бы требовался чисто Oracle ADF разработчик.

  10. Нет каких-либо видеокурсов. Только какие-то разбросанные ролики. Один появился, но сильно ограниченный и от индуса.

  11. Старые проекты с большой вероятностью могут неправильно импортироваться в Jdeveloper, а если их не импортировать IDE откажется с ними работать.

  12. Разрабатывают ADF фреймворк какие-то чудаки с большой буквы (подставьте букву сами). Переписали компоненты. В 11 версии все работало, в 12 функционал выпилили, решив что он не нужен и то УГ, что они реализовали обязательно должно всех устроить!

  13. Если посмотреть генерируемый код ADF страницы, сразу станет понятно, что тестировать такую кашу, инструментами вроде Selenium, проблематично.

  14. Разработчики примеров от Oracle, настолько суровы, что примеры своих пректов выкладывают на github в архивах! А в качестве примера, предлагают поизучать приложение, без исходных кодов классов. Можно скачать пример от Oracle с Oracle ADF приложением, где относительно норвое приложение, должно получать ответы сервиса на домене, который уже дропнут.

  15. Редко, но такое бывает, что Jdeveloper генерирует пустые файлы, из-за которых может не запускаться приложение. Но гораздо хуже, когда прописываются какие-то ненужные значения, которые потом сложно отловить. Иногда ломается viewCriteria, свойства передаваемые во ViewObject и т.д. При обновлении SQL запроса, могут неправильно генерироваться аттрибуты.

  16. Отключили нужный мне функционал. Я теперь не могу скопировать название DataContorl по Ctrl + Insert.

  17. Нет никаких инструментов для работы с groovy скриптами, которые могут активно использоваться. Плюс они кешируются, хрен удалишь.

  18. Возможно, что Oracle, купит что-то получше и будет продвигать что-то другое. Сейчас начали пилить Oracle Jet, но там, похоже, что пока тоже не очень все хорошо. Связка ADF BC REST вместе с Oracle Jet пока видится наиболее перспективной.

  19. Jdeveloper в параметрах appModuele в разделе WebService -> Rest отображает только определенное количество записей о webservice в своем окне. Если нужно больше, они не отображаются. (Искать нужно в файле ResourceRegistry.rpx)

  20. Jdeveloper зависает даже при редактировании в нем javascript.

  21. Иногда Jdeveloper при редактировании кода ViewObject не сохраняет изменения. Нажимаешь сохранить и не замечаешь, что ничего не сохранилось. Может потребоваться 2,3,5,10 попыток, и Jdeveloper сохранит файл.

  22. Jdeveloper на моем компьютере отказывается создавать REST сервисы. На компьютере коллег, создает. Переустановил. 2 дня создавал, а потом опять перестал.

  23. При работе с REST сложность разработки увеличивается в 2 раза. А при JET, так еще в 2-3 раза.

  24. Меня также бесит, что при старте окно браузера открывается и сразу становится активным. Иногда при возникновении ошибки нельзя просто взять и закрыть окно с приложением.

  25. Имеются проблемы при попытке редактирования списка аттрибутов в bindins. Окно редактирования может несколько раз, а то и десятков раз открываться с ошибкой.

  26. Inner class, написанные лет 10 назад и представляющие лично для меня интересный функционал так и не были дописаны и их использование крайне нежелательно. Мне запретили их использовать. Уродливого кода стало больше, но зато надежность не пострадала.

  27. В публичном maven репозитории для ADF проектов недостаточно библиотек, чтобы скомпилировать проект. Вместо того, чтобы положить все необходимые библиотеки, предлагается вариант установить на сервере jdeveloper, из установки вытащить недостающие библиотеки и переложить их в локальный maven репозиторий и уже только после этого собирать проект на сервере.

  28. Асинхронная загрузка данных на форму. Пока данные для одного компонента не загрузятся, загрузка для другого не начнется. Если компонентов на форме много, процесс будет очень долгим.

  29. Нужно разбираться с активацией и пассивацией task flow. Иначе запросы могут вызываться лишнее количество раз.

  30. До меня пока не дошло, как сделать, чтобы база знала под каким логином авторизовался пользователь в ADF приложении.

  31. Были ошибки из-за которых пришлось отказаться от использования Ubuntu в пользу Oracle Linux. Какая-то ошибка при выполнении стандартных действий.


Достоинства Oracle ADF:

  1. После каждого запуска deploy приложения на сервер, можно почитать новости, проверить почту, сходить в туалет или налить себе чего-нибудь…. успокоительного…

  2. Достаточно удобно работать с бизнес компонентами. Для простых вещей, которые весьма сложны в реализации в других языках и фреймворках, здесь могут быть выполнены вообще без какого-либо кодирования. Да и даже знания JAVA, SQL необязательны, чтобы создать CRUD приложение.

  3. Большой выбор вариантов реализации. Можно одно и тоже сделать разными способами и разными языками. Java, JavaScript, Groovy, PL/SQL в некоторых случаях.

  4. Управление транзациями для приложения может быть реализовано достаточно просто, даже вовсе без кодирования логики.

  5. Security реализована с помощью всевозможных мастеров, где нужно просто из одного окна перетащить компонентик в другое. Этого будет достаточно, чтобы разрешить или запретить доступ к ресурсам.



Разработка на Java VS разработка на Oracle ADF, наглядно.



oracle adf development process



Понравился комментарий на:
http://habrahabr.ru/post/172123/

Как же мы с ним когда то намучались, багованый, ведет себя странно, в спеках совсем другое написано. Я никому не советовал бы его использовать.



Я переписываюсь с коллегой, с которым работали на ADF проекте.

Ты сейчас на чем программируешь?
Предлагают проект по страхованию на ADF, тебя может заинтересовать?


Ответ:

Привет, ***!
Спасибо!
ADF - кошмар, к которому нет никакого желания возвращаться.



Если вы не передумали изучать данную технологию... и делиться полученными знаниями, то ... --> Welcome! <--



Если Вам на проект будет нужен разработчик Oracle ADF, возможно вы найдете его в нашей группе telegram: javadev_ru



Для контактов с админом сайта, можно писать сюда:

Marley