Недавно я с удивлением обнаружил, что, оказывается, толковых туториалов по Oracle Application Express (он же APEX, он же апекс, но не путать с языком apex, который используется в Salesforce) в природе не существует.


Это не самая распространенная технология, конечно, но, тем не менее, довольно востребованная. Есть десятки блогов об апексе (англоязычные, в основном), пара тысяч вопросов на Stackoveflow, специальный раздел по апексу на официальных форумах оракла, сам апекс существует уже 15 лет и все время развивается. Я был уверен, что и хороших туториалов полно. Но нет!


Мне тут же пришла в голову гениальная мысль восполнить этот пробел.


Оглавление


Почему существующие туториалы — плохие
Вводная информация
Обзор IDE
    App builder
        Страница приложения
        Application properties
        Shared Components
        Page Designer
    SQL Workshop
        Object Browser
        SQL Commands


Почему существующие туториалы — плохие


Я немного поясню, почему я считаю существующие туториалы плохими. Апекс — это не язык программирования, это такой очень высокоуровневый инструмент разработки, ближайшим идейным аналогом которого я бы назвал MS Access. Соответственно, большая часть разработки на апексе состоит из работы с веб-интерфесом этой среды: нажимания на кнопки, перехода по ссылкам, заполнение полей с названиями компоментов, выбора значений из списков и так далее. Что делает типовой туториал? Он показывает скриншоты этих самых экранов с подписями "нажмите туда-то". При этом сама IDE достаточно удобная и понятная, почти все элементы снабжены справочными пояснениями, есть встроенная помощь. В итоге, если нужно объяснить пользователю, как создать приложение, в туториале будет большой скриншот, объясняющий, как нажать на кнопку "Create a new app". Вот, посмотрите сами на официальный оракловый туториал:


Скриншот примера туториала по апексу


Они бы еще объяснили со скриншотами, что "клик" — это однократное нажатие на левую кнопку манипулятора типа "мышь".
Конечно, полезная информация в таких туториалах тоже есть, но ее там крохи. Процентов на 80 туториалы состоят из таких вот скриншотов, причем по своему опыту я могу сказать, что человек, не читавший никаких туториалов вообще, самостоятельно найдет, как создать приложение, добавить страницу, поместить на нее отчет и так далее. А потом ему нужно будет организовать более-менее нетривиальное взаимодействие нескольких элементов апекса, и оказывается, что этот вопрос туториалом почти не покрывается. Приведу аналогию: вы только-только учитесь программировать, изучили переменные, массивы, циклы, условия, и получили задание, в рамках выполнения которого вам нужно отсортировать массив. Как-то отсорировать массив — достаточно просто, но как только задание усложнится до "отсортировать большой массив быстро", окажется, что имеющихся у вас знаний недостаточно. Погуглив, покопав Stackoverflow и форумы, вы найдете алгоритм быстрой сортировки. Конечно, кто-то и сам переизобретет этот алгоритм рано или поздно, но более эффективным путем было бы сразу прочитать книжку с разбором типовых алгоритмов. И вот как раз такого набора "типовых алгоритмов" для апекса обычно нигде нет, а на помощь приходят те же самые метод научного тыка, поисковики, форумы и Stackoverflow (и, я надеюсь, этот туториал).


Вводная информация


Предполагается, что читатель знаком с Oracle Database версии хотя бы с 11-й, SQL, PL/SQL и особенно с тем, что такое EXECUTE IMMEDIATE и как оно работает.


IDE апекса значительно изменилась при переходе с версии 4.2 на 5.0 (релиз был как раз 4 года назад, в марте 2015-го). С тех пор IDE меняется мало, но иногда добавляются новые возможности. Я буду делать скриншоты на apex.oracle.com, где сейчас установлена версия 19.1, но если у вас где-то используется более ранняя версия (5.х, 18.х), вы без труда найдете нужный элемент, если только он не появился в более поздней версии, чем ваша.


