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 Integrated Development Environment (IDE).
This document is a functional specification for the NetBeans 6.9 fast-track review (PSARC/2010/???) covering the whole product and its changes in one case.
The NetBeans IDE 6.9 is a set of modules written in Java. This case is an extension to the previous NetBeans 6.x cases, namely the NetBeans 6.8 case (LSARC/2009/524).
NetBeans 6.9 is a modular and extensible development environment (IDE) written in Java. It is made of number of modules built on top of 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. In
6.9 our module system has been enhanced to allow bridging with an OSGi
runtime container and loading both regular NetBeans modules and OSGi
bundles in the same runtime environment. Platform tooling support has
been extended to allow interoperability with OSGi bundles and also
development of general purpose OSGi bundles.
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, Tomcat and
other servers, internal HTTP server, external web browser support,
HTTP monitoring and database support.
The NetBeans Mobility (ME) includes 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.
PHP tooling for NetBeans includes support for developing
software in PHP language. PHP Editor (Code completion, syntactic and
semantic code highlighting), support for heredoc notation and PHTML,
debugging using Xdebug, generators for MySQL database code snippets.
The NetBeans C/C++ project enables C and C++ developers to
edit, build, run and debug native (C and C++) applications and
libraries.
The NetBeans JavaFX tooling includes support for
edit/debug/deploy functionality of JavaFX applications for JavaFX
Desktop and Mobile. The support was provided in previous releases as
an add-on, from 6.8 it is a part of the standard NetBeans
distribution. In 6.9 support was updated for new version of JavaFX. We have a dependency on JavaFX SDK 1.3 for 6.9. A new visual JavaFX GUI editing was added.
Defining
features of NetBeans 6.9 are in JavaFX and NetBeans Platform areas. In
JavaFX area we are adding the support for JavaFX SoMa release,
improving features like better refactoring, debugging, and profiling to
approach feature parity with Java, and adding visual JavaFX GUI editing
similar to the GUI editing available for Swing. In Platform area we are
adding OSGi compatibility - allowing reuse and execution of OSGi
bundles next to the native NetBeans modules.
The set of main new features in NetBeans 6.9 is listed above. The full list of new features is available on the following page and the pages linked from it: NetBeans69
A more user level description of implemented features is listed in NewAndNoteWorthy69
Detailed planning documentation is available at http://wiki.netbeans.org/NetBeans_69
removed in 6.9 - Java 2 Standard Edition 1.5.0 (EOSL-ed and removed from the compatibility matrix for NetBeans 6.9)
Java 2 Standard Edition 1.6.0
Javac Compiler
GlassFish v3, GlassFish v2.1 (Sun GlassFish Enterprise Server v2.1) and previous version of SJSAS: 9.1, 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.2 implementation
Standalone Java Persistence runtime
Java EE 5 samples
Java EE 6 samples
JavaFX SDK 1.3 (updated from 1.2.1)
JAXB 2.2
JAXRPC 1.6
JAX-RS (JSR 311) implementation,
code named Jersey, version 1.1.5 (updated from 1.1.4)
Kenai WS API - http://kenai.com/projects/kenaiapis/pages/ProjectsAPI
Ant-Contrib 1.0b3 - The Ant-Contrib project is a collection of tasks for Apache Ant
Apache Ant 1.8 - Ant build tool (updated from 1.7.1)
Apache Jakarta Commons FileUpload 1.0 - File upload component
Apache Jakarta Commons Lang 2.3 - Logging component
Apache Jakarta Commons Logging 1.1 - Logging component
Apache Jakarta Http client 1.3 - Http client
Apache Jakarta Http client 3.1 - Http client
Apache Lucene 2.4.1 - Java-based indexing and search technology
Apache Maven 2.1-20080623-patched - Maven embedder
Apache Struts 1.3.8 - Framework for creating Java web applications
Apache Tomcat 3.2 - Tomcat HTTP server (internal)
Apache Xerces 2.8.0 - Xerces XML parser
bcprov jdk15-139 - JCA security provider
bdjo - BD-J Object builder
Beans Binding 1.2.1 - Reference implementation of Beans Binding
Bugzilla Connector 3.1.1 - Java connector to Bugzilla issue tracking system
Code Generation Library 2.2 - Library for extending JAVA classes and implementing interfaces at runtime
Commons Codec 1.3 - Commons Codec provides implementations of common encoders and decoders such as Base64, Hex, Phonetic and URLs
Commons HTTP Client 3.1 - Extensions for java.net.* packages
Commons Net 1.4.1 - Apache Commons Net implements the client side of many basic Internet protocols
CSS 2.1 Specification - Documentation for the CSS 2.1 standard
Debug Commons 0.10.0 - Contains library intermediating communication between the debug-commons backends and Java frontend
Derby 10.2.2.0 - Apache Derby, an Apache DB subproject, is an open source relational database implemented entirely in Java
Eclipselink 2.0.1 - Java Persistence API implementation (updated from 2.0.0)
Flute 1.3 - Parser for CSS parsing
Flying Saucer XHTML Renderer R7final - Java XHTML+CSS renderer
FreeMarker 2.3.8 - Template engine
Grizzly Webserver 1.9.9
Groovy 1.6.4 - Groovy Language distribution
H2 1.0.79 - Java SQL database
Hibernate Library 3.2.5 - The Hibernate library contains all the requried jars to implement the hibernate technologies
HTML 4.01 Specification 4.01 - Documentation for the HTML 4.01 standard
Http Client 3.0.1 - Http protocol extension utilities
httpunit 1.6.2 - Library for automate HTTP unit testing
Ini4J 0.4.1 - Java API for handling Windows ini file format
Jakarta Slide 2.1 - Slide is a content repository which can serve as a basis for a content management system / framework and other purposes
Java CUP 11 - LALR Parser Generator in Java
Java Native Access 3.0.9 - Dynamically access native libraries from Java without JNI.
Java Server Faces 2.0 - Java Server Faces
JDOM 1.0 - Java API for XML manipulation
Jettison 1.1 - collection of Java APIs (like STaX and DOM) which read and write JSON
JMUnit 1.2.1 - http://sourceforge.net/projects/jmunit/
JRuby 1.3.1 - The Java-based implementation of Ruby
JRuby Parser 0.1 - A Ruby parser in written Java useful for IDE's and Ruby code analysis tools
JSch 0.1.41 - Java implementation of SSH2
JSP Standard Tag Library 1.1.2 - JavaServer Pages Standard Tag Library
JUnit 4.5 - JUnit is a testing framework
JZlib 1.0.7 - Java implementation of the zlib data compression library for ZIP and PNG
KXML Pull Parser 2.3.0 - kXML is a small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices. In contrast to kXML 1, kXML 2 are based on the common XML pull API
Libpam4j 1.1 - libpam binding for Java
Maven Dependency Tree 1.2 - Maven Dependency Tree
Mylyn Commons library 3.3.1 - Mylyn Commons library (updated from 3.1.1)
Mylyn Commons Network library 3.3.1 - Mylyn Commons Network library (updated from 3.1.1)
Mylyn Tasks Core library 3.3.1 - Mylyn Tasks Core library (updated from 3.1.1)
MySQL Connector/J 5.1.6 - Allows Java programs to interact with a MySQL database
NetBeans Active Sync Library 5.0 - Library that makes possible to use Active Sync software.
perseus-nb 1.0 - SVG Perseus Library
PHPDocumentor Documentaion 1.4 - Documentation for PHPDocumentor tags
PostgreSQL JDBC Driver 8.3-603 - Allows Java programs to interact with a PostgreSQL database
ProcessTreeKiller 1.0.1 – Hudson's library to reliably kill spawned processes
Proguard Obfuscator 4.4 - Free Java class file shrinker, optimizer, obfuscator, and preverifier
Rails 2.3 - web application framework
Ricoh Ant Tasks 2.0 - Ricoh specific Ant tasks
Ruby 1.9 – Ruby language support
SAC 1.3 - API for CSS parsing
Security - Tools for signing BD-J disc images
Servlet API 2.2 - Java Servlet API
Shale Remoting 1.0.4 - Java web application framework
Smack API 3.1 - Open Source XMPP (Jabber) client library
Sonatype Nexus Indexer 2.0.0 - Maven remote repository indexing engine
Spring Framework 3.0 - Java/J2EE application framework (updated from 2.5)
Spring Web MVC 2.5 - Java web application framework
Subversion Java-HL bindings 1.6.0 - Java bindings library for subversion client
SVNClientAdapter Library 1.6.0 - Integration library for subversion client
Swing Application Framework 1.0.3 - The JSR-296 Swing Application Framework prototype implementation
Swing Layout Extensions 1.0.3 - Swing Layout Extensions
Swing Worker 1.1 - Long running Swing GUI interacting tasks
SwingX 0.9.5 - additional Swing components - Swing extensions
TopLink Essentials v2ur1-build-09d - Implementation of Java Persistence API in GlassFish
Winp 1.14 – Hudson's Windows
process manipulation library (updated from 1.13)
XML Commons Resolver 1.2 - Library used to load XML catalogs to resolve external references
Oracle Solaris Studio (possibly some future version) – building on top of NetBeans Platform and a subset of modules of NetBeans IDE
The previous case for NetBeans 6.8 (LSARC/2009/524).
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.9 release consist of bug fixes and code changes in existing 6.8 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.8
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.8:
MoveOrRenameOperationImplementation
Templates.buildSimpleTargetChooser
CreateFromTemplateHandler.FREE_FILE_EXTENSION
XMLUtil. Seven new methods added.
CharSequences
CommonProjectActions.forType
HIDE_WHEN_DISABLED
MultiFileSystem overrides
ToolsAction via layers
AcceleratorBinding
NbPreferences.Provider added
OutlineView.setPropertyColumns,
OutlineView.addPropertyColumn and
OutlineView.removePropertyColumn added.
MIMEResolver.UIHelpers
ModuleInstall lifecycle
InstalledFileLocator.locateAll
OutlineView.setTreeSortable added.
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 6.8 |
|
NetBeans APIs on Java level |
Uncommited |
API is specified in http://bits.netbeans.org/dev/javadoc/index.html |
see comprehensive list of changes above, the changes are listed also online at http://bits.netbeans.org/dev/javadoc/apichanges.html and this page will be moved to permanent URL at FCS to http://bits.netbeans.org/6.9/javadoc/apichanges.html |
|
File Layout |
Uncommited |
changes reflecting the Java modules and 3rd party libraries added and removed since 6.8 |
|
|
GUI |
Uncommited |
|
changes reflecting UI of the implemented features and bug fixes |
|
IPS packages for OpenSolaris |
Uncommited |
|
produced the same way as 6.8 IPS packages, no change planned |
Changes to imported interfaces:
|
Interface Name |
Proposed Stability Classification |
Specified in What Document? |
Changes since NetBeans 6.8 |
| Java 2 Standard Edition 1.5.0 | Commited |
|
REMOVED in 6.9 |
| Apache Felix 2.0.3 | Volatile |
|
Newly added in 6.9 for OSGi interoperability |
| OSGi 4.2 | Commited | |
Newly added in 6.9 for OSGi interoperability |
| BIndex 2.2 | Volatile | |
Newly added in 6.9 for OSGi interoperability |
| ISpell 3.1.20 | Volatile | |
Newly added in 6.9 for Spellchecking feature |
| Apache Ant 1.8 | Volatile | |
Updated from 1.7.1 |
| Mylyn 3.3.1 |
Volatile | |
Updated from 3.1.1 |
|
Winp 1.14 |
Volatile |
|
Updated from 1.13 |
|
Eclipselink 2.0.1 |
Volatile |
|
Updated from 2.0.0 |
| Spring Framework 3.0 | Volatile | |
Updated from 2.5 |
| JAX-RS Jersey 1.1.5 | Volatile | |
Updated from 1.1.4 |
| Cobertura 1.9.3 | Volatile | |
Updated from 1.9 |
|
Kenai WS API |
Committed |
|
Upgraded for Project Membership Management and Project Remove feature in Kenai integration |
|
JavaFX SDK 1.3 |
Commited |
|
Updated from 1.2.1 |
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 6.
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/NetBeans_69_Supported_Platforms
See the list of products at http://wiki.netbeans.org/NetBeans_69_Supported_Platforms
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/NetBeans_69_Supported_Platforms
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(.1), 6.0, 6.1, 6.5(.1), 6.7(.1) and 6.8. 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.
Performance goals and achievements of NetBeans 6.9 release are listed at http://wiki.netbeans.org/NB69PerfPlan
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
In 6.9 new Keyring API has been
introduced. Where possible it uses a native keyring for the best user
experience: Gnome Keyring, KDE KWallet, Mac OS X Keychain. On Windows
encryption of passwords using a login key. If a native keyring is not
available, platform-independent fallback is to keep passwords in a file
readable only by the current user in the userdir, encrypted by a master
password, similar to Firefox or Thunderbird.
IDE features which are storing passwords were rewritten to use the Keyring API.
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.9 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.
While NetBeans 6.9 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.
Requires the availability of Java SE 6 or higher on the target platform. Also requires the availability of products we depend on (e.g. Sun Application Server) on the target platform.
Full accessibility is the goal for NetBeans and it 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 being produced for each Fedora Linux release. NetBeans packages are made available in Fedora repository, satisfying its rules, mainly unbundling 3rd party libraries. 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, Fedora Linux and OpenSolaris.
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.9 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 6 platform and all specifications and standards required by this platform
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, CSS and XML areas defined by W3C
SQL (exact dialect and version depends on target database)
SSH2
JAXRS (JSR 311)
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
GlassFish v2.1 (Sun GlassFish Enterprise Server v2.1
GlassFish v3
NetBeans 6.9 published APIs javadocs http://bits.netbeans.org/dev/javadoc/index.html