CSC/ECE 517 Fall 2009/wiki3 8 ISPPSI: Difference between revisions
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 |
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.
[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.