Most suitable language for SDK development for SDN?

We at ICCLab are embarking upon an exciting project to make a software development kit to enable SDN researchers develop exciting products and innovative protocols overcoming the challenges and drawbacks of decades old network protocols in use today. We had a huge debate internally to decide which programming language to use for this development. Since, internally we had quite strong and vocal supporters of both Java and Python, it led to stalemate. So how did we resolve it?

We threw open the question to SDN research and development community, we created a really simple survey and sent it to the communities of Trema and FloodLight. Below is the summary of responses we got within just 2 days of opening our survey.

Distribution of responses
Distribution of responses

The table below gives the distribution of the answers, and clearly Java seems to be the development language of choice. This survey broke the stalemate in our group fair and square!

Language Responses Percentage
Java 18 64.29
C 4 14.29
C++ 1 3.57
Python 4 14.29
Other (Ruby) 1 3.57

Just out of curiosity, we decided to plot the geo-location of all responders, and below is the map showing the locations. We got responses from all over the world.

Location of responders to our SDK4SDN survey.
Location of responders to our SDK4SDN survey.

2 Kommentare

  • Just my short opinion: I am a certified Java programmer and I know the many strengths of the Java language, but I think Java is still a bad choice. Java behaves really bad when it comes to important things like multithreading and garbage collection. Java is really slow (compared to C) and has a lack of control over the garbage collection. These areas are exactly the ones which are most important in SDN, where we have multiple threads running and obsolete objects (like e. g. circular routed IP pakets) which must be garbage collected. Why choose a language which has its weaknesses exactly in the areas which are of most significant importance?


Leave a Reply

Your email address will not be published. Required fields are marked *