Three weeks ago we launched our Open API (in beta) and together with it two example programs, one in Java and one in Python. Here at SharedBook we have written most of our server-side code in Java. We also decided to include a Python example because of the rising popularity of dynamic languages and since we already use the Python programming language internally both for operations and some production code.
As we all know, Java is immensely successful especially in the enterprise realm. Despite that success (and maybe because of it), in the last couple of years a group of Java "gurus" started to move into using Ruby-on-Rails while scrutinizing the complexity of Java (mainly the server side programming). These "gurus" were soon followed by parts of the Java community. Sun also followed the hype and chose to hire the JRuby guys in order to further develop a version of Ruby that will run on the Java Virtual Machine.
After learning and using Python for a while I came to the conclusion that despite the fact that Python and Java are very distinct languages and environments, Python is quite in tune with the Java culture (more than Ruby for instance):
- Readability and explicitness - both Java and Python endorse clean readable code that explicitly states what is being done. Ruby for example, reminds me of Perl - a "write only" language. A language that might be very fun to write but might be very hard to maintain.
- Maturity - Python and Java are of almost the same age. They are mature languages that have proved themselves again and again in production systems. A key principal in the evolution of these two languages/environments is backward compatibility since so much production code is at stake.
- Vibrant community - both platforms have a devoted community and community process.
- Lots of good open source libraries - both platforms have a lot of libraries and frameworks available (a result of points 2 and 3).
I "fell in love" with Python.
Our Open API enabled me to experience the rapid development that many are talking about when using Python (and other dynamic languages). As a start, I have written the simple "Hello World" example program in Python. This program invokes our Open API and creates a simple "Hello World" book (in fact it does a little more: it creates a book with your choice of article and title).
Lately, I've started to create some interesting mash-ups of our API with others. For this task I am using Django. Django is the leading Python Web framework which is said to be Python's Web counterpart to Ruby-on-Rails (some say that it is even more productive).
So far, it has been a hell of a ride, and this is just the beginning...