XYLUS: A Virtualized Programming Environment

2 downloads 10558 Views 255KB Size Report
coder or a team of coders to create, manage, develop, compile, ... web and desktop applications. ... the web IDE using AJAX (Asynchronous Javascript and.
XYLUS: A Virtualized Programming Environment Abu Zafar Abbasi, Zubair Ahmed Shaikh, Syed Arsalan Pervez Department of Computer Science National University of Computer & Emerging Sciences Karachi, Pakistan {abuzafar.abbasi, zubair.shaikh}@nu.edu.pk, [email protected] Abstract— XYLUS is a virtualized programming environment that addresses coder’s mobility, hassle free coding environment, project management and team coordination. It aims to provide a coder or a team of coders to create, manage, develop, compile, execute and share a complete or partial set of development projects on the web without having any development and associated tools. This is mainly achieved through developing a virtualized integrated development environment completely functional on a browser, a web server hosting the virtual machine environment, a set of web services to carry out the necessary communication and synchronization, and a developer portal as the focal point of the whole environment. In this paper we describe the main architecture, working, related issues and challenges of the system. We have tested this concept and architecture on developing projects for .NET platform with C# as the base language. We observe that such environments offer plenty of useful and charming features to the developers with the some burden and sacrifice of flexibility. Keywords- Online IDE, Development portal, Virtualization

I.

INTRODUCTION

The coding for software generally involves development tools like editors, compilers, debuggers, libraries, and third party components etc. Moreover, in many cases, software projects need connections to additional components like heavy weight database servers and proprietary third party systems. It is very difficult for a coder to carry all these development and associated tools when he or she is on the move and frequently require editing and testing of software projects. If the development is being carried out on a dedicated machine like an office desktop where necessary development tools are installed, it is quite a concern for developers to carry the environment and they just carry the code and library files. However, in case of a movable machine like a laptop or mobile, this may not be the case but you have to carry the machine nevertheless. Most of the times a group of coders work together on a single software development project, that may or may not be separated in time and space, require movement and updation in their part of the project. This kind of situation puts forward a requirement of development environment that allows one or more developers of a project to update their work and track the changes. Another important 978-1-4244-8003-6/10/$26.00 ©2010 IEEE

aspect of development is the cost of development tools, their copyrights and installation hassles. The exponential rapid growth in the infrastructure and use of high speed internet especially in the urban areas lead us to the concept of building a development environment on the web, where coders could not only edit, compile and execute their code, but also allow team coordination and project management. This kind of environment could leverage the liberty to the programmers to roam freely without bothering to carry their development baggage along with their code and data. There are some online programmings environments available with limited capabilities and mainly designed for scripting languages and do not support desktop level programming. Some methods allow web services [1] to provide the functionality of compiling the given code online. These services have limited usability as in case of syntax errors and any editing, the code has to be submitted again, implying waste of time and money and incurs security threats. There are IDEs available in their early states for development with web languages e.g. Mozilla Bespin[2], CodeRun[3] and a very few like CodeIDE[4] with a very limited support for online programming. These online programming websites either fail to deliver the high level compatibility and support for software development, or are altogether not designed to be used like a general purpose online programming environment. On a much larger and commercial scale, cloud computing offers the similar brand of services utilizing the trends of virtualization, utility computing and software as service [5]. The hallmark of cloud computing i.e. “pay as you go” makes it more commercial while XYLUS offers a much closed environment suitable for inter-organizational level restricting itself for development and testing related activities. In comparison to cloud computing, XYLUS provide limited but cheap and flexible environment for adoption on a localized level providing better customizations. This paper describes architecture and working of XYLUS, a web-based online development environment, used to develop web and desktop applications. The system interacts with a central web server and utilizes compilation web services and virtual machines for performing compilation and execution of developed programs respectively. The later sections of this

paper describe the overview, components, working, issues and challenges of this approach towards online development. II.

XYLUS OVERVIEW

In traditional web based IDE’s and forums, we could simply test and develop web based pages such as html, jsp, aspx e.g. CodeRun[3]. Sites like Programmersheaven[6], Codeproject[7], provide only readable textual information about a project and facility to download and test run them on your machine if you have the desired execution platform and associated components installed. Our approach in developing the XYLUS development environment is to provide an integrated solution emphasizing on three major components. a)

A web development portal as user’s point of access with features of project management and team coordination. b) An Integrated Development Environment which is similar enough to a regular IDE on a desktop with limited functionalities. c) An execution environment based on virtualization that enables users to test and execute their code on the browser. All these components work together in a seamless fashion without burdening the user to have any kind of development tools required for programming. Figure 1 shows a layered approach of XYLUS development environment. The UI layer consists of the features requiring interaction with the users. Through the Web Portal, user can immediately invoke the IDE for creating, editing, compiling and testing software projects. Other interacting features involved discussion forums and project management. A middle layer is introduced just to segregate the functionalities available to users via components reside on the server layer. The Server layer holds the major components required to up and function the XYLUS system. It includes the compilers, database management systems and Hyper-V virtual server. The details of major components are described in the next section. III.

