This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Integrated Development Environment (IDE) is a platform that developers use to create a variety of programs and software. Developers leverage the important features offered by IDEs that include a text editor to write user code, a Compiler/Interpreter, an Execute switch and lastly build automation tools and debugger. Two variety of such IDEs are Desktop IDE and Web IDE.
1.1 The need for Web IDE
Most of the desktop based IDE's require the development environment to be set up on their machines. This development environment requires a java integrated development environment like eclipse or the java development kit (JDK) to be downloaded and configured within the user's machine. If the user decides to work on a different machine the entire development kit and IDE has to be installed in the new system which makes the process tedious and extremely inconvenient.
Web based IDE thus provides a solution to the given problem and gives user the flexibility to start a web browser and open his/her project. The basic requirement here is that the user must have access to an internet connection to be able to connect to the Web IDE. We will be installing the java development environment or JDK environment on a server.
A final challenge of this project will be to leverage the benefits of cloud computing by creating an interface on the Web IDE that connects it to the cloud.
1.2 Advantages of Web IDE
User can log on to a web browser and open the saved java projects for development and testing.
It can provide an option of having live collaboration with other team members by passing the URL of the current open source project.
No hardware cost or management overhead associated for using the web based IDE.
1.3 Disadvantages of Web IDE
IDE requires network connectivity all the time in order to run.
Speed of processing is better but not equal to desktop based IDE.
Incompatible with certain browsers like Internet Explorer.
2 RELATED WORK
2.1 Coderun IDE: Free web based IDE for developers
2.2 APTANA Studio
The company plans to release their Aptana cloud which offers a Platform-as-a-Service offering for developers to build web applications on an open source technology. It would be the first of its kind of application cloud that supports most popular scripting languages. It's also build to complement different cloud infrastructure providers such as Amazon, Google and Joyent.
For developers Aptana provides IDE plug-ins that integrates cloud development, deployment and management in its stand alone or Eclipse based versions. A major feature provided by Aptana is one step deployment of projects on to the cloud.
To sum up, Aptana Studio provides integration, development and deployment services and provides cloud integration to give developers the best platform for their application development.
3 MODEL VIEW CONTROLLER (MVC)
A central feature of modern interactive applications is the MVC architecture. It was designed for applications that provide multiple views of the same data. The graphical applications are represented in terms of abstractions like models, views and controller. The controller handles the events for a particular view, user interface is presented to the user by means of views, and the applications data are managed by models. These three abstractions are then encapsulated as separate classes and so the changes made my user to the interface minimizes any major effects to the application. It also increases reusability of objects present in the application domain.
Fig 1: Example of general web service request using MVC architecture.
The above example  is a simple java based web service application. It uses Simple Object Access Protocol (SOAP) as the application is simple. We can apply MVC design to the above application design. The JSP page in the design represents the view that forwards the HTTP requests to Servlets. The Servlet is a controller that handles the users request and calls the method in the model component. The model can contain the java bean or any other java classes that would encapsulate the core functionality of the application or any database functionalities.
Yahoo UI Library (YUI): It's a light weight version of the Dojo Toolkit that has a better stable code base but has less number of features.
5 CLOUD DATABASES
In this section we will see which type of databases are suitable for cloud computing. There are significant performance advantages of current databases over traditional databases deployed on the cloud .
The database should satisfy the key properties in the cloud model like ability to scale up/down the servers on demand and provide dynamic scalability. Weather the cloud is private or public the database is a critical part of the cloud platform . Thus it is very important that our cloud database is compatible with our cloud computing platform.
5.1 DISADVANTAGE OF SHARE NOTHING ARCHITECTURE
Most databases used share nothing architecture which required data to be partitioned into different blocks, one per each server. Thus adding an additional server required all the data to be partitioned among the current set of servers. This reduced the overall system performance as the user queries had to be processed on all the database machines. The data was processed on one machine and then the output data was passed on to the second machine for processing. This passing of information called as data shipping was a major reason for performance failure . The ability to partition data efficiently and in a high performance manner was a major challenge given the dynamic nature of database updates.
One solution to this problem was to replicate the database to have multiple instances of data however it still did not address the cloud computing requirements of the corporate world.
5.2 SHARED-DISK DATABASE:
Shared-disk database is an architecture that will best fit the cloud computing needs. It allows us to have a cost effective small number of servers that gives us dynamic scalability, high availability and reduces the cost of maintenance by eliminating the need to partition data onto multiple severs as in traditional database servers. Many vendors are now providing database services in the form of cloud database services also called as Database-as-a-Service (DaaS).
Shared-disk databases provide a low cost cluster of servers that use a single collection of data that are served by Network Attached Storage (NAS) or Storage Area Networks (SAN). These databases support elastic scalability. The nodes in a shared-disk database provide high availability by continuing to work even with a failure of a single node. This was not the case in shared nothing database where all the nodes failed with a failure of a single node. Servers that belonged to the shared-disk database could be upgraded and maintained individually while the cluster remained online. This provided administrators with ease of maintenance.
Finally we can sum up the main advantages of a shared-disk database that is, less number of cost effective servers, High availability, scalability and simplified maintenance.
Thus cloud computing will always be in an ascendance towards shared-disk storage.
Implementing the cloud database for this project will be a second part of the project which would be implemented after the Web IDE is completed.
6 INTENDED WORK FOR CS 298:
Design a Web-based IDE and provide it with basic text editing option.
Create a design of MVC architecture and work on each part of the IDE using the architecture.
Use Ajax calls in the backend to call the controller type and process any user request.
Using a MySQ/Apache server as the backend database server.
Create and deploy compilation and execution facilities on the Web IDE for java code.
Create a running version of the IDE and test for problems.
7 FUTURE WORK CONSIDERATIONS
Deploying the web service on the cloud using Amazon EC2 service .
Provide syntax highlighting and drag/drop feature.
In 297 the main research work done was to understand the working of Web-based IDE and the challenges involved in developing its framework. This idea will be used to implement the 298 project and create the final prototype of Web IDE for java development.
The study of Coderun and Aptana products along with ongoing projects from CS department has helped me to get the scope of the project and the different unexplored areas for continuing research. With the basic knowledge gained over the course of 297 I would be able to generate the prototype of the Web-based IDE for Java program.