Explanation of basic types of software applications / projects.
Do not worry if you do not understand all the technologies mentioned in this article as we will discuss them in more detail later.
The above diagram shows a super-simplified version of a typical application, which might as well be Facebook.
The application has four main parts:
- A mobile application for iPhone / iPad - the front end
- A web application - another front end
- A mobile application for Android - one last front end
- A server application - the back end
Ok, so we have an example using lot of unknown terms, now it is time to define them!
Front End vs. Back End
Front end and back end are two extremely important concepts used in this article and in IT in general.
The front end is the visible part of an application, the user interface (UI), the thing that users can see and touch.
As we have seen in our example, the following represent front end:
- An iPhone app
- An Android app
- A web site
The back end, in contrast, is everything else, the invisible part sitting somewhere in the background, the magic engine that basically takes care of the actual functionality and things like (business) logic, notifications, messages, storing the data, etc.
Front-end and back-end parts can run on the same device (typically a computer or a cell phone), and sometimes there is no clear line between the two.
Very often, though, they are physically separated and run on different machines (a computer and a server, for example). If this is the case, they must communicate with each other, of course, and that is very often done via a REST API these days.
Types of Software Applications / Projects
- Server (Back end)
Web applications are probably the most popular applications these days.
We are not talking about some simple static web site here (as arguably those cannot be considered real applications), but about complex and dynamic web applications like Google, Facebook, YouTube, Yahoo!, Wikipedia, LinkedIn or eBay, various blogs built on top of Wordpress etc.
Depending on the complexity of the web application, the front end can contain a bit or quite a lot of logic itself, but most of the time, the back end is necessary as the most of the functionality and logic resides there. The relevant information will be given in the Server (Back-end) Applications section.
Mobile applications seem to be the fastest growing segment at the moment. By mobile application we understand anything that runs on a cell phone or a tablet.
There are two dominant players in terms of mobile software: Apple (with iPhones and iPads running an iOS operating system) and Google (with devices running an Android operating system).
Examples: applications that ship with the phone (Mail, Calendar, Weather, Safari, Chrome) and third-party applications (Facebook, Instagram, WhatsUp, Viber, Skype, games etc.).
In layman terms, everything running on your cell phone outside the web browser is a mobile application.
The mobile application front end is written in Objective C or Swift language (iOS devices) or Java language (Android devices).
Most of the mobile applications but the very simple ones also need a back end, which is discussed in the Server (Back-end) Applications section.
While desktop applications have traditionally been the dominant software category, they seem to be quickly diminishing in the last years, as more and more software and services move on-line. Think of them as of programs that you install on your desktop computer or on your laptop.
Examples: office tools (Microsoft Office, OpenOffice, LibreOffice), graphic editors (Adobe Photoshop), communicators (Skype) and Internet browsers (Google Chrome, Mozilla Firefox, Safari, Internet Explorer).
As a rule of a thumb, everything running on your computer outside the web browser is a desktop application.
The front-end part for desktop applications can be written in many languages, but very often it is done in C, C++, .NET (C#) or Java.
Now with the back end, it is more tricky. Some desktop applications can be monolithic and have no clear separation between the front and the back ends.
Other desktop applications can be just a thin layer of a user interface and connect to some remote back end. In this case, the Server (Back-end) Applications section applies.
Server (Back-end) Applications
Server applications are not applications in the traditional sense, because they do not have an user interface (if they did, we would, most likely, consider them to be web applications).
Server applications very often serve as a back end for the web, mobile and desktop applications.
For the data storage, popular choices include SQL databases like MySQL, PostreSQL, Oracle DB, Microsoft SQL and NoSQL databases like MongoDB, Cassandra, Redis, CouchDB and more.