× Home MicroServices WYSI!WYG Zen IDE AppServer JSP JDBC Pool EJB About Services
Backbutton Frameworks ©

Becoming a Software Application Development System Architect for FREE

HTML5 Markup

CSS Styling

Java Script

Framework Technology Solutions

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 hundereds 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 ].

Failing to meet the stated requirements will not get solved by having a common high order language. Tests devised from the customer requirements independent of the development team to determine if the application has met the stated requirements is needed. It goes without saying that the test setter must to be fluent in the requirements, probably an experienced developer.

I have worked for three UK software houses as a software engineer and Application Developer. Smiths civil Aerospace and defence division, bytel(Telecoms Customer care and bytel system ), Logsys Solutions (Software house). Only ones of these is still in business and only one of those learned from US DOD report in the mid 1970s into the software crisis.

With the kind of commercial experience I have been exposed to over a span of five years meant I knew all the concepts so my goal was to look for the framework which implemented those concepts. Java J2EE/Java EE 8 is one such framework. For somebody like me I need only invest my time without supervision. Java EE8 is open source so FREE to learn. These framework technologies are understandably FREE to learn due to its complexity. That is to say paid supervised training into these complex technology can easily become costly hiring mistakes. On the other hand companies do reward handsomely those who take the initiative and commit themselves, for instance web designers for responsive static website get paid aroung £70K. If you can learn and become proficient in these framework with out supervision then meeting a set of requirements ought to be a breeze. When you have commercial experience in the Software development lifecycle then it is very easy to gauge when you are ready to hit the ground running. Keeping in mind you are learning technologies not concepts, concepts you know already.

Developing a framework such as java EE 8 which has to address issues such as GUI, data storage, data integrity, distributed business logic, stateless protocols, point to point messaging requires years of iterative development and is most definitely a costly eandeavour requiring collaboration between many hardware and software industries. A successful framework is one where you can spend as much time as possible focusing on meeting the requirements. For example a database is one such framework technology which does many things for you [application developer], you just need to know some SQL.

Initially I was a bit confused, how come there is such high quality open source application development software. The technoogy I came across was actually better than expensive commercial Tools and the expensive training which come with those Tools. My initial thought was that it is some kind of Application Developers hippy-ish movement. Freeing Application developers from the burden of expensive training offered by employers. Then I was logged on the Java J2EE user group mailing list when somebody told me I was very good and handed me links to the documents I needed to become proficient in the technology. It was clear then the reason for this high quality open source technologies is that, these technologies are a complex set of technologies which need to come together. So one week training course wasn't going to cut it. A developer had to spend a serious amount of time getting to learn these technologies so that they can apply it to e-commerce specifications. As I knew all the concepts,this meant I could take up any technology I like at any time in my career.

4GL- if you go to a job interview for Java EE8 or Spring and you are set Java questions as part of the hiring process. The somebody hasn't realised that Java EE8 and Spring are a compliment of 4th Generation languages Framework.

The Alternative

The alternative to Framework technology is building from scratch. Smiths aerospace is one such company which practice that with building their own bespoke hardware even.

source: Camel In Action
Building complex systems from scratch is a very costly endeavour,and one that's never successful

Some of the rules in coding I know which will make sure that large and complex are successful are, concurrency is not permitted, use of third party libraries are not permitted. All libraries must be developed in house , use of naming convention, keep it as simple as possible.

I was once asked to write a program for a job interview. I decided to follow the rules of best practice Software which I learned from Smiths. The hirers were oblivious to the best pracice followed by companies like Smith Aerospace, My program was simple using only basic programming constructs, avoiding any complexity. I thought I was showing off my skills by following the best practices learned at Smiths. The hirers thought I am not very good at Programming. Naturally I turned them down because it was likely any software developed by these people likely fail.

In framework technology you will not find any of the best practice software rules hence Billion dollar training companies and the first step you need to do is buy a book to learn the meaning of the framework or what I would call the framework requirements. The technology how to book industry is another hazardous and toxic topic, deserving another discussion.

Zen and the art of motorcyle design

The very step in meeting the requirements is to identify the requirements in the specification then identify framework technologies. There is major pitfall waiting which prevent the requirements being met. The pit happens if one allows an experienced application developer in a certain framework technology to choose the framework technology. The Application Developer will always the framework technology he/she is skilled in, whether that framework is right for the specification will not be a concern for them because the application developer will not want to lose his skills. The same applies if you call in a framework vendor, they also recommend their framework technology whether it is the right one will also not be their concern. So when looking for reason in the US DOD report for failure to meet requirements. It is likely the ones I identified.