Я начну с обзора наиболее часто используемых разделов IDE. Я тоже покажу несколько скриншотов. Куда же без них, раз всё здесь сделано из визуальных компонентов. Но их будет не так много, как в плохих туториалах, и в основном они будут в начальных главах, а дальше я буду просто указывать название раздела IDE, в котором находятся необходимые вещи. Сразу обращу ваше внимание, что это просто первое знакомство с IDE. Более подробная информация о том, когда на какую кнопку нажимать и где что смотреть, будет дана дальше, когда я перейду к конкретным темам.


Поехали.


Обзор IDE


Стартовый экран, который вы увидите сразу после входа в IDE:


Главная страница IDE


Главные элементы здесь — это 4 большие кликабельные картинки:


  1. App Builder — это, собственно, то место, где можно создавать приложения и где вы будете проводить до 99% времени.
  2. SQL Workshop — заменитель обычной IDE для работы с СУБД Oracle. Там вы можете посмотреть объекты БД (таблицы, индексы, пакеты, и т. п.) и выполнять SQL-запросы. Если у вас есть возможность делать все это через "обычные" IDE (вроде Oracle SQL Developer или PL/SQL Developer) — делайте через них. Тем не менее, этот раздел тоже может быть полезен и о нем я тоже расскажу.
  3. Team Development — инструменты для командной разработки. Честно говоря, я ни разу не видел, чтобы хоть кто-то ими пользовался на практике (включая меня). Любопытства ради я туда тоже заглядывал и совсем бесполезным этот раздел я бы не назвал, хотя и очень хочется.
  4. App Gallery — раздел с демо-приложениями. К тому моменту, когда он появился, я уже неплохо знал апекс и почти не заглядывал туда, но начинающим, думаю, это будет полезно. Там много разных простеньких приложений, на их примере можно изучать, как использовать те или иные возможности.

В меню в самом верху страницы продублированы эти же 4 пункта.


Кроме этого, есть еще несколько малополезных вещей: ниже есть некоторое количество статистической информации (типа наиболее часто редактируемых приложений или наиболее активных разработчиков). И есть колонка справа, где также немного статистики и дополнительных ссылок.


Рассмотрим App Builder и SQL Workshop подробнее.


App builder


Эта страница выглядит примерно вот так:



Основные элементы этой страницы: четыре большие кнопки как на предыдущей странице, список уже имеющихся приложений, правая колонка со списком последних измененных приложений и дополнительными действиями. Четыре кнопки — это:


  1. "Create" — создать новое приложение. Эта же функция продублирована чуть ниже (синяя кнопка "Create" над отчетом со списком приложений). Кнопка запускает мастер создания приложений.
  2. "Import" — импортировать приложение. Апекс позволяет переносить приложения с одного сервера на другой в виде текстовых файлов (которые, по сути, являются длииииными PL/SQL скриптами с вызовами функций создания всех элементов приложения).
  3. "Dashboard" — малополезное сборище статистики разработки приложений. Кто, когда, где, сколько изменений сделал. Думаю, даже вашему начальнику будет неинтересно туда смотреть.
  4. "Workspace Utilities" — набор дополнительных инструментов для управления приложением. Честно говоря, туда я тоже почти не заглядываю.

Так же хочу обратить ваше внимание на вот такую маленькую кнопочку в панели отчета:


Переключатель вида отчета


Она переключает вид отчета с такого, как на скриншоте выше (с "картинками" приложений) на отчет в виде таблицы:


App builder в Oracle APEX


Похожие отчеты встречаются и в других разделах IDE. Я предпочитаю табличный вид, поэтому далее все скриншоты будут с ним.


Страница приложения

После того, как вы создадите приложение или откроете существующее, вы увидите следующую страницу (очень похожую на предыдущую по структуре):


Страница приложения


