Template Version:
1.8
Modified: 1/10/05
Location:
http://sac.eng/arc/Processes/Projects/ARC-FuncSpec.html
NetBeans is the Sun sponsored open source Java IDE. The current shipping version (5.5.1, code name Promotion G1) was ARCed under these cases:
The Ruby support was not a part of that release and is being added in NetBeans 6, hence an additional ARC case is introduced for the Ruby area. The list of all ARC cases for NetBeans 6 is tracked here: NB6ARCCases
This document is a functional specification for the Ruby Support in NetBeans 6.0.1 (LSARC 2008/052). It depends on the following ARC cases for the other components of NetBeans 6.0.1:
The NetBeans 6.0.1 Ruby support is a set of modules written in Java on top of the other components of of the NetBeans IDE. The main features introduced in the Ruby area in NetBeans 6.0.1 are:
NetBeans 6.0.1 - Ruby is a subset of NetBeans modules. The whole product is a modular and extensible development environment (IDE) written in Java. It is made of number of modules built on the Platform. Among these modules, Ruby modules represent a subset of essential tools needed to build any IDE for Ruby development, and implement the features listed above. All the modules together with the other NetBeans sub-projects make up the deliverable which is used to build the final product (i.e. the NetBeans IDE).
The main list of requirements is given in the PCL Phase 2 slides that was presented to the Tools PAC. See slide 10 in this document: http://jupiter.czech.sun.com/wiki/pub/Netbeans/NB60/NB6-PLC-Phase2.pdf.
Ruby support was not present in the previous release, it is completely new.
A more user level description of the implemented features is listed in this document: http://wiki.netbeans.org/wiki/view/NewAndNoteWorthy.
See PLC documentation for NetBeans 6.0.1 http://jupiter.czech.sun.com/wiki/view/Netbeans/NB60.
See the list of other ARC cases for NetBeans 6 at http://jupiter.czech.sun.com/wiki/view/Netbeans/NB6ARCCases.
None, besides NetBeans itself.
None.
See above.
NetBeans Ruby IDE modules is a set of modules based on the NetBeans Platform. See the NetBeans Platform's ARC documentation for details about the module system and the whole framework.
The modules represent independent pieces of functionality providing various features to end users and to other modules.
Here we mention:
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 5.5.1 |
|
General Scripting Framework |
Uncommitted |
gsf |
This is a new API introduced in NetBeans 6. |
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 5.5.1 |
|
Java SE at least 5.0 |
Committed |
PSARC 2003/696 | N/A |
|
NetBeans Platform APIs |
Uncommitted |
WSARC 2007/344 | N/A |
|
NetBeans Core IDE APIs |
Uncommitted |
N/A | |
|
JRuby 1.0.2 |
Uncommitted |
N/A | |
|
Ruby gems and extensions related to Rails:
|
Uncommitted |
N/A |
The User interface is based on Swing.
The modules uses XML persistence of settings, provided by the NetBeans Platform. DTDs are used to identify the type of XML file. Used XML files conform to the XML 1.0 specification as published by the W3C.
As a Java-based application, the IDE Support modules run on any J2SE-enabled system supporting at least version 5.0.
The hardware requirements are similar for all platforms, but it may differ slightly for some cases. The recommended configuration for running the NetBeans IDE is specified in the Performance Criteria page: http://wiki.netbeans.org/wiki/view/NB6PerformanceCriteria.
N/A
NetBeans allows other organizations to write modules and plug them into the tool. The Ruby support interoperates the Ruby platform (both the native implementation and JRuby) and with extensions (gems) of this platform.
Any number of copies of the application can be installed and used in parallel. Also, NetBeans can be installed in parallel with shipping versions of Sun Java Studio Enterprise and Sun Java Studio Creator.
Multiple running instances of the IDE must use different user directory; this is ensured by the platform.
There are no previous releases of the Ruby support, so this is not an issue. As NetBeans creates persistent settings and user projects on the disk, settings and projects from previous versions may need to be converted to the format used by the newer release, if it differs. So a future release (6.1) will likely import settings from 6.0, and convert them to the new release's format, if the formats differ. After conversion to the format supported by the newer release, it may not be possible to use these settings and projects in a previous version of NetBeans.
There are two explicit goals from the performance point of view.
Fast start-up is the first one. It requires fast initialization of the framework where mostly scalability in number of modules to initialize is critical. This part is mainly a responsibility of the NetBeans Platform; the modules are just required not to execute much (or even any) code during startup. The basic goal is the start-up time does not grow from release to release.
The second area is the perceived performance and UI responsiveness of the IDE. We have several rules and criteria describing required UI responsiveness for various user actions. The criteria define not only the performance aspect, but also describe appropriate UI feedback. Actions not matching the criteria are hunted down and fixed preferentially. The criteria are based on three time categories:
100 ms is required for basic mouse and keyboard actions to finish -- like expanding a node, moving a selection in a list, showing a menu, pressing a button, typing a letter, moving a window, etc. All other actions taking longer time should at least provide an initial feedback within 100ms.
1 sec is a basic limit for action not disturbing the user yet and not requiring progress feedback. Actions like opening a dialog/window, switching to next step in a wizard, opening a file, etc. belong here. These actions are required to provide mouse cursor feedback (showing wait cursor) or displaying a status message. Longer actions are recommended to show their progress somehow.
10 sec is maximum time for an action to run modally. Longer actions should allow the user to do something else simultaneously, should not block the UI. There should be also a progress indicator, and the action should be interruptible. Examples: compilation, creating a JAR archive, fetching data from remote host, etc.
Both the start-up time and UI responsiveness are measured regularly by automatic tests. Regressions are detected using these tests.
The only limits are in size of data processed -- e.g. size of file opened or number of files searched.
See the relevant section of the NetBeans 6.0.1 Platform ARC case for this information.
See the relevant section of the NetBeans 6.0.1 Platform ARC case for this information.
Modules' API packages are named with the prefixes org.netbeans.api.
and/or org.netbeans.spi. according to domain and
client/provider distinction. Module implementations use prefix org.netbeans.modules.
All modules have code names similar to Java package names, and limit themselves to package names matching the DNS address of the responsible organization, according to the standard Java convention.
None.
All date manipulation are done by java.util.Date
or using long variables, thus it is Year 2000 compliant.
The NetBeans 6.0.1 modules seem to be Level 4-compliant as applications based on it have been successfully ported to Japanese, Chinese, Russian and Brazilian Portuguese languages and locales. All text strings must be loaded from properties files; many images, all placements of such things as menu items, and many other things are customizable according to locale. All language and locale customizations can be added to a NetBeans-based application by adding new files, never modifying existing ones, and choice of language and locale is available as a simple startup-time switch (with a default according to the J2SE). All user text entry should support Unicode where that makes sense. More information
While NetBeans 6.0.1 itself runs and is tested on 64 bit platforms, not all versions of Sun Application Server run on 64 bit platforms. Thus, the corresponding features in NetBeans (notably deployment to such versions Sun Appserver) are limited to 32 bit platforms.
Requires the availability of J2SE 5.0 or higher on the target platform. Also requires the availability of products we depend on (e.g. Sun Appserver) on the target platform.
Full accessibility is the goal for NetBeans and is achieved.
Packaged as a part of the NetBeans 6.0.1 IDE, see the CDP Promotion D - umbrella for details.
There is a live document that is created at build time that contains the list of ALL the files for a NetBeans distribution. The relevant files for this case are all the files that belong to the “enterprise4” cluster in NetBeans 6.0.1. Each NetBeans cluster is a top directory.
The ruby1 cluster will be packaged within the NetBeans 6.0.1 product itself. Please, refer to the packaging description for this product.
The directory locations for the NetBeans installation are described in the NetBeans Platform ARC case: WSARC 2007/344. The consolidation represented by this case is placed in a subdirectory called "enterprise4" of the NetBeans installation.
None.
Installation is done by product that includes the Ruby modules, i.e. NetBeans. So NetBeans just needs to install the packages described in section 3.1.1., among other components. All the Ruby modules are now integrated in their own NetBeans cluster called ruby1.
None.
Node.
Distributed for free under the CDDL license. It contains binary components licensed under different licenses (Sun BCL and open source licenses such as Apache or W3C).
Upgrading from a previous version is not needed for the Ruby support, as this is the first release.
Remove native packages, run uninstaller for the NetBeans 6.0.1
product.
There is no command line access to configure the system; everything has to be done via the GUI.
Components are called modules in the NetBeans terminology. The set of modules changes routinely from release to release.
The Ruby area does not implementy any standards we are aware of.
NetBeans 6.0.1 published APIs javadocs http://www.netbeans.org/download/6_0/javadoc/
[1] http://sac.eng/arc/Processes/Client.Handbook/
[2] http://sac.eng/BestPractices/interface_taxonomy.txt/
[3] Motif 1.2 Style Guide (sun part no. 801-5366-10)
[4] CDE Style Guide and Certification Checklist (Sun part no. 802-1581-10)
[5] Architectural Considerations Document, http://sac.eng.sun.com/arc/ARC-Considerations.html