FIELD OF THE INVENTION  
       [0001]    The present invention relates to a launcher for software applications. In particular, it relates to a common launcher for multiple different platform independent software applications. 
       BACKGROUND OF THE INVENTION  
       [0002]    The Java Development Kit (JDK) comprises a Java runtime system plus applications usch as tools and utilities that are pertinent to the development of java-based programs. For example, a JDK will usually contain such development tools as a java source to class file compiler (javac.exe), a java archiving tool (jar.exe), a security policy editor (policytool.exe) in addition to the generic Java program launcher (java.exe) (Java is a registered trademark of Sun Microsystems Inc). 
         [0003]    Such tools and utilities are usually implemented using the Java language itself and are therefore platform independent. Each tool can be made accessible to anend user as a platform specific excutable that is a customized version of the generic Java launcher java.exe. In some cases the java code and launcher software components are built into a native executable (such as through the use of a conversion tool java 2 exe), although in this way platform independence is lost. Alternatively, a custom launcher software component is employed for each application which provides a unqique platform dependent executable application for each tool whilst retaining the platform independence of the java implemented tool itself. Each custom launcher invokes an application as a well defined type in an application class library such as a Java archive file. For example, tooling applications are convetionally stored in tools.jar. 
         [0004]    The maintenance of multiple different custom launcher software components for different applications is resource intensive especially where it is necessary to effect a change in all launcher software components. It would therefore be advantageous to provide for the use of a common application launcher software component whilst retaining the ability to provide a unique executable file per application but without the need to convert platform independent applications to platform dependent executable format. 
       SUMMARY OF THE INVENTION          
       [0005]    The present invention provides, in a first aspect, a method for executing an application in an application class library by an application launcher software component, the application launcher software component having associated a name, the method comprising the steps of: deriving a unique application class identifier from the name of the application launcher software component; and instantiating an application class having the application class identifier. 
         [0006]    Thus the application launcher software component instantiates an application class based on a name associated with the application launcher software component. In this way it is possible to have an identical application launcher software component for multiple application classes which differ in terms of the name. This provides for each application class to be provided with a uniquely named executable application launcher software component, and provides for improved serviceability of maultiple application launcher sotware components  202  since they are functionally identical. 
         [0007]    The present invention provides, in a second aspect, an apparatus for executing an application in an application class library by an application launcher software component, the application launcher software component having associated a name, the apparatus comprising: means for deriving a uniquue application class identifier from the name of the application launcher software component; and means for instantiating an application class having the application class identifier. 
         [0008]    The present invention provides, in a third aspect, an apparatus comprising: a central processing unit; a memory subsystem/ an input/output subsystem; and a bus subsystem interconnecting the central processing unit, the memory subsystem, the input/output subsystem; and the apparatus described above. 
         [0009]    The present invention provides, in a fourth aspect, a computer program element comprising computer program code to, when loaded into a computer system and executed thereon, cause the computer to perform the steps of a method as described above. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0010]    A preferred embodiment of the present invention is described below in more detail, by way of example only, with reference to the accompanying drawings, in which: 
           [0011]      FIG. 1  is a block diagram of a computer system sutiable for the operation of embodiments of the present invention; 
           [0012]      FIG. 2  is a block diagram of an application launcher software component for instantiating an application class in accordance with a preferred embodiment of the present invention; 
           [0013]      FIG. 3  is a flowchart illustrating a method of the application launcher software component of  FIG. 2  in accordance with the preferred embodiment of the present invention; 
           [0014]      FIG. 4  is a block diagram of an application launcher software component for instantiating an application class in accordance with an alternative embodiment of the present invention; 
           [0015]      FIG. 5  is a flowchart illustrating a method of the application launcher software component of  FIG. 4  in accordance with the alternative embodiment of the present invention; and 
           [0016]      FIG. 6  is a flowchart illustrating a method of the application entrypoint of  FIG. 4  in accordance with the alternative embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0017]      FIG. 1  is a block diagram of a computer system suitable for the operation of embodiments of the present invention. A central processor unit (CPU)  102  is communicatively connected to a storage  104  and an input/output (i/o) interface  106  via a data bus  108 . The storage  104  can be any read/write storage device such as a random access memory (RAM) or a non- volatile storage device. An example of a non-volatile storage device includes a disk or tape storage device. The I/O interface  106  is an interface to devices for the input or output of data, or for both input and output of data. Examples of I/O devices connectable to I/O interface  106  include a keyboard, a mouse, a display (such as a monitor) and a network connection. 
         [0018]      FIG. 2  is a block diagram of an application launcher software component  202  for instantiating an application class  210  in accordance with a preferred embodiment of the present invention. The application launcher software component  202  is an executable software routine for executing an application by instantiating an application class  210 . For example, the application launcher software component  202  is a platform dependent executable file, such as an “exe” file. Application classes  210  are stored in an application class library, such as a Java archive file (JAR). Each application class  210  has associated an application class identifier  212 , such as a class name. The application launcher software component  202  has associated a name  204 , such as a filename, for identifying the application launcher software component  202 . The name  204  further represents an application class  210 , and thus provides a link between the launcher software component  202  and a particular application class  210 . The application launcher software component  202  further includes an application class identifier deriver  206 . The application class identifier deriver  206  is a software or hardware component for deriving an identifier  212  of an application class  210  in an application class library  208 . The identifier  212  is derived from the name  204  associated with the application launcher software component  202 . 
         [0019]    The application class identifier deriver  206  can derive the identifier  212  of an application class  210  in one of many ways. For example, the identifier  212  may be identical to the name  204  of the application launcher software component  202 . Alternatively, the application launcher software component  202  can be supplemented with a prefix or suffix to generate the identifier  212  of an application class  210 . For example, an application launcher software component  202  having a name  204  of “policytool.exe” may be translated by the application class identifier deriver  206  into an application class identifier  212  of “com.ibm.javatools.security.PolicyTool”. In a further alternative, the application class identifier deriver  206  may use the name  204  associated with the application luancher software component  202  to lookup a corresponding identifier  212  of an application class  210  in, for example, a lookup table or database. In yet a further alternative, the application class identifier deriver  206  may operate based on rules which strictly define how the name  204  is to be translated into an identifier  212  of an application class  210 . An appropriate form and construction of such rules will be readily apparent to those skilled in the art and a detailed explanation of such rules is not considered necessary here. 
         [0020]    Thus, by way of the application class identifier deriver  206 , the application launcher software component is able to instantiate an application class  210  based on its associated name  204 . Thus, in use, multiple copies of the application launcher software component  202  can be made which differ in the name  204  associated with each. In this way it is possible to have an identical application launcher software component  202  for multiple application classes  210  which differ in terms of the name  204 . This provides for each application class  210  to be provided with a uniquely named executable application launcher software component  202 , and provides for improved serviceability of maultiple application launcher software components  202  since they are functionally identical. 
         [0021]      FIG. 3  is a flowchart illustrating a method of the application launcher software component  202  of  FIG. 2  in accordance with the preferred embodiment of the present invention. At step  302  the application launcher software component  202  is executed. At step  304  the name  204  associated with the application launcher software component is obtained. At step  306  a class identifier  212  of a desired application class  210  is derived from the name  204  using one or more of the techniques described above. Finally, at step  308  the desired application is executed by instantiating the application class  210  having the identifier  212  derived at step  306 . 
         [0022]      FIG. 4  is a block diagram of an application launcher software component  402  for instantiating an application class  410  in accordance with an alternative embodiment of the present invention. Many of the elements of  FIG. 4  are identical to those described above with respect to  FIG. 2  and these will not be repeated here.  FIG. 4  otherwise differs from  Figure 2  in that an application entrypoint  409  is provided in the application library  408  for the provision of the function of the application class identifier deriver  406 . Entrypoint  409  is a software routine, subroutine, method, procedure, function or program which is callable by the launcher software component  402  to instantiate an application class  410 . Whilst the application entrypoint  409  is illustrated as being contained in the application class library  408 , it could alternatively be located in an alternative class library or as a standalone class. When executed, the application launcher software component  402  instantiates the application entrypoint  409  sending as an argument the name  404  associated with the application luancher software component  402 . It is the application entrypoint  409  which undertakes the translation (if any) of the name  404  into a class identifier  212 . in this way, the embodiment of  FIG. 4  allows for the provision of the application class identifier deriver  406  as plantform independent code outside of the application luancher software component  402 . Thus, the application luancher software component  402  is functionally smaller in the embodiment of  FIG. 4  so requiring less maintenance and a smaller amount of platform dependent code. 
         [0023]      FIG. 5  is a flowchart illustrating a method of the application launcher software component  402  of  FIG. 4  in accordance with the alternative embodiment of the present invention. At step  502  the application launcher software component  402  is executed. At step  504  the name  404  associated with the application launcher software component is obtained. Finally, at stp  506 , the application entrypoint  409  is instantiated sending the name  404  associated with the application launcher software component as an argument. 
         [0024]      FIG. 6  is a flowchart illustrating a method of the application entrypoint  409  of  FIG. 4  in accordance with the alternative embodiment of the present invention. At step  602  the name  404  associated with the application launcher software component  402  is received by the application entrypoint  409 . At step  604  a class identifier  412  of a desired application class  410  is derived from the name  404  using one or more of the techniques for deriving application class identifiers described earlier. Finally, at step  606  the desired application is executed by instantiating the application class  410  having the identifer  412  derived at step  604 . 
         [0025]    Insofar as embodiments of the invention described are implementable, at least in part, using a software-controlled programmable processing device, such as a microprocessor, digital signal processor or other processing device, data processing apparatus or ystem, it will be appreciated that a computer program for configuring a programmable device, apparatus or system to implement the foregoing described methods is envisaged as an aspect of the present invention. The computer program may be embodied as source code or undergo compilation for implementation on a processing device, apparatus or system or may be embodied as a object code, for example. 
         [0026]    Suitably, the computer program is stored on a carrier medium in machine or device readable form, for example in solid-state memory, magnetic memory such as disk or tape, optically or magneto-optically readable memory such as compact disk or digital versatile disk etc, and the processing device utilises the program or a part thereof to configure it for operation. The computer program may be supplied from a remote source embodied in a communications medium such as an electronic signal, radio frequency carrier wave or optical carrier wave. Such carrier media are also envisaged as aspects of the present invention. 
         [0027]    It will be understood by those skilled in the art that, although the present invention has been described in relation to the above described example embodiments, the invention is not limited thereto and that there are many possible variations and modifications which fell within the scope of the invention. 
         [0028]    The scope of the present invention includes any novel features or combination of features disclosed herein. The applicant hereby gives notice that new claims may be formulated to such features or combination of features during prosecution of this application or of any such further applications derived therefrom. In particular, with reference to the appended claims, features from dependent claims may be combined with thos of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated is the claims.
A method for executing an application in an application class library by an application launcher software component, the application launcher software component having associated a name, the method comprising the steps of: deriving a unique application class identifier from the name of the application launcher software component; and instantiating an application class having the application class identifier.