`(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
`
`Booking, Exh. 1056, Page 1
`
`Booking, Exh. 1056, Page 1
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 1 of 11
`
`US 6,571,389 B1
`
`
`
`Bd1IAEQGJajdepySdiIA8qSdIA8G
`
`
`
`
`
`
`
`AejdsigKe\dsigSOeBLS}uU|SoeLS}U]
`
`
`
`
`
`82OL
`
`J
`“
`
`Aioweayy
`
`SoeLa}Uj
`
`JoJaepy
`
`A92ee
`
`w
`n
`
`abesois
`
`oe——
`
`JOSSE901q
`
`oO
`o|
`Oo
`
`Q>o
`
`O<
`
`Booking, Exh. 1056, Page 2
`
`Booking, Exh. 1056, Page 2
`
`
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 2 of 11
`
`US 6,571,389 B1
`
`(j1y101d)©IH
`
`\ONrr-- syUa[D
`
`\eyegsuonesddy
`SSOTOIIAAAnRaawedNoze/
`
`—.
`
`GZ°X“dOL
`
`d‘NGS!
`
`SYJOMION,
`
`POJTAA
`
`SSIPOTTAA
`
`susp
`
`,,i,=ddOL
`
`Booking, Exh. 1056, Page 3
`
`Booking, Exh. 1056, Page 3
`
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 3 of 11
`
`US 6,571,389 B1
`
`SLEBll}
`
`dvragor
`
`occ
`
`uoneoddy
`
`aver
`
`(pasayyeun)
`
`iqqor
`
`saiedold
`
`€Old
`
`Iqqor
`
`Jebeyoed
`
`uoyeojddy
`
`ayVe
`
`
`
`pling|EUON
`
`$Se00/q
`
`see alls
`
`
`
`Jabeyoe,1qqor
`
`IqqorJosplayAyloeds
`
`
`
`
`
`equosep‘a"!)sejedoid
`
`
`
`‘salouapuadepuolesijdde
`
`
`
`(sjuewayinbasauujund
`
`yea
`
`Mau
`
`iqqor
`
`advr
`
`Booking, Exh. 1056, Page 4
`
`Booking, Exh. 1056, Page 4
`
`
`
`
`
`
`
`
`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
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`445 Property Key - main
`Java class nameofclass containing the main() function. This field is only specified if
`jobbitype = application
`
`
`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
`
`440 Property Key - dependencies
`Commaseparatedlist of UID's that this package depends on
`Emptyif there are no dependenciesfor this jobbi package
`
`Booking, Exh. 1056, Page 5
`
`Booking, Exh. 1056, Page 5
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 5 of 11
`
`US 6,571,389 B1
`
`dpOld
`
`
`
`Tooter#SpsueS,|X#
`ajdwexy
`
`
`
`6SPaweuAejdsips,,x=aweute|dsip
`
`O9P416poy|seBewl=uosKe|dsip
`
`os
`
`
`
`Z9PvoHeodde=sdAyqgol
`
`9pAJ=odAjuoyes0|
`
`L9P0'0'0'|=UOISIOA
`
`PoP“=uONe00;
`
`99m=Wose|deposeayeu
`
`Z9P|A‘Zx=selouepusdep
`
`89PLXwqrwoo=uleu
`
`
`
`SOPesjej-apooanijyeu
`
`
`
`
`
`OLP--AnuoS.Z7X#
`
`
`
`L@poweuAejdsips,.A-oweuse|dsip
`
`
`
`ESPswyunisadAjiqqol
`
`
`
`PerqyN=edAjuole90|
`
`
`
`Z8P0'0'0'|=UOISIeA
`
`=uoolAe|dsip
`
`
`
`SLY-“Knuos,cx#
`
`oerAues,.AF
`
`sonnemennnnn“H#
`
` gh
`
`
`TOK
`
`=sulew
`
`ZEPZCUuIN=WWo;e|depooenljeu
`
`gap=solouspuedep
`
`99PON=OpPOdseAijeu
`
`
`
`SOPsel,Aoujuns/woo“wiiansosAu//-dpyy=U0l}e200]
`
`
`
`
`
`Booking, Exh. 1056, Page 6
`
`Booking, Exh. 1056, Page 6
`
`
`
`
`
`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
`
`Booking, Exh. 1056, Page 7
`
`VS
`O14
`
`OLS
`
`JOAIOSGAA
`
`Booking, Exh. 1056, Page 7
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`ds‘vlad
`
`May27, 2003
`
`Sheet 7 of 11
`
`US 6,571,389 B1
`
`
`
`ulayAujsiBasa10}S
`
`
`
`joAsoyoeuilpAyjsibes
`
`
`
`yusi|d1qqgor
`
`uoNe}|eySu!
`
`uoneoyddeAdo
`
`
`
`ayi4AuysiBoysaiadodiqqor
`iqqorwoayAjsibeu
`
`
`
`IqgorayeelD
`
`ll}
`
`GIN0}FIYave
`
`iqqorJoAlojoaIp
`
`
`
`UOHE]|E}SU!JUSIO
`
`Booking, Exh. 1056, Page 8
`
`Booking, Exh. 1056, Page 8
`
`
`
`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}
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 8 of 11
`
`US 6,571,389 B1
`
`
`
`
`
`BurgaspipeaAue8gueosiy‘oBexoedsiy}joJayjuep!onbiul)
`
`
`
`
`
`
`
`‘yoyuedesuedjuepuedspulwoseldesepasnsiJayoeeyo,f,941
`
`Booking, Exh. 1056, Page 9
`
`Booking, Exh. 1056, Page 9
`
`
`
`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#
`
`q9Vid
`
`
`
`EZ910000000=PINIqqgo!
`
`029ajdwexy
`
`LL9°=6upom'iqgol
`
`
`
`9290=adAyIqqol
`
`
`
`ogg=2a6ex0ediqqol
`
`Booking, Exh. 1056, Page 10
`
`Booking, Exh. 1056, Page 10
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 10 of 11
`
`US 6,571,389 B1
`
`UUMS8|GELBA.wejshsLe}s
`
`
`
`
`ewnund
`
`sBuljes
`
`sseo0jd
`
`
`
`uoRoUNSINT
`
`Aresoduuiey
`
`
`
`JUaLWUOIAUaoypeds-wuoneldpuesa|qeuen
`
`JUSWUOIIAUS8S
`
`pueddy
`
`
`
`
`
`JUALINJOallyyoaudpusadeayeudoiddepeayuadg
`
`
`
`
`s,uoqeaiddeallsSO|GELEAUIEUIPSSEIOalyulpayloadsAnysiBeu40381)JUSUUOIAUS‘a'1)sBuasAyjsi69.
`
`
`
`
`
`seowunAouapuadep(eioawe)JUSWUOJIAUSpayioeds
`allyAuysi6a.(ssejo
`
`AusiBespeay10ajeol5
`
`
`
`ZOld
`
`
`
`uoHe|ersuU]JUaIDIqqor
`
`002
`
`Jesr)
`
`sjsenba
`
`uoneondde
`
`uainoaxe
`
`Booking, Exh. 1056, Page 11
`
`Booking, Exh. 1056, Page 11
`
`
`
`
`
`
`U.S. Patent
`
`May27, 2003
`
`Sheet 11 of 11
`
`US 6,571,389 B1
`
`ajepdn
`
`suanjeoydde
`
`arlyAuysiBes
`
`Madu309
`
`uoneoydde
`
`Joyowesed
`
`
`
`MAUJ95)
`
`jeuse}xe
`
`Aouepusdep
`
`enbiun
`
`Ja1j}USp!
`
`sos
`
`8Old
`
`
`
`enbiunSuwijuni
`
`Jeljyuep!
`
`MaUJes)
`
`
`
`
`
`wid)ynduyJesr
`
`JOINDAue
`
`
`
`9ul|PUBLULUOS
`
`Ayn
`
`Booking, Exh. 1056, Page 12
`
`Booking, Exh. 1056, Page 12
`
`
`
`
`
`
`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
`
`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.
`
`
`
`ey}wn
`
`40
`
`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.
`5 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.
`
`60
`
`For applications, differences in JVM implementations
`manifest themselves differently. Typically, there is only one
`
`Booking, Exh. 1056, Page 13
`
`Booking, Exh. 1056, Page 13
`
`
`
`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
`
`Booking, Exh. 1056, Page 14
`
`Booking, Exh. 1056, Page 14
`
`
`
`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
`
`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-
`
`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.
`
`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
`
`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/
`
`Booking, Exh. 1056, Page 15
`
`Booking, Exh. 1056, Page 15
`
`
`
`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 4