На эту страницу вы будете заходить очень часто, и полезных функций здесь тоже очень много. Большие кнопки с картинками:


  1. "Run Application". Эта кнопка запускает ваше приложение. Оно откроется в отдельном окне. По умолчанию — именно в окне, а не во вкладке браузера, но это поведение настраивается (об этом позже).
  2. "Supporting Objects". Этот раздел служит для решения вопросов, связанных с установкой, обновлением и удалением приложений. Обычно им почти не пользуются.
  3. "Shared Components" — я бы сказал, это первый или второй по важности раздел IDE (еще один — редактор страниц). Если вы будете много разрабатывать на апексе, то очень скоро заметите, что выучили структуру этого раздела как "Отче наш".
  4. "Utilities" — еще один набор (мало)полезных вспомогательных функций.
  5. "Export / Import". Позволяет экспортировать или импортировать приложения или отдельные части приложения.

И две дополнительные кнопки, которые обведены оранжевой рамкой на скриншоте:


  1. Кнопка "Edit application properties". Нажав на нее, вы попадете на страницу настроек свойств приложения. Возможно, вы не будете заходить в этот раздел часто, но он очень важен, потому что там хранятся настройки приложения, от которых много чего зависит. Далее, если я буду упоминать где-то "свойства приложения" — ищите их в этом разделе.
  2. В кои-то веки полезная функция в правой панели: "Delete this Application". В то время как многие функции в апексе продублированы в разных местах, эта функция есть только здесь, и с непривычки первый раз ее найти сложно.

Application properties

Здесь прежде всего интересна организация доступа к большому количеству настроек.


Application properties


Настройки сгруппированы в 4 группы (см. верхнюю рамку), а в каждой группе есть еще по нескольку подгрупп (см. нижнюю рамку), у каждой группы есть свое название. Похожим образом настройки организованы в очень многих местах в апексе. В дальнейшем я буду просто указывать путь к нужной настройке примерно так: "Application Properties" — "Definition" — "Name" — "Version".


Также, если вы посмотрите на хлебные крошки вверху страницы, вы увидите, что там написано "Edit Application Definition", хотя заходили вы, казалось бы, в "Application Properties". Просто не обращайте внимания.


Shared Components

Shared Components — это наше всё. Этот раздел является промежуточным пунктом на пути к конкретным компонентам приложений. Покажу здесь общий вид, просто чтобы вы представляли, где что находится:


Shared Components


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


  1. Application Logic — средства управления логикой приложения.
  2. Security — вопросы безопасности и управления доступом к приложению целиком и к отдельным компонентам в зависимости от ролей пользователей.
  3. Other Components — это "все остальные компоненты". По-хорошему, этому разделу следовало бы быть последним, но он почему-то здесь. А подпункт "List of Values" я бы вообще в Application Logic перенес.
  4. Navigation — компоненты приложения для обеспечения навигации.
  5. User Interface — настройка внешнего вида приложения, стилей и т. п.
  6. Files — раздел для файлов (например, css или js). Незаменим, если у вас нет доступа к ОС, и все равно удобен, даже если доступ есть.
  7. Data Sources — работа с источниками данных (для загрузки и выгрузки).
  8. Reports — отчеты, очевидно.
  9. Globalization — раздел для перевода приложений на другие языки.

Плач Ярославны о переводе приложений в апексе

Перевод приложений в апексе сделан просто ужасно (честно, я пытался придумать, как сделать его хуже — и не смог), и нет никаких свидетельств того, что в будущем станет лучше.
Ужасно с точки зрения архитектуры и удобства работы над переводом. Могу только сказать разработчикам: "Спасибо, что хотя бы без багов" (но тут как посмотреть: переводы устроены так, что некоторые особенности их работы мало чем отличаются от багов).
Приходится с этим жить.


Page Designer

