[RSS]

Future Press Release

For release in October, 2008

NetBeans Performance team is proud to co-contribute to the success of NetBeans IDE 6.5, the latest and greatest release of NetBeans IDE of all times. Although the performance was not a major theme for the 6.5 release we are glad we managed to do improvements in various visible areas. We are also fond of stiffening the verification framework that we use to prevent regressions, so the like a hood of loosing all those hardly extracted milliseconds and kilobytes is lowered for now and future releases.

In contrary to NetBeans 6.1 release (more info at Fitness61PressRelease), which was fully performance centric, and where we managed to reach tremendous user visible improvements in terms of scalability and perceived performance in critical areas, the release 6.5 contained much less performance goals. Still we have reached quite a visible improvements in many of them.

Focus on the Enterprise

As NetBeans IDE has been for many years a choice for individual developers due to its excellent support for new features and coding productivity. However as NetBeans wants to simplify life of teams, and corporate developers as well, we decided to shift the focus of performance team on the issues that are most painful when coding and working in a group.

The most central point of every group of developers is the access to sources and the way one converts them via build execution into binary products. We are glad to significantly improve and unify the behaviour of sources on top of plain filesystem as well as those hosted on enterprise level version control systems like CVS, Subversion, Mercurial and ClearCase. Due to the application of innovative unified black box testing from the bottom the teams working on low level disk operations managed to find even the most little differences between various operations different source control systems and eliminate them. With additional help of the history breaking I/O counting security manager we could also get the number of useless disk accesses on par between all of these implementations. As a result we can announce to every enterprise level developer that the access to his sources on par with access to local files without version control back end and it greatly benefits from sharing all the performance improvements done in this area for previous, 6.1, version.

Simplified Testability

Writing tests for NetBeans based application was never as easy as it is now and performance team is glad to have contributed to this as well. The testing infrastructure dates to early years of this century when its creation was driven by the needs of our quality department. It took time before the developer caught up with this effort and started to write tests and various tools and wizards to simplify tests development. However the initial delay caused a gap between the developers and maintainers of the testing framework which, in spite many tried, could never be fully overcame.

The release 6.5 is great step forward in this terms of simplicity, configurability and use of common development tools when testing NetBeans based applications. The tests are now fully integrated into the apisupport UI and can be edited, executed, debugged, profiled without any additional tool than NetBeans IDE 6.5. Its quite easy to use NetBeans testing libraries like NbJUnit, Jemmy, Jelly. However, as these libraries no longer play any special role in the system, it is quite easy to integrate with industry standard testing tools like JMock, FEST, etc.

The performance testing infrastructure could be greatly simplified with use of the new testing support and is now instantly ready for us by any developer. With just a few clicks away, everyone can run the same performance tests that we execute daily and measure their effects on own computer, own builds and own modifications. Due to the testing infrastructure improvements we are now quite well positioned for future grow and no regressions in the performance aspects of NetBeans projects.

Unification of Various Parts of the System

Deep analysis of presentation of sources in the NetBeans IDE revealed a surprising result - various parts of the system perform certain operations multiple times in a row. The lower level unit computes some data, makes a decision on their values, forgets them and passes the control to higher level part of the system. This parts requests almost similar set of data again, and when it obtains them does a decision. Indeed this kind of forgetfulness is not optimal and the performance team with great pleasure announces that release 6.5 managed to greatly optimize sharing of data between many subsystems in the NetBeans IDE.

The performance team lead, initiated or over sighted necessary architecture changes that prevent this dynamic data loss - e.g. situation when the same or similar data were unnecessarily computed multiple times. With new APIs between mime type resolvers and data object loaders and between the Java parsing infrastructure and Java project presentation we managed to reduce the time needed to expand folder and package view by order of magnitudes and as such greatly improve developer productivity.

Getting More While Doing Less

Rich: Can you talk add a quote here about your experience with source packages?