Some people refer to this type of framework and its components parts as a technoloy stack. I think of it as a Storage and Retrieval system for Business. Obviously I have had to scour the internet to put this system together. A system I fondly like to call Backbutton framework.
The security features in this stack is also based on a very simple premise, making use of proxies. Adding physical separation with layers of proxies between our business logic components and Port 80. Port 80 with its naked exposure to be outside world. As we cannot run our servers in an isolated environment the use of proxies is the next best thing. The Tor network aka the 'onion' and the darknet also utilises the same methodoloy of layered proxies for its security. I first came across this idea of use of proxies in a book called Professional Java Server Pages published by wrox press in 1999. This was the book I was using to learn dynamic web applications. The proxy module (dll) was called modjserv provided by the Apache.org foundation which helped to add a physical between the Apache Webserver , running on Port 80 WAN and Tomcat the Application server running on another LAN machine.
The first Application Generators were two tier fat clients with a backend database. The drivers of these application development tools were database vendors. The front end was simplified to use languages known as 4GLs. Examples of 4GLs are Oracle Forms,CA OpenRoad and Visual Basic. Booch Grady described 4GL Application Generators as "tedious". Reactjs is very much like Oracle Forms, CA Openroad ,Visual Basic hence it is my favourite Front end Application Development Framework.
Fortunately I have picked up many concepts in my five years of Software Engineering and Application development. For example one of the concepts is, in real world applications the D in CRUD is never used. Data is too valuable. Knowing these concepts has made it hard to find the right APIs, it can sometimes feel like looking for a needle in a hay stack. The proof that I have followed the right concepts is of course in the working prototype.
This was the first thin Client Architecture I came across. It was another effort by a database company. I call it K.I.S.S. keep it simple Stupid. By this time I had architectural awareness raised some red flags, so I bought a book to see if others had the same concerns.
That book was called Professional Java Server Programming by WROX press. The best book I ever bought. There were a new set of considerations. Good news for Application developers, commercial Tools became open source. The bad news, too many chefs ... The diagram shows more technologies than are going to be used or needed and a key components which will make the application Industrial Strength is missing from the diagram. It is found in later chapters in the book.
Although the complexity of Technology can be mastered, there is a second complexity which is the stated requirements or Business Knowledge. Microservices is the current approach to helping Application developers overcome the complexity of stated requirements / Business Knowledge.
A selection of Microprofile application generators, you can begin the process of prototyping applications by going to the button marked ... :
.. get started Microprofile .
.. get started Oracle's Helidon .
.. get started IBM's OpenLiberty .
.. get started kumuluzEE.
.. get started Payara fish .
.. get started Quarkas.
.. get started Community's SmallRye.
.. get started Spring.
Apache Webserver along with Tomcat Application Server websites may also be worth a visit. At the apache website finding the get started button is a bit more involved, it is Freeware. you may need to get a book to guide you.
The Java EE specifications for the above architectural blueprint in its current form can be found at the Jakarta EE. These specifications contain the Tool Vendor stated requirements . Of course the ever changing specification needs a work bench. The work bench is called glassfish
There is one easy way to find out the popularity of a Software Application Tool. You don't have to read any reviews or visit any conferences. Simply try out the product. The more bugs you find in the documentation, the more bugs you have to fix in the setup and startup phase of the software, the less helpful the error handler, the less popular the product. If the product was popular then other developers would have pointed out these anomolies and they would have been fixed.
Is there a need to place trust in the commercial vendors ? not if you are going to "Protoype! Protoype! Protoype!". You can do this by clicking the get started button provided. If you do go down the prototyping route you are at risk of reaching the plateau, taking you to the application developer the expert level.
I can't say how difficult the learning curve is for a complete beginner without any guidance but someone with five years experience + 2 years HND Computing, like me, this is part of the GIG economy. slightly bit more challenging than delivering pizzas,another GIG economy but manageable. I realised Application Dvelopment is a GIG at my first job when the up coming five years project was shelved.
Source: Object Orientated Analysis and Design with Applications;Grady Booch [IBM][Second Edition]
" A dying star on the verge of collapse, a child learning how to read , white blood cells rushing to attack a virus:these are but a few of the objects in the physical world that involves truly awsome complexity. Software may also involve elements of great complexity; however , the complexity we find here is of a fundamentally different kind. Einstein argued that there must be simplified explanations of nature , because GOD is not capricious or arbitrary. No such faith comforts the software engineer.
We do realise that some software systems are not complex. These are largely forgettable applications that are specified, constructed, maintained and used by the same person, usually the amateur programmer or the professional developer working in isolation. This is not to say that all such systems are crude and inelegant, nor do we mean to belittle their creators. Such systems tend to have a very limited purpose and a very short life span. We can afford to throw them away and replace them with entirely new software rather than attempt to reuse them , repair them , or extend their functionality. Such applications are generally more tedious than diffcult to develop ; consequently, learning how to design them does not interest us.
Instead, we are interested in more in the challenges of developing what we call Industrial-Strength Software. Here we find applications that exhibit a very rich set of behaviours , as for example , in reactive system that drive or driven by events by the physical world , and for which time and space are a scarce resource;applications that maintain the integrity of hundreds of thousands of records of information while allowing concurrent updates and queries ; and systems for the command and control of real world entities, such as routings of air or railway traffic. Software system such as these tend to have a long life span , and over time , many users come to depend on the proper functioning. In the real world of Industrial-Strength software we also find frameworks that simplify the creation of domain-specific applications, and programs that mimic some aspect of human intelligence. Although such applications are generally products of research and development they are no less complex , for they are the means and artifacts of incremental and exploratory development.
The distinguishing characteristics of Industrial-Strength software is that it is intensely difficult , if not impossible, for a developer to comprehend all the subtleties of design. Stated in blunt terms, the complexity of such systems exceeds the human intellect capacity. Alas , this complexity we speak of seems to be essential property of all large software systems. By essential we mean that we may master this complexity, but we can never make it go away. Certainly , there will always be geniuses among us, people of extraordinary skill who can do the work of a handful of mere mortal developers. ... "
Source Grady Booch
" The United States Department of defence (DOD) is perhaps the largest user of computers in the world. By the mid-1970s, software development for its systems had reached crisis proportions: projects were often late, over budget and they often failed to meet their stated requirements. It was evident that the problems would only worsen as software development costs continued to rise exponentially. To help resolve these problems which were further compounded by the proliferation of hundreds of different languages. The DOD sponsored the development of a single, common high order programming language. The winning design was originally called the Green Language (so called because of its team colour code during the competition), later renamed Ada.
" Poor quality software cost an estimated $2.84 trillion in the US alone in 2018 "
Source CISQ: [Consortium for IT Software Quality ].
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report/The-Cost-of-Poor-Quality-Software-in-the-US-2018-Report.pdf " Despite the fact there are only two golden rules for good quality software this is a remarkable achievement
I have found there is only one way to master the technology,build an application from scratch, in this case starting with a database design. I think it is safe to say the database design is outside the scope of the Application Developer Remit, so I would use a ready made one. An application will likely start with a Login Form and demonstrate a complete thread. That will get you to the top of the plateau.
As Application developers we need comparisons so here it is.
Comparative Analysis by Emily Jiang, IBM MicroProfile Consultant from the IBM R&D laboratory
How much can a developer's skills be worth if the developer is an application developer using one of the above mentioned application generators ?
Let's take this Shark Tank App as an example. The App is called BricksAndAgent. It is a property maintenance application. The Billionaire's son invested $750,000 in Software development cost. He wants now $250,000 for 10% equity from the sharks, which he gets, thereby making the app a $1 Million dollar app.
With a database design in hand, I would estimate it would take an application developer 3 months (add 20% contingency) to churn out a duplicate application with some enhancements thrown in. ssssh...
project duration 5 months; unemployed looking for another GIG after that.