Reverse Engineering Netbeans


Recently, I took a java course. A number of co-students had problems with version compatibility after they used their Netbeans, MYSQL, and Java stack at home and brought their work to school. So, I wanted to have the exactly same versions when I did my installation.

But, immediately after I had installed Netbeans 7.3 on Windows 7 (64 bit) and started it, a message popped up indicating that 12 updates were available. I’ve only just started, and already it wants to update.

How to turn the updates off? I don’t want them updating at all. And I especially don’t want automatic updates going on behind my back, the way Adobe Acrobat reader does.

Netbeans Help says to go into: Tools, plugins, Update. I turned off all the updates. This is what it looked like before I turned them off.

Netbeans 7.3 Check For Update

Netbeans 7.3 Check For Update

But the updates kept occurring. Why?

To begin, it turns out there are a LOT of plugins for Netbeans!
http://plugins.netbeans.org/PluginPortal/

And, if you look at the schema, there are 10 components to updates!

Netbeans Schema For Updates

Netbeans Schema For Updates

In Oracle Apps or OBIEE, you can change a setting, expecting it to stop a behavior of the software. But the behavior keeps occurring. Why? In Oracle products, you often have to go deep inside a lot of parameter files to change things. See also how I finally had to disable the updates in Acrobat Reader.

Using cygwin, I started to do some analysis. Some things really started to surprise me.

cd “/cygdrive/c/Program Files (x86)/NetBeans7.3”

—-

Altogether, Netbeans has 511 directories.

find . -type d | wc
511 511 20419

—-

Of these 511 directories, 51 directories concerned with updates! About 10% of all directories.

find . -type d | grep -i “update”


./platform/update/backup/netbeans/config/Modules
./platform/update_tracking
./profiler/update_tracking
./webcommon/update_tracking
./websvccommon/update_tracking

find . -type d | grep -i “update” | wc
51 51 1864

—-

Altogether, Netbeans has 6903 files.

find . -type f | wc
6903 6903 439105

—-

Of all the files, 875 have “update” in the file, or directory name. Over 10%.

find . -type f | grep -i “update” | wc
875 875 56466

—-

A lot of the time, information is stored in XML files. Of about 6900 files, Netbeans has approximately 1840 xml files. About 27%!

find . -type f -iname “*.xml” | wc
1840 1840 117760

—-

767 of all the XML files, are concerned with “updates”. About 41%!

find . -type f -iname “*.xml” | grep -i “update” | wc
767 767 49201

—-

There is a directory, profiler/update_tracking, with 28 xml files in it:

/cygdrive/c/Program Files (x86)/NetBeans7.3/profiler/update_tracking


org-netbeans-modules-profiler-utilities.xml
org-netbeans-modules-profiler.xml

—-

There is another directory, platform/update_tracking, with 70 xml files in it.

9 XML files are “autoupdate”.


./platform/update_tracking/org-netbeans-modules-autoupdate-services.xml
./platform/update_tracking/org-netbeans-modules-autoupdate-ui.xml

—-

There are 21 .jar “autoupdate” files.


./platform/modules/locale/org-netbeans-modules-autoupdate-ui_zh_CN.jar
./platform/modules/org-netbeans-modules-autoupdate-cli.jar
./platform/modules/org-netbeans-modules-autoupdate-services.jar
./platform/modules/org-netbeans-modules-autoupdate-ui.jar

—-

There are 43 files that have “update” in the filename:

find . -type f -iname “*update*” | wc
43 43 2784

—-

30 files have “autoupdate” in the filename.

find . -type f -iname “*autoupdate*” | wc
30 30 2099

—-

4 “autoupdate” xml files have the word, “enabled” in them.

grep -i “enabl” ` find . -type f -iname “*update*.xml” `

./nb/config/Modules/backup/org-netbeans-modules-autoupdate-pluginimporter.xml: <param name=”enabled”>false</param>

./nb/config/Modules/org-netbeans-modules-autoupdate-pluginimporter.xml: <param name=”enabled”>false</param>

./platform/config/Modules/org-netbeans-modules-autoupdate-cli.xml: <param name=”enabled”>false</param>

./platform/config/Modules/org-netbeans-modules-autoupdate-ui.xml: <param name=”enabled”>false</param>

However, setting the enabled parameter to false, made no difference. 😦

—-

It turned out that there was even more complexity to the GUI. In addition to turning off all the updates on the updates tab, you are also supposed to check the boxes in the Settings tab. I turned these off too.

Netbeans Update Settings

Netbeans Update Settings

Note what Help says: “By default, the IDE periodically checks the update centers for new updates. You can set the interval or specify that the IDE should not automatically check for updates.” So I also set the drop down to never check.

—-

However, every time I boot Netbeans, I still get the message about updates! Now, 13 updates are available. Seems so far that it is just checking, but not actually updating. That’s a work around. But I really would prefer to never see the message again, until I decide to update.

If anyone knows how to finally get the update message from continuing to pop up, please let me know.

—-

When you look at it, Netbeans, like Acrobat Reader, has put a HUGE effort into updating the product. Is this commendable? Or, is it an indication that they simply don’t expect the software to work at all, and so you must update every time you turn it on?

—-

Useful Links:

Netbeans Hack to turn of the updates:
http://wiki.netbeans.org/DevFaqNetBeansFullHack
Unfortunately, it doesn’t include instructions on how to turn it on. 😦

I found this:
http://code.google.com/p/nb-ldap-explorer/source/browse/nbactions-netbeans-ide.xml
but not the file it refers to: nbactions-netbeans-ide.xml

Netbeans DevFaqDisableAutoupdate
http://wiki.netbeans.org/DevFaqDisableAutoupdate

DevFaqAutomaticPlatformDownload
http://wiki.netbeans.org/DevFaqAutomaticPlatformDownload

NetBeans Architecture Answers for Auto Update Services module
http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-autoupdate-services/architecture-summary.html

Advertisements

2 Responses to Reverse Engineering Netbeans

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: