Networking — Something Good to Know

February 24, 2014

Programming Languages for Cloud Computing — A brief comparison

Filed under: Uncategorized — conningtech @ 9:22 pm

1. Overview

Cloud computing has special requirements to the programming languages:

  • Multi-platform programming: Cross-Platform/Cross-OS
  • Multi-paradigm programming: –Object Oriented Programming and Functional Programming
  • Distributed Parallel computing: –Concurrence, –Event-driven
  • Programming at Scale: –Readability, Modularity, Speed of compilation, Suitable for large team, Meta-programmability and extensibility, Concise
  • Client side programming: –Replacement for JavaScript (?), –Same language for both client and server side
  • –run on multiple client platforms
  • Publically available libraries
  • Performance
  • Fault-tolerance/Self-healing

2. Options

2.1 Server Side
  • Existing mutual languages: –C/C++, Good performance, but platform dependent, Java, C#, PHP, Platform independent, development complicity, JavaScript (Node.js), Shell script, Perl, Python, Ruby, Objective-C, Erlang, Platform independent, Concise.
  • New potential languages: Ceylon , Opa, Fantom, X10, haXe, Clojure, Scala, Groovy, compile to Java / JVM bytecode (all) and to –PHP, C++ etc. (some of them), Go, Chapel, Zimbu, compile to Binary or C / ANSI C, F# compiles to .NET
2.2 Client Side
  • Existing mutual languages: JavaScript
  • New potential languages: Dart, compiles to Dart VM executable, Zimbu, compile to ANSI C, Ceylon, F#, Opa, Fantom, haXe, Clojure, all compile to JavaScript.

3. New Language Comparison

Language Vendor Primary Driver Features use Runs On Licensing
Ceylon Red Hat Readability, Predictability, Tool-ability, Modularity, Meta-programmability.

bridging the gap between client and server

can be compiled to JavaScript

Java’s syntax

fully interoperable with Java and the Java SDK.

operator polymorphism

No operator overloading

Client

Server

JVM

JavaScript VM

GPL v2
Chapel Cray Programmability of parallel computers Compiles to C codes Server Cray supercomputers various high-performance clusters. Portable to most Unix-style systems, Mac OS X and Windows BSD
Clojure Rich Hickey Concurrency using Functional programming paradigm. compiles directly to JVM bytecode

ClojureScript compiles Clojure to JavaScript

easy access to the Java frameworks

a dialect of Lisp

a functional programming language

JVM-based derivatives

Client?

Server

JVM, CLR, JavaScript engines EPL
DART google A replacement for JavaScript on the browserFaster, easier to maintain, and less susceptible to subtle bugs.Dart VM needs to be compiled ultimately to replace JavaScript

cross-compilation to JavaScript

class-based single inheritance object-oriented language with C-style syntax

Client Dart VM,

DVM chrome

Linux, Mac and Windows

New BSD
Language Vendor Primary Driver Features use Runs On Licensing
F# Microsoft Multi-paradigm: Functional + Imperative + Object-oriented. Can be executed as a .NET code on the server and as JavaScript code on the client-side Client

Server

CLR and Mono

 

Apache
Fantom Brian Frank, Andy Frank Portability, support for functional programming and concurrency. compiles to javaScript. Future targets might include Objective-C

portable to the Java VM, .NET CLR, and JavaScript in the browser

Client

Server

JVM and CLR. Academic Free License
Go Google Compiled with the ease of programming of a dynamic language, concurrency and communication, speed of compilation. Compiler available for Linux, Mac OS X, Windows Compiles to binary executable Server   BSD style + patent grant
haXe Nicolas Cannasse Multi-platform support. Compiles to JavaScript, Flash, NekoVM, PHP, C++. C# and Java support is expected Server

Client

  GPL v2
Language Vendor Primary Driver Features use Runs On Licensing
Opa MLstate Targeted for cloud computing. Client-side UI, server-side logic, and database I/O are all implemented in a single language Runtime environment own Web server and DBMS. compiled to Nodejs on the server and JavaScript on the client Client

Server

 

64-bit Linux and Mac AGPL
Scala EPFL Scalability for multi-core and distributed computing. For large team. Multi-paradigm: Functional and Object-Oriented. Extensible.

 

Seamless Java Interop

 

compiles to Java bytecode

 

JVM-based derivatives

Server JVM, Android, CLR BSD
Groovy James Strachan  object-oriented programming language for the Java platform compiles to JVM bytecode, and interoperates with other Java code and libraries. Server

 

JVM Apache v2
X10   Designed specifically for parallel programming, performance and scale. Compiles to C++, Java, Native Binary Executable, Java bytecode Server Runs on IBM AIX, Linux, Mac OS X, Windows EPL
Zimbu Bram Moolenaar Aims to be fast, concise, portable, and easy-to-read and support  GUI application to an OS kernel. Compiles to ANSI C Client

Server

  Apache v2
Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: