본문 바로가기

Scrap

기대되는 NetBeans 6.5 Development Plan

NetBeans 6.5 Development Plan

DRAFT

Requirements Summary

  • Deliver a NetBeans update release in the 2008 calendar year focused on development tools for dynamic scripting languages
  • Provide enhanced database tooling support and improved integration with MySQL
  • Remove the UML dependency on the Tom Sawyer graphics library
  • Address top adoption blockers and potential accelerators as identified by VOC

Schedule (Tentative)

Milestone Code Freeze Date
Milestone 1 June 15
Feature Complete July 13
Milestone 2 BETA July 31
UI Frozen August 10
Code Freeze / High Resistance August 31
FCS Sept 30

Feature Highlights

NetBeans 6.5 is an update release defined by a relatively short release cycle and a targeted list of primary features, mostly notably in the area of PHP editing & debugging, Ajax dynamic page authoring, and database tooling. NetBeans 6.5 will build on features that were available in 6.1 from the main distribution or via update center. These include the JavaScript editor, Ruby & Rails tooling, jMaki, PHP early access and JavaScript debugger preview.

NetBeans 6.5 will continue to build on its core values -- the superior out-of-the-box experience and excellent support for Java SE/EE/ME platform features. Although not a primary focus of this release, incremental improvements will be made to the Java SE & EE tools infrastructure which will benefit the end user in the form of increased responsiveness and robustness.

NetBeans 6.5 will address some of the deficiencies in the Project system area to make it more flexible with respect to custom project structures. This should make it easier for users to migrate their existing projects to NetBeans.

As with 6.1, a set of pre-configured NetBeans distributions will be available, allowing users to tailor the download and installation experience according to the technologies they are most likely to need. With the emergence of first class tools for PHP in 6.5, a new configuration will be added to the download page providing an IDE environment optimized for PHP.

Native packages will be produced for Linux (Ubuntu, Debian, etc), and OpenSolaris IPS

NetBeans 6.5 will support GlassFish v2 ur2 (SJSAS91_UR2). The IDE will require Java SE 6 to run, although development of applications targetting previous Java SE versions will still be supported.

In addition to GlassFish v2, NetBeans 6.5 will bundle and support a limited release of GlassFish v3 targeted at web tier development currently known as "v3 Lite". Since v3 is not a replacement for v2, both appservers will be bundled with the Web/JavaEE and Full distributions. The GlassFish v3 Ruby runtime support will be bundled with the NetBeans Ruby distribution.

The UML toolset will undergo significant changes to replace the closed source graph library, Tom Sawyer, with the open source NetBeans Visual Library. A limited number of UI enhancements and optimizations will be included as a result of this migration.

The core platform in NB 6.5 will be compatible with the previous 6.x releases. All core APIs previously declared as _stable_ will be supported. However, certain changes to the Generic Scripting Framework (GSF) and Java Parsing API infrastructure may require incompatible changes in this area. Clients depending on the 6.1 version of GSF and the Java Parsing API will need to be updated to work with NB 6.5.

Quality Criteria

The following metrics will be used to assess product quality & readiness:

  • number of open P1, P2, and P3 defects in IssueZilla
  • bug trends, especially approaching major development milestones
  • results from community NETCAT survey

The overall goal is to maintain a level of quality that is equal or greater than previous releases for 'mature' features with reasonable bug limits defined for new features. Details of the overall 6.5 quality criteria can be found here .

NetBeans Distributions

The following NetBeans configurations will be available from the 6.5 download page:

Configuration New in 6.5
Web & Java EE Add JavaScript/Ajax support
Mobility
Java SE
Ruby
PHP New in 6.5 (FCS release)
C++
All (Full distribution) Add PHP, JavaScript/Ajax support

NetBeans will also be distributed with the following bundles:

  • JDK Bundle
  • Java EE 5 Tools Bundle
  • MySQL GlassFish Bundle

Feature Detail

Priority Definitions

  • P1 - Defining, must-have, won't ship the release without it. These are the business drivers for the release and should map directly to the primary themes
  • P2 - Committed for the release (i.e. planned, staffed, etc.) but would not necessarily derail the release if the feature had to be dropped. Note: dropping a committed feature should not be taken lightly as it impacts everyone involved in the support and promotion of that feature to replan around it.
  • P3 - Smaller 'nice-to-have' features for the current release or advanced development work targeted for a future release that could be dropped or deferred with minimal impact to 6.5.

Scripting

Support for scripting languages has two motivations: the Java platform is becoming multilingual and the Web 2.0 relies heavily on scripting. NetBeans 6.5 will include editing and debugging support for PHP, JavaScript (client & server), Ruby, and Groovy.

PHP Language & Project Support

