Cloud computing is rapidly gaining the interest of service providers, programmers and the public as no one wants to miss the new hype. While there are many theories on how the cloud will evolve no real discussion on the programmability has yet taken place. In this talk a programming language named objic is described, that enables programs to run in a distributed manner in the cloud. This is done by creating an object orientated syntax and interpretation environment that can create objects on various distributed locations throughout a network and address them in a scalable, fault tolerant and transparent way. This is followed by a discussion of the problems faced and an outlook into the future.
Cloud computing is seen to bring together many services that are provided through the ``world wide computer''. A trend to multifunctional environments is currently taking place on the operating system kernel level encouraged through new virtualization techniques (see XEN, VMware, OpenBox). On the other hand on the highest level of abstraction the services can query data from each other through techniques like RSS (Really Simple Syndication). For this purpose XML (Extensible Markup Language) based syntaxes have seen a sharp rise in use. But the general concept is that once the cloud provider is chosen, a lock in to his techniques and libraries accurse. Service compatibility is then achieved thorough adding specific output filters to the program (see SOAP, REST). This results in every Software as a Service (SaaS) provider creating his own format. Other programs then have to retrieve this information and parse it accordingly, if they want to communicate with this service. This bears many difficulties especially when the format has to change (see Amazons query language). Thought this, both ends of a cloud service stack have become scalable and such to say ``cloud enabled''. Whereas the important layer of compilers and interpreters and such the program constructs, has been neglected in the past few years. It is still the case that to use other services of a cloud provider, the programmer has to include some specific library or write it himself (see python distributed thing). Efforts to make compilers and/or interpreters more ``cloud friendly'' have only resulted in non complete products (see dSelf) and are not generally used.
This talk tries to address these issues and demonstrate a programming language that acts as a layer of glue between the hardware cloud providers and the presentation towards the user interface. It should be possible to use an array of services provided on the internet in an independent transparent way. It further should encourage people to offer a service to other users. In the current situation, if someone has written a good encryption library, for example, it is complicated and that someone is forced to use non standard methods to write a web service that makes this library usable. Through using the language demonstrated in this project publishing this library though a well defined interface and securing the intellectual property should be enabled and encouraged. A further aim is to make it easy to incorporate services provided by different providers in a scalable, fault tolerant and traceable way. To enable an objective perspective, a discussion of the already available techniques is needed this will be followed by an outlook into the near future.