Page Designer — редактор страниц. Это, наверное, главное место в IDE. Здесь вы будете создавать то, с чем напрямую взаимодействует пользователь. Здесь просто куча функций, почти как в кабине самолета. На скриншоте разноцветными рамками выделены основные составляющие редактора:


Page Designer


Панель кнопок вверху (в красной рамке):


  • Поле для ввода номера страницы, стрелки вверх и вниз и кнопка "Go": навигация по страницам приложения. Каждая страница имеет номер, тут вы можете либо ввести номер нужной страницы, либо стрелками перейти к следующей/предыдущей, либо нажать на самую левую кнопку и в появившемся модальном окне выбрать страницу из списка.
  • Кнопка с замком: позволяет заблокировать страницу от изменений другими разработчиками.
  • Кнопки Undo/Redo
  • Две кнопки с доступом к вспомогательным функциям.
  • Кнопка-ссылка на Shared Components. Полезная, потому что туда-сюда ходить приходится постоянно. (Я сам, правда, предпочитаю просто держать Shared Components в отдельной вкладке — так еще быстрее).
  • Кнопка "Save" — сохраняет изменения на странице.
  • Кнопка "Run" — "запускает" страницу, то есть вы ее видите так, как ее потом увидит пользователь.

Слева (в оранжевой рамке) — панель с компонентами приложения. В этой панели есть 4 закладки:


  • "Rendering" — показывает, из каких составных частей состоит страница, какие процессы выполняются при рендеринге;
  • "Dynamic Actions" — действия, выполняемые на клиенте (например, обработчики событий javascript);
  • "Processing" — серверные процессы, связанные со страницей;
  • "Page Shared Components" — для прямого перехода к используемым на странице общим компонентам (те самые Shared Components).

По центру (в зеленой рамке) — панель, содержащая много разнородной информации. В верхней части панели есть 5 закладок, на которых можно найти:


  • "Layout" — показывает примерное расположение компонентов на странице;
  • "Component view" — по большому счету, это пережиток прошлого (похожим образом выглядел редактор страниц в 4-й версии апекса, в версии 5.0 или 5.1 этот старый "вид" получил статус deprecated, хотя и использовался параллельно с новым, а теперь тут осталась лишь его бледная тень);
  • "Messages" — тут будут сообщения об ошибках (например, сообщение о том, что не заполнено какое-нибудь обязательное поле);
  • "Page Search" — поиск на странице. Ищет искомую строку во всех местах, где вы можете что-то вводить (в коде, в текстах сообщений, в названиях компонентов и т. д.);
  • "Help" — помощь. Довольно толковая, хотя и не всегда. Можно выбрать какое-нибудь свойство компонента и посмотреть его описание.

Также центральная панель имеет снизу еще одну дополнительную панель, которую можно использовать для быстрого добавления компонентов на страницу.


Справа (в синей рамке) — панель свойств. Тут все просто — она показывает свойства выбранного в данный момент компонента.


SQL Workshop


Как я уже говорил, SQL Workshop — это заменитель обычной IDE (если у вас по каким-то причинам нет возможности ее использовать).


SQL Workshop


Он состоит из 5 разделов:


  1. Object Browser — браузер объектов БД (таблиц, пакетов, функций и процедур, индексов, сиквенсов и прочего);
  2. SQL Commands — раздел, где можно выполнить любой SQL запрос или PL/SQL код;
  3. SQL Scripts — здесь можно загрузить текстовый файл со скриптом и выполнить его;
  4. Utilities — разные дополнительные возможности, связанные с БД: например, есть графический построитель запросов (но не только);
  5. RESTful Services — создание REST сервисов. Апекс тоже имеет REST (причем давно, еще в версии 4.2 они уже были)!

Object Browser

Object Browser


