The “language” of confusion
The question of which programming language is the best to write APIs, microservices and modularized applications is everywhere. And the answer is far from obvious. In this post I try to talk a little about the history of languages and how we got to where we are now.
Starting with the first programming language created by Ada Lovelace in 1883, languages has had quite a history. Although the credit for the first programming language is given to Ada Lovelace, it was not until 1957 that there was really a programming language that was actually usable and still well known — ForTran. The next big notable step is the advent of Pascal and C in the early 70s. “C” arguably the most influential language that pretty much acted as the inspiration towards the evolution of all programming languages known today — C++, Java, Python, Ruby, Perl, you-name-it.
Early 80s was the time of Objective programming languages and while scrpiting languages Python and Perl came into being in the late 80s and early 90s, it did not play a significant role at that time when it came to writing complex applications. Those were almost always tackled by the likes of C and C++. This did not change until 1996, when Java arrived. The arrival of Java combined with the explosive growth of the internet at that time guaranteed Java its long presence in the world of programming. Elegant object oriented programming, frameworks created to enable web development gave way to the rise of Java. After this point, from a web development standpoint it was not a question of language, but only which framework in Java — There were many changes and iterations on this through the last 2 decades, starting from JSP/Servlets and EJB to springboot today.
From JDK 1.0.2 release in February 1996, Java has enjoyed the position of being the master programming language for web development. But that has drastically changed. One of the biggest upsetter in my opnion of JDK’s mighty prominence is microservices and modularization. While Java is/was easily the goto language for building enterprise grade massive monolithic application that scales vertically on a heavy weight application server (think weblogic), many other languages were much better in acheiving a small application built for a very specific business purpose, including scripting languages like Lisp, Perl, Python, etc. This gave rose to numerous web frameworks that made writing a Hello World! app — whether exposing it as an HTTP endpoint or rendering it as an HTML webpage — a matter of a few lines of code. Take Python for example, this snippet of code runs a webserver exposing port 5000, with the root URI (localhost:5000) returning Hello World! 7 lines of code in a single file and that is all you need! No configuration, no build files. That’s powerful.
A similar Hello World in Java legacy spring, JSF or other Java Web frameworks would involve a several files and directories, a maven or gradle build file, a separate web/application server that you deploy packaged code into and certainly more than 7 lines of code!
Back to Java, Spring Boot changed this situation again. Kind of. Spring boot does a lot to reduce boiler plate Java code and importantly provides a built-in tomcat runtime container that reduces the need of a separate web/application server. While it reduces boiler plate code to a minimum, it still does not bring in the simplicity of say Python, Ruby or Groovy to build and deploy simple small web applications. Now, with no clear leader for app development, you now have many many choices, and with choices, comes the burden of decision making. I’ll explore the differences in using various languages and popular frameworks with examples in a future post. Keep following!