throbber
a2) United States Patent
`(10) Patent No.:
`US 6,571,389 Bl
`Spykeretal.
`(45) Date of Patent:
`May27, 2003
`
`
`US006571389B1
`
`(54) SYSTEM AND METHOD FOR IMPROVING
`THE MANAGEABILITY AND USABILITY OF
`A JAVA ENVIRONMENT
`Inventors: Andrew W. Spyker, Raleigh, NC (US);
`Matthew David Walnock, Cary, NC
`(US)
`
`(75)
`
`.
`(73) Assignee:
`
`,
`,
`,
`Internationa] Business Machines
`Corporation, Armonk, NY (US)
`
`(*)
`
` Nolice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`US.C. 154(b) by 0 days.
`
`.
`(21) Appl. No.: 09/300,041
`(22)
`Filed:
`Apr. 27, 1999
`GOsF 9/44
`(1)
`Int. 1’
`pO
`in
`(52) US. Ch seeeeeeeseeiee 717/176, 717/176; Oot
`(58) Field of Search «000... TLL; 709/204,
`709/106, 242; 717/168-178
`
`cre rrsrreseccecrccceceaensseasscersstecseras seers
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`3/1998 Kullick et al. oo. TA7/AL
`5,732,275 A *
`5/1998 Cole etal. ...
`« 717/176
`5,752,042 A *
`6/1998 Kullick etal.
`vee FAUT/AL
`5,764,992 A *
`.
`5,966,540 A * 10/1999 Lister et al.
`« 717/178
`5,983,348 A * 11/1999 Ji wees
`. 713/200
`5,995,756 A * 11/1999 Herrmann .
`. 395/712
`6,009,274 A * 12/1999 Fletcher etal. ............. 395/712
`
`
`
`3/2002 Parthesarathy etal. ..... 717/168
`3/2002 Blaisdelletal deveeeeeeeees,oe
`4/2002 Forbes et aloo
`
`6,353,926 B1 *
`6,357,019 B1 *
`6,381,742 B2 *
`.
`es
`cited by examiner
`Primary Examiner—Gregory Morse
`Assistant Examiner—Chuck Kendall
`(74) Attorney, Agent, or Firm—Jeanine S. Ray-Yarletts;
`Marcia L. Doubet
`
`(57)
`
`ABSTRACT
`
`:
`Amethod, system, and computer-readable code for improv-
`ing the manageability and usability of a Java environment.
`we advantages of appletsand applications are compined,
`while avoiding particular disadvantages of
`both, resulting in
`a technique wherebyall Java programs are executed without
`relying on use of a browserto provide a run-time environ-
`ment. Techniques for improving the packaging of Java
`components, including run-time environments and exten-
`sions as well as applications, are defined. Dependencies are
`specified in a manner which enables them to be dynamically
`located and installed, and enables sharing dependent mod-
`ules (including run-time environments) amongapplications.
`The dependency specification technique ensures that all
`dependent code will be automatically available at run-time,
`without requiring a user to perform manualinstallation. ‘The
`run-time environment required for an application is
`specified, and a technique is provided for dynamically
`changing the run-time that will be used (including the ability
`to change run-times on a per-program basis), without requir-
`ing user intervention.
`
`33 Claims, 11 Drawing Sheets
`
`
`
`Read registry
`Create or
`.
`file of current
`
` Check
`
`
`
`append
`Open
`Read appropriate
`dependency
`runtime as
`
`
`
`
`temporary
`specified
`environment
`list of registry
`specified in
`environment
`registry
`settings(i.e.
`
`
`
`
`application's
`file
`variables
`file
`classdir, main
`
`
`
`registry file
`class)
`
`
`
`
`700
` User
`requests
`
`application
`execution
`
`Jobbi Client Installation
`
`
`
`
`
`
`
`Append
`
`Set environment
`temporary
`Call
`|
`
`oa
`environment
`variables and
`
`
`
`
`platformspectic variables with runtime
`
`start system
`
`
`
`
`process
`settings
`
`Page 1 of 22
`
`GOOGLEEXHIBIT 1030
`
`Page 1 of 22
`
`GOOGLE EXHIBIT 1030
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 1 of 11
`
`US 6,571,389 B1
`
`
`
`Bd1IAEQGJajdepySdiIA8qSdIA8G
`
`
`
`
`
`
`
`AejdsigKe\dsigSOeBLS}uU|SoeLS}U]
`
`
`
`
`
`ZL
`
`JOSSAD01
`
`TOld
`
`ocSh
`
`OF
`
`
`
`AioweayyBIeLS}U]
`
`JoJaepy
`
`82OL02
`
`PL
`
`pz92zzzz
`
`Page 2 of 22
`
`Page 2 of 22
`
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 2 of 11
`
`US 6,571,389 B1
`
`(j1y101d)©IH SYJOMION,
`
` GZ°X“dOL
`\ONyl
`SSOTOIIAAAnRaawel4NooPvad
`
`POdTAA
`
`s}uaq{
`
`,,i,v=)adOL
`
`SSOPATTIA,
`
`syu9T[)
`
`Page 3 of 22
`
`Page 3 of 22
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 3 of 11
`
`US 6,571,389 B1
`
`
`
`
`
`equosep‘a"!)sejedoid
`
`
`
`‘salouapuadepuolesijdde
`
`
`
`(sjuewayinbasauujund
`
`yea
`
`Mau
`
`iqqor
`
`advr
`
`see alls
`
`
`
`Jabeyoe,1qqor
`
`IqqorJosplayAyloeds
`
`SLEBll}
`
`dvragor
`
`occ
`
`uoneoddy
`
`aver
`
`(pasayyeun)
`
`iqqor
`
`saiedold
`
`Iqqor
`
`Jebeyoed
`
`uoyeojddy
`
`ayVe
`
`
`
`pling|EUON
`
`$Se00/q
`
`€Old
`
`Page 4 of 22
`
`Page 4 of 22
`
`
`
`
`
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 4 of 11
`
`US 6,571,389 B1
`
`FIG. 4A
`400
`
`
`405 Property Key - displayname
`Displayname
`
`
`408 Property Key - displayicon
`Display icon
`
`
`
`410 Property Key - version
`
`Commaseparatedlist in form of Major.Minor.Rev.Build version information
`
`
`
`415 Property Key- jobbitype
`
`Either application, runtime, or extension
`
`
`application - Can be addedto the jobbi desktop
`
`
`runtime - Can be addedto thelist of runtimes
`extension - Can be addedtothelist of extensions
`
`
`
`
`
`
`420 Property Key- jobbilocationtype
`Either URL | file | jobbi-lookup-server
`URL- the jobbi archive is located at the URL specified in jobbilocation
`file - the jobbi archive is containedin a file name specified in jobbilocation
`jobbi-lookup-server - goes to the jobbi-serverand looks upthe location information
`
`
`
`
`
`425 Property Key - jobbilocation
`Either a URL, filename, prompt, or'.'
`URL - URL pointing to jobbi archive
`filename- presents the userwith a file chooser box specifying the name of the jobbi archive
`
`prompt- presents the userwith a dialog that either lets the user put in a URLorfilename
`"use of this syntax indicates that the jobbi archive is contained within the current archive
`
`428
`
`430 Property Key - nativecode
`Eithertrue or false
`true - jobbi archive contains native code
`false - jobbi archive does not contain native code
`
`435 Property Key - nativecodeplatform
`Oneofthe strings of the jobbi supported platforms
`Emptyif nativecodeis false
`
`
`
`
`
`
`
`
`
`
`
`445 Property Key - main
`Java class nameofclass containing the main() function. This field is only specified if
`jobbitype = application
`
`
`440 Property Key - dependencies
`Commaseparatedlist of UID's that this package depends on
`Emptyif there are no dependenciesfor this jobbi package
`
`Page 5 of 22
`
`Page 5 of 22
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 5 of 11
`
`US 6,571,389 B1
`
` gh
`
`
`TOK
`
`=sulew
`
`ZEPZCUuIN=WWo;e|depooenljeu
`
`gap=solouspuedep
`
`99PON=OpPOdseAijeu
`
`
`
`SOPsel,Aoujuns/woo“wiiansosAu//-dpyy=U0l}e200]
`
`
`
`
`
`dpOld
`
`
`
`Tooter#SpsueS,|X#
`ajdwexy
`
`Page 6 of 22
`
`
`
`L@poweuAejdsips,.A-oweuse|dsip
`
`
`
`ESPswyunisadAjiqqol
`
`
`
`PerqyN=edAjuole90|
`
`
`
`Z8P0'0'0'|=UOISIeA
`
`=uoolAe|dsip
`
`
`
`GLP“KnusscxX#
`
`oerAues,.AF
`
`sonnemennnnn“H#
`
`
`
`Z9PvoHeodde=sdAyqgol
`
`9pAJ=odAjuoyes0|
`
`L9P0'0'0'|=UOISIOA
`
`PoP“=uONe00;
`
`99m=Wose|deposeayeu
`
`Z9P|A‘Zx=selouepusdep
`
`89PLXwqrwoo=uleu
`
`
`
`SOPesjej-apooanijyeu
`
`
`
`OLP«AueS,7X#
`
`
`
`6SPaweuAejdsips,,x=aweute|dsip
`
`O9P416poy|seBewl=uosKe|dsip
`
`os
`
`Page 6 of 22
`
`
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 6 of 11
`
`US 6,571,389 B1
`
`
`
`
`
`Jeaiegdnyoo7iqgor
`
` srs
`
`anbiunjoeseqejyeq
`
`alyuepuesialhuSp!
`
`SUOHeI0}
`
`QuapuedepUyIMJeAl9sJOTHN
`
`
`
`
`
`anbiunpapseupues‘umouxUn
`
`
`
`
`
`uoljes07]‘pepseuAouspuedeg
`
`
`
`ApeasjeAouapuadeq
`
`asled
`
`Iqqor
`
`payeysul
`
`satyedod
`
`
`
`pepeseuAouepuedeq
`
`
`
`UMOUYUd}}E90}
`
`yual|D1qqgor
`
`$$0901d
`
`Iqgor
`
`alyave
`
`BAISOOY
`
`iggor
`
`aldave
`
`uoneoddy
`
`VS
`O14
`
`OLS
`
`JOAIOSGAA
`
`Page 7 of 22
`
`Page 7 of 22
`
`
`
`
`
`
`
`

