Revision as of 11:21, 27 August 2010 by Vstejskal (Talk | contribs)

Disclaimer: The content of this NetBeans development wiki page is intended for pre-planning purposes ONLY. The development, release, and timing of any feature or functionality described here should not be treated as final, and is subject to change at any time at the sole discretion of Oracle. For information about NetBeans software releases please visit the NetBeans Roadmap.


Planning for NetBeans 6.10 (JET Team)

High Level Plan

Plan for previous release

Plan for further releases


Improve speed of Go To Type

M1 (Issue 177274) Improve the speed of Go To Type by memory caching. Currently there is an experimental option which forces the java indexes to be loaded into memory. The final solution should allow dynamic behavior LRU. SRef MB per msec should be the best policy as it is compatible with GC. (Tomas) Image:yes_EditorPlan68.png

Here is link to benchmark written by Jarda: File:Uber-goto-type-cache.diff

Improve speed of Go To File

M1 The Go To File is using Lucene based index which is loaded from disk whenever it's needed. This solution is superfluous, because the indexed file names are already part of the timestamp LongMap, which is always in memory. Integration of the support SPI for searching (Issue 185168) makes it possible to rewrite the Go To File to be LongMap based. (Tomas) Image:yes_EditorPlan68.png

The LongMap is not kept in memory, it's loaded on demand and even caching it (SoftReference caching) does not retain it in memory. The prototype shown that the Lucene index is slower for small number of projects (<10) but when the number of projects is high (>70) the Lucene has 5 times better performance than the SoftReference + LongMap solution. Patch File:Go to file with softrefs.diff

There is still one possibility - keep the LongMap always in memory (the memory consumption needs to be measured). The consumption can be decreased by Changing LongMap<String> into LongMap<{simpleName,ParentRef}> where parentRef will be pointer into some Nametable.

Full text index

Find Usages and related refactorings for methods and fields can be made faster (Issue 169958, Issue 120145) - a full text index would be very helpful (Tomas)

Remove obsolete code in editor

Lower the editor memory footprint by removing the old Syntax (the former version of lexer) - this work mainly includes isolating and deprecating the old formatter API/SPI (Issue 189638), finishing Typing Hooks SPI (Issue 152655) and rewriting the existing java indenter (Vita) Image:yes_EditorPlan68.png

Transactional index

(Issue 182653) Use data from old index while indexing is running (where possible) Some features like Lucene Indexes already lock the index only in time of index update not during the whole indexing but the index reader client is negatively affected by the IO. Improving the index caching should help, see Improve Go To Type.

Complete Transactional Index support requires several changes:

  • The threading model of parsing has to be changed from a single dedicated parser thread to a concurrent model where the indexer (parser) is called by a non dedicated thread concurrently to the parser thread. This is an incompatible API change in the threading model which may affect existing languages depending on the single threaded model. On the other hand the Indexing API never declared the single threaded model.
  • The disk caches have to be transactional. The Lucene index supports transactions, but a custom storage implementation such as Java Signature Files have to be updated to support transactions as well. The transactional cache introduces higher IO load as the disk operations are done twice (the first time in a log phase, the second time in a commit phase - simpler).
  • The biggest problem is how to avoid OOM situations. Currently the dedicated parser thread uses VM telemetry to prevent OOME. This approach will not work as there will be more parsing threads running concurrently and consuming memory.
  • The JavaCustomIndexer and JavaBinaryIndexer have to be rewritten so that they can handle requests even before the up-to-date check is finished.

Misc performance improvements

Issue 187282 (cndreq, API) Allow to exclude embedded langs for source root (Rasta)

Issue 172312 (cndreq) Lucene 2.4.1 consumes more memory than it should

Issue 186744 (API) Adding library causes huge I/O load - deleting files on background does not solve the problem, it's already done on background. The rename and clean up in idleIO will work fine. But the idleIO is not an API (even friend API). It's in the MasterFS FileChangeManager. This requires an idleIO to be added at least into the ProvidedExtensions like runPriorityIO. (Tomas)

M1 Issue 188579 Upgrade Lucene Library and supporting classes. The supporting classes for Lucene were written 5 years ago when it was impossible to do large queries (due to TooManyClausesException) and the support had to implement these queries by low level IndexReader API. Current lucene implements the standard queries using FilterQuery over IndexReader (similar to NB support). The support should be migrated to use these new API. This task also requires measurements of performance impact. (Tomas) Image:yes_EditorPlan68.png

New features

View hierarchy

M1 Issue 121357 New View Hierarchy (Mila) Image:yes_EditorPlan68.png

Current list of problems (linewrap status)

Linewrap closed issues

Performance tests

Word Wrap

M1 Issue 89894 Add word wrap for text files (Mila) --- top voted ENH. Image:yes_EditorPlan68.png

Invisible characters

M1 Issue 4619 Editor should allow you to view non-visible characters such as tabs, spaces, carriage returns, and EOF. (3rd top voted ENH). (Mila) Image:yes_EditorPlan68.png

JDK 7 features

Work started in http://hg.netbeans.org/jdk7 with builds available here http://bertram.netbeans.org/hudson/job/jdk7/ .

For more info see Java_EditorJDK7.

They will have a build containing what they want to demo available during August.


Refactoring from anonymous inner class to lambda expression (hint)


http://openjdk.java.net/projects/coin/ http://wikis.sun.com/display/ProjectCoin/2009ProposalsTOC JDK7 JavaOne demos supported from NetBeans:

  • select a base for a literal (allow to say I want to have this literal in: binary, octal, decimal, hexa).
  • multi catch (basically what we have now)
  • ARM - some refactoring (hint) converting to the ARM (ARM is not yet in tl)
  • vararg changes supported (not yet in)

(most probably after J1)

  • colletions
  literals List<String> s = {"whoo", "hoo"};
  bracket support s[1].

JNLP and WebStart improvements

Issue 181260 Do not add Class-Path attribute into applet jar Image:yes_EditorPlan68.png

Issue 181261 Provide a way to mark JNLP jars as eager or lazy.

Issue 181262 Add "indexMetaInf" attribute into jar task

Issue 181263 Provide UI to manage certificates to sign the JNLP application (Maros)

Issue 181264 Add more sophisticated customizer of VM options (Rasta)

Issue 181265 Add filter warnings possibility into the output window

Misc Features

General Infrastructure Improvements

Issue 135492 Simplify Coloring Profiles creation (Maros)

Issue 177866 CSL SPI for allowing clients to register their own "navigator views" Image:yes_EditorPlan68.png

Issue 170281 API for declaring item in Navigator to collapsed/expanded as default (David)

Issue 168822 (cndreq) Allow access to Indexer storage

Issue 144579 (cndreq, API) Add support for child nodes to MimeLookup Preferences

Issue 182388 (j2ee,API) Provide api to set the DisplayName of a Library created programmatically (Tomas)

Usability Improvements

hIssue 89607 Double-click-drag-select and Triple-click-drag-select

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo