Sunday 12 January 2014

Oracle ApEx


Hi All,

Wish you all a very Happy New Year 2014. Hope this New Year brings You Joy & Happiness in your life.  

Well, next going for the topic, as everything meant for web development, I need to mention about the Oracle's Product - ApEx (Application Express). I'll post my compilation here, which I got collected from many resources. 

"If you are considering APEX to provide simple web based data entry and reporting, it’s worth a look. And, the same If you are looking for an alternative to .NET/JAVA/PHP for dynamic web content and rich UI interaction you have to look elsewhere." 

-- As it 's a bit dry topic, revealing the conclusion previously :)

ApEX - What's New in Plate?

Browser Based Development
           Rapidly and declaratively develop, deploy, and run applications using only a web browser

Self Service Multi-Tenant Enabled
           Optionally enable self service provisioning of Oracle Application Express workspaces

Develop Mobile Applications
           Declaratively define and develop mobile pages and applications

Database-centric
           Simple architecture that is easy to manage, highly scalable, and runs everywhere Oracle runs

Portability
           Seamlessly move applications between environments within your corporate network and public clouds

Packaged Applications
            Productivity and sample applications provide point solutions and learning opportunities

RESTful Web Services
            Define RESTful web service API's to provide access to your data

ApEx, An Intro

Ø  A software development environment running inside the Oracle Database.
Ø  Bundled along with Oracle Express Edition DB, Can be installed along with any Oracle editions starting from 9.2, (from Oracle 11g, it comes as pre-installed one).

Ø  Have other names as the version changes : Flows, Oracle Platform, Project Marvel, HTML DB & Application Express (APEX)

Popular sites built using APEX are : AskTom (http://asktom.oracle.com), Oracle's Metalink support site, Oracle's online store (http://oraclestore.oracle.com). (Why not the other commercial sites ;)))

(In)conveniences

Ø  Large Installation Size.

Ø  Application uses Primary keys can be at most two separate fields.

Ø  Pages in APEX can display at most 200 items and forms cannot handle more than 200 database items. So, application must be designed to work around this limitation, for example by using multiple pages, tabular forms, or Ajax for on-demand updates.

Ø  APEX apps, can be created using Oracle's own tools and hosted only in an Oracle database, making an implementer susceptible to vendor lock-in.

Very few webhosts offer APEX (Oracle Database) on their hosting service package (most of them offer PHP + MySQL). As a result, APEX applications are limited in their choice of webhosts.

Ø  Fast growing technology (?)

Ø  Web-based

Ø  Developers familiar with PL/SQL can use the same skill set when developing Apex applications

Ø  Easy to create mock-ups and Easy to deploy.

ØScalable (can be deployed to laptops, stand-alone servers, or Oracle RAC installations)

Ø  Strong and supportive user community (especially Oracle APEX forum)

Ø  Basic support for group development
Ø  Free hosting of demo applications provided by Oracle

Ø  Apex applications can run on the free Oracle Express Edition (XE) database

Ø  Security Vulnerabilities are : The main classes of vulnerability that affect APEX applications are: SQL injectionCross-site scripting (XSS), and Access Control. 

APEX, an abstract

Ø  As an application framework, it can be difficult to customize an application outside of a set of expectations about how an APEX application is supposed to operate. However, given that pages are built from customizable templates, anything that is possible to achieve with HTML, CSS and Javascript is also theoretically possible to achieve with APEX, although it requires more work than using the built-in templates.

Under the hood

Ø  Declarative Development : With Application Express, coding is declarative. That means that no code is generated or compiled. You interact with wizards and property sheets. Since the SQL language is used to define reports and charts, some knowledge of SQL is helpful. If procedural logic is needed, you can write snippets of code using PL/SQL. Declarative code yields fewer differences between developers and this consistency makes Application Express applications easy to maintain and manage.

Ø  The Application Express engine renders applications in real time from data stored in database tables. When you create or extend an application, Oracle Application Express creates or modifies metadata. When the application runs, the Application Express engine then displays the page or processes the page submission based on the metadata. This means that multiple developers can edit the same page and changes can be seen immediately when running the application. No compilation or deployment is required.

Environment you work with

How to do declarative programming in Oracle Application Express?

By Using the following items,

Ø  Forms :
Using wizards, you can easily create forms on tables or on a stored procedure. When creating a form on a table, these wizards provide automatic management of insert, update, and delete as well as lost update detection. Once you create a form, you can rearrange form fields (called form items) using a visual representation, enabling you to quickly achieve the layout you want.

Ø  Interactive Reports :
To create an interactive report, developers either select a table or provide a SQL statement. They can then restrict the capabilities available to end users (such as turning off download, not allowing a column to be hidden) if desired. The end user is presented with the report and the functionality is the same across all reports in the application (for example, how to filter, highlight, subscribe and save custom views).

Ø  Session State : (Not Available )
Oracle Application Express transparently manages session state in the database. There is no SET and GET, Oracle Application Express handles it all for you. Application developers can access session state using simple substitutions as well as standard SQL bind variable syntax. Creating a process to clear session state for a page is as simple as a few clicks of the mouse and specifying the desired page.

Components available for dev

Ø  Application Builder - Database Applications
§  Contains regions, for charts, reports, forms, text, calendar, web service references. (used by developer)

Ø  Application Builder – Websheets
§  Without developer’s assitance, end users can play around with this web sheets, and acquire the data, for which they needed.

Ø  SQL Workshop
§  Tool for managing the DB objects, provided options for export/import to/from spreadsheets, text files, etc.

Ø  RESTful Services
§  It allows for the declarative specification of RESTful services mapped to SQL and PL/SQL.

Ø  Team Development
§  Used to manage the life –cycle of an application provides various tasks, starting from getting the feedback from the end-user and bug-tracking or reporting also enabled.

Ø  Administration
§  A separate application development environment or the administration component provides workspace management, including services (available schemas, space requests, and preferences), users (both developers and end-users), and workspace activity (page views, login attempts, and developer activity). Access is limited to Oracle Application Express developers who have workspace administration privileges.

Few more experiences in working with apex

Ø  The Good
§  Incredibly easy to generate a respectable web app with basic CRUD data entry, simple reporting and populate it with data.

§  If you are a DBA/PLSQl guru but have no experience with traditional web development you’ll be well prepped to expose existing business logic in a web app without stuffing around with HTML/CSS/JS if you don’t want to.

§  APEX support forum has a ton of info and is well staffed by APEX devs.

Ø  The Bad
§  Not suitable for event driven dynamic web sites.

§  Web based GUI is not cool. Debugging is PAINFUL

§  Hide page and redirection logic, the program flow is both difficult to visualize and no modular, separable and reusable code. OOP developers will be not be impressed. It's possible to have well structured maintainable applications with APEX but its harder than it should be. This is worlds away from MVC.

§  PL/SQL is not and will never be the Next Big Thing in web development. It won’t make you a better web developer. Mastering APEX is really about PL/SQL. The portable set of skills you can take from APEX to other web frameworks is minimal.

Conclusion

If you are considering APEX to provide simple web based data entry and reporting, it’s worth a look. And, the same If you are looking for an alternative to .NET/JAVA/PHP for dynamic web content and rich UI interaction you have to look elsewhere.

Note :: You can download the entire content here

Happy Coding Reading