EditorPlan610
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.
Contents |
Planning for NetBeans 6.10 (JET Team)
Performance
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)
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)
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.
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)
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 (Vita)
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)
New features
View hierarchy
M1 Issue 121357 New View Hierarchy (Mila)
Current list of problems (linewrap status)
Word Wrap
M1 Issue 89894 Add word wrap for text files (Mila) --- top voted ENH.
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)
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.
Lambda
Refactoring from anonymous inner class to lambda expression (hint)
Coin
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
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
Issue 181264 Add more sophisticated customizer of VM options
Issue 181265 Add filter warnings possibility into the output window
Misc Features
General Infrastructure Improvements
Issue 135492 Simplify Coloring Profiles creation (Vita)
Issue 177866 CSL SPI for allowing clients to register their own "navigator views"
Issue 170281 API for declaring item in Navigator to collapsed/expanded as default
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