Здесь есть все, что нужно для работы с объектами БД: создание, изменение, удаление, просмотр свойств объектов, ввод данных в таблицы — для всего этого в этом разделе есть графический интерфейс. Вверху слева в выпадающем списке можно выбрать тип объектов (на скриншоте показаны таблицы), вверху справа можно выбрать схему, объекты которой вы можете посмотреть. В списке доступных схем вы не увидите все схемы сразу — это нормально. Как сделать схемы видимыми в апексе, я расскажу, когда дойду до администрирования.
Также я не вижу большого смысла описывать этот раздел подробнее: если вы знаете, что значит фраза "добавить столбец в таблицу", вы без труда догадаетесь, когда вам нужно будет нажимать на кнопку "Add Column" и что вас может ждать дальше.


SQL Commands

В этом разделе можно выполнять SQL запросы и PL/SQL код.


SQL Commands


По возможностям этот раздел почти не уступает полноценным средам разработки. Не хватает разве что автодополнения кода и подсветки синтаксиса (а в Object Browser подсветка синтаксиса есть, кстати). Имеющиеся возможности:


  • выполнение SQL, в том числе с параметрами (для ввода значений параметров появится отдельное окно);
  • выполнение PL/SQL с возможностью вывода текста через dbms_output (вывод появится в окне ниже);
  • выполнение только выделенной части кода (выделить текст мышкой, затем "Run");
  • просмотр плана запроса;
  • сохранение запросов.

***

Это, как вы понимаете, далеко не всё, что есть в IDE APEX, но на данном этапе не имеет смысла углубляться дальше. Отдельные элементы интерфейса апекса будут разобраны более подробно в темах, которые имеют к ним непосредственное отношение.


P. S. Я пока не могу сказать, что четко продумал структуру этого туториала, возможно, в будущем я добавлю еще скриншоты и описания в эту статью или опишу дополнительные возможности в других статьях. Осталось придумать, как оповещать заинтересованных о значительных правках старых статей.