XYLUS COMPONENTS

A. Developer Portal Portal usually acts as a central point of access and encapsulates various functionalities that a web-based system delivers. XYLUS central point of access is a also a web-based developer portal that contains all the features provided by the XYLUS system in a transparent and seamless fashion to users. It supports user management, project management, sharing, chatting and other means of communication among users like forum. It encapsulates the main functionality of the XYLUS systems i.e. the development and execution environment with synchronization to other XYLUS components by invoking required services.

Fig. 1. XYLUS Overview

B. Virtualized Integrated Development Environment This acts as the most interactive part of the XYLUS system. A user can create a new project, load an old project and may switch to its different projects of which he or she is a member. The user can compile and execute programs using the IDE. The main idea was to create an integrated development environment similar to Visual Studio IDE to enhance the usability of the IDE. We devised and tested different techniques suitable for creating the desired interactive usable environment. One of the methods initially tested was the use the WPF technology for interface design. This technique had its merits but the major issue in considering this option is that client machine should have an installed .NET platform and additionally it requires client resources also. If we continued with this option, the concept of XYLUS would have been lost i.e., the promise of a development environment without any burden to the client. Another flaw with this approach was that we were using process creation at the back for execution and then redirecting the input and output, which was not interactive. The next approach that we used was to design and develop the web IDE using AJAX (Asynchronous Javascript and XML), which is a group of interrelated web development techniques used on the client-side to create interactive web applications or rich Internet applications. With AJAX, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page, is used to and create a web service for compilation, so that we could reuse the compiler web service for multiple instance of the web IDE.The other major difference in approach was that we are not creating a process at the server for execution rather than we used the power of virtualization and the RDP protocol to provide a windows environment for execution over the browser; this is why we require that the client should have a fast internet connection.

The IDE uses a custom designed web service for compiling the code and a custom logger to log event between the IDE and the web service. The IDE uses schema similar to that of Microsoft schema, project definition and compilation which enables projects created at XYLUS IDE to be compatible with Microsoft Visual Studio. The XYLUS IDE project can be opened in Microsoft Visual Studio edit, compiled etc without any exception. The IDE exploits the core .NET classes for compiling the project using the csproj schema. It uses the Build Engine and its supporting classes of .NET framework to compile a project. Conventional logger class is rewritten to provide the event logging functionality between IDE and compiler web service to provide real-time reporting of errors, warning and messages from the compilation process.

similar directory & file structure, so that the projects created at our web IDE can be opened in Visual Studio and edited, compiled or executed there without any incompatibility. Our web IDE communicates with the web service by sending it commands and project location, the web service then performed that action on that project and returned the result. Web service uses the schema in the .csproj to build the project and reports the result by using a custom logger that we build over the console logger from the .NET framework. The result are written to a central location where all the temporary files for that project resides, web IDE reads from that location when the web service reports that the compilation Is complete and the result are written, then web IDE reads the result and display it to user accordingly.