Framework Developments are complex and costly endeavours and hardly ever successful especially those involving Internet. They are developed with a collaboration of ideas. They may have to go through iterative development.

Application development is distinctly different, following not ideas but a user specification and the fixed set of requirements contained within that specification.

Skilling up in using a framework is neither a time consuming nor a costly endeavour. If it was then there is not point in developing frameworks. The fact that using a framework to develop an application is means to avoid building from scratch hence Framework technology such a 4GL application generators is known as Rapid Application Development.

Before diving in with a view to mastering the framework, do make sure the framework has reached the stable stage and commercial demand. If you come across specification where the framework you mastered cannot meet the requirements then the right thing to do is own up to the higher ups. I know you may feel the higher ups are undeserving of the bigger cars, you must rise above your annoyance. You must be ready to make yourself unemployed for the greater good and look for another job.Trying to fit a square peg in a round hole is never a good thing. You will most likely encounter the same problem when you go for a job interview. The interviewer will not want to discuss the specification with you for business confidentiality reasons. You will not have an opportunity to assess whether the framework you have mastered is the correct one.

What you need to know before building your first dynamic web applications using Java Frameworks

a Java Bean is an intraprocess (tightly bound) and a Java Enterprise Bean is an interprocess (loosely coupled). I believe the starting point of Java EE 8 currently known as the JEE framework was to solve the problem of a user having the ability given by the browser to press the back or forward buttons. The purpose of this feature is for easy user convenience so that the user does not have to type the not so friendly url address syntax. For a static or responsive website the web developer has no need to concern him/herself with this issue.

For Dynamic websites the back and forward buttons present a complex set of problems. To address these problems a new component in component technology had to be invented. In Java and J2EE/JEE Framework this component is called the Enterprise Java Bean. A component for holding loosely coupled logic with added benefits of failover & Load Balancing for a faster user experience.

If you come across a website which says Please do not press the backbutton then that means the e-commerce website is not Industrial Strength. From Project manager to testing, Industrial Strength software proved beyond their intellect.

You have greater skills even before you begin to build your first e-commerce dynamic website than those websites which say please do not press the backbutton,just because you landed on this page. Years of commercial experience isn't always a reliable tell of a talented software developer, nevertheless it is the tell given much weight by recruiters because they do not know and more importantly do not understand the difference between a Java Bean and an E-Bean.

Relying on this particular tell does explain :-
Poor quality software cost an estimated $2.84 trillion in the US alone in 2018 Source CISQ: [Consortium for IT Software Quality ].

The Curve will Flatten

At one of the places I worked at, Human resources Manager arranged a career development between three the company developers who were not senior application developers and the project Manager. He said the technology's learning curve flattens out, you will remain as junior if you become comfortable remaining at that plateau. This was a refreshing point of view. He went on to say you should focus on other stages also like data analysis leading up to project management. One of the other developers objected to the term junior to describe an application developer fluent in an application development framework.

I began my career as a Junior Software starting at testing, maintenance , coding going up the software development life cycle so I had no issue with his advice.

I found the project manager's view refreshing because he focused on the plateau rather than the learning curve. I could relate to this idea of reaching a plateau all the way back to College. It happened to me with Programming using C at College when I concluded that I have learned all there is to learn about programming, let's go find a job and see how they do it in the commercial world. Mind you C was my third programming language not counting SQL which is a RDBMS framework programming language.

Industrial Strength System Planning & Design

Building an application is a fairly simple exercise which you one can learn from following any book, tutorial or udemy course but building an Industrial Strength is an entirely different story, there are umteen considerations and it is not just the technology. The more considerations you know the more complex it becomes, yet all the time you are looking for simplicity. The system I call the Zen is the first system I designed and it uses distributed technology for dynamic web applications. The problem it is trying to solve is the system performance to remain unaffected no matter the number of concurrent end users. Distributed technology was new to me too. Designing a system was also a first. Naturally I wasn't sure of myself.