Комментарии (21)


  1. PavelGhost
    30.03.2019 14:53

    Спасибо большое — отличная статья.

    Я пользовался APEX раньше много и часто. Это практически единственный быстрый способ для DBA донести какую-то информацию в «человеческом» виде без знания дизайна, framework, всякого программирования GUI и прочего. Очень помогает для внутренних каких-то систем метаданных, Inventory.
    Было очень полезно вспомнить какие-то моменты и узнать новые — как раз активно пользовался до выхода 5-й версии.

    Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.


    1. StrangerInTheKy Автор
      30.03.2019 18:02

      Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
      Интересно, не задумывался над этим. Я вообще-то не знаю, как правильно такие ссылки делать. Попробовал у себя: браузер на компьютере просто переходит к нужному разделу, Safari на iOS перезагружает страницу и переходит к нужному разделу, но картинки догружаются только потом, поэтому нужное место немного уползает.


    1. StrangerInTheKy Автор
      01.04.2019 17:48

      Единственно, может это глюк приложения Habr под Android, но из TOC по любой ссылке на начало статьи просто переходит.
      Говорят, это баг Хабра.


  1. PavelGhost
    30.03.2019 15:22

    Было бы интересно посмотреть варианты использования внешних источников данных и реализация REST API


    1. StrangerInTheKy Автор
      30.03.2019 17:58

      Мне тоже ;) Я пробовал осилить REST еще в версии 4.2, но не осилил. Но тогда мне это было совсем не нужно, да и я не понимал я толком, что это за REST и зачем он нужен. Осилю и напишу.


  1. vav180480
    30.03.2019 17:57

    Вспоминаю как страшный сон, меня хватило на 2 месяца


    1. migelle74
      31.03.2019 10:35

      Непонятно, что там такого страшного? ИМХО уникальный инструмент, который позволяет очень быстро сделать отображение данных из БД. Да еще с таким простым входом для новичков.

      Мне наоборот печально, что ничего подобного нет, например, для Postgres-a. А в свете нынешних реалий очень бы хотелось иметь подобный инструмент.


      1. PavelGhost
        31.03.2019 13:06

        Абсолютно согласен. Ещё в APEX есть уже внутри полный набор инструментов для коллективной разработки, поддержки версионности, переносимости приложений и пр.

        По поводу PostgreSQL был прецендент — в APEX делал небольшое приложение — отчёты по старой системе тикетов, данные которой хранились в PostgreSQL. В Oracle можно сделать db_link к любой базе через odbc (не считая «родных» gateways). Собственно, так и было сделано — APEX приложение работало со схемой Oracle, данные в которую выбирались из внешней PostgreSQL базы. Есть определённые танцы с бубном для типов данных, но это решаемо. DB_Link позволяет и писать данные в удалённую базу, но такой метод, считаю, может как-то работать только для каких-то простых случаев и, конечно, ни разу не заменит родного APEX для PostgreSQL, если бы он был.

        Я думаю, всё-таки подобные решения в природе есть — в принципе этому почти любой ORM можно научить (вопрос — сколько времени и сил убить на это), просто PG админы слишком брутальны, чтобы их использовать :)


      1. StrangerInTheKy Автор
        31.03.2019 16:00

        Непонятно, что там такого страшного?
        На 100% не уверен, конечно, но мне кажется, что для человека, пришедшего откуда-нибудь из мира фронтенд-разработки, нормальная реакция. Я-то сам с БД разработки начинал, первые лет 5 тоже был в диком восторге.


        1. migelle74
          31.03.2019 22:27

          Я начинал разработки еще с дос-овского клариона. Поэтому апекс пришелся вообще идеально.


      1. vav180480
        01.04.2019 07:28

        Очень быстро позволяет отобразить данные из БД банальный Excel, какой то там разовый отчет, быстро накидал (или тебе дали уже готовую форму, они часто уже имеются именно в Excel) один раз выгрузил и забыл. Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути. Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой. А эти «простые вещи» обязательно нужно будет сделать. Начинается дикое нагромождение костылей, которые потом «интересно» разбирать если нагромождал их не ты. Специалист APEX это как специалист 1С — раб довольно окукленной технологии, брррр


        1. migelle74
          01.04.2019 16:54

          Очень быстро позволяет отобразить данные из БД банальный Excel
          Банальный excel в сравнении с апексовским интерактивным отчетом/гридом это как велосипед и супекар. Его интерактивный отчет позволяет закрыть потребности пользователей в отчетах процентов на 85. Это вообще несравнимые вещи.
          Система где прописал что то в одном окошке, перешел к какой то формочке, еще что то прописал ущербна по своей сути
          Что значит ущербна? Другого подхода в этих системах просто не бывает. Посмотрите на 1С, R3 и т.п. у них примерно такой подход везде.
          быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой
          Тут просто надо принять апексовский подход к решению проблем, а не пытаться его заставить его делать то, для чего он не предназначен.
          Специалист APEX это как специалист 1С — раб довольно окукленной технологии,
          Это да. Но об этом и пишется, что технология заслуживает большего распространения.


          1. vav180480
            02.04.2019 06:01

            Есть другой подход, сел в любимой IDEшечке, открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
            Ну а насчет «не пытаться заставить» тут такое дело, в общем случае не программисту решать что пытаться а что не пытаться доводом от заказчика будет «а я там вот видела что там вот так сделано». У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.


            1. StrangerInTheKy Автор
              02.04.2019 11:41

              открыл проектик на одном из гораздо более распостраненных фреймоврков с MVK и маршрутизацией, который уже имеет из коробки классы и шаблоны для отображения таблиц и форм и начинаешь писать.
              А в апексе, надо полагать, всего этого нет? Чтобы показать страницу с результатом выполнения SQL запроса в апексе, нужно сделать примерно 10 кликов мышкой и написать SQL запрос. Больше не надо ничего вообще. Никакой другой «обычный фреймворк» такого не позволяет. Лично мне есть с чем сравнивать: в 2010-м году я начал делать свой проектик для веба (не зная о вебе ничего вообще) на апексе (не зная апекса вообще и попутно его изучая), и за два-три месяца довел его до более-менее вменяемого рабочего состояния. В 2016-м я попробовал начать делать другой свой проектик на Spring Boot (не зная Spring Boot вообще и попутно его изучая), но к тому моменту я уже намного больше знал, что и как устроено в вебе, при этом три месяца спустя в проекте все еще конь не валялся. Так что по уровню входа и по скорости разработки у апекса конкурентов нет. Проблемы появляются, когда нужно сделать что-то, не предусмотренное фреймворком. Тогда да, скорость разработки падает до обычной, как везде.

              У меня впечатление от APEXа это как попытка Oracle создать свой лунапарк.
              Смешно, особенно на фоне чуть ли не каждую неделю выходящих на Хабре статей о том, что новые фронтенд-«лунапарки» для js выходят каждые полгода. Оракл, на секундочку, создал этот «лунапарк» в 2004-м, как сейчас модно говорить — «до того, как это стало мейнстримом» ;)


              1. vav180480
                02.04.2019 12:52

                Чтобы показать страницу с результатами SQL запроса вообще никакого фреймворка не нужно:) А если ты не в первый раз в жизни это делаешь или это не первая страничка в проекте с результатом некоего запроса, там вообще все копипастом делается, просто имена колонок на русском прописать:) Ну и я бы хотел посмотреть на оракловский лунапарк образца 2004.


        1. StrangerInTheKy Автор
          01.04.2019 17:47

          Из серии очень быстро сделать довольно таки сложные вещи и архисложно сделать простые не предусмотренные системой.
          Это применимо вообще к любому фреймворку.
          Специалист APEX это как специалист 1С — раб довольно окукленной технологии
          В целом да, но специалист 1С — специалист только на территории бСССР, а за ее пределами он — никто. А специалист по APEX — специалист во всем мире (и как правило, он еще и специалист по Oracle, что все еще востребовано также во всем мире).


          1. vav180480
            02.04.2019 06:06

            Не к любому, фреймворки гораздо гибче. И еще раз работать с проектом на уровне файлов из IDE гораздо проще чем в конгломерате окошек с кусками кода и формочек с настройками.


            1. StrangerInTheKy Автор
              02.04.2019 11:43

              Апекс совершенно не мешает вам писать PL/SQL и javascript в виде файлов в IDE. Я сейчас, например, параллельно с написанием этого туториала делаю пару плагинов для апекса, и процентов 90 времени делаю это в Intellij IDEA. Вам тоже никто так не запрещает.


  1. vadim_bv
    31.03.2019 21:11

    АРЕХ — крутая вещь. Если к нему правильно прикручивать AJAX-обработчики, он вполне современен, а функционален — почти из коробки.
    Было бы очень интересно почитать про нагрузочное тестирование APEX-приложений. Мои кривые руки полагают, что при нескольких десятках пользователей, они вешают сервер намертво. Мб, я что-то делал не так, но при всех достоинствах АРЕХа на нем почти нет сайтов в Интернете (навскидку, только askTom).
    А приложения для ограниченного количества внутренних пользователей успешно работают, например, во многих банках.


    1. migelle74
      31.03.2019 22:25

      Навскидку, из больших сайтов знаю только shop.oracle.com. Но, насколько я понимаю, apex идеальнее всего подходит для интранета, и в нем существуют большинство проектов на апексе.


    1. StrangerInTheKy Автор
      01.04.2019 00:09

      В администрировании я понимаю чуть больше чем ничего, но буквально недавно мне попадалось на глаза это: ora-00001.blogspot.com/2015/07/installing-oracle-xe-ords-and-apex-on-centos-linux-part-four.html
      На просторах интернета попадались упоминания о том, что на подходщем железе до 2К пользователей апекс держит (но это уже не XE версия оракла должна быть).