Exercise 4: Network and Web programming frameworks
1. Describe the important and distinguishing properties of Peer to Peer
As stated in Wikipedia (2010) Client/server computing or networking is a distributed application architecture that partitions tasks or work loads between the server and the clients. Often clients and servers operate over a computer network on separate hardware. A server machine is a high-performance host that is running one or more server programs which share its resources with clients. A client does not share any of its resources, but requests a server's content or service function. Clients therefore initiate communication sessions with servers which await (listen to) incoming requests.
Whatis.com (2010) describes a peer to peer network is any distributed network architecture composed of participants that make a portion of their resources, such as processing power, disk storage or network bandwidth, directly available to other network participants, without the need for central coordination instances (such as servers or stable hosts). Peers are both suppliers and consumers of resources, in contrast to the traditional clinet/server model discussed above where only servers supply, and clients consume.
2. Frameworks for development. Compare and contrast any TWO of:
a. Java
b. .NET
c. Ruby on Rails
d. Django
e. Google App engine
f. AJAX frameworks
I have not done a lot of programming, especially not recently so am not in a position to provide comment from personnel experience with any of the above web frameworks. Having read up a little on all of these frameworks I have decided to compare Java and Ruby on Rails, mainly because from what I have read, Java appears to be the old kid on the block having appeared on the scene over ten years ago, and Ruby on Rails the new kid. Having said this, both appear to be popular frameworks within the development world.
From my brief research it would appear that Java does require a more solid software engineering approach to do well whereas Ruby on Rails can be learnt relatively quickly and easily. However, Java appears to have greater underlying capabilities with its scalability being more solid, and security is tighter. The drawback is Java is a far more challenging environment to get started in, but ultimately it will result in a far more solid end product if you perservere. Ruby on Rails appears very easy to get into with a realtively short learning curve. There also appears to be plenty of tutorials and code libraries online that can assist would be newbie programmers (Flanagan, 2005).
Both the Java web development framework and the Ruby On Rails web framework have a number of things in common in that they both utilise object oriented language, they both use Model View Controller Architecture and both are easier to utilise and maintain than other frameworks with use different languages. But there are distinct differences between the two as well. Java has to be compiled into a binary executable before execution, where as Ruby is interpreted at the time of execution allowing for faster development and processing. Java is statically typed, whilst Ruby is dynamic. Java’s coding effort is much greater and more complex than that of Ruby on Rails. Ruby on Rails allows a much greater ability to produce rapid applications through the use of scaffolding (Holzner, 2006). The following video provides a mildly entertaining brief comparison between the two, highligting the simplicity of Ruby on Rails.
Ruby On Rails versus Java
In terms of which web framework is better, this appears to have generated much debate over the past couple of years. From what I can tell it all depends on your background and level of knowledge of programming, Many sell Ruby on Rails as being superior because of its simplicity and ease of use, however those with solid software engineering background may be able to produce a more solid and secure product using Java. However, for generation Y, who want things now, I would say Ruby on Rails is better suited. Also, from a management perspective, Ruby on Rails reduces the load on the System Developer, and presents a more effecient option than Java in terms of time taken to develop an application.