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.
This document is a functional specification for the NetBeans 6.5 fast-track review (LSARC/2008/573) covering the whole product and its changes in one case.
The NetBeans IDE 6.5 is a set of modules written in Java. This case is an extension to the previous NetBeans 6.0 cases.
NetBeans 6.5 is a modular and extensible development environment (IDE) written in Java. It is made of number of modules built on the NetBeans Platform.
NetBeans Platform is a Java application framework that provides runtime for functional plugins (modules) in order to simplify development of extensible, modular and cooperating Java based desktop applications.
NetBeans Core IDE is a set of modules written in Java based on the NetBeans Platform application framework. The modules provide essential functionality for an IDE tool needed to support developing in Java (J2SE platform) and possibly other languages.
Java EE Support modules represent a subset of essential tools needed to build any IDE for Java EE development, namely JSP/Servlet development, JSF, tag libraries, Java Persistence, EJBs, Web Services, Java EE Application Clients, complete Java EE Applications, deployment and debugging, server integration SPIs, integration with Sun Java System Application Server 8.x and 9.x, GlassFish v1, v2 and v3 Prelude, Tomcat and other servers, internal HTTP server, external web browser support, HTTP monitoring and database support.
The NetBeans Mobility adds optimized support for development of Java ME CLDC/MIDP and and CDC/(FP, PBP, PP, AGUI) applications and it is integrated with Sun Java Wireless Toolkit emulator environment. Emulators from device manufacturer, such as Nokia, Sony Ericsson, Siemens, Motorola, Ricoh etc. for CDC and CLDC can be integrated as well.
NetBeans Profiler is a project to provide a full-featured profiling functionality for the NetBeans IDE. The profiling functions include CPU, memory and threads profiling as well as basic JVM monitoring, allowing developers to be more productive in solving memory or performance-related issues.
Ruby tooling for NetBeans includes support for developing software in the Ruby languages, including the Ruby on Rails web framework.
new in 6.5 - PHP tooling for NetBeans includes support for developing software in PHP language.
new in 6.5 - Ajax/Javascript tooling for NetBeans includes support for developing software in Javascript language, including Ajax support.
The NetBeans Visual Web project enables Java developers to rapidly build standards-based web applications in NetBeans by dragging and dropping components and data sources on the WYSIWYG Visual Editor. It provides a comprehensive library of JavaServer Faces components and deploys your projects as a Web Archive (WAR) to Java Enterprise Edition containers like Java System Application Server, JBoss, BEA WebLogic, IBM WebSphere, Tomcat, and others.
Tooling support for the SOA BI runtimes.
The UML Modeling project provides UML modeling features to the NetBeans IDE. UML modeling allows analysts and designers to design applications using a standard modeling language. Developers are then able to generate source code from the UML model and update the model from changes made in their source code.
The NetBeans C/C++ project enables C and C++ developers to edit, build, run and debug native (C and C++) applications and libraries.
Defining features of NetBeans 6.5 are PHP language support and Ajax & JavaScript application support
NetBeans 6.1 release was focused on quality and performance.
The set of main new features changes in NetBeans 6.5 is listed above. The full list of new features is available on this page: NB65EngineeringPlan
A more user level description of implemented features is listed in:
A user level description of features delivered in 6.1 is listed in:
NewAndNoteWorthyMilestone1NB61
NewAndNoteWorthyMilestone2NB61
Detailed planning documentation is available at http://wiki.netbeans.org/NetBeans65
Java 2 Standard Edition 1.5.0
Javac Compiler (http://java.sun.com/javase/technologies/core/toolsapis/javac/index.jsp)
GlassFish v3 Prelude, GlassFish v2 (Sun Java System Application Server 9.1) and previous version of SJSAS: 9.0 and 8.2, including the components bundled in the appserver (JSF, JSTL, web services support, Java DB database, Java Persistence, ...)
JAX-WS 2.1.4 implementation (http://jax-ws.dev.java.net/)
Standalone Java Persistence runtime (https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html)
Java EE 5 samples (https://glassfish-samples.dev.java.net/)
JAXRPC 1.6 (https://jax-rpc.dev.java.net/)
JAX-RS (JSR 311) implementation, code named Jersey (https://jersey.dev.java.net/)
Apache Tomcat (http://tomcat.apache.org/index.html)
JBoss application server (http://www.jboss.org/)
WebLogic application server (http://www.beasys.com/)
WebSphere application server (http://www.ibm.com/software/websphere/)
Ant build tool (Apache)
JSP Standard Tag Library (Apache)
JRuby 1.1.x
PHP runtime
stack:
Apache web server, PHP 5 engine and XDebug library
Firebug 1.2.0 or later
JavaScript Debugger and Http Client Monitor for Internet Explorer - Machine Debug Manager(mdm.exe) and Microsoft Process Debug Manager(pdm.dll) - They are usually available on the user's system if they have installed Microsoft IDE products. They are not redistributable binaries, but available as part of freely downloadable Microsoft Script Debugger.
JavaScript Library Manager - 8 Javascript library modules 5 that live in main and 3 that live in contrib. The Yahoo UI , JQuery, Dojo, Prototype, and Scriptaculous Javascript libraries are distributed with Netbeans. The Mootools, Mochikit, and Adobe Spry are available for download after installation of Netbeans.
We got rid of our forked version of svnClientAdapter, the official release (v. 1.4.0) is used instead now. More info at http://subclipse.tigris.org/svnClientAdapter.html
The subversions java language binding (JavaHL) is used
as an alternative to the command line client. The JavaHL library is
used if found installed on the system (which happens if the user
installs official Subversion 1.5 client). For Windows we have the
library available from the Netbeans Update Center. More info about
JavaHL at http://subversion.tigris.org
and
http://subclipse.tigris.org/faq.html#adapter
JUnit support - updated bundled JUnit library to latest version 4.5 (http://www.junit.org/node/401)
CVS support - updated bundled Java Secure Channel library to latest version 0.1.39 (http://www.jcraft.com/jsch/)
Commons Logging - update from 1.0.4 to 1.1
Lucene - update from 2.1 to 2.3.2
Java MySQL Connector - update from 5.0.7 to 5.1.6
PostgreSQL JDBC driver - update from 8.2 to 8.3
new Commons Net 1.4.1 - used by PHP and mobility.deployment.ftpscp
new Jakarta ORO 2.0.8 - used by Commons Net
new Spring 2.5 - used by xml.text, j2ee.core.utilities, websvc.restlib modules
new Hibernate - used by dbschema, xml.multiview, j2ee etc.
C/C++ developement has a requiremet for GNU development tools (gcc, g++, make and gdb). Gdb must be version 6.6 or greater (6.3.50 on a Mac).
Proguard 4.2 (updated from 3.8)
JMUnit 1.2 (updated from 1.0.1)
bcprov-jdk15-139.jar (required for building BD-J images)
The previous cases for NetBeans 6.0.
See above.
NetBeans IDE is a set of modules based on the NetBeans Platform.
The modules represent independent pieces of functionality providing various features to end users and to other modules.
Changes introduced in 6.5 and 6.1 releases consist of bug fixes and code changes in existing 6.0 modules, and also additions of new modules to provide new functionality. Changes of the public NetBeans APIs are enumerated in the Exported Interfaces section below.
Here we mention changes of the following two categories of interfaces since NetBeans 6.0
the main external interfaces used (imported) by modules,
a list of interfaces provided (exported) by modules.
The main entry point for the NetBeans exposed APIs is under: http://bits.netbeans.org/dev/javadoc/index.html, however that document does not list project private APIs.
Changes to exported interfaces:
Comprehensive list of changes in NetBeans APIs since NetBeans 6.0:
OS_WINVISTA field
XMLUtil.validate
SingleMethod
FolderLookup are delivered in dedicated
thread
AntScriptUtils
ProjectUtils.getAuxiliaryConfiguration
project.encoding
ContextProvider
implemented more broadly; DebuggerManager.join
FileObject
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 6.0 |
|
NetBeans APIs on Java level |
Uncommited |
API is specified in http://bits.netbeans.org/dev/javadoc/index.html |
see comprehensive list of changes above |
| File Layout | Uncommited | nb65-filelayout.txt | |
| GUI | Uncommited | ||
| IPS packages for OpenSolaris | Stable | nb65-ips.txt |
Changes to imported interfaces:
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 6.0 |
| Ant 1.7.1 | External | Updated from 1.7.0 | |
| svnClientAdapter 1.4.0 | External | Replacing a forked version we were using | |
| JavaHL (subversion java language binding) 1.5 | External | Newly used as an alternative to Subversion CLI | |
| JUnit 4.5 | External | Updated from 4.1 | |
| Java Secure Channel 0.1.39 | External | Updated from 0.1.24 | |
| Commons Logging 1.1 | External | Updated from 1.0.4 | |
| Lucene 2.3.2 | External | Updated from 2.1 | |
| Java MySQL Connector 5.1.6 | External | Updated from 5.0.7 | |
| PostgreSQL JDBC driver 8.3 | External | Updated from 8.2 | |
|
Tom Sawyer graph library |
External (dependency removed) |
|
6.5 UML no longer uses the Tom Sawyer graph library used by previous releases. The Tom Sawyer library has been removed. |
| CLI for tar, zip, and Solaris SVR4 packages | Commited | 6.5 CND: tar, zip, and Solaris SVR4 packages (via command line) | |
| SSH2 via JSch library | Commited | 6.5 CND: SSH2 via JSch library | |
| GlassFish v3 Prelude administration and deployment interface | Uncommited | 6.5 J2EE area: new dependency | |
| JAX-WS 2.1.4 | Standard | JSR 224 | Updated from 2.0 |
| Java API for XML-based RPC (JAX-RPC) v1.6 | Standard | Updated from 1.1.2 | |
| JAX-RS implementation, code named Jersey | Standard | JSR 311 | |
| JRuby 1.1.x | External | 6.5 Ruby area: updated from 1.0.2 | |
| PHP runtime stack | External | ||
| Commons Net 1.4.1 | External | newly added for PHP and Mobility areas | |
| Jakarta ORO 2.0.8 | External | newly added, used by Commons Net | |
| Spring 2.5 | External | newly added for XML, J2EE and Web Services areas | |
| Hibernate | External | newly added for XML, DB and J2EE areas | |
| GNU development tools (gcc, g++, make, gdb) | External | Gdb must be version 6.6 or greater (6.3.50 on Mac) | |
| Proguard 4.2 | External | Updated from 3.8 | |
| JMUnit 1.2 | External | Updated from 1.0.1 | |
| Bouncy Castle 1.39 | External | newly added for Mobility area (building BD-J images) | |
| FireBug Service | External | newly added for Ajax area | |
| Active Script Debugger Interfaces | External | 6dy78b76(VS.85).aspx | newly added for Ajax area |
The User interface is based on Swing.
The modules use 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. Tested platform configurations are listed at http://wiki.netbeans.org/NB65TestedPlatformAndRuntimes
CND 6.1: The cnd cluster ships precompiled versions of the GdbHelper shared library for primary platforms. Sources and build instructions are provided for non-primary platforms.
CND 6.5: The cnd cluster ships precompiled versions of the unbuffer shared library for primary platforms. Sources and build instructions are provided for non-primary platforms.
See the list of products at http://wiki.netbeans.org/NB65TestedPlatformAndRuntimes
NetBeans allows other organizations to write modules and plug them into the tool.
NetBeans interoperates with several web and application servers, with database servers, versioning systems and other 3rd party software. List of the external products can be found at http://wiki.netbeans.org/NB65TestedPlatformAndRuntimes
CND 6.5: The C/C++ remote development feature interopts with sshd on Solaris and Linux distributions.
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. However, the user may run into issues with conflicting port numbers. This has to be worked around by manually setting different port numbers for the individual copies of the application, which can mostly be done through the user interface.
Multiple running instances of the IDE must use different user directory; this is ensured by the platform. See the previous section for the reservation regarding port conflicts.
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. This is provided (and tested) for several previous releases, i.e. NetBeans 5.5, 5.5.1, 6.0 and 6.1. 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.
UML introduces an new format for persisting diagrams in 6.5. Diagrams from previous versions of UML will be automatically converted to the new format the first time they are opened in 6.5. The original version of the diagram will be moved to a backup folder. Once a diagram has been opened in 6.5, it can no longer be opened in previous versions of UML. Any diagrams not yet opened on 6.5 can continue to be opened in previous versions of UML.
Performance goals of NetBeans 6.5 release are listed at http://wiki.netbeans.org/NB65PerfImprovements with a plan document at http://wiki.netbeans.org/NB65PerfPlan
The start-up time, UI responsiveness and memory footprint 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.
None
CND 6.5: The C/C++ remote development feature queries for a password for each remote connection. We use a Java implementation of SSH2 called JSch (see http://www.jcraft.com/jsch for details about JSch). No unencrypted passwords or data is sent over the link. However, passwords are stored in memory for the lifetime of the IDE session. In addition, users can choose to store the encrypted passwords in the userdir in a java.util.prefs.Preferences database.
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.5 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.
The requests and responses between JavaScript Debugger/Http Client Monitor and browser extension are in UTF-8 format. Hence JavaScript Debugger and Http Client Monitor are able to deal with different languages and locales
While NetBeans 6.5 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 of Sun Appserver) are limited to 32 bit platforms.
JavaScript Debugger support for Internet Explorer relies on native extension which is for now only 32-bit binary. It will be necessary to port the extension to 64 bit in order to support 64-bit Internet Explorer
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.
There is a live document that is created at build time that contains the list of ALL the files for a NetBeans distribution. Each NetBeans cluster is a top directory.
Packages are being produced for each Ubuntu Linux release. NetBeans packages are made available in the Universe repository of Ubuntu, satisfying its rules, mainly unbundling 3rd party libraries and depending on their separate packages. Only a certain subset of NetBeans functionality is delivered this way, the rest of fuctionality is available to the user online via Update Center.
Packages are produced in IPS format for OpenSolaris.
The install roots for the relative layout are:
Linux:
/opt/sun/netbeans
Solaris:
/opt/netbeans/
Windows: c:/Program
Files/NetBeans/
None.
Binary installers are created for NetBeans IDE and available for all supported platforms. Also native packages are available for Ubuntu Linux.
When a JavaScript Debugger session for FireFox is initiated by the user, FireBug 1.2.0 and the NetBeans FireFox extensions are installed if they are not present on the user system.
When a JavaScript Debugger session for Internet Explorer is initiated by the user, if Machine Debug Manager and Process Debug Manager components are not present on the user system, they will be prompted to install the Microsoft Script Debugger. Once those components are confirmed to be present, NetBeans Internet Explorer extension will be registered into Windows systems registry only if it is not done already.
None.
None.
Distributed for free under dual-license (CDDL and GLPv2 with ClassPath Exception). It contains binary components licensed under different licenses.
Upgrade mechanism provided by AutoUpdate functionality.
Remove native packages, run uninstaller for the NetBeans 6.5 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 following are the main standards supported by the tool:
Java EE 5 platform and all specifications and standards required by this platform
J2EE 1.4 platform and all specifications and standards required by this platform
Debugging Support for Other Languages (JSR 45)
Standards in the HTML and XML areas defined by W3C
SQL (exact dialect and version depends on target database)
SSH2
Sun Java Application Server 8.1 PE
Sun Java Application Server 8.2 PE
Sun Java Application Server 9.0 PE
Sun Java Application Server 9.1 and 9.1ur1
NetBeans 6.5 published APIs javadocs http://bits.netbeans.org/dev/javadoc/index.html