`

`May27, 2003
`
`Sheet 7 of 11
`
`US 6,571,389 B1
`
`
`
`ulayAujsiBasa10}S
`
`
`
`joAsoyoeuilpAyjsibes
`
`
`
`yual|oIqqor
`
`uole||eysul
`
`uoneoyddeAdo
`
`
`
`ayi4AuysiBoysaiadodiqqor
`iqqorwoayAjsibeu
`
`
`
`IqgorayeeD
`
`aly
`
`GIN0}FIYave
`
`iqqorJoAlojoaIp
`
`
`
`UOHE]|E}SU!JUSIO
`
`U.S. Patent
`
`ds‘vlad
`
`Page 8 of 22
`
`Page 8 of 22
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 8 of 11
`
`US 6,571,389 B1
`
`
`
`
`
`
`
`
`
`
`
`‘yoyuedesuedjuepuedspulwoseldesepasnsiJayoeeyo,f,941
`
`onlen V9Old
`CINeu;OVU!pepuedxejous!exeebexoedayyUeyMpaloedsAjuosisiy,‘ebexoedsiyjJoeeuaAIyUeoy|
`
`
`
`
`
`
`‘pesnsiefexoedSiu)USyMUyedssejo8uAUlpapnjouleq0}sSpeeuYOIUMSELSAIYWEJOAJOPSIpSAHEe,
`
`
`
`
`
`
`uoeoddeeujJoUOKOUNUlELUBU)0}passedaq0}SueYOIUMSJayalUeJedJojs]po}euedesUO|OO~LUesS
`
`
`
`
`
`
`
`
`
`(uoneajdde)9=edAyiqqoluaumpeyjoedsAjuosisiy)‘uogouny()uleWou)Bulureyuoosse|oAer
`
`
`
`‘paynoaxes}ebeyoedsiy}UUMPesnoqO}SIYOIUASLUIJUNI943JOJeyjUap!enbluney
`
`
`
`quepuedeapsisBexoedsiy}YoIUMUOSuayUSp!ANbiuNjoyi}poyesedesUO[Oo-ILues
`
`
`
`@Beyoedsiujasn0}Jepioul}9SOq0}sPsaUYOIYMALOJOeJIPBupjJomSAge[alat
`
`
`
`UOTeUaYEOLIODJoyjoqUUASJUspUSdepU!LOVE&SBPEsnSIJE}OBIEYO39,SUL
`
`‘uOne|eISulJUSLO!AqoPBu}JOAlopeup
`
`
`0=sdf}iqqo!usumJesAjuosisiy,
`
`
`uoyeLUUOJU!YyedUD!Aeidsiq
`Buysa\qeAeidsiq
`
`SuQun=ZUOISUS}XE=|uoneondde=9
`suuljuNjUaUNDIqgo!lGPYg
`
`
`
`oureuteidsip'iqqo!GEO
`009=j}eUuLO}oIl4
`uosKeldsipqqo!OZ9
`sijougunriggolOEY
`
`abeyoediqqo!OS9
`Buppom'iqqolGEO
`
`apssepiqqol¢Zg
`
`weediqqgol@gg
`
`waxeiqgo!GG9
`wewiqqo!OF9
`adhyiqqefOF
`
`piniqge!SOO
`
`pejynoexsaqueoafeyoedsiu}YO!UlS@WWUNLJOSJayTUap!ENbIUNJo3S}
`
`
`
`
`
`
`
`BurgaspipeaAue8gueosiy‘oBexoedsiy}joJayjuep!onbiul)
`
`Page 9 of 22
`
`Page 9 of 22
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 9 of 11
`
`US 6,571,389 B1
`
`IGqor# ——$—=—
`ZZQ_PUEWSQUO}SOHGOHWOMeNewd!Woo=uUleWIqqol
`
`
`
`9Z970000001'Z0000001‘10000001=}s!lewUNsIqqol
`
`
`
`£29O'€puewaquojsoH=sweuAe|dsipiqqol
`
`
`O'€PUBELUAGUOSO}10;OI)ANJSIBeu
`
`
`
`$2936pou|seBewi=uoolke|dsipiqgol
`
`6Z97000000)=ewuNsjUauINS"Iqqol
`
`
`GZ93dizBopoepoy=ipsse|oiqqo/
`6661LSS92:61:E%LZuerNUL#
`
`
`
`EZ910000000=PINIqqgo!
`
`029ajdwexy
`
`q9Vid
`
`Page 10 of 22
`
`LL9°=6upom'iqgol
`
`
`
`9290=adAyIqqol
`
`
`
`ogg=2a6ex0ediqqol
`
`Page 10 of 22
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 10 of 11
`
`US 6,571,389 B1
`
`UUMS8|GELBA.wejshsLe}s
`
`
`
`
`JUaLWUOIAUaoypeds-wuoneldpuesa|qeuen
`
`
`AresoduieyJUSWUOJIAUSJOS
`
`
`
`uoRounINS
`
`ewnund
`
`sBuljes
`
`sseo0jd
`
`pueddy
`
`
`
`
`
`JUALINJOallyyoaudpusadeayeudoiddepeayuadg
`
`
`
`
`s,uoqeaiddeallsSO|GELEAUIEUIPSSEIOalyulpayloadsAnysiBeu40381)JUSUUOIAUS‘a'1)sBuasAyjsi69.
`
`
`
`
`
`seowunAouapuadep(eioawe)JUSWUOJIAUSpayioeds
`allyAuysi6a.(ssejo
`
`AusiBespeay10ajeol5
`
`
`
`ZOld
`
`
`
`uoHe|ersuU]JUaIDIqqor
`
`002
`
`Jesr)
`
`sjsenba
`
`uoneondde
`
`uainoaxe
`
`Page 11 of 22
`
`Page 11 of 22
`
`
`
`
`
`

