|
|
Line 1: |
Line 1: |
| CSC/ECE 517 Fall 2010/ch1 1a ms
| |
| ----
| |
| =Introduction=
| |
|
| |
|
| This article is trying to analyze and compare different Integrated Development Environments(IDE) that are in use for software development in Ruby. We will be comparing Aptana RadRails, Ruby Mine, Eclipse and NetBeans.
| |
|
| |
| ==What is an IDE?==
| |
|
| |
| An IDE is a software application which provides comprehensive facilities to maximize computer programmers' productivity. An IDE consists of:
| |
|
| |
| * A source code editor.
| |
| * A compiler and/or an interpreter.
| |
| * Build automation tools.
| |
| * A debugger.
| |
|
| |
| The aim is to abstract the configuration necessary to piece together command line utilities in a cohesive unit. Most IDE's are graphical to improve interaction.
| |
|
| |
| ==What is RUBY and its features?==
| |
|
| |
| RUBY is a dynamic, reflective, general-purpose object-oriented programming language.
| |
|
| |
| Ruby supports multiple programming paradigms, including:
| |
|
| |
| *Functional: Computation is evaluation of a mathematical function.
| |
| *Object oriented: Data structures consisting of data fields and methods are used.
| |
| *Imperative: Computation in terms of statements that change the program stare.
| |
| *Reflective: Computer program can evaluate and modify its structure.
| |
|
| |
| Additionally, it has a dynamic type system and automatic memory management.
| |
|
| |
| = Comparison =
| |
| == System requirements ==
| |
|
| |
| '''General'''
| |
| {| class="wikitable" border="1"
| |
| |-
| |
| |
| |
| ! Eclipse
| |
| ! NetBeans
| |
| ! Aptana RadRails
| |
| ! RubyMine
| |
| |-
| |
| ! Version
| |
| | Helios 3.6
| |
| | NetBeans 7.0.1
| |
| | Aptana 2.0.5
| |
| | RubyMine 3.2.3
| |
| |-
| |
| ! Windows
| |
| | Windows XP/Vista/7
| |
| | Windows XP/Vista/7
| |
| | Windows XP/ more
| |
| | Windows 2003/XP/Vista/7
| |
| |-
| |
| ! Windows Processor
| |
| | P4 or higher
| |
| | 500 MHZ Intel Pentium 3
| |
| | Pentium Level 4
| |
| | Intel Pentium 3 or higher.
| |
| |-
| |
| ! RAM
| |
| | 1 GB*
| |
| | 2GB
| |
| | 512 MB
| |
| | 2GB RAM recommended.
| |
| |-
| |
| ! Disk Space
| |
| | 1GB free disk space.
| |
| | 1GB free disk space.
| |
| | 71.9MB for an Eclipse Plugin
| |
| | 91.5MB or more.
| |
| |-
| |
| ! Mac OS X
| |
| | Mac OS X 10.4.10 minimum
| |
| | Mac OS 10.5 Intel
| |
| | Mac OS 10.4 +
| |
| | Mac OS 10.5 or higher
| |
| |-
| |
| ! Processor
| |
| | Dual-Core Intel, PowerPC G5
| |
| | Dual Core Intel(32 or 64 bit)
| |
| | Power PC G4/G5
| |
| | 1.42GHz Intel based Mac recommended.
| |
| |-
| |
| ! RAM
| |
| | 512 MB of RAM (2 GB recommended)
| |
| | 512 MB RAM
| |
| | 512 MB RAM
| |
| | 2GB RAM recommended
| |
| |-
| |
| ! Disk Space
| |
| | 122MB
| |
| | 650MB of free disk space.
| |
| | 71.9MB for an Eclipse Plugin.
| |
| | 84.7MB or more.
| |
| |-
| |
| ! Linux
| |
| | No preferences mentioned.
| |
| | Ubuntu 9.10
| |
| | No preferences mentioned.
| |
| | GNOME or KDE Desktop.
| |
| |-
| |
| ! Processor
| |
| | Linux x86
| |
| | 800MHz Intel Pentium III or equivalent.
| |
| | Pentium 4-level processor.
| |
| | Intel Pentium III 800 MHz or higher.
| |
| |-
| |
| ! RAM
| |
| | 64 MB
| |
| | 512 MB RAM
| |
| | 512 MB RAM
| |
| | 2GB RAM recommended
| |
| |-
| |
| ! Disk Space
| |
| | 58 MB
| |
| | 650 MB of free disk space
| |
| | 71.9 MB for an Eclipse Plugin
| |
| | 82.1MB or more
| |
| |}
| |
|
| |
| ==General==
| |
|
| |
| {| class="wikitable" border="1"
| |
| |-
| |
| !
| |
| ! Netbeans
| |
| ! RadRails
| |
| ! Rubymine
| |
| ! IDEA IntelliJ
| |
| |-
| |
| | Statements and keyword completion
| |
| | YES
| |
| | NO
| |
| | YES
| |
| | YES
| |
| |-
| |
| | Generate Type Constructor
| |
| | NO
| |
| | YES
| |
| | YES
| |
| | NO
| |
| |-
| |
| | Override Method
| |
| | NO
| |
| | YES
| |
| | YES
| |
| | NO
| |
| |-
| |
| | Code Formatting
| |
| | Yes
| |
| | YES
| |
| | YES
| |
| | YES
| |
| |-
| |
| | Brace Matching
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | YES
| |
| |-
| |
| | Go to symbol
| |
| | NO
| |
| | NO
| |
| | YES
| |
| | YES
| |
|
| |
| |}
| |
|
| |
| == Editing ==
| |
|
| |
| {| class="wikitable" border="1"
| |
| |-
| |
| !
| |
| ! Eclipse
| |
| ! RadRails
| |
| ! NetBeans
| |
| ! Rubymine
| |
| |-
| |
| | Code Analysis
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | YES
| |
| |-
| |
| | Call Hierarchy View
| |
| | YES
| |
| | YES
| |
| | NO
| |
| | NO
| |
| |-
| |
| | Regular Expression Tester
| |
| | YES
| |
| | YES
| |
| | NO
| |
| | NO
| |
| |-
| |
| | Mark Occurences
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | NO
| |
| |-
| |
| | Smart Indent
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | NO
| |
| |-
| |
| | Mylyn Integration
| |
| | YES
| |
| | YES
| |
| | NO
| |
| | NO
| |
| |}
| |
|
| |
| ==Comparison notes==
| |
|
| |
| '''NetBeans'''
| |
|
| |
| NetBeans provides effective and clear sytnax highlighting. The autocompletion provided is more advanced than Idea and Eclipse. However NetBeans misses a finalized installation configuration and live coding templates. NetBeans makes it easy to add plugins. It includes a complete editing assistance.
| |
|
| |
| '''Eclipse'''
| |
|
| |
| Eclipse provides advance refactoring tools developed by students and also comes with a well done documentation and explanations. The biggest advantage of Eclipse is its Debugging ability.
| |
|
| |
| '''Idea'''
| |
|
| |
| Idea has a nice syntax highlighting and interactivity with the coder. Autocompletion in Idea is limited to keywords and statements only.
| |
|
| |
| '''RadRails'''
| |
|
| |
| It supports syntax highlighting, auto completion, code assist and error reporting. It also supports refactoring but it is limited to instance variables, inlining and renaming. It also supports fast and integrated debugger.
| |
|
| |
| '''Rubymine'''
| |
|
| |
| Rubymine is an intelligent full featured code editor. It also performs automatic Ruby code styling with brace matching.It also provides code completion and navigation. RubyMine allows quick rake tasks execution.
| |
|
| |
| ==Refactoring==
| |
|
| |
| {| class="wikitable" border="1"
| |
| |-
| |
| !
| |
| ! Netbeans
| |
| ! RadRails
| |
| ! Rubymine
| |
| ! IDEA IntelliJ
| |
| ! Eclipse
| |
| |-
| |
| | Rename
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | YES
| |
| | YES
| |
| |-
| |
| | Convert Local variable to field
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Encapsulate field
| |
| | NO
| |
| | YES
| |
| | YES
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Extract Method
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Inline Class
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Inline Local Variable
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Inline Method
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Merge Class Parts in file
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Merge with external Class Parts
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Move Field
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Move Method
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Push Down
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
| |-
| |
| | Split Local Variable
| |
| | NO
| |
| | YES
| |
| | NO
| |
| | NO
| |
| | YES
| |
|
| |
| |}
| |
|
| |
| As it can be concluded from the above table, Eclipse IDE with the Ruby development tools plugin is far better for editing than the other IDE's .
| |
|
| |
| ==Version Control Integration==
| |
|
| |
| All the IDE's under comparison (Aptana RadRails, Ruby Mine, Eclipse and NetBeans) support SVN, Git, CVS control version systems.
| |
|
| |
| Individual features are:
| |
|
| |
| *Recognition of existing version-controlled directories.
| |
| *Versioning window shows new, removed, or modified files.
| |
| *Color-coded status of lines, files and folders: New, removed, up-to-date, or modified.
| |
| *Color-coded Diff Viewer for intuitive merge conflict resolution.
| |
| *Export Diff Patch action.
| |
| *Sharable project metadata.
| |
|
| |
| ==Debugging==
| |
|
| |
| '''Netbeans 7.0'''
| |
|
| |
| Netbeans supports a configurable debugger which can be used to set breakpoints, look at the local variables, navigate the call stack and switch threads. The Netbeans debugger also supports expression evaluation, expression steping, multi-session debugging, multi- threaded Debugging etc. It also allows us to attach the debugger to any remote process started from the command line.
| |
|
| |
| '''RadRails'''
| |
|
| |
| Aptana RadRails has an integrated Debugger which allows us to set breakpoitns, inspect variables and control execution.
| |
|
| |
| '''RubyMine'''
| |
|
| |
| RubyMine supports an advanced graphical debugger. It provides a convenient user interface with a fully customizable UI. It also allows us to define hit conditions for breakpoints and determine whether to stop or continue the execution.
| |
|
| |
| '''IntelliJ'''
| |
|
| |
| It supports a highly fast and powerful debugger which is capable of executing multiple profiles. It also displays custom objects in debugger. Remote debugging, variable modifications and expression evaluations are other important debugging options supported.
| |
|
| |
| '''Eclipse'''
| |
|
| |
| The Ruby interpreter for Eclipse broadcasts debugging information over a specific (configurable) port, and tools like the RDT can listen over that port and supply the types of debugging support developers expect.
| |
|
| |
|
| |
| =Conclusion=
| |
|
| |
| Users accustomed on working in Eclipse can continue using the RadRails plugin. Eclipse provides excellent debugging capabilities.
| |
|
| |
| NetBeans supports multiple languages like C++, Java.
| |
|
| |
| RubyMine is exceptionally good when it comes to refactoring and can be chosen over other IDE's if this is of greater utility. RubyMine also has an intelligent code editor which others don't.
| |
|
| |
| The document covers some of the major IDE's in the market for Ruby. Every IDE has its own advantages and disadvantages. The criteria for choosing a specific IDE solely depends on the perspective of a Ruby programmer and which features he wants the most from the IDE as compared to others.
| |
|
| |
| =References=
| |
|
| |
| 1. http://tnlessone.wordpress.com/2007/02/28/ruby-rails-ide-comparison-idea-netbeans-radrails/
| |
|
| |
| 2. http://devnet.jetbrains.net/docs/DOC-1146
| |
|
| |
| 3. http://netbeans.org/features/java/debugger.html
| |
|
| |
| 4. http://r2.ifs.hsr.ch/rubyrefactoring.pdf
| |
|
| |
| 5. http://www.jetbrains.com/ruby/features/ruby_ide.html
| |
|
| |
| 6. http://netbeans.org/features/ide/editor.html
| |
|
| |
| 7. http://vimeo.com/channels/radrails#9895797
| |
|
| |
| 8. http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_11_f1%2C
| |
|
| |
| 9. http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_22
| |
|
| |
| 10. http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_rf
| |
|
| |
| 11. http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_aa
| |
|
| |
| 12. http://www.aptana.com/products/radrails
| |
|
| |
| 13. http://netbeans.org/features/all.html#ruby
| |
|
| |
| 14. http://www.jetbrains.com/ruby/documentation/index.html
| |