While I was looking around to decide which framework I should specialise to train on I found two technologies which pretty much did the same thing,which is load balancing, Java Remote Method Invocation API framework and a dll module called mod_jk. Then I came across a third technology which I had not yet protoyped called Enterpise Java Beans, on face of it, it appeared mod_jk required alot less work so it appeared an easier way to do Load Balancing. My priority was to select a good framework I can specialise in, not go around trying out technologies just to find out they are trying to address the same problem. I began to wonder am I misunderstanding these technologies from my protoyping or are these technologies actually designed to do the same thing. I think I fell into the forking frameworks trap. To do a sanity check I decided to subscribe to the EJB community mailing list where I felt I would find system architects who can clarify this confusion, whether EJB did the same thing as the other technologies I found. My question was I am expecting heavy user actvity, what are my considerations ?

The response was, you have to consider connection pooling, load balancing and a perfect database design. It appeared my intuition was correct, these techologies do do the same thing.

Perfect database Design has nothing with heavy user activity so why was this included in the response ?

This confirms my observation that the starting point of any e-commerce system planning is the database design. This makes sense because at one software house I worked at,the software house developed a customer care and billing system for the telecom industry. At the top of the technical heirachy was a database expert. I heard office talk he was one of the top ten/five database expert in the world. It was also rumoured the database had 500 tables, on one occasion I was doing OLAP Cubes, I found there were 250 tables. Still alot !

Developing an application may earn you a graduation degree , but developing an application where the response time remains unaffected under heay user actvity for example for e-commerce applications (Industrial Strength software) is the one someone will pay for if they know about this.

My search for looking around for a framework I can specialise in was motivated by two flawed commercial application development tools I came across and I wanted to specialise in application development tools I can believe in and had every thing I believe should have.

One of the flawed framework was a database centric framework for thin client application development. It was database centric because it belong to a database company, naturally their priority was to promote their primary product, their database. It lacked the cohesive abilities between services.

The other commercial application development framework was flawed because it was using only servlets for dynamic web development when JSPs were under development at break neck speed because JSP for dynamic web application development. The motivation for JSP development was because using JSPs was considered nice and simple way to program servlets. This servlet engine Tool did not have a professional IDE either.

The next Technology I investigated after EJBs was Java-Jini. I Logged on the Jini mailing list because I wanted to get accurate Top Level Framework Information, rather than second hand and most likely inaccurate information from a book. I was told immediately to go Jini-Javaspaces. This is because they identified that my objective is application development from the questions I asked previously on the EJB (RMI-EJB) mailing list. This also means that one doesn't have to know about RMIs to be able to programme distributed applications in EJBs just need to know Enterprise Java Beans which is the next step of evolution in RMIs. My first impression of EJBs was that it was competing paradigm for distributed computing with EJB design for a specific purpose while RMI for any programmer and any use he can find for it. Jini Programmers identified me as an application developer because I identified myself as one from the questions and comments I made. This targeted information saved me alot of time, which was also my objective. This is programmer to programmer advice. I have never come across a job interview where the recruiter was faintly aware of this distinction. In the absence of this knowledge their useless criteria for judgement is number of years and number of lines of code. Even the people logged on the mailing list are not aware of this distinction of technologies. In Java the plethora of technologies is especially confusing because one doesn't know which technology to focus on and which one to ignore. This is the case with many modern high level languages where frameworks are involved. Every modern high level has Frameworks. A programming language can mean different things to different people dependently on your objective.

Recruiters determination of skill is at least five years of commercial experience on a framework technology or so many thousands of lines of code. Protoyping to find a suitable framework , something I was doing doesn't qualify so then it is really fruitless exercise in the end due to indifferent commercial priorities. These recruiters' views are not shared by framework designers.

Framework Training TimeFrame

The first programming language I learned was Pascal for one term. One term lasted half academic year. Pascal is a high level language used to introduce one to programming. I didn't get, couldn't see high I would relate it to the real world.

The next language I learned I was taught was 68K Assembly language. I began to understand the programming concepts and software hardware relationship. The third language was C which was taught at the same time unix Operating System and Unix scripting language. Unix scripting is an interpretive language written in C. MS-DOS is a comparative language to unix scripting, but I realised it is a poor comparison becuse the unix scripting language is a flexible language therefore powerful langauge. Unix scripting obviousy has limitations, for example you can write a script to install and launch an application and launch it, version control it, but it wouldn't be a gui installer or a launcher, You would have to do that with C.

My first project was in C. I had a previous career in Accountancy and this HND course was a change in career because I viewed Accountancy was boring and outdated compare to computing. So I had the project specification which I understood and programming language components which I could relate to with the real world. At first I was looking up the code syntax, then later I began to use the compiler to help me with my typing and language syntax, then about two days later I was typing C code as if I was typing a letter. The last decision I had to make was when to stop and say that's enough to get an A grade. All the other students were at a disadvantage didn't get programming concepts because they didn't have other careers they could use to get comfortable with programming as I did with my past Accountancy experience. That is pretty much true of majority of programmers, all they know is Information Technology. The most important lesson I learned was always start with getting to know use case specification concepts before programming technology.