P1 Staffed:

  • Finish and stabilize features previewed in the PHP 6.1 Early Access release
  • Support PHP 5.3 features, changes to PHP lexer, parser, indexing, etc

P1 Not staffed:

  • Refactoring across html, css, & JavaScript
  • PHP Framework support (Zend or CakePHP)
  • PHP Unit Test support

P2:

  • Run/Debug Configurations - allow switching between run/debug in browser, run/debug from commandline
  • FTP Support - provide upload & download actions

Ruby

P2:

  • Performance improvements in indexing, code completion, etc.
  • UI Test Runner 134779
  • Ruby 1.9 / Ruby 2.0 support http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9
  • Ability to set exception breakpoint (might need implementation on the backend side) 99770
  • Ability to apply breakpoint hit condition (might need implementation on the backend side) 100096
  • Interactive debugging console 107761
  • Type analysis improvements, for example automatically inferring types of some methods, and using this in computing the type of expressions involving calls
  • Additional Refactorings
  • Ability to search ruby core and gems 130366
  • Tail logs in IDE, ideally colored 115325
  • Better integration with the DB explorer: actions for jumping from a Rails model to the corresponding db table and for quickly viewing data.
  • Add support for Warbler

Groovy

P2:

  • Groovy / Grails support in main distribution
    • Groovy editor
    • GSP editor
    • Integration with Java project types
    • Grails project support
    • Debugging
    • Refactoring

JavaScript / Ajax

P1:

  • JavaScript Editor
    • <features TBD>
  • Ajax Components
    • <features TBD>
  • Library Manager
    • New library packaging format for bundling JavaScript libraries & widgets, integrated with the existing Library Manager
  • JavaScript Client Debugger
    • Supported browsers
      • Firefox
      • Internet Explorer
    • Add & delete breakpoints in JavaScript code
    • View & navigate JavaScript Callstack
    • View & navigate source artifacts
    • Manage debugger session
    • View local variables
    • Set & delete watches
    • View browser DOM in the IDE
  • View CSS styles for DOM elements
    • Monitor AJAX transactions
    • Project integration for J2EE, Ruby, PHP, & Groovy projects:
      • Debug Client Session: Run the project and launch a JavaScript debugging session in NetBeans, attached to the default desktop browser where the client-side application is running
      • Source Mapping: Correlate a client-side application (browser DOM) identified by a URI with the corresponding source file in the project.

Core / Platform

Projects

P1:
  • Support for custom project structures (TBD)

