Initially, programming happened in the cumbersome language of binary, a series of 0s and 1s. Those programs only ran on a specific hardware type, it was difficult for a person to understand the codes built of several tiny elements, so in the early years it was easy to make mistakes while programming and if you had to modify an existing program there were quite a few risks ahead.
Then in the 50s, the first high-level programming languages (Fortran, Lisp and Algol) appeared. On the one hand, these languages were detached from the hardware and thus codes became more similar to the English language. On the other hand, their abstractions enabled the program to be more clearly, intelligibly and transparently formulated. Programs written in high-level languages could be translated into the low-level language (machine code) of different kinds of hardware.
Later, in the early 70s, C was released, followed by C++ a decade later. They soon became the most popular programming languages.
C was developed by Dennis Ritchie who rewrote the Unix operating system using this language. Object-oriented C++ was Bjarne Stroustrup’s merit. In Object-orientated programming (OOP) we describe the relevant properties and internal logic of existing things, processes and events for a particular application in the “classes” of the appropriate language. During runtime instances of these classes called “objects”, interact with each other, modelling the operation of a part of reality in quite a lifelike way.
C and C ++ codes could be translated onto different hardware and operating systems and so could be run on them, but you needed the source code for the translation and in many cases, it needed to be adjusted to the target runtime environment.
Another decade had passed and Sun Microsystems had created a new language and also a layer between the language and the hardware plus operating system base. This new intermediate layer became the Java Virtual Machine (JVM), which enabled a program written and compiled in any environment to run in any other environment without any modification or recompiling. This new object-oriented language of the JVM was named Java.
Sun then dusted an old idea off to incorporate it into JVM, this was the “garbage collection”.
This means the following: programs work with data for which memory areas are reserved. After use, these have to be freed up again otherwise there would be no free memory left after some time and the program would fail with an error. The release of non-used memory pieces was often forgotten by the developer, so a “memory leak” was a rather frequent problem. When Sun with JVM brought out the automatic memory release, the garbage collection, a whole profession started to breathe easier.
Java became the world’s most popular programming language in no time as it seemed to be a much more simplified version of C++. Java ecosystem has since grown enormously and is ready to offer a solution for almost everything.
Yet, no matter how capable it seemed to be, Java was not able to rule all existing platforms. It became popular mostly in the realm of corporate computing, locked away from the outside world and rich in hardware resources (CPUs, memory). Moreover, it could not conquer the security-sensitive domain of the web browser. Meanwhile, global systems like Amazon, Google and Facebook have appeared, which, despite of their abundant computing capacity, could not have served the world with Java-based software. With the last big waves of information technology, smarter and smarter mobile phones have arrived and so did IoT, the Internet of Things. These devices typically don’t have powerful hardware, so languages that compile to machine code were more suitable for this terrain.
So, time has passed over Java.
In the summer of 2010 JetBrains, a team of software development tool builders, was looking for a solution to this situation, so they could remedy their own Java-based development difficulties. First, they examined other existing languages, but none of them proved to be completely satisfactory. The team from St. Petersburg wanted a pragmatic, unambiguous, concise language that would also save them from commonplace programming mistakes. They summed up all the features they desired in a language and they started to develop their own programming language that they named after Kotlin Island, an island close to St. Petersburg. Kotlin now not only runs in JVM along with the existing Java code but also in browsers and soon it is going to run on small embedded hardware as well.
Although the world noticed it slowly, in the summer of 2017 Google announced that from 2017 Kotlin along with Java, would be an Android supported language. This means that the new language will spread quick as a flash on the largest mobile platform in the world. In the era of the Internet of Things we will also be able to run the Kotlin code on small embedded hardware, what’s more, JetBrains want Kotlin to conquer browsers next.
Why is all of this good for customers?
Currently a “full stack” (frontend, backend and mobile) developer needs to know several languages but they usually only know one really well. With Kotlin, it will be soon possible to program faster and more safely in each layer (frontend, backend, and mobile) and when you have an existing Java project you won’t have to translate it all back into Kotlin, it can be done part by part, or you can easily modify it by attaching new parts written in Kotlin. Maintenance is also simplified with Kotlin. If the developer acquires an existing code they can easily interpret it and they can modify or expand it more safely. Overall, I think Kotlin-based development will be faster and safer, and Kotlin-based systems will be easier and more efficient to maintain and improve than ever before.
It will be a great choice for our customers.