Home / Welcome to the PiApplications's articles repository / Topics about programing

The PiApplications's technical choices.

We create software since 1984, it's been a long way...

A brief and rich history.

At that time, computers were still the field of "doctors" and engineers in white coats. Thus we experienced the arrival of the first machines "general public", ZX81 (16 KB RAM) with its Z80 assembler and its big brother the ZX Spectrum (48 KB RAM and miniband storage device). The programing languages were "Basic" and assembler. In 1986, we acquired the first PC with Amstrad 1512 (512 KB of RAM and two floppy drives 5 "1/4). Apple developed its first machines including the famous Apple II ... The Pascal language was beginning to impose itself. The 90s saw computers to take a new impetus under the influence of several factors:

  1. the quick increasing of the hardware performance, specifically microprocessors, memory and hard drives;
  2. the expanding capacity of public and local networks accompanied by falling communication costs related to their privatization;
  3. the production of "Software Engineering Workshops" to increase development productivity;
  4. the availability of many competing operating systems for PCs with UNIX (Solaris, System V), Windows 3.1 and NT 3, OS2, Linux, etc.
  5. the development of electronic commerce on the Internet with the browser that starts to impose itself as the "universal client".

This period could be described today as "big mess" because it was rich in innovations and hopes. A huge market (planetary) was started and everyone wanted to provide its inovant projects also as brilliant and ephemeral as butterflies.

The 2000s were marked by two major developments:

  1. the explosion of mobile telephony and its consequence: smartphones;
  2. the beginning of a new concept or rather the back to an initial concept: the virtual platform (or "logical" platform ).

The explosion of mobile phones leads to the complete revision of the machine architecture and their operating system (OS). Smartphones have limited capacities and resources. They cannot execute existing OS. For now, there are three major players in this field:

It is likely that commercial policy (cost and captivity) of Apple will do that this company will soon return to its niche market once consumed its technical advance (which is almost the case in 2015). Microsoft already has a bad reputation with its proprietary systems. This company doesn't deliver anything truly original and should vegetate in this segment. It is rather ironic that Nokia very innovative in the 2000s and who had made the choice of Java on those phones (ancestor of Android) is now forced to design Windows smartphones due to its acquisition by Microsoft. Such is the harsh law of the market ...

It is probably Google with Android that will equip the most number smartphones in the coming years. Indeed, outside of Apple and Microsoft, all manufacturers have only Android to equip their devices. Those who made the bet to design and deploy their own systems have not harvested the fruits of their efforts and it is unlikely that new manufacturers will launch this race.

The other major breakthrough of the 2000s is the logical platform. This platform is a "logical" operating system which replaces the "physical" operating system. The external communications are allowed through a "normalized" API. This concept was already more or less known from the beginning with the Basic interpreter. In addition, this new platform is not born from the desire to integrate it in existing PC or to equip computers but from the need to equip smart and low resources electronic systems (the advent of smartphones will remember these debut). This was the Sun company (now Oracle) with its Java platform (JVM or Java Virtual Machine) which launched this major innovation. Soon, Sun and other companies like IBM saw the interest to bring this concept to the world of development on PC. This allowed to abstract the operating system and therefore the material. The condition was to have a JVM for the target platform. Their slogan reflects fairly well the interest of the JVM: Write once, run everywhere. Linux was one of the first targeted system because there are fabulous gains related to the absence of costs for licenses. Furthermore the concept of object-oriented language naturally tends to factorize code and thus facilitates reusing (wide topic!).

Note that Java has evolved in a fine way despite the vicissitudes of Sun, each new version brings new major concepts to the platform. This is probably due in part to the excellent initial concept and in another part to the collect of needs via the JCP. In addition, Java imposes more skills than his rivals. This has some disadvantages for human resource cost, but this tends to a more "pro" context. So, Java is less subject to pollution from sterile debates. Version 1.8 of the platform specifications enriched it with the "Functional programming" capability (lambda expressions and transaction flows named stream). Functional programming allows parallel processings (multithreading) based in a transparent way on the fork-join model issued from the version 1.7.

Microsoft has quickly understood the stakes in terms of productivity and launched a few years after its own "logical platform". This project named .Net is based on the Common Language Runtime (CLR), which is the equivalent of the JVM. The Go-Mono project demonstrates the capacity to bring a CLR to LINUX with substitution of Windows's controls with controls based the GTK+ library.

When IBM, Oracle and Microsoft converge, it is desirable to follow the debate around this convergence. If in addition, the choice of Google for its Android system is based on Java it is legitimate to think that the future is around these "logical" platforms. We call "logical" platform to avoid confusion with "virtual" machines. A virtual machine is a "guest" operating system that runs on a "host" operating system. "Host" shares its physical devices with all "guest" virtual machines that it runs. As can have immediate intuition, "logical" platforms are particularly well suited to run on "virtual" machines.

Behind all this, there is of course an economic model that mainly affects the total cost of ownership (TCO):

This backend economic model is coupled in a very questionable approach vis-à-vis of the policies of online "stores" (Apple Store, Windows Store, Google Play). Indeed, in this model, systems that are running requires a connection to an account at one of the "store". This login account is nothing less than a powerful spy of the customer habits (location, purchasing habit, banking companies holding accounts, credit companies, daily activities, etc.). It is no exaggeration to claim that analysis expert systems of these publishers know more about a naive user than himself.

From the Apple point of view, the "Apple store" is almost excusable because this approach is an integral part of their economic model based on the captivity of the user: if you buy Apple you should have to buy Apple again. In the case of Microsoft, things are different. The "Windows Store" appears only with the Windows 8 version (probably copied from Google Play) and has been reinforced with the distribution of Windows 10. However, the choice is still left to the user. It is possible to reject proposals default configuration when installing the system but you must own enough skills to configure the system yourself (local account creation and so on). Android is probably the worst because you must cut phone and wi-fi if you want to be sure to not be spied.

The PiApplications advices.

The observation over 30 years of these commercial "battles" led us to a pragmatic approach: do robust and evolutive. For this, it is necessary to analyze the underlying economic model of a considered product to determine not only its technical capabilities but also its probable potential (duration). For this, we integrate numerous criteria, the main ones:

These requirements lead us to look mainly "open source" products with a multi-platform capability. Multi-platform means here: Windows and Linux. It turns out that our choices are also generally compatible with Mac OS.

Operating systemLinux (Debian distribution)1991
BrowserFirefox, Chromium, icedtea2002
Development languageJava1995
Development tool (IDE)NetBeans1996
Application serverTomcat2000
Graphical clientJavaFX2009
Console programJava1995
Certificates - cipheringOpenSSL1998

None of these products requires a buying license. They allow distribution of softwares with costs limited to development. With such solutions, you can have "custom-made" softwares without without a ruining the deployment. Some choices can surprise like PostgreSQL rather than MySQL or NetBeans rather than Eclipse. Here, we do not detail the reasons of these choices but they all have their justification technical or not. Either way there does not exist in this field any "certainties". The only rule that really matters is to use the product that we know and which does what we ask.

We try to maintain a short list of tools and rules in order to:

Adopt such technical choices does not mean being unable to work with other languages, tools or products. We can work with products that match the wishes of customers. However, this short panel of tools gives some assurance for:

(c) PiApplications 2016