Congratulations!
Somehow you made it to APEX. Finding the right development tool in the IT world is difficult. When it comes to Web applications with a database connection, APEX is the best tool out there for more than 20 years! Let me tell you why.
But first let's address the elephant in the room: Do we even need developers anymore, does AI not take over coding?
I'm sure you've played around with chatGPT. Then you've experienced the following, even if you ask the same question over and over again, you get slightly different results (it's not deterministic) and even false answers (hallucinations). AI can create complex code today and with larger "contexts" lots of code, but I don't see a world in the foreseeable future where AI creates exactly the same code over and over again (deterministic). Even if it would be someday, you end up with thousands of lines of generated code, you have no idea what it actually does. Is this what you want for your business critical app where you make "life and death" decisions for your company based on the results this app gives you?
But this is just one part of the problem. We all know "The Business Departments". For a comprehensive business app they would need to write 1000 pages of prompts in a consistent way. I don't see this happen ever 😊. Then what about the CRs, Bug-Fixes? New prompts that change whatever and introduce other unwanted changes and new bugs. And if they ever regenerate the app with the 1000 pages prompt, they will get a different app, every time. Even Oracle admits that this is not a good idea, check this YouTube snippet
It's different for APEX, because it does not generate a single line of source code for UI and Controller Logic. Coincidentally this is now also a huge advantage for AI. Instead of generating thousands of lines of source code it just has to simulate the clicks in your APEX Application Builder (in real life just calling the corresponding APIs to put the same things into the APEX repository like you would have with your clicks in the APEX Application Builder. Check a demo of what you can do already with APEX today (2024), a thing called Prompt2App Prompt2App
The huge advantage is, that you don't have to rummage around in thousands of lines of source code, but you open your Application Builder and keep on working like the whole app was created by you in the first place.
Let's get back into the principle approaches of Web-Developement so you understand what's different with APEX. After all, you make a decision where you put a lot of time (and therefore money) into and you don't want to bet on the wrong horse. At least this horse wins every race for 22 years (today it's 2024) in contrast to other frameworks that come and go and you have to start from scrach:
1. Code-based approaches like Java and Javascript frameworks (I have experience with Sencha Ext-JS and SAP UI5).
2. Component-based code generators like QlikView. (I have experience with that too.)
For the code-based frameworks approach (1), you have to code the User Interface (UI) and the Controller logic (what happens when you click a button, a link, submit a page, etc.) in the Application Program Interface (API) of the respective language.
This requires knowing Java or JavaScript very well as a start. After that you have to deal with often very complex APIs. These APIs are like a separate language. Using these APIs, you code your front end and determine what should happen when a user interacts with the page. In my last Ext-JS project, we coded 4,000 lines of API code for a single Web page.
The benefit of this approach is that once you've managed to get these 4,000 lines of code per page error-free, and the API components do what you expect them to do, you'll have lots of out-of-the-box functionality and AJAX. AJAX is short for Asynchronous JavaScript and XML. AJAX ensures that only changed data on a Web page is reloaded from the server and updated in the browser. That's very fast and the way how you achieve the Desktop Application or Web 2.0 look and feel that's so desirable for a modern Web page. You want an immediate response without waiting for the whole page to reload.
There is another drawback to this approach beyond the steep learning curve and the heavy coding. Framework components have few adjustment capabilities for the User Interface. Maybe you can change a color here and there, or show and hide certain functions, but that's about it. Overall, the UI stays more or less the same. But customers want custom adjustments to the UI and functionality, so this can cause problems.
Then we have component-based code generators (2). With this approach you don't really code anything, you just drag and drop ready-to-use front-end components in your development tool. Then you configure these components and bind them with data. When you click "finish", the corresponding code and logic are generated for you. The entire process is very quick and provides instant out-of-the-box functionality. The predecessor of APEX called Web-DB generated tons of PL/SQL code.
With this approach there's a very short learning curve, but also very little influence of the User Interface. Even the logic is more or less predefined. It's like taking a train: You don't have to do or learn much. The train always looks the same, travels the same way, and makes the same stops.
In my over 35 years of experience in custom development consulting, I've found that customers always want individual changes in the User Interface and for the logic. These small changes are the difference between a customer loving and identifying with the application and a customer resigning themselves to a given User Experience (UX). On the other hand, the software should also be state of the art, fast to develop, and easy to change.
So how does APEX fit into these categories?
Nowhere, because APEX does not create a single line of code for UI and Controller logic. If you are still in the decision phase rule out all frameworks where you have to code for UI and Controller logic (this includes calling APIs), also rule out frameworks that generate code in the UI and Controller Logic. Also check for how long these frameworks are in the market, is there a large company behind it, will this framework still in the market for the next 10 years? How much do you need to pay for it, how much does it costs for your customers? Is it popular amongst customers? Don't take my word for it, check the latest IDC survey.
It's very important to understand the architecture and the basic concepts of APEX. After that, it's much easier to learn and you can answer a lot of questions for yourself.
How should you learn APEX!
If you don't know the architecture, you'll never understand why you have to fill out specific fields in the APEX Application Builder. You'll just learn it by heart because you know it works. But if something changes in the Application Builder, or if you face a bug, you'll be lost. That can be very frustrating because you know the solution is just a click away, but you have no idea where to look for it.
My girlfriend has no idea how to set up our Home Entertainment System. She knows which color cable goes in which color port, but she doesn't understand there's an audio stream and a video stream and the sequence these components go through to get sound out of the speakers and video to the TV. When she cleans the console, she often pulls out the cables by accident. It's always difficult to set it up correctly again because she doesn't understand the basic architecture and ends up connecting the video signal to an audio plug. Don't make this mistake with APEX.
I cannot emphasize enough how important it is to understand what you do and what effect your settings in the Application Builder have in a browser's resulting HTML page. I know it's hard to do it right from the beginning. It's easy to be overwhelmed with the hundreds of places you can change your Application in the Application Builder.
But if you don't learn it right from the start, it's unlikely that you'll ever learn. You'll quickly reach a comfortable level though and you'll achieve lots of remarkable results, but you'll never become a professional developer. You have to understand the what and the why, otherwise you'll get stuck leveraging APEX to just 50% of its potential.
The fun really begins in that other 50%, when you can achieve every result you or your customer can think of. You'll even look forward to the bugs you'll face in your Application because they're so easy to fix or it's so easy to find simple, elegant workarounds.
With APEX you are building Web applications, so it's a good idea to understand the basic principles of Web development, such as:
- How does a browser work?
- What's the DOM? What does it do? How can you manipulate it?
- Where can you use JavaScript and when do you need it?
- How do you deal with CSS?
- What is a POST and what is a GET in HTTP?
- What's a Web server good for?
- How does a Request go from the Browser to the Web server to the Database and back, the so called roundtrip?
Don't get me wrong. I'm talking about a few hours to answer the above questions in a basic way. Enough for you to understand what's happening behind the scenes and answer the questions for yourself what happens when you change a certain setting in the APEX Application Builder. This is a prerequisite to becoming a professional and happy APEX developer 😊
You should have the same basic level of understanding for the Oracle Database as well:
- What's a User? A Schema? A Workspace?
- When do you use SQL? When do you use PL/SQL?
- How do SQL and PL/SQL work?
- What are Tables, Views, and Indexes?
I always start my beginner trainings with these principles. This often surprises audiences expecting APEX only. I receive very good feedback from students who are thankful that I "forced" them to understand what they're doing rather than just where to click. And this discipline you need to have for yourself, if you are self-taught
Here is an example you will come across 100% when you do APEX development (and it has nothing to do with APEX in particular, more the understanding of Web-Architecture: Maybe you need a POST instead of a GET to run through the Page Processing Phase in the Application Builder. You've learned certain settings by heart without actually understanding them, so you input your usual setting (which creates a redirect) despite not really knowing the difference between a POST and a GET. Suddenly your validations aren't working and you wonder why your debugging output in the Browser isn't showing even though the corresponding page process ran through. You've picked the wrong setting because you don't know the basics. You only know how things are done "most of the time”. If you are just learning the "most of the time" APEX is a terrible approach. Remember the Home Entertainment System example ;-)
Don't get frustrated. It will be hard in the beginning but it pays off in the future. The additional knowledge you gain can also be used for every Web development approach and every Database Application. And don't forget it's still ten times easier and faster than learning a complex JavaScript API. ;-)
In my more than 20 years of APEX development, I've often heard questions that begin with “Can APEX…”. I always laugh and interrupt the customer and answer “Yes it can!” without knowing the rest of their question. I always say “If you've ever seen it in a Web browser, APEX can do it.” That was true for the first version 22 years ago, and it's true now. It will never change. It's simply the result of Mike Hichwa's brilliant architecture.
If APEX does not generate source code, how does it work then?
In a database you not only store data and query it with SQL (Structured Query Language), you also program the code that processes the data. In the Oracle Database (the market leader), this programming language is called "PL/SQL" for “Programming Language on top of SQL." PL/SQL builds on skills learned in SQL. It's a very simple 3G language, meaning it's not object oriented or event driven. Even if there is an add-on where you can also create objects and methods, you'll rarely use it. Chances are you'll never encounter it in your whole life. PL/SQL is very fast and optimized for running in a database and processing huge amounts of data.
There is also an add-on called “Web Toolkit” for PL/SQL where you can create HTML and JavaScript. Now you can retrieve data from a database, wrap it into nice HTML, CSS and JavaScript and display it in a Browser. This is possible because the database can communicate to a Web server and therefore with a Browser.
This is how the APEX Team created the so-called “Application Builder”, a Web application that creates Web applications. This Application Builder is comprised of numerous packages which are logical groupings of PL/SQL programs (the so called APEX Engine). The Application Builder is itself an APEX Application comprised of more than a 1,000 Web pages. That's one of the main reasons APEX is so stable and relatively bug free compared to other software. The development team uses the old APEX version to build the new APEX version 😊
Now that you have this huge Web Application Builder, what do you do with it? You describe how your new Web application should look like, what data should be shown, how to navigate between pagesa nd basic functionality like inserting, updating, and deleting data. This process is called “declarative development" because you describe how something should look and work, but you don't actually code it, you just describe it.
How does APEX generate your application from everything you've entered in the Application Builder?
All your entries in the Application Builder where you describe your Application are stored in numerous tables in the Database. You will often hear these tables referred to as the “APEX Repository." You can leverage these Repository entries and read them through “Views”, a stored SQL Query. These entries are read only. You can't write on them and you're not supposed to. Even if you technically could somehow, for example if you were a Database Administrator, you wouldn't want to. Changing Repository entries will cause you to lose your APEX support.
APEX also has a lot of other Packages (stored programs) in the database that read your data from the Repository. APEX interprets this Repository data, gets the data from the SQL queries you have stored there and wraps it in nice HTML code for the Browser to display. These Packages are called the “APEX Engine."
The whole APEX concept is therefore declarative. A repository-based approach to generate any Web application without creating a single line of code for the User Interface, the Controller Logic or the basic functionality. In other Declarative Development Tools you have a button at the end of this process that generates tons of source code that you have to deal with afterwards. APEX never creates this source code. It only reads your declarative entries. It creates an HTML result on the fly every time you request a Web page in your application.
APEX is also very fast. If you don't have personal SQL queries that can take seconds to retrieve and process the data out of billions of records. APEX itself needs around 0.03 seconds to create a complete, feature-rich Web page in the Database.
By now I hope you understand how this brilliant concept distinguishes APEX from all other Web Development approaches and why it makes APEX so successful.
The APEX architecture has been the same for 22 years, that's practically a century in Web development time. In the Web world you see development frameworks rise and fall every year. It's hard to keep up when need to learn a new framework every couple of years. With APEX you can leverage your knowledge for decades because the architecture stays the same. Plus you enjoy more and more additional features every year.
Other key advantages of using APEX are:
- APEX takes care of complicated Web development stuff for you like Session Management, Authentication, Authorization, and Debugging.
- With Dynamic Actions you can create Web 2.0, Desktop-like Web applications, achieving similar results to bigger, more complicated Frameworks. I once replaced an Ext-JS Application with more than 20,000 lines of complex JavaScript API code with 200 lines of easy and well-structured Dynamic Actions in APEX. I achieved even more dynamic AJAX functionality with 19,800 fewer lines of code! Remember that every line of code costs you money every month for maintenance and change requests. 😉
- You only need to know simple technologies like HTML, JavaScript and PL/SQL. This will never change because APEX itself was created with these technologies.
- Even if you can use 90% out-of-the-box from APEX without coding anything, and you only have to code your business logic in the simple and fast Database language PL/SQL, you can interfere anywhere at anytime and integrate your custom solutions without losing the APEX context. That means that even if you code your own Report in PL/SQL and HTML, it's still an APEX component and you can still use all the APEX features in it. That's why I always say “Yes you can do everything in APEX.” This differs from Framework approaches where it's extremely hard to create a custom component.
- If you've created a custom component and you want to share it with your colleagues, you can create a Plug-in. With this approach, you can enhance the APEX Application Builder itself! You can put yourself in the role of an Oracle APEX development team member and enhance the Application Builder. You use the same technology the development team is using to create a new version of the Application Builder. So if APEX does not support your Web-component out-of-the-box, you will probably find it in one of these hundreds of free Plug-ins available here in apex.world. If not, feel free to code whatever you can think of and make another APEX component out of it for every APEX developer using Plug-ins. All you need is good old PL/SQL, HTML, and JavaScript.
- There is a very vibrant online APEX community that can help with any problems you may encounter (check our apex.world Slack Workspace). The development team itself is found on every Oracle conference. You can talk to them and learn from them. They really listen to what you need as a developer. The whole development team are all high quality people. It's no wonder that this is reflected in the product itself 😉. There's also a Web page where you can ask for Change Requests and of course the third largest Oracle Forum after SQL and PL/SQL
- There are a lot of Sample Applications and ready to use Business Applications directly from the APEX team there. Just look through “Packaged Applications.” You can unlock these Applications and play around with them as if they were your own. This is a good way to copy functionality you like into your own application. Once you understand the basic principles of APEX, anything else you would want to know is covered in the thousands of blogs and forum descriptions dedicated to APEX. Whatever answer you need should be out there and easy to adapt to your own project in no time.
- Oh and did I mention that it's free? Yes, APEX is a no cost option to the database. But you have to license the Database, right? Nope! There is even a free version of the Database. So you can build a 1000-page Web application and deploy it to your customer without paying a single penny to Oracle. (Guess how we created apex.world?). If you need more database power, just upgrade to a more powerful Oracle version without changing a bit of your APEX application. And because it's Cloud based, you can easily develop in the Cloud and then keep it there or move it wherever else you'd like. There are a lot of Hosting providers for APEX. Even Oracle itself is offering a professionally hosted APEX Cloud Service for your productive APEX applications.
Now you understand why so many APEX developers are so enthusiastic, putting stickers on their computers or smartphones, wearing t-shirts, and doing all sorts of other fancy stuff with our ā'pěks logo. APEX developers are brilliant, love their work, and have extensive experience with lots of other developing approaches. That's why they love APEX and why you see it everywhere.
So how do you learn APEX?
I assume you want to become a professional APEX developer with the ability to generate any Web application you can think of.
Because APEX is Cloud-based, all you need to develop, administrate, and test an APEX application is a Browser. So go to apex.oracle.com and get yourself a free Workspace (a small part of a Database). You should be up and running in five minutes.
Now it's up to you how you would like to learn. Oracle itself provides trainings, free and paid ones. This is a good starting point. But never forget they mostly teach just the how not the why, it's your responsibility to figure out the why.
Don't believe when they tell you APEX is easy to learn! You need to have basic Web and DB skills. Then there are 8000 possible settings in the Application Builder. Even if you need just 1000 regularly - you speak a language fluently with 500 words 😉.
Once you start with real applications where you earn or lose money if they are not finished in time, you need a coach! The samples always work great, but I guarantee you you will face the first obstacle you can not solve and don't understand why in the first 10 minutes and this will be that way for years. Welcome to the real world 😊. If you don't have the time or don't want to rely on solutions from the internet, that break in the next APEX version, I highly recommend you the askMax.solutions service. He is the best APEX developer on the planet and the most friendly one. I use this service for many years. Especially if I face something that is not possible. He always finds a solution and the best one that is still working in future APEX versions. It's a simple service, you ask a question, he calculates the answer time in quarters (1 quarter = $25) if you agree and payed you get the solution right away. Try it out, first quarter is for free. 90% of the answers are within one quarter. If you are a company and want to have a professional coach for your developers, buy a contingent for them. The cheapest way to get your devs up to speed.
The next step to becoming a 100% professional is to learn the languages and technologies around APEX. They're not complicated, but it takes a while to cover them all. In the mean time, you can still develop APEX applications successfully with what you've learned so far. Every little step you do now in learning the surrounding technologies will help you produce even more amazing results. It's a lot of fun and very rewarding, because you can use your new knowledge right away in APEX.
Technologies to learn:
- Start with the Oracle Database. APEX lives and breathes inside the Database. Every functionality the Database provides, and there are hundreds you can't even think of, can be used in APEX right away! Larry Ellison, the founder and former CEO of Oracle, once said "Using APEX in the Database is like checking into a 5-star hotel. You get all the service for free." You should also use the free SQL Developer from Oracle to learn and program the Oracle Database.
- Learn the basic principles of the Oracle Database, SQL, and PL/SQL. After that you are at 60%. By the way, you are now an Oracle Developer! You can program this very famous Database and develop business logic in the backend without APEX too.
- The next step is to learn the front-end technologies: HTML, CSS, and JavaScript. This is also totally independent from APEX. You need this knowledge for every Web development. You can go a very long way without knowing these languages in APEX, but you'll discover a whole new world after learning the front-end technologies. You can manipulate your User Interface any way you'd like and it's just a lot of fun. After that you are at 80%.
- The final step is to learn jQuery and Dynamic Actions. jQuery is a JavaScript Framework to manipulate the User Interface in a Browser without retrieving the whole page from the server again. jQuery is very popular and used in more than 50% of all Web sites. Dynamic Actions is the declarative layer on top of jQuery to achieve interactive AJAX calls and UI manipulations. Refer to Explanations / Dynamic Actions for more information. Once you've done all this, you have reached 100%.
Your learning doesn't stop there though. Like learning any spoken language, it takes time. It may take a while to form your thoughts, but soon you'll start saying meaningful things and every year you'll become more and more poetic. 😊
How long will it take?
Let's say you start at 0%. You have no idea of programming, databases, or Web development. If you can invest just two hours every day and you are serious about it, you should achieve the 100% within a year! With every percentage point you gain, you become a better APEX developer. You can use this knowledge in all related database and Web development approaches. The best part is, you won't lose this knowledge for a very long time. The architecture and the technologies around APEX have stayed the same for more than 20 years and will probably remain unchanged for another 20 years.
There's currently a shortage of professional APEX developers. That's the feedback I hear from all the companies offering jobs. It's a great time to become an APEX developer.
You can contact me if you have any further questions regarding how to learn APEX.
By Juergen Schuster