New page: NetBeans created AutoUpdate technology in 1999. These days it is a typical system for keeping your Android, [iOS]] or Linux distribution up to date. At the end of last cent...
New page
[[NetBeans]] created [[AutoUpdate]] technology in 1999. These days it is a typical system for keeping your [[Android]], [iOS]] or [[Linux]] distribution up to date. At the end of last century it was a kind of revolutionary system. Originally the update was driven only through [[UI]], but later we added a command line interface. That allows the installer to use the [[AutoUpdate]] to get the most recent of binaries and also download parts of the system that aren't installed by default.
=== Distributing Undistributable ===
From time to time [[NetBeans]] have problems with licenses. Once we could not distribute [[Junit]] because it was using archaic [[CPL]] license. Sometimes we don't want to distribute [[GPL]] code. [[AutoUpdate]] is a perfect way to workaround it. Let's demonstate that on the case of [[NetBeans]] [[Javac]].
<source lang="bash">
$ unzip ~/Downloads/netbeans-8.1-201510222201.zip # prepare NetBeans 8.1
$ find netbeans/ | grep nbjavac # find NetBeans Javac binaries
netbeans/java/update_tracking/org-netbeans-lib-nbjavac.xml
netbeans/java/config/Modules/org-netbeans-lib-nbjavac.xml
netbeans/java/modules/locale/org-netbeans-lib-nbjavac_zh_CN.jar
netbeans/java/modules/locale/org-netbeans-lib-nbjavac_ru.jar
netbeans/java/modules/locale/org-netbeans-lib-nbjavac_pt_BR.jar
netbeans/java/modules/locale/org-netbeans-lib-nbjavac_ja.jar
netbeans/java/modules/org-netbeans-lib-nbjavac.jar
$ find netbeans/ | grep nbjavac | xargs rm # remove them
</source>
Now, if you started [[NetBeans]] their functionality would be seriously impacted. In fact one couldn't edit any [[Java]] source, because all the lexing and parsing of [[Java]] code is handled by '''nbjavac''' module. However with [[AutoUpdate]], there is an easy fix, just execute:
<source lang="bash">
$ ./netbeans/bin/netbeans --modules --refresh --install .*nbjavac.*
</source>
this is the command line interface to [[AutoUpdate]]. It instructs it to connect to ''update centers'', and download ''nbjavac'' module. Once you restart your [[NetBeans]], the [[Java]] editing capabilities are back. This allows us to distribute pure [[NetBeans]] without 3rd party libraries and download them only per user request to their computers.