CSC/ECE 517 Fall 2009/wiki3 8 ISPPSI: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
'''''Interface Segregation Principle vs. Principle of Small Interfaces'''''
'''''Interface Segregation Principle vs. Principle of Small Interfaces'''''
----
=Introduction=
This page tries to review Integrated Development Environments for Ruby such as Aptana,Rubymine and Netbeans. Also the IDEs are compared with respect to certain dimensions such as facilities, ease of use, system requirements, and support for the Ruby way of thinking.
=Interface Segregation Principle=
    * “Many client specific interfaces are better than one general purpose interface“
    * “The dependency of one class to another one should depend on the smallest possible interface“
    * “Make fine grained interfaces that are client specific.“
    * “Clients should not be forced to depend upon interfaces that they don’t use. This principle deals with the disadvantages of fat interfaces. Fat interfaces are not cohesive. In other words the interfaces of classes should be broken into groups of member functions.“
 
=Comparision of Aptana,Netbeans and Rubymine=
Three IDEs namely Aptana's Radrails, Netbeans and Rubymine are compared in the following sections.
==System Requirements==
     
==Features for Ruby==
s]'''General'''
{| class="wikitable" border="1"
|-
!
! Radrails
! Netbeans
! Rubymine
|-
|  Price
|  Free
|  Free
|  $99
|-
|  License Type
|  Open Source
|  Open Source
|  Commercial
|-
|  Available Standalone or as Eclipse Plugin
|  Available
|  Not Available
|  Not Available
|}
'''Editing'''
{| class="wikitable" border="1"
|-
!
! Radrails
! Netbeans
! Rubymine
|-
|  Code completion
|  Available
|  Available
|  Available
|-
|  Syntax Highlighting
|  Available
|  Available
|  Available
|-
|  Code analysis (warnings/errors/hints)
|  Available
|  Available
|  Available
|-
|  spell checking support
|  Available
|  Available
|  Available
|-
|  Type Hierarchy View
|  Available
|  Not Available
|  Available
|-
|  Smart Indent
|  Available
|  Available
|  Available
|}
[http://tnlessone.files.wordpress.com/2007/02/eclipse_rails_environment_snapshot.png snapshot for Aptana Radrails editing features]
[http://tnlessone.files.wordpress.com/2007/02/netbeans_rails_environment_snapshot.png snapshot for Netbeans editing features]
[http://www.jetbrains.com/ruby/index.html snapshot for Rubymine features]
'''Refactoring'''
Refactoring is a disciplined technique for improving the structure of existing code without changing the observable behavior. Refactoring improves the design of software. Refactoring makes software easier to understand. Refactoring makes software easier to maintain. Refactoring helps you find bugs. Refactoring helps you program faster.
{| class="wikitable" border="1"
|-
!
!  Radrails
!  Netbeans
!  Rubymine
|-
|  Renaming
|  Available
|  Available
|  Available
|-
|  Extract method
|  Available
|  Available
|  Available
|-
|  Extract partial
|  Not Available
|  Not Available
|  Available
|-
|  Inline class
|  Available
|  Not Available
|  Available
|-
|  Inline method
|  Available
|  Not Available
|  Available
|-
|  Safely Delete
|  Not Available
|  Available
|  Available
|}
[http://wiki.netbeans.org/RubyRefactoring  Netbeans refactoring  features]
[http://blogs.jetbrains.com/ruby/tag/refactoring/  Rubymine refactoring  features]
'''Version Control Integration'''
Netbeans IDE directly supports CVS root types.In Netbeans SVN access is via custom protocol to an SVN server. Netbeans supports Git [http://www.kenai.com kenai.com]  subversion ,mercurial,and Git repositories.Even we can specify our external source code. 
Rubymine has CVS installed and turned on automatically. Git integration is enabled. It supports SVN repositories too along with perforce( one of the subversions) integration
Radrails has the feature to install the three things as plugins.
{| class="wikitable" border="1"
|-
!
! Radrails
! Netbeans
! Rubymine
|-
|  [http://en.wikipedia.org/wiki/Subversion_(software) SVN]
|  Available
|  Available
|  Available
|-
| [http://en.wikipedia.org/wiki/Git_(software) Git]
|  Available
|  Available
|  Available
|-
| [http://en.wikipedia.org/wiki/Concurrent_Versions_System CVS]
|  Available
|  Available
|  Available
|}
'''Debugging Features'''
All the Three IDE's supports ruby-debuggers.
Netbeans supports classic debugger which is slow and ruby debugger, which is fast and only works with native ruby interpreter.
Radrails also supports classic and ruby debugger. Classic is a pure ruby debugger based on debug.rb script. Classic 1.8.0 and 1.8.2 works on windows. It also offers ability to run a debugger using ruby debug gem as background.
Rubymine offers ruby debugging. Rubymine has convenient user interface. It allows smart and flexible breakpoint insertions. It also allows remote debugging features. It has Built in [http://www.jetbrains.com/ruby/features/ruby_debugger.html#Built-in_Expression_Evaluator Expression Evaluator].
[http://www.jetbrains.com/ruby/features/ruby_debugger.html Debugging using Rubymine]
[http://www.netbeans.org/kb/60/ruby/debugger-screencast.html Debugging using netbeans]
[http://vimeo.com/channels/radrails#6450292 Debugging using radrail
==Features for Ruby on Rails==
=Other Features available in IDE's=
In addition to Ruby support the IDE's offer support to other scripting languages also. The Features available are listed below in each of the three IDE's under consideration
{| class="wikitable" border="1"
|-
!
! Radrails
! Netbeans
! Rubymine
|-
|  HTML
|  Available
|  Available
|  Available
|-
|  CSS
|  Available
|  Available
|  Available
|-
|  JavaScript
|  Available
|  Available
|  Available
|-
|  JavaScript
|  Available
|  Available
|  Available
|-
|  XML
|  Available
|  Available
|  Available
|-
|  SQL
|  Available
|  Available
|  Not Available
|}
=Conclusion=
The Three IDE's have been compared for different features. It is very difficult to conclude which IDE is best suited for Ruby. All the three IDE's provide many features in Ruby.
Radrails is available as a plugin for eclipse. Users comfortable working with Eclipse can use this plugin and use Ruby on Eclipse.
Netbeans provide support for other languages like Java, C++, etc along with Ruby. It is best suited if users like to use other languages along with Ruby.
RubyMine is designed only for Ruby. RubyMine provides many Refactoring Tools which are not available in Radrails and Netbeans
=References=
1.[http://www.jetbrains.com/ruby/docs RubyMine Documentation]
2.[http://tnlessone.wordpress.com/2007/02/28/ruby-rails-ide-comparison-idea-netbeans-radrails/ Different IDE comparisions ]
3.[http://wiki.netbeans.org/RubyOnRails Netbeans Wiki]
4.[http://www.netbeans.org/ruby Netbeans.org]
5.[http://www.aptana.com/rails Aptana.com]
6.[http://en.wikipedia.org/wiki/RadRails Radrails wiki]
7.[http://www.infoworld.com/d/developer-world/lab-test-climb-aboard-ruby-rails-851?page=0,0 Reviews on different IDE's ]
Information from different IDE's help section is also considered for creating this wiki document.

Revision as of 19:14, 17 November 2009

Interface Segregation Principle vs. Principle of Small Interfaces


Introduction

This page tries to review Integrated Development Environments for Ruby such as Aptana,Rubymine and Netbeans. Also the IDEs are compared with respect to certain dimensions such as facilities, ease of use, system requirements, and support for the Ruby way of thinking.

Interface Segregation Principle

   * “Many client specific interfaces are better than one general purpose interface“
   * “The dependency of one class to another one should depend on the smallest possible interface“
   * “Make fine grained interfaces that are client specific.“
   * “Clients should not be forced to depend upon interfaces that they don’t use. This principle deals with the disadvantages of fat interfaces. Fat interfaces are not cohesive. In other words the interfaces of classes should be broken into groups of member functions.“
 

Comparision of Aptana,Netbeans and Rubymine

Three IDEs namely Aptana's Radrails, Netbeans and Rubymine are compared in the following sections.

System Requirements

Features for Ruby

s]General

Radrails Netbeans Rubymine
Price Free Free $99
License Type Open Source Open Source Commercial
Available Standalone or as Eclipse Plugin Available Not Available Not Available

Editing

Radrails Netbeans Rubymine
Code completion Available Available Available
Syntax Highlighting Available Available Available
Code analysis (warnings/errors/hints) Available Available Available
spell checking support Available Available Available
Type Hierarchy View Available Not Available Available
Smart Indent Available Available Available

snapshot for Aptana Radrails editing features

snapshot for Netbeans editing features

snapshot for Rubymine features

Refactoring

Refactoring is a disciplined technique for improving the structure of existing code without changing the observable behavior. Refactoring improves the design of software. Refactoring makes software easier to understand. Refactoring makes software easier to maintain. Refactoring helps you find bugs. Refactoring helps you program faster.

Radrails Netbeans Rubymine
Renaming Available Available Available
Extract method Available Available Available
Extract partial Not Available Not Available Available
Inline class Available Not Available Available
Inline method Available Not Available Available
Safely Delete Not Available Available Available

Netbeans refactoring features

Rubymine refactoring features


Version Control Integration

Netbeans IDE directly supports CVS root types.In Netbeans SVN access is via custom protocol to an SVN server. Netbeans supports Git kenai.com subversion ,mercurial,and Git repositories.Even we can specify our external source code.

Rubymine has CVS installed and turned on automatically. Git integration is enabled. It supports SVN repositories too along with perforce( one of the subversions) integration

Radrails has the feature to install the three things as plugins.


Radrails Netbeans Rubymine
SVN Available Available Available
Git Available Available Available
CVS Available Available Available

Debugging Features

All the Three IDE's supports ruby-debuggers.

Netbeans supports classic debugger which is slow and ruby debugger, which is fast and only works with native ruby interpreter.

Radrails also supports classic and ruby debugger. Classic is a pure ruby debugger based on debug.rb script. Classic 1.8.0 and 1.8.2 works on windows. It also offers ability to run a debugger using ruby debug gem as background.

Rubymine offers ruby debugging. Rubymine has convenient user interface. It allows smart and flexible breakpoint insertions. It also allows remote debugging features. It has Built in Expression Evaluator.

Debugging using Rubymine

Debugging using netbeans

[http://vimeo.com/channels/radrails#6450292 Debugging using radrail

Features for Ruby on Rails

Other Features available in IDE's

In addition to Ruby support the IDE's offer support to other scripting languages also. The Features available are listed below in each of the three IDE's under consideration

Radrails Netbeans Rubymine
HTML Available Available Available
CSS Available Available Available
JavaScript Available Available Available
JavaScript Available Available Available
XML Available Available Available
SQL Available Available Not Available

Conclusion

The Three IDE's have been compared for different features. It is very difficult to conclude which IDE is best suited for Ruby. All the three IDE's provide many features in Ruby. Radrails is available as a plugin for eclipse. Users comfortable working with Eclipse can use this plugin and use Ruby on Eclipse. Netbeans provide support for other languages like Java, C++, etc along with Ruby. It is best suited if users like to use other languages along with Ruby. RubyMine is designed only for Ruby. RubyMine provides many Refactoring Tools which are not available in Radrails and Netbeans

References

1.RubyMine Documentation
2.Different IDE comparisions 
3.Netbeans Wiki
4.Netbeans.org
5.Aptana.com
6.Radrails wiki
7.Reviews on different IDE's 
Information from different IDE's help section is also considered for creating this wiki document.