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. Let me tell you why.
There are two basic Web development approaches:
1. Code based approaches
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.
There is another drawback to this approach beyond the steep learning curve and the heavyweight 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. There's a lesser known part of APEX called Websheets that does something similar.
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 20 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?
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.
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 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 right from the start, it's unlikely that you'll ever learn. You'll quickly reach a comfortable level and you'll achieve lots of remarkable results. If you do this, 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 75% of its potential.
The fun really begins in that final 25%, when you can achieve every result 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?
- 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, but time and again 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 do it.
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”. Learning "most of the time" APEX is a terrible approach. Remember the Home Entertainment System example ;-)
In my 11 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 15 years ago, and it's true now. It will never change. It’s simply the result of Mike Hichwa's (link to the Podcast) brilliant architecture.
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.
This is how the APEX Team (_xxx link to YouTube) 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 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 pages, and 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 15 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.
- 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.
- There is a very vibrant online APEX community that can help with any problems you may encounter. 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: apex.oralce.com/vote
- There are a lot of Sample Applications and ready to use Business Applications out 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'd want to know is covered in the thousands of blogs and forums 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, there's 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 called XE. 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'd like to learn. There are books
out there, Video Trainings
and Live Webinars
with teachers you can talk to, or the official Oracle training
with onsite classes. Classes, books, and video trainings are available in a wide variety of countries and languages. I only refer here to the popular English tutorials. You can also find an experienced APEX developer you know and respect and ask him or her for one-on-one Web training. It shouldn’t be more expensive then a live Web training, and since you'll be the only student your trainer can customize lessons to your needs. This is how I became an APEX professional. I just booked one-on-one trainings with professionals.
All these materials give you a feeling of how to develop APEX Web applications. After that you can decide if you like it or not.
But this was just the first step, because you want to become a professional developer, right? I would say you're at 30% now.
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.
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 15 years and will probably remain unchanged for another 15 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
at any time if you have any further questions. Start now by requesting your personal Workspace on apex.oracle.com
By Juergen Schuster