P2:

  • Ant Projects
    • merge "from Scratch" and "with Existing Sources" project wizards
    • versioning API for sharable libraries including UI for upgrading shared libraries when new versions are available
    • utilizing Maven repositories and index to resolve 3rd party library problems. Using Maven remote repositories for creating NetBeans library definitions
    • improvements in project import and more precise autoconfiguration of freeform based on analysis of the build script (AutomaticProjects)
    • evaluate possibility of handling natively foreign projects: (NativeEclipseProjects)
  • Maven Projects
    • remote repository browsing, querying, management, bootstrapping version control checkout
  • Platform
    • explorer+nodes performance improvements (FitnessViaLaziness)
    • visual library changes (VisualLibrary)
    • treetable view redesign taken from David Strupl's contrib/ttv module?
    • finish killing advanced options - File Recognition panel
  • AutoUpdate
    • evaluate possibility of verification of 3rd party plugin signature against CA and corresponding changes in Plugin Manager's installation wizard UI
    • slightly change behavior of balloon-like tooltip
  • Window System
    • run smoothly on Nimbus LF
    • add new API for configuring existing visual aspects of window system - enable/disable DnD, floating windows, JFrames x jDialogs, tab layouts, sliding windows on/off, or only on some sides, native x cross platform L&F, fixed layout
  • Other
    • Quick Search - text searching in main menu, actions, modules, options, files, projects. Similar to Vista OS menu, similar to competitor's quick access feature. (#134398 ), see also overall UI and Func spec
    • explain icon badges in tooltips (#123469) - new users have currently no clue what icon badges indicate
    • Integrate terminal emulator as a core module. Provides Improved terminal handling (for IRB, Rails Console, etc). This involves terminal emulator code to handle readline-like behavior in the subshell, to handle colorized output, etc.

Java EE/Web

P2:

  • Eclipse project import for web projects and Java SE projects
  • Redeployment of Java Web applications in the background
  • Quality improvements and infrastructure changes in HTML/CSS/JSP editing

Frameworks

P2:

  • Spring Framework
    • Editor Hints
    • Navigation
    • Find usages of beans by other beans
    • Refactoring
  • Hibername Framework
    • HQL/SQL Editor/Translator
    • Reverse Engineering - Code Generation of POJOs and Mapping files
    • Refactoring Hibernate Mapping files
    • Hibernate Annotation support
  • JPA
    • improvements on DB Schema -> entity generation
  • Java Server Faces Framework
    • CRUD generator enhancements
      • Generate default stylesheets
      • Option to generate Ajax-enabled application
      • Post-gen database modification
    • Facelets support (Delivered via beta UC)
    • Refactoring improvements
    • Find usages improvements
    • Code completion improvements
    • Hyperlink support

GlassFish v3 "Lite"

In addition to current support for GlassFish v2:

P2:

Java Debugger

P2:

  • Debugger UI redesign phase 1: The long term effort of debugger redesign starts with a new debug view (representing a debugger "control center" and unifying sessions, threads, and call stacks) and reworked multi-thread debugging support (based on extensive feedback received). Focus put on java debugger only, should minimally affect other debuggers using debugger core API (for 6.5).
  • Performance/architecture fix - listening to global context changes - IZ 133682
  • Each debugger can specify its set of views - IZ 122740

GUI Builder

P2:
  • Support for Nimbus Look and Feel (new L&F in Java 6u10)
    • Tweaks and fixes to make it work in design preview
    • Easy to select as the application look and feel (project properties of Swing App Framework-based application)

P3:

  • Do not generate fully qualified names - IZ 7781, a top voted RFE
  • Support for copy refactoring (Swing App Framework) - IZ 130099
  • Eliminate Advanced Options, move to new Options UI - IZ 111785
  • Integrate SwingX library
    • selected components available in palette
    • as a module on update center
  • Usability enhancements
    • Model customizer for JTree - IZ 75446
    • ...

NetBeans Profiler

P2:
  • Add support for Maven projects IZ 79327
  • Various HeapWalker improvements

P3:

  • Add support for profiling JVMTI-capable mobile devices (in cooperation with Mobility team)
  • Allow creating remote packs from Attach Wizard - IZ 136907
  • Attach Wizard usability improvements - IZ 79327
  • Aggregated CPU time by functionality - IZ 80495

VCS

P2:
  • Performance and compatibility fixes of file system integration
  • Mercurial support - fixes and most requested usability and perf. improvements; no new features
  • Subversion support - client adapter update, using Java HL

P3:

  • Diff improvements - list TBD
  • History search improvements - for Hg and SVN
  • ClearCase support - improve UI to help people start with ClearCase in NetBeans

Database / MySQL

P1:

  • Improve Developer Lifecycle
    • Code snippets for PHP queries
    • Tight integration w/ SQL Editor
    • Database connection dialog (non-JDBC specific)
  • SQL Editing/Executing/Results
    • SQL history
    • Code completion
    • Metadata model API
    • Edit data from query result

P2:

  • Display number of returned records/impacted rows
  • Code snippets for SQL
  • Ability to sort results based on column
  • Ability to set page size
  • Support for Sakila database
  • Bundle SQL Workbench with NB
  • Invoke SQL Workbench from NB
  • Show execution plan for MySQL
  • Matchbox - An entry box that filters results based on what you type in
  • Support for sequences/auto-increment
  • Enhancements to DB Explorer API
  • Quick view of table info
  • Quick view of column info

Java / Editor Technology

P1:

P2:
  • Javadoc Hints Batch Processing
  • Improve Embedding Support in Editor
    • Provide unified LexerInput across multiple joined embedded sections
    • Use highlighting layers registered for embedded languages

Installation / Packaging

P1:

  • Native packages for Ubuntu
  • Native packages for OpenSolaris IPS
P2:
  • Download page disconnection from the build process
  • Automated detection of 64-bit Java on Windows x64
  • Installer bootstrap w/ JRE
  • Installer support for 3rd party distros

Web Services

P1:

    • PHP Web Services
  • REST based Web Services
    • TBD
  • SaaS Support
    • Support for languages other than Java:
      • PHP
      • JavaScript

P2:

  • SOAP based Web Services
    • Review and stabilize web service APIs
      • Extend J2EE server APIs for web services
      • Web Services Cluster
      • Module that depends on EE, another module that does not depend on EE
    • SOAPUI integration points
      • WS-I Validator
      • Use XML editor in SOAP UI
    • Implement new wsimport features
    • JCAPS Requirements
      • Client support in BPEL project
    • Simplified client creation
    • Configure Axis in project customizer (P2)
    • Customization support when there are WSDL or XML Schema conflicts or problems (P2)
    • Metro RFEs
      • Replace usage of internal Metro APIs with public APIs from Metro group - WSDL to Java, Java to WSDL
    • Web Service Designer
      • WSDL preview tab
  • REST based Web Services
    • Add Spring support
    • Query Support - Allow specifying a query in the URL to constraint the resulting data returned.
    • Support for auto-generated primary key
    • Caching support - allowing the client such as the web browser to query the service to determine if it needs to refetch the data. We will use the pre-condition feature in the jsr-311 api to do this.
    • Revisit generated PersistenceService - improve our generated PersistenceService to make it adapt to different environment and be able to support JTA. In addition, we also need to figure out how to make it a managed service so we can take advantage of code injection for EntityManager and UserTransaction.
  • SaaS Support
    • Add support for new YouTube API

XML

P1:

  • Improved JSON support

P2:

  • Lexer migrations
  • Schema generation from instance
  • Rewrite XML Navigator
  • Schema aware code completion enhancements

SOA

P2:

UML

Complete replacement of the UML drawing area control

P1:

  • Activity, Class, Sequence, State, and Use Case diagrams
  • Design Center
  • Web Report
  • 6.1 diagram import
  • Diagram performance
P2:
  • VOC
  • UML code gen support for JSR 223

C/C++

P2+:

  • Code completion accuracy improvements
    • zero-percent inaccuracy: no incorrect choices
    • "old" style (minimal use of templates) 90+ %
    • "new" style template intensive projects 85+ %

P2:

  • Remote Development client-server model LAN environment
    • Windows client to Solaris (x86 or Sparc)server
    • Solaris (x86) client to Solaris (x86 or Sparc) server
  • Toolchain personality integration module
    • Compiler options
    • Partner engagement
    • Toolchain "bundling" for Windows
  • Package project
    • SVR4 format
    • IPS (OpenSolaris) format
    • RPM format
    • Debian format
  • gdb-lite debugger enhancements
  • Call graph (productize technology preview)
    • Table view only with one expansion per user action
    • Multiple current table views accessed via tab control
  • OpenSolaris Explorer (Productize pre-release version demonstrated at CommunityOne 2008)
  • NetBeans 6.5 Compatibility Changes
    • Update DataLoaders per changes in the Performance Improvements section (see also Jarda's FitnessAgainstForgetfulness spec)
    • Remove several Editor Setting entries in Advanced Options
    • Update Code Completion color scheme - ensure compatibility with NetBeans colors

P3:

  • Publish project
    • Solaris IPS Repository
    • Linux Debian Repository
  • Where used accuracy
    • zero inaccuracies
    • 85+% accuracy
  • Syntax error highlighting (productize technology preview)
    • Use ANTLR generated parser + C/C++ grammar as language model

Dependencies:

  • Finalization of Solaris IPS package format
  • (for toolchain personality) Partner involvement

Mobility

P2:

  • UEI 2.0 design and implementation (CDC & MIDP 3.0)
  • Support for WTK 3.0
  • Support for Acadia (Java FX Mobile)
  • Entry support for Blueray/IPTV (depends on WTK 3.0)
  • API support for Custom Components
  • New set of the Rich UI Components
  • Custom Components based on the Data Bindings libraries
  • Custom components based on source rather than compiled binary (CR, Sprint)
  • Editor improvements, permissions hints (CR, Sprint)
  • Implementation of JSR 271 - Mobile Information Device Profile 3.0

Usage Tracking

P2:

  • Instrumentation in the IDE that records specific actions and features accessed by the user
  • Mechanism to summarize, preview, and transmit anonymous usage data for statistical analysis
  • User must explicitly 'opt-in' to enable usage tracking triggers & reports

Performance Improvements

P1:

P2:

  • Rewrite DataLoader's registration and use - make file recognition faster, based on mime type
  • Scalable debugging for enterprise - avoid many debugger types (we have about 10 debuggers) to have their own listeners on everything changing in the IDE, implement efficient registration and listening.
  • Fix performance of versioning filesystems - make the UI performance of a versioned filesystem comparable to a local filesystem (max 30% slower in UI responsiveness)
  • Start scanning of project classpath after all projects are opened - projects will open faster, will have complete classpath sooner (e.g. for the Go to Type dialog), avoiding lots of events about classpath modification during project opening, simpler and better defined procedure of opening a project, potentially less work done.
  • Navigation working and responsive during up-to-date scanning - at least Go to Type dialog and Ctrl-click in editor.
  • Compile on save - incremental compilation of java files every time a file is saved; should speed up time to run a project or file (i.e. test changes) See Java & Editor Technology above
  • White list of classes loaded during startup - new test, supplement black list (already implemented) to gain control over what's happening during startup; thoroughly monitor additions
  • Make sure closed projects (P2) and closed document views (P3) don't leak, make part of commit validation.

Dependencies

  • App Server: GlassFish plugin
  • SOA/JBI: Big portion of SOA tooling in NB65