The final language I was taught in the HND Computing C++. The first thing the teacher said I have good news, no more coding. everybody but me cheered because I had mastered programming by this point and they all still suffered from CODE FEAR. I later realised he was referring to component technology in the form of inheritence, APIs, classes, Object Orientated programming using C++.

The first commercial programming language I was taught was Ada. That was a week long course. After that I was also sent on week long application generator courses namely CA Openroad and Oracle forms. These Application Generators only taught the GUI components and programming conditional expressions and constructs. So I was able to pick up Visual Basic later without training because I had gone on these application generator courses.

With my history I estimated it would take longer than a week to get to a comfort level, to a point where I could program a dynamic web application. The starting point would have to be by knowing the concepts then learn the syntax of the technologies avoiding the pitfall of competing paradigms. This is because there is plethora of technologies involved in dynamic web application, html, xhtml, javascript , flexbox, JMS , EJBs, webserver, app server, IDE to name a few. My estimate is 4-6 weeks.

If you landed on this page https://www.thethingsnetwork.org/ then it would probably take you a week or two before you start developing useful real world services. This technology is currently on the leading edge as opposed to the bleeding edge. I am currently protoyping a weather monitoring system as an Intro in to this low bandwith, low power usage technology. I can build real world applications using this technology without having to show to a recruiter five years previous commercial experience in this Technology.


Nothing is really secure yet you have to have ports open to the world wide web to be less secure, BUT it doesn't mean you shouldn't try. The more you try the more secure the system will be. The question one should be asking frequently is

What else can I do to secure my system ?

Recently (16-October-2020) British Airways have been fined £20 million ($25.85 million) for letting people steal the data by having a shitty website for failing to ask the question often enough.

If you don't love it or at the very least fascinated by it you are not going to be good at it.

Connection Pooling

Container Managed Concurrency

Load Balancing

Webserver acts as soft configurable router

Perfect Database Design

ANSI java.sql.ResultSet
Container Managed Concurrency

What is KISSSS © ?

KISSSS © stands for Keep it Simple Software Solution Strategy.

The most important word is Strategy meaning method. It is a Method applied to a complex problem so as to make it simple for every one.

KISSSS © doesn't mean to apply a simple solution to a complex problem. That is simply a stupid interpretation of KISSSS ©. It is a KISS interpretation of KISSSS ©. KISS is an unrelated methodology which means Keep it simple stupid.

KISSSS © in Action

The motivation for developing the JSP is to make it simpler to programme a servlet.

A bean's purpose in life is to make a named logical encapsulation of code using OOM ( encapsulation name,properties & methods). An EJB's purpose in life is also the same. The recommended approach for EJB development was to use three developers. A consultant for Business Logic, A developer for making calls to the remote Interface methods and an administrator for bean deployments. I have been on projects with successful approaches in software development, upon reflection this three of a kind methodology seems like KISS interpretation of KISSSS ©, developed by those who have not seen successful application development.

Lines of code for Business Logic is separated from servlets and JSPs using components like Beans and EJB because it is Simpler to read and maintain code. Both Beans and EJBs are based on OOM because OOM makes it Simpler.

OOM makes possible to group lines of code in a logically named encapsulation, <[scope]> class < classname > { }. The lines of code in a class do not get executed same as procedural languages where you must declare the variables at the top or before executing any action on them. Hence C++ is known as C with classes. ODBC, JDBC is name given to the client API to connect to database server for looking up data. There is no confusion there !, makes sense. What is Bean, lookup() name as the client API or javafx.Application.application meant to imply ?

For example Assembly Language doesn't support OOM to separate the lines of code. On the other extreme is having three roles to develop an EJB. The focus leans more on technology to provide the answer and less on the domain design.

Maven Framework-archetype which can generates the template application for you is a consideration to make application development simpler. Maven Archetype is a component of KISSSS ©

I found a multi national company called loadbalancer.org who specialises in one of the aformentioned considerations, load balancing for distributed computing. This service can be offered by a third party because load balancer is an administrative tuning task similar to database tuning.

There are many more considerations to make Software Development Simpler.

key terms to remember Business Logic , OOM , Distributed Computing, Encapsulation, Interface