`

`U.S. Patent
`
`May27, 2003
`
`Sheet 11 of 11
`
`US 6,571,389 B1
`
`ajepdn
`
`suanjeoydde
`
`alyAujsiBeu
`
`MauJe
`
`uoneoydde
`
`Joyowejed
`
`
`
`MAUJ95)
`
`jeuse}xe
`
`Aouepusdep
`
`enbiun
`
`Ja1j}USp!
`
`sos
`
`8Old
`
`
`
`enbiunSuwijuni
`
`Jalpjuap!
`
`Mauye)
`
`
`
`
`
`wid)ynduyJesr
`
`JOINDAue
`
`
`
`9ul|PUBLULUOS
`
`Ayn
`
`Page 12 of 22
`
`Page 12 of 22
`
`
`
`
`

`

`US 6,571,389 B1
`
`1
`SYSTEM AND METHOD FOR IMPROVING
`THE MANAGEABILITY AND USABILITY OF
`A JAVA ENVIRONMENT
`
`BACKGROUNDOF THE INVENTION
`
`1. Field of the Invention
`
`The present invention rclatcs to a computer system, and
`deals more particularly with a method, system, and
`computer-readable code for improving the manageability
`and usability of a Java environment.
`2. Description of the Related Art
`Java is a robust, portable object-oriented programming
`language developed by Sun Microsystems, Inc., and which
`is gaining wide acceptance for writing code for the Internet
`and World Wide Web. While compilers for most program-
`ming, languages generate code for a particular operating
`environment, Java enables writing programs using a “write
`once, run anywhere” paradigm. (“Java” and “Write Once,
`Run Anywhere”are trademarks of Sun Microsystems,Inc.)
`Java attains its portability through use of a specially-
`designed virtual machine (“VM”). This virtual machine is
`also referred to as a “Java Virtual Machine”, or “JVM”. The
`virtual machine enablesisolating the details of the underly-
`ing hardware from the compiler used to compile the Java
`programminginstructions. Those details are supplied by the
`implementation of the virtual machine, and include such
`things as whetherlittle Endian or big Endian formatis used
`for storing compiled instructions, and the length of an 3
`instruction once it is compiled. Because these machine-
`dependentdetails are not reflected in the compiled code, the
`code can be transported to a different environment (a dif-
`ferent hardware machine, a different operating system,etc.),
`and executed in that environment without requiring the code
`to be changed or recompiled—hencethe phrase “write once,
`run anywhere”. The compiled code, referred to as Java
`“bytecode”, then runs on top of a JVM, where the JVM is
`tailored to that specific operating environment. As an
`example of this tailoring of the JVM, if the bytecode is
`created using, little Endian format but is to run on a micro-
`processor expecting big Endian, then the JVM would be
`responsible for converting the instructions from the byte-
`code before passing them to the microprocessor.
`Programs written in Java take two forms: applications and
`applets. Java applets are applications that are intended to be
`downloaded to a user’s machine with a Web page, and run
`within the Web browser that displays the Web page. Since
`Java was introduced in 1995, it has gone through a number
`of dramatic changes in a very short period of time. During 5
`this evolution, number of advantages and disadvantages of
`using applications versus applets have come to light.
`One of the areas of difference between applications and
`applets is in the Java runtime environment, as well as the
`affect of changes thereto.
`(The runtime environment
`includes the JVM,as well as a numberoffiles and classes
`that are required to run Java application or applets.
`IJereinafter, the terms “JVM”and “runtime environment”
`will be used interchangeably unless otherwise noted.) For
`applets, only a single level of the JVM exists in a given
`version of a browser. In order to upgrade the JVM level to
`keep pace with changesto the language, a new version ofthe
`browser must be installed. And, as new levels of browsers
`are installed on client machines, developers must update and
`maintain the Java code, recompiling (and retesting) it to
`match the browser’s JVMlevel. In addition, evolution of the
`Java language has in some cases resulted in functionality
`
`ey}wn
`
`40
`
`60
`
`2
`(such as specific application programming interfaces, or
`“APIs”) being deprecated between Java levels. This means
`that applets written in Java version 1.0.2, while they work in
`Java version 1.1, may not work when the browsers adopt the
`next version, Java 2. To continue using an applet written in
`an older Java version without changing the applet, an older
`JVM level (and therefore an older browser) must be used.
`While this approach solves the problem of running, applets
`written in older Java versions, it typically does not enable
`deployment of new applets within this browser, because
`developmenttools typically cease supporting generation of
`code in the older levels. Furthermore, as defects in existing
`browser JVMsare identified, applet developers often create
`work-arounds while waiting for JVM developersto fix the
`problem. Once the fixes are applied, the work-arounds may
`cause defects in the applet. In addition, obtaining the latest
`release of a browser does not necessarily imply that it will
`provide the latest release of the JVM level, as the level of
`JVM within a browser tends to lag behind the currently
`released JVM level by 6 to 8 months. This may mean that
`applets under development, which will be created using a
`development toolkit, are created using a newer JVM level
`han is available in the new browser.
`
`lor applications, changesto the run-time environmentare
`easier to deal with, as most Java applications ship bundled
`ogether with their own level of the Java runtime and those
`hat don’t state the required level of the Java runtime.
`However, shipping a runtime with the application meansthat
`multiple copies of the same JVM level may beinstalled on
`he client, leading to wasted storage space. When the appli-
`cation is not bundled with its runtime, on the other hand,the
`user is responsible for making sure that the correct JVM
`evel is installed and the application is set up to use that
`evel. Changing the runtime level so that a Java program can
`run, and makingsurethat all system settings are appropriate
`or the new level, is a difficult task for an end user to perform
`in today’s environment. One solution to this problem is to
`write Java programs so that they will run correctly across
`multiple Java runtime levels.
`‘This, however,
`is a very
`difficult task for a developer, and is therefore not a viable
`solution.
`
`
`
`A further issue in the run-time environmentfor applets is
`differences in how browsers from different vendors imple-
`ment a particular JVM level. The browsers most commonly
`used today are Netscape Navigator and Internet Explorer.
`Because an applet developer typically has no way of pre-
`dicting which browser (or browsers) will be used to run his
`application, good developmentpractice calls for testing the
`applet with each potential browser. As will be readily
`apparent, the time spent testing an applct growssignificantly
`whenit is tested for multiple browsers, multiple JVM levels
`within each browser, etc. (as well as possibly testing imple-
`mentations of the browsers on different operating system
`platforms). Sun Microsystems has attempted to address
`intcr-browser differences (which also provides a way of
`making the latest
`run-time level available for applet
`execution) by providing a Java Plug-In which allows applets
`to be executed using a run-time environment provided by
`Sun,instead of the run-time provided bythe browser. AJVM
`level can be sclected from among those supported by the
`plug-in. However, this approach requires a user to under-
`stand which is the required JVM level and howto selectit.
`In addition, the plug-in still provides a single level of aJVM
`until the user manually selects a different level, and therefore
`does not address the problems discussed above related to
`differences between JVM levels.
`
`For applications, differences in JVM implementations
`manifest themselves differently. Typically, there is only one
`
`Page 13 of 22
`
`Page 13 of 22
`
`

`

`US 6,571,389 B1
`
`3
`version of each JVM level per operating system platform. It
`may be easier for a developer to predict which operating
`system his applications will run on thanit is to predict which
`browserwill be used for executing applets. Thus, the test and
`support requirements are significantly simpler for applica-
`tions than for applets. Synchronization between the JVM
`level used in application development and the JVM level
`used for executing the resulting application, as well as the
`synchronization problemsrelated to fixing errors, arc less
`likely to present a problem, compared to the situation for
`applets that was discussed above. This is because both the
`development and runtime environment for applications are
`likely to be provided by the same vendor.In addition, when
`it is desirable to run an application on an older JVM (for
`example, due to changes such as function being deprecated,
`as previously discussed), this is less troublesome for an
`application than for an applet. The only requirement with the
`application scenario is that the older JVM isstill available.
`Another significant difference between applications and
`applets is their ease of use for end-users. Java-enabled
`browsers make it very easy for a user to run Java applets,
`where the user is required to do nothing more for execution
`than pointing the browser at the applet and clicking on a
`button. The user needs to know verylittle about the Java
`language and applets, and may not even realize that an
`applet is being invoked. Therefore, users do not need to be
`trained in how to run Java applets, saving time and money.
`Running a Java application (i.e. running a Java program
`outside a browser), on the other hand, is considerably more
`complicated. A Java application can be run from a devel-
`opment toolkit such as the JDK (Java Development Kit)
`product from Sun Microsystems; alternatively, the applica-
`tion may be run using the “JRE” (Java Runtime
`Environment) product (hereinafter, “JRE”), also from Sun
`Microsystems. The JREis a subset of the JDK, providing the
`functionality which is required for application execution.
`Programs are executed from the command line when using
`the JRE. Running an application in either the JDK or JRE
`requires a fair amount of knowledge about the Java language
`and its environment. For example, the linked library paths
`and classpath environment variable must be properlyset,
`and may change for each different application program. A
`number of dependencies may exist for running a particular
`application. I'or example, if the application makes use of a
`Java extension such as the Swing userinterface components,
`the Swing libraries must be available. If the code for the
`extensions is not already installed on a user’s machine, it
`may be difficult for an average user to locate the code and
`then perform a proper installation (i.c. including sctting all
`the required variables to enable the class loader to find the
`code at run-time). In addition, a user must understand how
`to operate the JDK or JRE for program execution. While
`Java developers and system administrators may readily
`understand these types of information,it is not reasonable to
`place this burden on the average end-user who simply wants
`to execute a program.
`Several problemsrelated to differences between browser
`implementations have been discussed. Two additional prob-
`lems are differences in support for security features, and
`differences in archive formats. Security features are used in
`an applet by invoking the security APIs provided by the
`browser. The primary browsers in use today have different
`security APIs. This forecs an applet developer to write (and
`test) security code that is different between the browsers,
`increasing the cost of providing, the applet code. While the
`“CAB”(for “cabinet”) file format is used for distributing
`and archivingfiles for the Internet Explorer browser, “JAR”
`
`4
`(for “Java archive”) file format is used to distribute and
`archive Java applet files.
`Accordingly, a need exists for a technique by which these
`shortcomings in the current Java environment can be over-
`come. Ideally, the advantages of applets and the advantages
`of applications should be combined, providing an environ-
`ment which then avoids the disadvantages of each. The
`present invention defines a novel approach to solving these
`problems, which will result in programs that are easier to
`use, and less costly to provide.
`
`10
`
`SUMMARYOF THE INVENTION
`
`An object of the present invention is to provide a tech-
`nique whereby shortcomings in the current Java environ-
`ment can be overcome.
`
`Another object of the present invention is to provide a
`technique whereby the advantages of applets and the advan-
`tages of applications are combined, providing an environ-
`ment which then avoids the disadvantages of each.
`It is another object of the present invention to provide a
`technique that enables dynamically switching among run-
`time environments for Java programs, on a per-program
`basis.
`
`It is yet another object of the present invention to provide
`this technique in a manner that enables a user to easily
`switch between different run-time environments.
`
`
`
`A further object of the present invention to provide a
`technique for specifying the dependencies of
`a Java
`application,
`including which run-time environment
`is
`required.
`Yet another object of the present invention to provide this
`echnique in a mannerthat enables the dependencies to be
`ocated automatically, and downloaded and installed, with-
`out requiring a static specification of location information.
`Other objects and advantagesof the present invention will
`be set forth in part in the description and in the drawings
`which followand, in part, will be obvious from the descrip-
`ion or may be learned bypractice of the invention.
`‘lo achieve the foregoing objects, and in accordance with
`he purpose of the invention as broadly described herein, the
`present invention provides a method, system, and computer-
`eadable code for use in a computing environment capable
`of having a connection to a network, for improving the
`manageability and usability of a Java environment.
`‘This
`echnique comprises: defining a plurality of properties for a
`Java application, wherein the properties describe the
`application, zero or more extensions required for executing
`he application, and a run-time environment required for
`executing the application; and storing the defined properties
`along with an identification of the application. This tech-
`nique may further comprise installing the application on a
`client machine using the stored properties. Preferably,
`installing the application further comprises: installing one or
`more dependencies of the application, wherein the depen-
`dencies comprise the required extensions and the required
`run-time environment; andinstalling a Java Archivefile for
`the application on the client machine, and this installing
`dependencies further comprises: parsing the properties to
`locate the dependencies; determining whether each of the
`dependencies are already installed on the client machine;
`and retricving andinstalling the located dependency whenit
`is not already installed. Optionally,
`the technique may
`further comprise retrieving a latest version of the stored
`properties for the application prior to operation ofinstalling
`the one or more dependencies. The installing one or more
`
`40
`
`60
`
`Page 14 of 22
`
`Page 14 of 22
`
`

`

`US 6,571,389 B1
`
`6
`station 10 includes a microprocessor 12 and a bus 14
`employed to connect and enable communication between
`the microprocessor 12 and the components of the worksta-
`tion 10 in accordance with known techniques. The work-
`station 10 typically includes a user interface adapter 16,
`which connects the microprocessor 12 via the bus 14 to one
`or more interface devices, such as a keyboard 18, mouse 20,
`and/or other interface devices 22, which can be any user
`interface device, such as a touch sensitive screen, digitized
`entry pad, etc. The bus 14 also connects a display device 24,
`such as an LCD screen or monitor, to the microprocessor 12
`via a display adaptcr 26. The bus 14 also connects the
`microprocessor 12 to memory 28 and long-term storage 30
`which can include a hard drive, diskette drive, tape drive,
`etc.
`
`10
`
`5
`dependencies mayfurther comprise dynamically retrieving a
`location for use in said retrieving and installing. In one
`aspect, the technique may further comprise creating a reg-
`istry file on the client machine corresponding to the prop-
`erties. In this aspect, the technique preferably further com-
`prises: receiving a request to execute a selected application
`on the clicnt machine; constructing a proper run-time cnvi-
`ronment for the selected application using a corresponding
`registry file; and starting execution of the selected applica-
`tion in the constructed environment. The constructing may
`further comprise: reading the correspondingregistry file to
`determine current dependencies of the application, wherein
`the current dependencies comprise currently-required exten-
`sions and a current run-time environmentfor the application;
`ensuring that each of the current dependencies of the
`selected applicationis installed; setting appropriate environ-
`ment variables for the current run-time environment; and
`setting appropriate environment variables for the currently-
`required extensions. Optionally, the technique may further
`comprise: updating the current run-time environmentin the
`registry file; and updating the currently-required extensions
`in the registry filc. In addition, the technique may further
`comprise setting one or more parameters of the selected
`application using the corresponding registryfile, and may
`provide for updating the parameters in the registryfile.
`The present invention will now be described with refer-
`ence to the following drawings, in which like reference
`numbers denote the same element throughout.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The workstation 10 may communicate with other com-
`puters or networks of computers, for example via a com-
`munications channel or modem 32. Alternatively, the work-
`station 10 may communicate using a wireless interface at 32,
`such as a CDPD (cellular digital packet data) card. The
`workstation 10 maybe associated with such other computers
`in a local area network (I.AN) or a wide area network
`(WAN), or the workstation 10 can be a client in a client/
`server arrangement with another computer, etc. All of these
`configurations, as well as the appropriate communications
`hardware and software, are knownin theart.
`FIG.2 illustrates a data processing network 40 in which
`the present invention maybe practiced. The data processing
`network 40 may include a plurality of individual networks,
`such as wireless network 42 and network 44, each of which
`may include a plurality of individual workstations 10.
`FIG. 1 is a block diagram of a computer workstation
`Additionally, as those skilled in the art will appreciate, one
`environment in which the present invention may be prac-
`or morc LANs maybeincluded (not shown), where a LAN
`ticed;
`maycompriseaplurality of intelligent workstations coupled
`FIG. 2 is a diagram of a networked computing environ-
`to a host processor.
`ment in which the present invention may be practiced;
`Still referring to [IG. 2, the networks 42 and 44 may also
`FIG. 3 depicts the technique with which the preferred
`include mainframe computers or servers, such as a gateway
`cmbodimentof the present invention associates propertics
`computer 46 or application server 47 (which may access a
`with a Java application, and stores those properties for later
`use;
`data repository 48). A gateway computer 46serves as a point
`of entry into each network 44. The gateway 46 may be
`preferably coupled to another nctwork 42 by mcans of a
`communications link 50a. The gateway 46 may also be
`directly coupled to one or more workstations 10 using a
`communications link 50b, 50c. The gateway computer 46
`may be implemented utilizing an Enterprise Systems
`Architccture/370 available from IBM,or an Enterprise Sys-
`tems Architecture/390 computer, etc. Depending on the
`application, a midrange computer, such as an Application
`System/400 (also known as an AS/400) may be employed.
`(“Enterprise Systems Architecture/370” is a trademark of
`IBM; “Enterprise Systems Architecture/390”, “Application
`System/400”, and “AS/400” are registered trademarks of
`IBM.)
`The gateway computcr 46 may also be coupled 49 to a
`storage device (such as data repository 48). Further,
`the
`gateway 46 may bedirectly or indirectly coupled to one or
`more workstations 10.
`
`40
`
`60
`
`Those skilled in the art will appreciate that the gateway
`computer 46 maybe located a great geographic distance
`from the network 42, and similarly, the workstations 10 may
`be located a substantial distance from the networks 42 and
`44. For cxample,
`the nctwork 42 may be located in
`California, while the gateway 46 may be located in Texas,
`and one or more of the workstations 10 may be located in
`New York. The workstations 10 may connectto the wireless
`network 42 using the Transmission Control Protocol/
`
`FIG. 4A defines the layout of the propertics information
`used by the present
`invention, and FIG. 4B depicts an
`example of using this layout for a particular application
`program;
`FIGS. 5A and 5B show the logic used in the preferred
`embodiment to locate and install dependencies for an appli-
`cation program, and the logic used in the preferred embodi-
`mentto install the Jobbi JAR file for an application program
`on a client’s computer;
`FIG. 6A defines the layout of the registry file used by the
`present invention, and FIG. 6B depicts an example of using
`this layout for a particular application program;
`FIG. 7 depicts the logic invoked in the preterred embodi-
`ment when an application program is launched on a client
`computer; and
`FIG. 8 depicts the logic with which run-time information
`may be updated after an application program has been
`installed.
`
`DESCRIPTION OF THE PREFERRED
`EMBODIMENT
`
`FIG. 1 illustrates a representative workstation hardware
`environment in which the present invention may be prac-
`ticed. The environment of FIG. 1 comprises a representative
`single user computer workstation 10, such as a personal
`computer, including related peripheral devices. The work-
`
`Page 15 of 22
`
`Page 15 of 22
`
`

`

`US 6,571,389 B1
`
`7
`Internet Protocol (“TCP/IP”) over a numberof alternative
`connection media, such as cellular phone, radio frequency
`networks, satellite networks, etc. The wireless network 42
`preferably connects to the gateway 46 using a network
`connection 50a such as TCP or UDP (User Datagram
`Protocol) over IP, X.25, Frame Relay, ISDN (Integrated
`Services Digital Network), PSTN (Public Switched Tele-
`phone Network), etc. The workstations 10 mayalternatively
`connect directly to the gateway 46 using dial connections
`506 or 50c. Further, the wircless nctwork 42 and nctwork 44
`may connect to one or more other networks (not shown), in
`an analogous mannerto that depicted in FIG. 2.
`Software programming code which embodiesthe present
`invention is typically accessed by the microprocessor 12 of
`the workstation 10 and server 47 from long-term storage
`media 30 of some type, such as a CD-ROMdrive or hard
`drive. The software programming code may be embodied on
`any of a variety of known media for

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket