Endless development platforms, frameworks and form-factors
Tags: development, technologies, programming, platforms
Published: 2019-04-12 14:38:05

---
title: Endless development platforms, frameworks and form-factors
published: true
description: Good Luck choosing what to learn in 2019, if your aim is get started with programming. 
tags: development, technologies, programming, platforms
---

<p>There are so many choices if you want to start programming in 2019 that your mind will blow if you don't know their similarities and their basic ideas behind the scenes. And especially, if you don't have in mind what you want to develop before you start so to choose the right tool from the start. Here are some variations.</p>


<ul><li>You could learn developing for the cloud (server-side). You may not need to learn any User Interface Programming - just the logic for the databases, the server management, business logic for scaling, etc, </li><li>There are some devices that expose services without Internet connectivity and no screens at all. If they are from the super simple - they may have some physical button that does the job. </li><li>Others are just devices some kind of internet adapter plus something else that is controlled from the Internet - just a speaker (for music), a electrical adapter (for turning off/on the power), or with a microphone, a speaker that can listen to you and execute some server/cloud functionality or/and give you some answer. </li></ul>

<p>There are several <strong>form factors</strong> in terms of screen size: </p>

<ul><li>Feature Phones 2-3 inches, with 12 keys 10 numbers, #$</li><li>PDA - 4-6 inches with full keyboard, or very little amount of specialized keys </li><li>Small smartphone - 3-4.5 inches</li><li>Medium smartphone - 4.5 - 5.5 inches</li><li>Big smartphone/Phablet - 5.5-7 inches </li><li>Small Tablet - 7-8 inches</li><li>Big Tablet - 10-11 inches</li><li>Netbook/Notebook 10-12 inches</li><li>Laptop - 13-17 inches</li><li>Basic Desktop - 15 - 40 inches</li><li>Projectors or a really Big Screens - 40+ inches, video displays or projector with zoom of custom size.</li></ul>

<p>In terms of platforms here are some options for you:</p>

<ul><li>(Java) Midlet Applications for features phones - decreasing search</li><li> Blackberry apps, or Windows Phone Apps - decreasing search</li><li>Windows Mobile Apps - decreasing search</li><li>iPhone and iPad Apps (iOS)  </li><li>Android Apps - for Phones, Tablets and for Desktop (Chrome OS)</li><li>Windows Apps - Command Line or using the METRO (touch) API or targeting normal Desktop Interface</li><li>Mac OS Apps - Command Line or using cocoa framework</li><li>Linux Apps - Command Line or using Qt, or any other  <br><a href="https://en.wikipedia.org/wiki/List_of_widget_toolkits">https://en.wikipedia.org/wiki/List_of_widget_toolkits</a> </li><li>Web Sites and Applications - don't get me started with the options</li><li></li></ul>

<p>If you are trying to create a Voice Assisted application the mot popular options are:</p>

<ul><li>Cortana</li><li>Siri</li><li>Alexa </li></ul>

<p>Here are some Programming Toolkits, SDKs, Frameworks - targeting the above form factors using some of the platforms:</p>

<ul><li>Mobile Programming <ul><li>Native, iOS - Swift and Objective C, Android - Java, Kotlin, Windows Mobile - C#</li><li>Cross Platform - Flutter, NativeScript, ReactNative, Xamarin, Ionic.</li><li>Hybrid - Cordova / PhoneGap, Appcelerator, Sencha Touch, and many others that offer some layer above the web browser </li></ul></li><li>Desktop Programming  <ul><li>Cross Platform Tool-kits - Python, Qt, Java, .Net Core,</li><li>Native Kits - .Net, Windows Forms, Cocoa, Qt (or any other framework above Linux X Server</li></ul></li><li>Web Programming<ul><li>PHP</li><li>Python (Django)</li><li>Go</li><li>Java (JSP, JSF, Struts, GWT, Spring, etc.....)</li><li>.Net (.Net Framework or .Net Core)</li><li>Ruby ( on Rails)</li><li>JavaScript (NodeJS)</li></ul></li><li>Client Side Web Programming<ul><li>Languages<ul><li>Plain Javascript</li><li>Dart</li><li>TypeScript</li><li>Java (GWT)</li></ul></li><li>Frameworks<ul><li>JQuery</li><li>Angular</li><li>Vue</li><li>React</li><li>Meteor</li><li>Ember</li><li>Polymer </li></ul></li></ul></li></ul>

<p>Besides all the above here are some mix of Paradigms and Development Approaches that all the above have in some way or another (the examples will be mostly Java related. So the list will be very trimmed):<br></p>

<ul><li>OOP - most popular - (PHP in the newer versions, Java, .Net, etc)</li><li>Procedural - old and decreasing (PHP, JSP)</li><li>Functional (+ Reactive), NodeJS, Java Spring Flux, etc</li></ul>

<p>Here are some more Paradigms and approaches:</p>

<ul><li>HTTP Server serving front-end + Plain Server Scripts - PHP, JSP, CGI; </li><li>Component Based - JSF, Vaadin, GWT</li><li>MVC based - Struts, Spring, Play Framework</li></ul>

<ul><li>Monolith approach - everything in one package</li><li>Micro Service - every functionality in its own package (executing in its own container or virtual machine)</li></ul>

<p>So, Good Luck choosing what to learn, if your aim is learning programming. If you have a goal to code some business logic that does something useful - grab anything and get real. Else, you are fooling yourself. </p>