C. Web Server Hosting Virtual Machines The IDE basically solves half the problem, i.e. execution of a program within a browser still remains unaddressed. To address this issue we used virtualization technology to provide an environment over the web that would allow user to execute the code within a browser without having the necessity of required development and execution environment. Virtualization may be viewed as a software technology that uses a physical resource such as a server and divides it up into virtual resources called virtual machines (VM's) [8]. A virtual machine (VM) is a software implementation of a machine (i.e. a computer) that executes programs like a physical machine. We analyzed several different products available is the market regarding virtualization, e.g., Virtual PC, Virtual Server, VMWare Workstation, and Hyper-V Server. We decided to go with Hyper-V Server [9] provided in the Microsoft Windows Server 2008 as it suited most to our needs. RDP client is used to render the VM’s running on the Hyper-V Server in to the client’s browser, a cut down version of windows is used as environment for execution, a sand-box is created so that any malicious code could not affect our servers. Active Directory is used to map users and their projects in the VM that is assigned to the user on the fly. When the request for execution for the IDE is generated an instance of VM is generated by the VM Server and it IP is passed to RDP protocol for processing, which displays that within the web browser. The client projects are automatically made available within the VM as the user is mapped on the Active Directory.

As described in the XYLUS overview, the complete system is a set of different components working in tandem with each other to provide user an online development environment with project creation, compilation and execution facilities. Figure 2 sequence diagram shows the integrated working of XYLUS system when a project is created, compiled and executed on the user’s browser. The user logged in to the XYLUS through its point of access which is the development portal. After getting the successful login message from the server, the portal lets the user inside the development environment. The user may choose to create a new project, open one of existing projects or simply communicate or coordinate with other users or project team members. In case user wants to create new project, an IDE environment is created quite similar to the Visual Studio. The user can write code and save the project. When the user wishes to compile the project to verify its syntactic correctness, a compile request is initiated to the server. The Server calls a Compiler Web Service that perform the compilation, as described previously. Depending on the result of the compilation, the user may need to edit and compile the code again or execute for testing the developed piece of code. In case, the user require execution of its developed code, an execute request is initiated to the server. The server initializes and creates a virtual machine for the user. The IP is passed to RDP protocol for processing, which displays that within the web browser. The client projects are automatically made available within the VM as the user is mapped on the Active Directory.

D. Web Services The XYLUS system takes advantage of using several web services and the most important of it is custom developed compilation web service. We created the web service of compilation, so that it can be used by multiple client at the same time, we not creating a process at the server, rather we were using the inbuilt Microsoft .NET framework classes for compilation, we used the Microsoft schema and created

IV.

INTEGRATED WORKING OF XYLUS COMPONENTS

V.

ISSUES AND CHALLENGES

Developing a XYLUS like development environment has some issues that are both technology dependent and user demand and satisfaction. Some of the key issues that has been identified while designing and developing this virtualized programming environment are described here. However, we tried to design the system as an evolutionary prototype so that it should cater for most of them as the technology evolves and more options are introduced in the system.

Fig. 2. Sequence Diagram showing integrated working of XYLUS componets

A. Speed The user senses little difference in the speed when a project is being created and compiled over XYLUS to that on a desktop development environment. However when the code is executed on the browser for testing, it takes more time. The reason is that we are not creating a process at the server for execution, rather we uses the power of virtualization and RDP protocol to provide a Windows environment for execution over the browser. This makes the system suitable for faster internet connection otherwise the execution of a developed program may make the user to wait. B. Scalability Again the system carries no limitation for users to log in and create and compile projects over XYLUS. As the system creates and attaches a virtual machine on the server for every user who wishes to execute its code, it puts stress on the server in terms of both the processing and storage. So we have restricted the number of users to simultaneously execute program to five. In future, we would like to devise a more intelligent technique to accommodate larger user volumes. C. Multi-platform Support The XYLUS system currently provides support for C# programs written for .NET platform. Other programming

languages could be supported similarly as the C# programming environment is supported. It requires respective compilers at the server and compiler services for interaction with IDE. The architecture of XYLUS enables this evolution of development environment for multiple programming languages support with minimum modifications. VI.

CONCLUSIONS

XYLUS is a virtualized programming environment developed for the coders to become mobile and stay connected to their development environment and projects. It is just not a project repository just like most of its contemporaries but provide a useful environment for coding, compiling and executing software projects. XYLUS provide its access through a developer portal that also enables the users to manage projects and communicate among team members. The major feature of XYLUS is the provision of an execution environment for testing compiled codes right at the user’s browser. The key design issue of XYLUS was to let the user remain unbothered about any kind of installed platform, plug-ins or libraries. XYLUS is a prototype for the proof of concept to develop a virtualized programming and execution environment. It has the architecture that encourages enhancements to the current system so that a more useful and usable system could evolve. In this paper, we focus only on architecture and working of XYLUS. In

future we would stress test the system for further improvements. ACKNOWLEDGMENT We acknowledge the support of Center for Research in Ubiquitous computing at National University of Computer & emerging Sciences, Karachi for the expertise and funds in order to research and implement the XYLUS idea. We also acknowledge the programming efforts of Mr. Samir Salim, Mr. Hassan Humayun and Mr. Asim Fayyaz. REFERENCES [1] [2] [3] [4] [5]

[6] [7] [8] [9]

D. Cooney, M. Dumas, and P. Roe, "Programming and compiling web services in GPSL," Service-Oriented Computing-ICSOC 05, pp. 508-513, 2005. Mozilla Bespin, "http://bespin.mozilla.com." CodeRun, "http://www.coderun.com." CodeIDE, "http://www.codeide.com." R. Buyya, C. S. Yeo, S. Venugopal, J. Broberg, and I. Brandic, "Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility," Future Generation Computer Systems, vol. 25, pp. 599-616, 2009. ProgrammersHeaven, http:://www.programmersheaven.com. CodeProject, http://www.codeproject.com. S. Nanda and T. Chiueh, "A survey on virtualization technologies," Stony Brook University, Tech. Rep, vol. 179, 2005. Microsoft Hyper.-V. Server, "http://www.microsoft.com/hyperv-server/en/us/default.aspx."

Suggest Documents