WO2001097013A2 - Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method - Google Patents

Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method Download PDF

Info

Publication number
WO2001097013A2
WO2001097013A2 PCT/FR2001/001848 FR0101848W WO0197013A2 WO 2001097013 A2 WO2001097013 A2 WO 2001097013A2 FR 0101848 W FR0101848 W FR 0101848W WO 0197013 A2 WO0197013 A2 WO 0197013A2
Authority
WO
WIPO (PCT)
Prior art keywords
class
java
classes
lang
test
Prior art date
Application number
PCT/FR2001/001848
Other languages
French (fr)
Other versions
WO2001097013A3 (en
Inventor
Habib Guissouma
Original Assignee
Canal + Technologies
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canal + Technologies filed Critical Canal + Technologies
Priority to AU2001267653A priority Critical patent/AU2001267653A1/en
Publication of WO2001097013A2 publication Critical patent/WO2001097013A2/en
Publication of WO2001097013A3 publication Critical patent/WO2001097013A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Definitions

  • the invention relates to a class management method for an object-oriented programming language with dynamic resolution and to a tool for generating native structures from Java binaries implementing this method.
  • object oriented means that apart from the predefined basic types such as numbers or characters, everything is object.
  • the programs are made up of assemblies of the software components that are the objects.
  • the object is the union in a single entity of a data structure and algorithms allowing to manipulate this data structure. This idea is opposed to that of conventional programming where data and processing are separated.
  • the field of the invention is that of object oriented languages with dynamic resolution, more particularly that of the Java language.
  • the Java language is a high level programming language, object oriented, simple, interpreted, secure, portable, and dynamic. It eliminates faults and takes up the best aspect of object oriented languages such as C ++, while simplifying its use (memory, for example, is no longer managed by the developer).
  • the portability of the language is ensured by its execution environment, the Java virtual machine, which is adapted to the system on which the tasks and applications developed in this language will be executed. Its development has been favored by the rise of the Internet network, the abstraction of the execution platform being adapted to this heterogeneous network.
  • the object approach (of a system) in IT differs from the procedural approach (cutting a task into a set of sub-tasks). Objects exchange messages and interact in order to achieve the required functionality.
  • An object can be defined as follows:
  • a class is a data type abstract defining attributes and methods. These properties are common to instances of the class.
  • Encapsulation this concept hides the details of implementing an object by defining an interface (external view of the object).
  • Inheritance this concept defines a transfer of attributes and methods from one class to another class (subclass).
  • a class can specialize in a subclass.
  • a subclass can inherit from several classes (multi-inheritance).
  • Java language uses object concepts and a syntax very close to the C / C ++ language. Some specificities of the Java language are considered below:
  • Packages the classes are, possibly, grouped by packages ("packages"), a package consisting of a grouping of classes by affinities.
  • Standard Java packages with the Java virtual machine, a certain number of basic packages are defined on which Java developers can rely to design portable applications. The main ones are:
  • Java.io package providing functionalities, input / output type (files, ...)
  • Java.net package concerning the network functionalities of Java.
  • Each of the properties of an object class has a set of attributes.
  • One of these attributes is the visibility of the property:
  • protected package all object classes in the package can access the property.
  • Protected the property is not accessible only from the object class and its subclasses.
  • - Public access access to the property is open to all object classes.
  • Java virtual machines only load the object classes used by an application. The first time you use a class, it is defined internally and made available to the application.
  • Each class has a table of classes that it will use. When using one of these classes, it requests a reference to the internal structure of the class in order to be able to use it. This process, for performance reasons, is performed only once per class used. This is done by replacing an operation requiring class resolution with an equivalent operation based on the principle that the class is resolved (ie: known).
  • Embedded systems are software systems providing a service determined in advance. These systems run in a hardware environment dedicated to the functionality achieved.
  • the digital television decoders are based on a real-time on-board system as well as an electronic box, all designed to provide pay television services.
  • the "Media-Highway” system as well as associated development tools provide the application means to develop interactive services revolving around the profession of digital television, such as program selection services.
  • program selection services such as program selection services.
  • Java version (“MediaHighway
  • the MediaHighway “system includes a Java virtual machine, associated development tools and a set of interactive services.
  • the "MediaHighway +” system (MHPLUS) is an embedded digital television system whose applications are designed in Java language.
  • Java sources are compiled to produce the associated Java binaries.
  • the binaries produced appear as files.
  • Each package has a directory.
  • Each class corresponds to a file describing the class. This file is located in the directory associated with the class package.
  • the software kernel on which the embedded Java virtual machine is based, has a software interface for accessing a file system. This file system is capable of handling files whose definitions can be found in various places. One of these locations is the binary itself. In the binary data, a whole set of linked structures forms the so-called "ROM” file system (since it ends up in the non-writable ROM memory of the target machine). Java binaries are ultimately found in the "ROM” file system of the file manager.
  • the directory and file tree corresponding to the packages and.
  • Java binaries classes are directly reproduced in the "ROM" file system. To do this, a tool allows you to generate source code in C language. The source code once compiled defines the tree structure relating to Java binaries. The result of this compilation, once integrated into the final binary, provides the Java virtual machine with the class definitions necessary for its operation.
  • the embedded virtual machine has a class manager, which is an application module responsible for the database of Java classes used.
  • the class manager provides the virtual machine with the internal definition of the class.
  • the subject of the invention is an alternative solution to the solution described above for providing classes in environments poor in memory and in processing power, by delocalizing the maximum of the processing carried out when loading the classes used at the start of the system, and minimizing the effects related to the constraints cited.
  • the invention relates to a class management method for an object oriented language based on a dynamic resolution of object classes, characterized in that the resolution of at least one dynamic class is transformed, for a group of autonomous classes. , in static resolution.
  • a Java virtual machine for a set of autonomous classes we include the native structure exploited directly by the kernel, of these classes as binary data of the virtual machine (we thus free our from the constraint files) . We do some of the solving work, and we optimize the memory resources of the system.
  • the invention also relates to a tool for generating native structures from Java binaries implementing the method.
  • the method of the invention finds particular utility in systems poor in memory resource, such as digital television decoders.
  • Figure 1 illustrates a known art binary generation process.
  • Figure 2 illustrates a binary generation process according to the invention.
  • FIG. 3 illustrates structures associated with Java classes. Detailed description of embodiments of the invention
  • the solution adopted by the method of the invention consists in offshoring the maximum of the processing carried out when loading the classes used at the start of the system, while minimizing the effects linked to the constraints cited.
  • the entire structure is located in the ROM memory. Only the information likely to be modified during the execution of applications is found delocalized in the RAM memory.
  • the method of the invention to accomplish the creation of the internal structure of a class, is such that:
  • the classes thus defined are initialized when the Java system starts. They are grouped by package. Each of the packages provides a list of its classes as well as all of the packages with classes used by one of the entities in the package. This grouping into packages provides, during the exploitation of the invention, the opportunity to make simplifications relating to the class affinities of the same package, in particular on the visibility of the properties. This grouping also has the advantage of reducing processing during the implementation of the method of the invention.
  • the method of the invention therefore makes it possible to prepare the Java classes for almost immediate use at system startup.
  • the invention also relates to the tool for generating native structures from Java binaries, which thus makes it possible to prepare Java classes. Compilation of Java sources / creation of class files.
  • Compilation is the process of transforming source code describing computer software into a set of elementary operations directly understood, that is to say interpreted, by the machine on which this program will be executed.
  • the basic unit of source code is the Java class.
  • the result of the compilation is a set of files, each file describing a class, as well as its methods.
  • the Java virtual machine is the environment in which the programs thus compiled take place.
  • the tool of the invention exploits these class structures so as to prepare them for immediate integration into the class database of the class manager.
  • Integration of class files into binary Class files are included in the binary of the virtual machine as data structures directly understood by the class manager. These data structures are described by source code in C language.
  • the source code is built by a tool capable of understanding class files and familiar with the data structures of the class manager.
  • This tool works on files classes, as described by the Java language specifications, interpret their content, and provide data structures compatible with those of the class manager of the virtual machine.
  • the class manager maintains a database of loaded classes.
  • the structures, entities relevant in the context of the invention, are described below; these are class structures, properties, as well as link tables associated with each of the classes.
  • Each attribute of a class is described by a structure providing, among other things, the following information:
  • the methods of a class are described by a structure defining, among other things, the following information, for each of the methods:
  • Reference table table / constants
  • the reference table is defined by the number of elements, as well as by each of its elements.
  • Each of the elements of the table is defined by the following set of information: • An element resolution indicator, indicating if its access requires a prior resolution.
  • Resolving an entry in the constant table amounts to finding the value of the constant and substituting the reference to the definition of the constant by the constant itself.
  • the table constants are initially unresolved. Each of the constants is associated with the information necessary to solve it (for a class constant, the name of the class is for example specified). The resolution of a constant is done only once during the lifetime of the class.
  • the application of the method of the invention for a class involves solving the entries in the table of constants.
  • Java code must be based on resolved entities
  • Some Java bytecodes are operations using an argument whose value is in the table of constants. For performance reasons, bytecodes requiring constant resolution are associated with an equivalent bytecode achieving the same functionality, but assuming that the constant is already resolved, called "bytecode quick" below.
  • the tool of the invention can therefore replace the bytecodes using constants to be resolved by quick bytecodes, since the entities used must be resolved.
  • the invention is applied to packages.
  • the package is associated with the following information: an array of classes, a class being known by its index in the array.
  • Compilation constants are defined, these constants establish the link “index of a class in the table ⁇ -> class structure”.
  • the symbol name associated with the array is constructed from the name of the package.
  • the methods are grouped in an array.
  • the method table is accessible from a symbol, whose name is associated with the name of the class.
  • the attributes of a class are also grouped into a list. This list is presented in the form of a table.
  • the symbol name associated with the array is a function of the class name.
  • Java class architecture used for the example is as follows:
  • Classel belongs to the test.brevet package. To give a concrete but simple example, two classes are used: Classel and
  • Classel implements the Interfacel interface and inherits from the Java class. lang.Object, class from which all other classes in the system inherit. • Classe2 inherits from Classel.
  • Interfacel describes a methodel method which is defined in the classes (Classel and Classe2) implementing this interface.
  • Java. lang.Object the methodel () method displays a small message on the text output of the virtual machine.
  • Classe2 defines two methods: the methodel () method overloads that of Classel and displays another small message; the method method2 displays yet another message on the text output.
  • Interfacel source file Java test package. Patent; public interface Interfacel ⁇ public void method (); ⁇
  • test package patent
  • public class Classel extends java. lang.
  • Object implements Interfacel ⁇ public String toString () ⁇ return "Classel"
  • patent public class Class2 extends Classel ⁇ public void methodel () ⁇

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The invention concerns a method for managing classes for an object-oriented language with dynamic class resolution, which consists in transforming the dynamic class resolution for a group of self-contained classes into a static resolution system. The invention also concerns a tool for generating native structures from object binaries implementing said method

Description

PROCEDE DE GESTION DE CLASSES POUR UN LANGAGE DE CLASS MANAGEMENT METHOD FOR A LANGUAGE OF
PROGRAMMATION ORIENTE OBJET A RESOLUTION DYNAMIQUE ETOBJECT-ORIENTED PROGRAMMING WITH DYNAMIC RESOLUTION AND
OUTIL DE GENERATION DES STRUCTURES NATIVES DEPUIS LESTOOL FOR GENERATING NATIVE STRUCTURES SINCE
BINAIRES JAVA METTANT EN ŒUVRE CE PROCEDEJAVA BINARIES IMPLEMENTING THIS PROCESS
DESCRIPTIONDESCRIPTION
Domaine techniqueTechnical area
L'invention se rapporte à un procédé de gestion de classes pour un langage de programmation orienté objet à résolution dynamique et à un outil de génération des structures natives depuis les binaires Java mettant en œuvre ce procédé.The invention relates to a class management method for an object-oriented programming language with dynamic resolution and to a tool for generating native structures from Java binaries implementing this method.
Etat de la techniqueState of the art
Pour un langage de programmation "être orienté objet" signifie qu'en dehors des types de base prédéfinis tels que les nombres ou les caractères, tout est objet. Les programmes sont constitués par assemblages des composants logiciels que sont les objets. L'objet est la réunion dans une même entité d'une structure de donnée et des algorithmes permettant de manipuler cette structure de donnée. Cette idée s ' oppose à celle de la programmation conventionnelle où données et traitements sont séparés .For a programming language "being object oriented" means that apart from the predefined basic types such as numbers or characters, everything is object. The programs are made up of assemblies of the software components that are the objects. The object is the union in a single entity of a data structure and algorithms allowing to manipulate this data structure. This idea is opposed to that of conventional programming where data and processing are separated.
Le domaine de 1 ' invention est celui des langages orientés objet à résolution dynamique, plus particulièrement celui du langage Java Le langage JavaThe field of the invention is that of object oriented languages with dynamic resolution, more particularly that of the Java language. Java language
Le langage Java est un langage de programmation de haut niveau, orienté objet, simple, interprété, sécurisé, portable, et dynamique. Il élimine les défauts et reprend le meilleur aspect des langages orientés objets tels que le C++, tout en simplifiant son utilisation (la mémoire, par exemple, n'est plus gérée par le développeur). La portabilité du langage est assurée par son environnement d'exécution, la machine virtuelle Java, qui est adaptée au système sur lequel vont s'exécuter les taches et applications développées dans ce langage. Son développement à été favorisé par la montée en puissance du réseau Internet, l'abstraction de la plate-forme d'exécution se trouvant adaptée à ce réseau hétérogène.The Java language is a high level programming language, object oriented, simple, interpreted, secure, portable, and dynamic. It eliminates faults and takes up the best aspect of object oriented languages such as C ++, while simplifying its use (memory, for example, is no longer managed by the developer). The portability of the language is ensured by its execution environment, the Java virtual machine, which is adapted to the system on which the tasks and applications developed in this language will be executed. Its development has been favored by the rise of the Internet network, the abstraction of the execution platform being adapted to this heterogeneous network.
L'approche objet (d'un système) en informatique se différencie de l'approche procédurale (découpe d'une tache en un ensemble de sous-taches) . Les objets s'échangent des messages et interagissent de manière à réaliser les fonctionnalités requises.The object approach (of a system) in IT differs from the procedural approach (cutting a task into a set of sub-tasks). Objects exchange messages and interact in order to achieve the required functionality.
Un objet peut être défini de la façon suivante :An object can be defined as follows:
• Un objet est une entité identifiée et nommée.• An object is an identified and named entity.
• L'état de cette entité est défini par un ensemble d'attributs :• The state of this entity is defined by a set of attributes:
• Un ensemble d'opérations (méthodes) déterminent le comportement de l'objet. « Un objet est une instance de classe• A set of operations (methods) determine the behavior of the object. "An object is an instance of class
• Une classe est un type de données abstrait définissant des attributs et méthodes. Ces propriétés sont communes aux instances de la classe.• A class is a data type abstract defining attributes and methods. These properties are common to instances of the class.
• Les méthodes et attributs d'une classe d'objets forment les propriétés de la classe d'objets.• The methods and attributes of an object class form the properties of the object class.
Les principaux concepts objet sont décrit ci après :The main object concepts are described below:
• Encapsulation : ce concept masque les détails de mise en œuvre d'un objet en définissant une interface (vue externe de l'objet).• Encapsulation: this concept hides the details of implementing an object by defining an interface (external view of the object).
• Héritage : ce concept définit un transfert d'attributs et méthodes d'une classe vers une autre classe (sous-classe) . Une classe peut se spécialiser en une sous classe. Une sous-classe peut hériter de plusieurs classes (multi-héritage) .• Inheritance: this concept defines a transfer of attributes and methods from one class to another class (subclass). A class can specialize in a subclass. A subclass can inherit from several classes (multi-inheritance).
• Agrégation : ce concept permet de définir des objets composés d'autres objets.• Aggregation: this concept makes it possible to define objects composed of other objects.
Le langage Java reprend les concepts objets et une syntaxe très proche du langage C/C++. Certaines spécificités du langage Java sont considérées ci- dessous :The Java language uses object concepts and a syntax very close to the C / C ++ language. Some specificities of the Java language are considered below:
• Machine virtuelle et environnement d'exécution : pour assurer la portabilité des sources (et binaires) Java, les binaires s'exécutent dans la machine virtuelle Java, qui est une couche d'abstraction entre le binaire et le l'environnement matériel (microprocesseur, ports de communication,...)• Virtual machine and runtime environment: to ensure portability of Java sources (and binaries), binaries run in the Java virtual machine, which is an abstraction layer between the binary and the hardware environment (microprocessor , communication ports, ...)
• Interfaces et mono-héritage : pour des raisons de performances, le multi-héritage n'est pas supporté.• Interfaces and single inheritance: for performance reasons, multi-inheritance is not supported.
Cependant une notion d'interface (classe abstraite dont on ne peut hériter) est introduite, une interface servant à décrire un ensemble de méthodes . Une classe d'objets peut mettre en œuvre une interface dès lors qu'elle définit l'ensemble des méthodes décrites par l'interface.However a notion of interface (abstract class whose one cannot inherit) is introduced, an interface used to describe a set of methods. An object class can implement an interface as long as it defines all of the methods described by the interface.
• Paquetages : les classes sont, éventuellement, regroupées par paquetages ( "packages " ) , un paquetage consistant en un regroupement de classes par affinités.• Packages: the classes are, possibly, grouped by packages ("packages"), a package consisting of a grouping of classes by affinities.
• Paquetages standard Java : avec la machine virtuelle Java sont définis un certain nombre de paquetages de base sur lesquels peuvent se reposer les développeurs Java pour concevoir des applications portables . Les principaux sont les suivants :• Standard Java packages: with the Java virtual machine, a certain number of basic packages are defined on which Java developers can rely to design portable applications. The main ones are:
- Java.lang : paquetage contenant les classes de base du langage (chaînes de caractères,...)- Java.lang: package containing the basic language classes (character strings, ...)
- Java. util : paquetage définissant des classes utilitaires telles que des tables de hachage- Java. util: package defining utility classes such as hash tables
- Java.io : paquetage fournissant des fonctionnalités, de type entrées/sorties (fichiers,...) - Java.net : paquetage concernant les fonctionnalités réseau de Java.- Java.io: package providing functionalities, input / output type (files, ...) - Java.net: package concerning the network functionalities of Java.
Chacune des propriétés d'une classe d'objet possède un ensemble d'attributs. L'un de ces attributs est la visibilité de la propriété :Each of the properties of an object class has a set of attributes. One of these attributes is the visibility of the property:
- Accès privé ("private") : seule la classe peut accéder à sa propriété- Private access: only the class can access its property
- Accès paquetage ("package protected" ) : toutes les classes d'objets du paquetage peuvent accéder à la propriété.- Package access ("protected package"): all object classes in the package can access the property.
- Accès protégé ("protected") : la propriété n'est accessible que depuis la classe d'objet et ses sous- classes . - Accès public : l'accès à la propriété est ouvert à toutes les classes d'objet.- Protected access ("protected"): the property is not accessible only from the object class and its subclasses. - Public access: access to the property is open to all object classes.
Les machines virtuelles Java ne chargent que les classes d'objets utilisées par un applicatif. A la première utilisation d'une classe, celle-ci est définie de manière interne et mise à la disposition de l'applicatif.Java virtual machines only load the object classes used by an application. The first time you use a class, it is defined internally and made available to the application.
Chaque classe possède une table des classes qu'elle va être amenée à utiliser. Lors de l'utilisation d'une de ces classes, elle demande une référence sur la structure interne de la classe pour pouvoir l'exploiter. Ce processus, pour des raisons de performances, n'est effectué qu'une seule fois par classe utilisée. Ceci est effectué en substituant une opération nécessitant une résolution de classe par une opération équivalente partant du principe que la classe est résolue (ie : connue) .Each class has a table of classes that it will use. When using one of these classes, it requests a reference to the internal structure of the class in order to be able to use it. This process, for performance reasons, is performed only once per class used. This is done by replacing an operation requiring class resolution with an equivalent operation based on the principle that the class is resolved (ie: known).
Les systèmes embarquésEmbedded systems
Les systèmes embarqués sont des systèmes logiciels assurant un service déterminé à l'avance. Ces systèmes s'exécutent dans un environnement matériel dédié à la onctionnalité réalisée.Embedded systems are software systems providing a service determined in advance. These systems run in a hardware environment dedicated to the functionality achieved.
Les décodeurs de télévision numérique se basent sur un système embarqué temps réel ainsi qu'une boîte électronique, le tout étant conçu pour réaliser des services de télévision payante.The digital television decoders are based on a real-time on-board system as well as an electronic box, all designed to provide pay television services.
Le système "Media-Highway" ainsi que les outils de développement associés fournissent les moyens applicatifs de développer des services interactifs tournant autour du métier de la télévision numérique, tels que des services de sélection de programmes. Dans sa déclinaison Java ("MediaHighwayThe "Media-Highway" system as well as associated development tools provide the application means to develop interactive services revolving around the profession of digital television, such as program selection services. In its Java version ("MediaHighway
Virtual Machine"), le système "MediaHighway" inclut une machine virtuelle Java, des outils de développement associés ainsi qu'un ensemble de services interactifs.Virtual Machine "), the" MediaHighway "system includes a Java virtual machine, associated development tools and a set of interactive services.
Les systèmes de télévision numérique développés par Canal+ sont destinés à des clients divers et se déroulent dans des machines de conceptions relativement différentes les unes des autres le choix des composants matériels étant laissé au constructeur.The digital television systems developed by Canal + are intended for diverse customers and take place in machines of relatively different designs from each other, the choice of hardware components being left to the manufacturer.
Le système "MediaHighway+" (MHPLUS) est un système embarqué de télévision numérique dont les applications sont conçues en langage Java.The "MediaHighway +" system (MHPLUS) is an embedded digital television system whose applications are designed in Java language.
Le choix du langage Java est motivé d'une part du fait du potentiel de ce langage et d'autre part de l'abstraction qui est faite au niveau de l'environnement matériel.The choice of the Java language is motivated on the one hand because of the potential of this language and on the other hand from the abstraction which is made at the level of the material environment.
Les sources Java sont compilées de manière à produire les binaires Java associés. Les binaires produits se présentent comme des fichiers. A chaque paquetage correspond un répertoire. A chaque classe correspond un fichier décrivant la classe. Ce fichier se trouve dans le répertoire associé au paquetage de la classe. Le noyau logiciel, sur lequel s'appuie la machine virtuelle Java embarquée, possède une interface logicielle pour accéder à un système de fichiers. Ce système de fichiers est capable de gérer des fichiers dont les définitions peuvent se trouver à divers endroits. Une de ces localisations est le binaire lui- même. Dans les données du binaire, tout un ensemble de structures liées entre elle forme le système de fichiers dit "en ROM" (puisqu'il se retrouve au final dans la mémoire ROM non inscriptible de la machine cible) . Les binaires Java se trouvent finalement dans le système de fichiers "en ROM" du gestionnaire de fichiers. L'arborescence de répertoire et de fichiers correspondant aux paquetages et . classes des binaires Java est directement reproduite dans le système de fichiers "en ROM". Pour ce faire, un outil permet de générer du code source en langage C . Le code source une fois compilé définit l'arborescence relative aux binaires Java. Le résultat de cette compilation, une fois intégré au binaire final, fournit à la machine virtuelle Java les définitions de classes nécessaire à son fonctionnement.Java sources are compiled to produce the associated Java binaries. The binaries produced appear as files. Each package has a directory. Each class corresponds to a file describing the class. This file is located in the directory associated with the class package. The software kernel, on which the embedded Java virtual machine is based, has a software interface for accessing a file system. This file system is capable of handling files whose definitions can be found in various places. One of these locations is the binary itself. In the binary data, a whole set of linked structures forms the so-called "ROM" file system (since it ends up in the non-writable ROM memory of the target machine). Java binaries are ultimately found in the "ROM" file system of the file manager. The directory and file tree corresponding to the packages and. Java binaries classes are directly reproduced in the "ROM" file system. To do this, a tool allows you to generate source code in C language. The source code once compiled defines the tree structure relating to Java binaries. The result of this compilation, once integrated into the final binary, provides the Java virtual machine with the class definitions necessary for its operation.
La machine virtuelle embarquée possède un gestionnaire de classes, qui est un module applicatif chargé de la base de données des classes Java utilisées .The embedded virtual machine has a class manager, which is an application module responsible for the database of Java classes used.
Lorsqu'une classe d'objet est nécessaire au fonctionnement d'un ensemble applicatif, et que cette classe n'est pas encore définie, la machine virtuelleWhen an object class is necessary for the operation of an application set, and this class is not yet defined, the virtual machine
Java procède de la manière suivante pour mettre à disposition la classe :Java does the following to make the class available:
1. Chargement de la description de la classe (fichier binaire résultant de la compilation d'une source Java) , 2. Définition, au besoin, de la classe parente de celle-ci (ce qui revient à appliquer ces mêmes étapes pour la super-classe) ,1. Loading the description of the class (binary file resulting from the compilation of a Java source), 2. Definition, if necessary, of its parent class (which amounts to applying these same steps for the superclass),
3. Initialisation de la classe (exécution de code Java défini dans le source de la classe) .3. Initialization of the class (execution of Java code defined in the source of the class).
Si toutes ces étapes se passent sans erreurs, le gestionnaire de classes fournit à la machine virtuelle la définition interne de la classe.If all these steps go without errors, the class manager provides the virtual machine with the internal definition of the class.
Dans le cas général, la description de la classe est chargée depuis le système de fichiers.In the general case, the description of the class is loaded from the file system.
Les contraintes liées à ce mode de fonctionnement sont très fortes dans les environnements embarqués, souvent assez limités en ressources telles que la mémoire : • L'ensemble des classes utilisées doit être chargé, notamment les classes de base du langage Java, ce qui implique une perte de temps non négligeable. • La place occupée en mémoire est considérable puisqu'aux fichiers en mémoire ROM, s'ajoutent des structures de données, formant la définition interne de la classe, ces structures de données se trouvant en mémoire vive RAM.The constraints linked to this operating mode are very strong in embedded environments, often quite limited in resources such as memory: • All the classes used must be loaded, in particular the basic classes of the Java language, which implies a significant loss of time. • The space occupied in memory is considerable since to the files in ROM memory, data structures are added, forming the internal definition of the class, these data structures being in RAM memory.
L'invention a pour objet une solution alternative à la solution décrite ci-dessus pour la mise à disposition de classes dans des environnements pauvres en mémoire et en puissance de traitement, en délocalisant le maximum du traitement effectué au chargement des classes utilisées au démarrage du système, et en réduisant au maximum les effets liés aux contraintes citées . Exposé de 1 ' inventionThe subject of the invention is an alternative solution to the solution described above for providing classes in environments poor in memory and in processing power, by delocalizing the maximum of the processing carried out when loading the classes used at the start of the system, and minimizing the effects related to the constraints cited. Statement of the invention
L'invention concerne un procédé de gestion de classes pour un langage orienté objet basé sur une résolution dynamique des classes d'objets, caractérisé en ce que l'on transforme la résolution d'au moins une classe dynamique, pour un groupe de classes autonomes, en résolution statique. Avantageusement dans ledit procédé, utilisé dans une machine virtuelle Java pour un ensemble de classes autonomes, on inclut la structure native exploitée directement par le noyau, de ces classes en tant que données du binaire de la machine virtuelle (on se libère ainsi de la contrainte des fichiers) . On fait une partie du travail de résolution, et on optimise les ressources mémoire du système.The invention relates to a class management method for an object oriented language based on a dynamic resolution of object classes, characterized in that the resolution of at least one dynamic class is transformed, for a group of autonomous classes. , in static resolution. Advantageously in said method, used in a Java virtual machine for a set of autonomous classes, we include the native structure exploited directly by the kernel, of these classes as binary data of the virtual machine (we thus free ourselves from the constraint files) . We do some of the solving work, and we optimize the memory resources of the system.
Avantageusement dans ledit procédé, utilisé dans un système embarqué, on inclut la structure native, exploitée directement par le noyau Java, de ces classes en tant que données du binaire de la machine virtuelle sous une forme impliquant une optimisation (réduction du coût d'exploitation de l'ensemble des classes autonomes) des ressources mémoire du système ainsi qu'une optimisation en vitesse de l'exécution du bytecode des méthodes de classe.Advantageously in said method, used in an embedded system, we include the native structure, exploited directly by the Java kernel, of these classes as binary data of the virtual machine in a form implying an optimization (reduction of the operating cost of all autonomous classes) of the memory resources of the system as well as an optimization in speed of the execution of the bytecode of the class methods.
On peut créer des fichiers source en langage natif décrivant les structures natives correspondant à l'ensemble autonome des classes. On peut découper l'ensemble autonome de classes en sous-ensembles correspondant aux paquetages Java, ces sous-ensembles n'étant pas autonomes individuellement, et établir des règles de nommage des symboles (nom+description de structures) de manière à pouvoir référencer une classe d'un paquetage depuis une classe d'un autre paquetage. Dans le cadre de la description des méthodes et plus particulièrement dans le cadre de la description du bytecode des méthodes, on peut remplacer le bytecode nécessitant la résolution d'une entité par le bytecode réalisant la même fonctionnalité mais qui part du principe que l'entité est résolue.You can create source files in native language describing the native structures corresponding to the autonomous set of classes. We can split the autonomous set of classes into subsets corresponding to Java packages, these subsets not being autonomous individually, and establish rules for naming symbols (name + description of structures) so as to be able to reference a class of a package from a class of another package. Within the framework of the description of the methods and more particularly within the framework of the description of the bytecode of the methods, one can replace the bytecode requiring the resolution of an entity by the bytecode realizing the same functionality but which starts from the principle that the entity is resolved.
L'invention concerne également un outil de génération des structures natives depuis les binaires Java mettant en œuvre le procédé.The invention also relates to a tool for generating native structures from Java binaries implementing the method.
Le procédé de 1 ' invention trouve notamment son utilité dans des systèmes pauvres en ressource mémoire, tels que des décodeurs de télévision numérique .The method of the invention finds particular utility in systems poor in memory resource, such as digital television decoders.
Brève description des figuresBrief description of the figures
La figure 1 illustre un processus de génération de binaire de l'art connu. La figure 2 illustre un processus de génération de binaire selon l'invention.Figure 1 illustrates a known art binary generation process. Figure 2 illustrates a binary generation process according to the invention.
La figure 3 illustre des structures associées aux classes Java. Description détaillée de modes de réalisation de l' inventionFigure 3 illustrates structures associated with Java classes. Detailed description of embodiments of the invention
La solution adoptée par le procédé de l'invention consiste à délocaliser le maximum du traitement effectué au chargement des classes utilisées au démarrage du système, en réduisant au maximum les effets liés aux contraintes citées.The solution adopted by the method of the invention consists in offshoring the maximum of the processing carried out when loading the classes used at the start of the system, while minimizing the effects linked to the constraints cited.
Plutôt que d'intégrer les descriptifs de classe générés lors de l'étape de compilation Java, on intègre les descriptions des structures' internes utilisées par le gestionnaire de classes. Le gestionnaire de classe, au démarrage du système, précharge toutes les classes définies de cette manière et exécute le code Java d'initialisation associé. Le chargement de ces classes se trouve simplifié pour le gestionnaire de classes, puisque les structures internes des classes sont déjà dé inies.Rather than integrate the class descriptions generated during Java compilation step, we integrate the structures descriptions internal classes used by the manager. The class manager, at system startup, preloads all the classes defined in this way and executes the associated Java initialization code. The loading of these classes is simplified for the class manager, since the internal structures of the classes are already defined.
L'ensemble de la structure se retrouve localisée dans la mémoire ROM. Seules les informations susceptibles d'être modifiées à l'exécution d'applicatifs se retrouvent délocalisées dans la mémoire RAM.The entire structure is located in the ROM memory. Only the information likely to be modified during the execution of applications is found delocalized in the RAM memory.
Le procédé de l'invention, pour accomplir la création de la structure interne d'une classe, est tel que :The method of the invention, to accomplish the creation of the internal structure of a class, is such that:
• Les structures internes des classes à utiliser par celle-ci sont connues lors de l'intégration du binaire, des références directes à ces classes étant utilisées.• The internal structures of the classes to be used by it are known during the integration of the binary, direct references to these classes being used.
• Les structures des classes utilisées étant connues, on substitue les opérations demandant une résolution de classe par les opérations correspondantes se passant de la résolution de classe.• The structures of the classes used being known, the operations requesting a class resolution are replaced by the corresponding operations without class resolution.
Les graphes illustrés sur les figures 1 et 2 définissent les étapes menant à la création du binaire final respectivement avec et sans utilisation du procédé de l'invention.The graphs illustrated in Figures 1 and 2 define the steps leading to the creation of the final binary respectively with and without the use of the method of the invention.
Les classes ainsi définies sont initialisées au démarrage du système Java. Elles sont regroupées par paquetage. Chacun des paquetages fournit la liste de ses classes ainsi que l'ensemble des paquetages possédant des classes utilisées par une des entités du paquetage. Ce regroupement en paquetages fournit, au moment de l'exploitation de l'invention, l'opportunité de faire des simplifications relatives aux affinités de classes d'un même paquetage, notamment sur la visibilité des propriétés. Ce regroupement présente également l'avantage de réduire les traitements lors de la mise en œuvre du procédé de 1 ' invention.The classes thus defined are initialized when the Java system starts. They are grouped by package. Each of the packages provides a list of its classes as well as all of the packages with classes used by one of the entities in the package. This grouping into packages provides, during the exploitation of the invention, the opportunity to make simplifications relating to the class affinities of the same package, in particular on the visibility of the properties. This grouping also has the advantage of reducing processing during the implementation of the method of the invention.
Le procédé de 1 ' invention permet donc de préparer les classes Java en vue d'une utilisation quasi-immédiate au démarrage du système.The method of the invention therefore makes it possible to prepare the Java classes for almost immediate use at system startup.
L'invention concerne également l'outil de génération des structures natives depuis les binaires Java, qui permet de préparer ainsi les classes Java. Compilation des sources Java/création des fichiers classe.The invention also relates to the tool for generating native structures from Java binaries, which thus makes it possible to prepare Java classes. Compilation of Java sources / creation of class files.
La compilation est le processus de transformation de code source décrivant un logiciel informatique en un ensemble d'opérations élémentaires directement comprises, c'est-à-dire interprétées, par la machine sur laquelle va s'exécuter ce programme. Dans le cas du langage Java, l'unité de base du code source est la classe Java. Le résultat de la compilation est un ensemble de fichiers, chaque fichier décrivant une classe, ainsi que ses méthodes. La machine virtuelle Java est l'environnement dans lequel se déroulent les programmes ainsi compilés.Compilation is the process of transforming source code describing computer software into a set of elementary operations directly understood, that is to say interpreted, by the machine on which this program will be executed. In the case of the Java language, the basic unit of source code is the Java class. The result of the compilation is a set of files, each file describing a class, as well as its methods. The Java virtual machine is the environment in which the programs thus compiled take place.
L'outil de l'invention exploite ces structures de classes de manière à les préparer pour une intégration immédiate à la base de données des classes du gestionnaire de classes.The tool of the invention exploits these class structures so as to prepare them for immediate integration into the class database of the class manager.
Intégration des fichiers classe au binaire Les fichiers classes sont inclus dans le binaire de la machine virtuelle en tant que structures de données directement comprises par le gestionnaire de classes . Ces structures de données sont décrites par le biais de code source en langage C.Integration of class files into binary Class files are included in the binary of the virtual machine as data structures directly understood by the class manager. These data structures are described by source code in C language.
Outil de préparation des classesClass preparation tool
Le code source est construit par un outil à même de comprendre les fichiers classes et familier avec les structures de données du gestionnaire de classes.The source code is built by a tool capable of understanding class files and familiar with the data structures of the class manager.
Cet outil travaille sur des fichiers classes, tels que décrits par les spécifications du langage Java, interprète leur contenu, et fournit des structures de données compatibles avec celles du gestionnaire de classes de la machine virtuelle.This tool works on files classes, as described by the Java language specifications, interpret their content, and provide data structures compatible with those of the class manager of the virtual machine.
Exemple de mise en œuvreExample of implementation
La mise en œuvre de l'invention est très liée à la définition interne des structures de classes et entités associées.The implementation of the invention is closely linked to the internal definition of the class structures and associated entities.
On va donc considérer successivement les structures utilisées (base de données des classes) , une manière de résoudre les contraintes liées à l'invention, et enfin un exemple de résultat produit sur application de l'inventionWe will therefore successively consider the structures used (class database), a way of solving the constraints linked to the invention, and finally an example of result produced on application of the invention
Base de données des classesClass database
Le gestionnaire de classes maintient une base de données des classes chargées. Les structures, entités pertinentes dans le cadre de l'invention, sont décrites ci après ; il s'agit des structures de classes, des propriétés, ainsi que des tables de liens associées à chacune des classes.The class manager maintains a database of loaded classes. The structures, entities relevant in the context of the invention, are described below; these are class structures, properties, as well as link tables associated with each of the classes.
Structure décrivant une classeStructure describing a class
Diverses informations sont associées à chacune des classes, entre autres :Various information is associated with each of the classes, among others:
• Une référence vers la super-classe.• A reference to the super-class.
• La liste des méthodes de la classe (une liste de références vers des structures décrivant les méthodes) . • La liste des références vers les structures décrivant les attributs définis par la classe.• The list of methods of the class (a list of references to structures describing the methods). • The list of references to structures describing the attributes defined by the class.
• Une table des références non résolues vers des classes, méthodes ou attributs nécessaire au bon fonctionnement des méthodes de la classe.• A table of unresolved references to classes, methods or attributes necessary for the proper functioning of the methods of the class.
Structure décrivant un attribut Chaque attribut d'une classe est décrit par une structure fournissant, entre autres, les informations suivantes :Structure describing an attribute Each attribute of a class is described by a structure providing, among other things, the following information:
• Le nom et la signature de l'attribut.• The name and signature of the attribute.
• Une référence vers la valeur de l'attribut.• A reference to the value of the attribute.
• La visibilité de l'attribut.• The visibility of the attribute.
Structure décrivant une méthodeStructure describing a method
Les méthodes d'une classe sont décrites par une structure définissant, entre autres, les informations suivantes, pour chacune des méthodes :The methods of a class are described by a structure defining, among other things, the following information, for each of the methods:
• Le nom et la signature de la méthode. • La visibilité de la méthode.• The name and signature of the method. • The visibility of the method.
• Le code de la méthode.• The method code.
Table de références table/des constantes La table de référence est définie par le nombre d'éléments, ainsi que par chacun de ses éléments .Reference table table / constants The reference table is defined by the number of elements, as well as by each of its elements.
Plus généralement, il s'agit de la table des constantes de la classe.More generally, it is the table of class constants.
Chacun des éléments de la table est défini par l'ensemble d'informations suivant : • Un indicateur de résolution de l'élément, indiquant si son accès nécessite une résolution préalable.Each of the elements of the table is defined by the following set of information: • An element resolution indicator, indicating if its access requires a prior resolution.
• Le type de 1 ' élément . • La référence vers la (définition de la) constante.• The type of the element. • The reference to the (definition of) constant.
Résoudre une entrée de la table des constantes revient à retrouver la valeur de la constante et à substituer la référence vers la définition de la constante par la constante elle-même.Resolving an entry in the constant table amounts to finding the value of the constant and substituting the reference to the definition of the constant by the constant itself.
Un schéma récapitulatif des structures associées aux classes Java est illustré sur la figure 3.A summary diagram of the structures associated with Java classes is illustrated in Figure 3.
Résolution des contraintes associées au procédé de 1 ' inventionResolution of the constraints associated with the method of the invention
Les contraintes précédemment citées sont passées en revue et les solutions techniques associées sont décrites ci-dessous.The constraints mentioned above are reviewed and the associated technical solutions are described below.
Les entités utilisées doivent être connues Les entités utilisées par une classeThe entities used must be known The entities used by a class
(autres classes, propriétés,...) doivent être résolues de manière à pouvoir conserver la table des constantes d'une classe dans la mémoire ROM. Ces entités se trouvent dans la table des constantes .(other classes, properties, ...) must be resolved so as to be able to keep the table of constants for a class in ROM memory. These entities are found in the table of constants.
Les constantes de la table sont initialement non résolues. A chacune des constantes sont associées les informations nécessaires pour la résoudre (pour une constante de type classe, le nom de la classe est par exemple précisé) . La résolution d'une constante se fait une seule fois pendant la durée de vie de la classe.The table constants are initially unresolved. Each of the constants is associated with the information necessary to solve it (for a class constant, the name of the class is for example specified). The resolution of a constant is done only once during the lifetime of the class.
L'application du procédé de l'invention pour une classe passe par la résolution des entrées de la table des constantes.The application of the method of the invention for a class involves solving the entries in the table of constants.
Concernant les constantes de type classe, résoudre la classe revient au final à appliquer le procédé de l'invention à la classe.Regarding class type constants, solving the class ultimately means applying the method of the invention to the class.
Le code Java doi t se baser sur les enti tés résoluesJava code must be based on resolved entities
Certains bytecodes Java sont des opérations utilisant un argument dont la valeur se trouve dans la table des constantes. Pour des raisons de performances, les bytecodes nécessitant une résolution de constante sont associés à un bytecode équivalent réalisant la même fonctionnalité, mais partant du principe que la constante est déjà résolue, nommé, ci-dessous, "bytecode quick".Some Java bytecodes are operations using an argument whose value is in the table of constants. For performance reasons, bytecodes requiring constant resolution are associated with an equivalent bytecode achieving the same functionality, but assuming that the constant is already resolved, called "bytecode quick" below.
Après résolution avec succès d'une constante, au bytecode ayant demandé la résolution de la constante est substitué son bytecode quick.After successfully resolving a constant, the bytecode that requested the resolution of the constant is replaced by its quick bytecode.
L'outil de l'invention peut donc substituer les bytecodes utilisant des constantes à résoudre par des bytecode quick, puisque les entités utilisées doivent être résolues .The tool of the invention can therefore replace the bytecodes using constants to be resolved by quick bytecodes, since the entities used must be resolved.
Symboles associés au code source généré • Découpage en paquetageSymbols associated with the source code generated • Breakdown into packages
L'invention est appliquée sur des paquetages . Au paquetage sont associées les informations suivantes : un tableau de classes, une classe étant connue par son index dans le tableau.The invention is applied to packages. The package is associated with the following information: an array of classes, a class being known by its index in the array.
Des constantes de compilation sont définies, ces constantes établissent le lien « index d'une classe dans le tableau <-> structure de classe ».Compilation constants are defined, these constants establish the link “index of a class in the table <-> class structure”.
Le nom de symbole associé au tableau est construit à partir du nom du paquetage.The symbol name associated with the array is constructed from the name of the package.
• Référence sur une classe• Reference on a class
La référence à une classe d'un autre paquetage se fait alors sous la forme : & Tableaupaquetage[INDEX_DE_LA_CLASSE] , qui est l'adresse de l'élément INDEX_DE_LA_CLASSE dans le tableau.The reference to a class of another package is done in the form: & Tableaupaquetage [INDEX_DE_LA_CLASSE], which is the address of the element INDEX_DE_LA_CLASSE in the table.
• Référence sur les méthodes d'une classe• Reference on the methods of a class
De même que pour les classes d'un paquetage, les méthodes sont regroupées dans un tableau. Le tableau des méthodes est accessible à partir d'un symbole, dont le nom est associé au nom de la classe.As with the classes in a package, the methods are grouped in an array. The method table is accessible from a symbol, whose name is associated with the name of the class.
• Référence sur les attributs d'une classe• Reference on the attributes of a class
Les attributs d'une classe sont aussi regroupés en une liste. Cette liste se présente sous la forme d'un tableau. Le nom de symbole associé au tableau est fonction du nom de la classe. Exemple de résultat produit sur application du procédé de 1 ' inventionThe attributes of a class are also grouped into a list. This list is presented in the form of a table. The symbol name associated with the array is a function of the class name. Example of result produced on application of the method of the invention
Description des classes JavaDescription of Java classes
L'architecture de classes Java utilisée pour l'exemple est la suivante :The Java class architecture used for the example is as follows:
Les classes appartiennent au paquetage test.brevet. Pour donner un exemple concret mais simple, deux classes sont utilisées : Classel etThe classes belong to the test.brevet package. To give a concrete but simple example, two classes are used: Classel and
Classe2, ainsi qu'une interface Interfacel, telles que :Classe2, as well as an Interfacel interface, such as:
• Classel met en œuvre l'interface Interfacel et hérite de la classe Java. lang.Object , classe dont héritent toutes les autres classes du système. • Classe2 hérite de Classel.• Classel implements the Interfacel interface and inherits from the Java class. lang.Object, class from which all other classes in the system inherit. • Classe2 inherits from Classel.
• Interfacel décrit une méthode methodel qui est définie dans les classes (Classel et Classe2) mettant en œuvre cette interface.• Interfacel describes a methodel method which is defined in the classes (Classel and Classe2) implementing this interface.
• Classel définit deux méthodes : la méthode String toStringO surcharge celle de la classe• Classel defines two methods: the String toStringO method overrides that of the class
Java. lang.Object ; la méthode methodel ( ) affiche un petit message sur la sortie texte de la machine virtuelle .Java. lang.Object; the methodel () method displays a small message on the text output of the virtual machine.
• Classe2 définit deux méthodes : la méthode methodel ( ) surcharge celle de Classel et affiche un autre petit message ; la méthode methode2 affiche encore un autre message sur la sortie texte.• Classe2 defines two methods: the methodel () method overloads that of Classel and displays another small message; the method method2 displays yet another message on the text output.
Les définitions des classes et interfaces sont les suivantes : fichier source Interfacel . java package test. Brevet ; public interface Interfacel { public void méthode () ; }The definitions of the classes and interfaces are as follows: Interfacel source file. Java test package. Patent; public interface Interfacel {public void method (); }
fichier source Classel. javaClassel source file. Java
package test, brevet ; public class Classel extends java. lang. Object implements Interfacel { public String toString ( ) { return « Classel »test package, patent; public class Classel extends java. lang. Object implements Interfacel {public String toString () {return "Classel"
} public void methodel ( ) { System. out .println («un petit message»)} public void methodel () {System. out .println ("a little message")
> }>}
fichier source Classe2.javaClasse2.java source file
package test, brevet public class Classe2 extends Classel { public void methodel ( ) {test package, patent public class Class2 extends Classel {public void methodel () {
System. out .println («un autre petit message»); }System. out .println ("another little message"); }
}}
Structures produi tesProduct structures
Le résultat de l'application du procédé de l'invention est défini ci-dessous : ici, il s'agit de la transformation des sources Java précédemment définies, après leur compilation, en code source dans le langage C décrivant les structures correspondantes de la base de données des classes de la machine virtuelle.The result of the application of the method of the invention is defined below: here, it is the transformation of Java sources previously defined, after their compilation, in source code in the C language describing the corresponding structures of the class database of the virtual machine.
Définition externesExternal definitions
#include <MhwTypes.h>#include <MhwTypes.h>
#include <MhwMemory.h>#include <MhwMemory.h>
#include <MhwObject .h> #include <MhwClassF.h>#include <MhwObject .h> #include <MhwClassF.h>
#include <MhwInterpreterF .h>#include <MhwInterpreterF .h>
#include <MhwClassRom.h>#include <MhwClassRom.h>
#include <java/lang/stubs/java_lang_String.h>#include <java / lang / stubs / java_lang_String.h>
#include <test/brevet/stubs/ClassRom.h> #include <java/lang/stubs/ClassRom.h>#include <test / patent / stubs / ClassRom.h> #include <java / lang / stubs / ClassRom.h>
#include <test/brevet/stubs/ClassRom.h>#include <test / patent / stubs / ClassRom.h>
Chaînes de caractère static const char cString_0[] "<init>" ; static const char cString_l[] " OV"; static const char cString_2[] "methodel" ; static const char cString_3[] "toString" ; static const char cString_4[] " ()Ljava/lang/String; static const char cString_7[] "test/brevet/Classel" ; static const char cString_8[] "Classel . java" ; static const char cString_10[] -- " test/brevet/Classe2 " ; static const char cString_ll[] -- "Classe2. java" ; static const char cString_12[] "test/brevet/Interfacel" ; static const char cString_13[] : "Interfacel. java" ; #ifndef CLASSROM_OPTIMIZE static const char cString_5[] "this" ; static const char cString_6[] "Ltest/brevet/Classel; " ; static const char cString_9[] "Ltest/brevet/Classe2 ; " ; #endif /* CLASSROM^OPTIMIZE */Static const char cString_0 [] "<init>"; static const char cString_l [] "OV"; static const char cString_2 [] "methodel"; static const char cString_3 [] "toString"; static const char cString_4 [] "() Ljava / lang / String; static const char cString_7 []" test / patent / Classel "; static const char cString_8 []" Classel. java "; static const char cString_10 [] -" test / patent / Class2 "; static const char cString_ll [] -" Class2. java "; static const char cString_12 []" test / patent / Interfacel "; static const char cString_13 [] : " Interfacel. java ";#ifndef CLASSROM_OPTIMIZE static const char cString_5 []" this "; static const char cString_6 []" Ltest / patent / Classel; "; static const char cString_9 []" Ltest / patent / Class2; ";#endif / * CLASSROM ^ OPTIMIZE * /
Bytecode de la classe ClasselClassel class bytecode
static CLASSROM_CONST Card8 byteCode_0[] = {static CLASSROM_CONST Card8 byteCode_0 [] = {
/* 0 */ 0x2A, OxDC, 0x00, 0x08, OxBl }; #ifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_0 [ ] = {/ * 0 * / 0x2A, OxDC, 0x00, 0x08, OxBl}; #ifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_0 [] = {
{ /* 0 */ 0, 32 } }; #endif /* CLASSROM_OPTIMIZE */{/ * 0 * / 0, 32} } ; #endif / * CLASSROM_OPTIMIZE * /
#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_0 [ ] =#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_0 [] =
{{
{ /* 0 */ 0, 5, 5, 6, 0 }{/ * 0 * / 0, 5, 5, 6, 0}
};};
#endif /* CLASSROM_OPTIMIZE */#endif / * CLASSROM_OPTIMIZE * /
static CLASSROM_CONST Card8 byteCode_l [ ] =static CLASSROM_CONST Card8 byteCode_l [] =
{{
/* 0 */ 0xD2, 0x00, 0x02, OxCB, 0x03, 0xD6, OxlD, 0x02, OxBl/ * 0 * / 0xD2, 0x00, 0x02, OxCB, 0x03, 0xD6, OxlD, 0x02, OxBl
}; tifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_l [ ] =}; tifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_l [] =
{{
{ / * 0 * / 0 ,{/ * 0 * / 0,
3737
} , } ,
{ / * 1 * / 8 , 36{/ * 1 * / 8.36
} } ; #endif /* CLASSROM_OPTIMIZE */}}; #endif / * CLASSROM_OPTIMIZE * /
#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_l[] {#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_l [] {
{ /* 0 */ 0, 9, 5, 6, 0 } }; #endif /* CLASSROM_OPTIMIZE */{/ * 0 * / 0, 9, 5, 6, 0}}; #endif / * CLASSROM_OPTIMIZE * /
static CLASSROM_CONST Cardδ byteCode_2[] { /* 0 */ OxCB, 0x01, OxBO };static CLASSROM_CONST Cardδ byteCode_2 [] {/ * 0 * / OxCB, 0x01, OxBO};
#ifndef C ASSROM_OPTIMIZE static const MhwClmLineno Lineno_2 [ ] = {#ifndef C ASSROM_OPTIMIZE static const MhwClmLineno Lineno_2 [] = {
{ /* 0 */ 0, 34{/ * 0 * / 0.34
} };}};
#endif /* CLASSROM OPTIMIZE */#endif / * CLASSROM OPTIMIZE * /
tifndef CLASSROM__OPTIMIZE , static const MhwClmLocalVar LocalVar_2 [ ] {tifndef CLASSROM__OPTIMIZE , static const MhwClmLocalVar LocalVar_2 [] {
{ /* 0 */ 0, 3, 5,{/ * 0 * / 0, 3, 5,
6, 06, 0
} }; #endif /* CLASSROM OPTIMIZE */ Données de la table des constantes/références de la classe Classel static const Cardlβ character_0 [ ] = {}}; #endif / * CLASSROM OPTIMIZE * / Data from the table of constants / references of the class Classel static const Cardlβ character_0 [] = {
/* 0 */ 0x0043, 0x006C, 0x0061, 0x0073, 0x0073, 0x0065, 0x0031 }; static const HArrayOfChar arrayOfChar__0 =/ * 0 * / 0x0043, 0x006C, 0x0061, 0x0073, 0x0073, 0x0065, 0x0031}; static const HArrayOfChar arrayOfChar__0 =
{{
(const ArrayOfChar) character_0, (void*) (0x7055)(const ArrayOfChar) character_0, (void *) (0x7055)
>; static const Classjava_lang_String stringStruct_0 = {>; static const Classjava_lang_String stringStruct_0 = {
(struct HArrayOfChar * ) &arrayOfChar_0 , 0, 7 }; static const Hjava_lang_String string__0 = { (Classjava_lang_String*) &stringStruct_0 , (void*) (&java_lang_String__MethodTable) }; static const Cardlβ character_l [ ] = {(struct HArrayOfChar *) & arrayOfChar_0, 0, 7}; static const Hjava_lang_String string__0 = {(Classjava_lang_String *) & stringStruct_0, (void *) (&java_lang_String__MethodTable)}; static const Cardlβ character_l [] = {
/* 0 */ 0x0075, OxOOβE, 0x0020, 0x0070, 0x0065, 0x0074, 0x0069, 0x0074, 0x0020, 0x006D,/ * 0 * / 0x0075, OxOOβE, 0x0020, 0x0070, 0x0065, 0x0074, 0x0069, 0x0074, 0x0020, 0x006D,
/* 10 */ 0x0065, 0x0073, 0x0073, 0x0061, 0x0067, 0x0065 }; static const HArrayOfChar arrayOfChar__l = {/ * 10 * / 0x0065, 0x0073, 0x0073, 0x0061, 0x0067, 0x0065}; static const HArrayOfChar arrayOfChar__l = {
(const ArrayOfChar) character_l, (void*) (0x10055) }; static const Classjava_lang_String stringStruct_l = { (struct HArrayOfChar *) &arrayOfChar_l, 0, 16 } ; static const Hj ava_lang_String string_l = { (Classj ava_lang_String* ) &stringStruct_l ,(const ArrayOfChar) character_l, (void *) (0x10055)}; static const Classjava_lang_String stringStruct_l = {(struct HArrayOfChar *) & arrayOfChar_l, 0, 16 }; static const Hj ava_lang_String string_l = {(Classj ava_lang_String *) & stringStruct_l,
(void* ) (&java_lang_String_MethodTable) } ; static const Hj ava_lang_Class test_brevet_Classel__Handle = {(void *) (&java_lang_String_MethodTable)}; static const Hj ava_lang_Class test_brevet_Classel__Handle = {
(Classj ava_lang_Class* ) & ( test_brevet_Class_Entry [TEST_B REVET_CLASSE1] ) , (void* ) &java_lang_Class_MethodTable(Classj ava_lang_Class *) & (test_brevet_Class_Entry [TEST_B REVET_CLASSE1]), (void *) & java_lang_Class_MethodTable
} ;};
Table des méthodes de la classe Classel static const struct { const MhwClmClass *classdescriptor ; const MhwClmMethod *methods [ 13 ] ; } test_brevet_Classel_MethodTable = {Classel Class Method Table static const struct {const MhwClmClass * classdescriptor; const MhwClmMethod * methods [13]; } test_brevet_Classel_MethodTable = {
( const MhwClmClass* ) & ( test_brevet_Class_Entry [TEST_BREVET_CLAS SE1] ) , {(const MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLAS SE1]), {
NULL ,NULL,
(MhwClmMethod*) & (java_lang_Object_Method [2 ] ) /* 1 */,(MhwClmMethod *) & (java_lang_Object_Method [2]) / * 1 * /,
(MhwClmMethod*) & (test_brevet_Classel_Method[2] ) /* 2 */,(MhwClmMethod *) & (test_brevet_Classel_Method [2]) / * 2 * /,
(MhwClmMethod* ) & (java_lang_Object_Method [11] ) /* 3(MhwClmMethod *) & (java_lang_Object_Method [11]) / * 3
*/,* /
(MhwClmMethod*) & (java_lang_Object_Method[9] ) /* 4 */, (MhwClmMethod*)&(java_lang_0b ect_Method[3] ) /* 5(MhwClmMethod *) & (java_lang_Object_Method [9]) / * 4 * /, (MhwClmMethod *) & (java_lang_0b ect_Method [3]) / * 5
*/,* /
(MhwClmMethod*) & (java_lang_0bject_Method[10] ) /* 6(MhwClmMethod *) & (java_lang_0bject_Method [10]) / * 6
*/,* /
(MhwClmMethod*) & (java_lang_Object_Method[4] ) /* 7 */,(MhwClmMethod *) & (java_lang_Object_Method [4]) / * 7 * /,
(MhwClmMethod* ) & (java_lang_Obj ect_Method [5] ) /* 8 */, (MhwClmMethod*) & (java_lang_Obj ect_Method [ 6] ) / * 9(MhwClmMethod *) & (java_lang_Obj ect_Method [5]) / * 8 * /, (MhwClmMethod *) & (java_lang_Obj ect_Method [6]) / * 9
*/,* /
(MhwClmMethod*) & (java_lang_0bject_Method[7] ) /* 10(MhwClmMethod *) & (java_lang_0bject_Method [7]) / * 10
*/, (MhwClmMethod* ) & ( j ava_lang_Obj ect_Method [1] ) / * 11* /, (MhwClmMethod *) & (j ava_lang_Obj ect_Method [1]) / * 11
*/,* /
(MhwClmMethod*) & (test_brevet_Classel_Method[l] ) /* 12 */ > }; static const Cardlβ interfaceslmplemented_0 [ ] =(MhwClmMethod *) & (test_brevet_Classel_Method [l]) / * 12 * />}; static const Cardlβ interfaceslmplemented_0 [] =
{{
/* 0 */ 0x0004 };/ * 0 * / 0x0004};
Bytecode de la classe Classe2 static CLASSROM_CONST Card8 byteCode_3[]Class 2 bytecode static CLASSROM_CONST Card8 byteCode_3 []
{{
/* 0 */ 0x2A, 0xD7, 0x00, 0x03, OxBl/ * 0 * / 0x2A, 0xD7, 0x00, 0x03, OxBl
}; tifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_3[] =}; tifndef CLASSROM_OPTIMIZE static const MhwClmLineno Lineno_3 [] =
{{
{ /* 0 */ 0, 32 } }; #endif /* CLASSR0M_0PTIMIZE */{/ * 0 * / 0, 32}}; #endif / * CLASSR0M_0PTIMIZE * /
#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_3[]#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_3 []
{{
{ /* 0 */ 0, 5, 4, 5, 0 }{/ * 0 * / 0, 5, 4, 5, 0}
};};
#endif /* CLASSROM_OPTIMIZE */ static CLASSROM_CONST Card8 byteCode_4 [ ] = { /* 0 */ 0xD2, 0x00, 0x01, OxCB, 0x02, 0xD6, OxlD, 0x02, OxBl };#endif / * CLASSROM_OPTIMIZE * / static CLASSROM_CONST Card8 byteCode_4 [] = {/ * 0 * / 0xD2, 0x00, 0x01, OxCB, 0x02, 0xD6, OxlD, 0x02, OxBl};
#ifndef CLASSROMJDPTIMIZE static const MhwClmLineno Lineno_4[] = {#ifndef CLASSROMJDPTIMIZE static const MhwClmLineno Lineno_4 [] = {
{ /* 0 */ 0, 34 },{/ * 0 * / 0.34},
{ /* 1 */ 8, 33{/ * 1 * / 8, 33
} }; tendif /* CLASSROM_OPTIMIZE */}}; tense / * CLASSROM_OPTIMIZE * /
#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_4[] {#ifndef CLASSROM_OPTIMIZE static const MhwClmLocalVar LocalVar_4 [] {
{ /* 0 */ 0, 9, 4, 5, 0 } }; #endif /* CLASSROM_OPTIMIZE */{/ * 0 * / 0, 9, 4, 5, 0}}; #endif / * CLASSROM_OPTIMIZE * /
Données de la table des constantes/références de la classe Classe2 static const Cardlβ character_2 [] = {Data from the constants / references table of class Classe2 static const Cardlβ character_2 [] = {
/* 0 */ 0x0075, OxOOβE, 0x0020, 0x0061, 0x0075, 0x0074, 0x0072, 0x0065, 0x0020, 0x0070, /* 10 */ 0x0065, 0x0074, 0x0069, 0x0074, 0x0020, OxOOβD, 0x0065, 0x0073, 0x0073, 0x0061,/ * 0 * / 0x0075, OxOOβE, 0x0020, 0x0061, 0x0075, 0x0074, 0x0072, 0x0065, 0x0020, 0x0070, / * 10 * / 0x0065, 0x0074, 0x0069, 0x0074, 0x0020, OxOOβD, 0x0065, 0x0073, 0x0073, 0x0061,
/* 20 */ 0x0067, 0x0065 }; static const HArrayOfChar arrayOfChar_2 =/ * 20 * / 0x0067, 0x0065 }; static const HArrayOfChar arrayOfChar_2 =
{ (const ArrayOfChar) character_2, (void*) (0x16055) }; static const Classjava_lang_String stringStruct_2 = {{(const ArrayOfChar) character_2, (void *) (0x16055)}; static const Classjava_lang_String stringStruct_2 = {
(struct HArrayOfChar * ) &arrayOfChar_2 ,(struct HArrayOfChar *) & arrayOfChar_2,
0,0
2222
}; static const Hjava_lang_String string_2 =}; static const Hjava_lang_String string_2 =
{{
(Classjava_lang_String*) &stringStruct_2 , (void*) (&java_lang_String_MethodTable) }; static const H ava_lang_Class test_brevet_Classe2_Handle = {(Classjava_lang_String *) & stringStruct_2, (void *) (&java_lang_String_MethodTable)}; static const H ava_lang_Class test_brevet_Classe2_Handle = {
(Classjava_lang_Class*) & (test_brevet_Class_Entry [TEST_B REVET_CLASSE2] ) ,(Classjava_lang_Class *) & (test_brevet_Class_Entry [TEST_B REVET_CLASSE2]),
(void* ) &java_lang_Class_MethodTable };(void *) &java_lang_Class_MethodTable};
Table des méthodes de la classe Classe2 static const struct { const MhwClmClass *classdescriptor; const MhwClmMethod *methods [13] ; } test_brevet_Classe2_MethodTable =Class2 class method table static const struct {const MhwClmClass * classdescriptor; const MhwClmMethod * methods [13]; } test_brevet_Classe2_MethodTable =
{ (const{(const
MhwClmClass* ) & (test_brevet_Class_Entry [TEST_BREVET_CLAS SE2]),MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLAS SE2]),
{ ULL, (MhwClmMethod*) & (java_lang_Object_Method[2] ) /* 1 */, (MhwClmMethod* &(test_brevet_Classel_Method[2] ) /*{ULL, (MhwClmMethod *) & (java_lang_Object_Method [2]) / * 1 * /, (MhwClmMethod * & (test_brevet_Classel_Method [2]) / *
2 */,2 * /,
(MhwClmMethod* &(java_lang_Objectjy[ethod[ll] ) /* 3(MhwClmMethod * & (java_lang_Objectjy [ethod [ll]) / * 3
*/, (MhwClmMethod* &(java_lang_0bject_Method[9] ) /* 4* /, (MhwClmMethod * & (java_lang_0bject_Method [9]) / * 4
*/, (MhwClmMethod* & ( j ava__lang_Obj ectjylethod [3 ] ) /* 5* /, (MhwClmMethod * & (j ava__lang_Obj ectjylethod [3]) / * 5
*/, (MhwClmMethod* &(java_lang_Object_Method[10] ) /* 6* /, (MhwClmMethod * & (java_lang_Object_Method [10]) / * 6
*/, (MhwClmMethod* & (java_lang_Obj ect_Method [4] ) /* 7* /, (MhwClmMethod * & (java_lang_Obj ect_Method [4]) / * 7
*/, (MhwClmMethod* &( java_lang_Object_Method[5] ) /* 8* /, (MhwClmMethod * & (java_lang_Object_Method [5]) / * 8
*/, (MhwClmMethod* & (java_lang_Obj ect ylethod [ 6 ] ) /* 9* /, (MhwClmMethod * & (java_lang_Obj ect ylethod [6]) / * 9
*/, (MhwClmMethod* &(java_lang_Object_Method[7] ) /* 10* /, (MhwClmMethod * & (java_lang_Object_Method [7]) / * 10
*/, (MhwClmMethod* & (java_lang_Object_Method [1] ) / * 11* /, (MhwClmMethod * & (java_lang_Object_Method [1]) / * 11
*/,* /
(MhwClmMethod* &(test_brevet_Classe2_Method[l] ) /* 12 */(MhwClmMethod * & (test_brevet_Classe2_Method [l]) / * 12 * /
} }; static const Hjava_lang__Class test_brevet_Interfacel_Handle = {}}; static const Hjava_lang__Class test_brevet_Interfacel_Handle = {
(Classjava_lang_Class*) & ( test_brevet_Class__Entry [TEST_B REVET_INTERFACE1] ) ,(Classjava_lang_Class *) & (test_brevet_Class__Entry [TEST_B REVET_INTERFACE1]),
(void* ) &j ava_lang_Class_MethodTable };(void *) & j ava_lang_Class_MethodTable};
Table des méthodes de 1 ' interface Interfacel static const structInterfacel static const struct interface methods table
{ const MhwClmClass *classdescriptor; const MhwClmMethod *methods [13 ] ; } test_brevet_Interfacel_MethodTable ={const MhwClmClass * classdescriptor; const MhwClmMethod * methods [13]; } test_brevet_Interfacel_MethodTable =
{{
(const MhwClmClass* ) & (test_brevet_Class_Entry[TEST_BREVET_INTE RFACEl] ) ,(const MhwClmClass * ) & ( test_brevet_Class_Entry [TEST_BREVET_INTE RFACEl]),
{ NULL,{ NULL
(MhwClmMethod* &(java_lang_0bject_Method[2] ) /* 1 */,(MhwClmMethod * & (java_lang_0bject_Method [2]) / * 1 * /,
(MhwClmMethod* & (java_lang_Object_Method [8] ) / * 2 */,(MhwClmMethod * & (java_lang_Object_Method [8]) / * 2 * /,
(MhwClmMethod* & (j ava_lang_Obj ect_Method [11] ) /* 3(MhwClmMethod * & (j ava_lang_Obj ect_Method [11]) / * 3
*/,* /
(MhwClmMethod* & ( java_lang_Obj ect_Method [9 ] ) / * 4(MhwClmMethod * & (java_lang_Obj ect_Method [9]) / * 4
*/, (MhwClmMethod* & ( java_lang_Object_Method [3 ] ) /* 5 */,* /, (MhwClmMethod * & (java_lang_Object_Method [3]) / * 5 * /,
(MhwClmMethod* &(java_lang_Object_Method[10] ) /* 6(MhwClmMethod * & (java_lang_Object_Method [10]) / * 6
*/,* /
(MhwClmMethod* &( java_lang_Object_Method[4] ) /* 7 */,(MhwClmMethod * & (java_lang_Object_Method [4]) / * 7 * /,
(MhwClmMethod* &( java_lang_Object_Method[5] ) /* 8 */,(MhwClmMethod * & (java_lang_Object_Method [5]) / * 8 * /,
(MhwClmMethod* & (java_lang_Obj ect_Method [ 6] ) /* 9(MhwClmMethod * & (java_lang_Obj ect_Method [6]) / * 9
*/, (MhwClmMethod* &(java_lang_Object_Method[7] ) /* 10* /, (MhwClmMethod * & (java_lang_Object_Method [7]) / * 10
*/,* /
(MhwClmMethod* &( java_lang_Object_Method[l] ) /* 11(MhwClmMethod * & (java_lang_Object_Method [l]) / * 11
*/,* /
(MhwClmMethod* & (test_brevet_Interfacel_Method[0] ) /* 12 */ } };(MhwClmMethod * & (test_brevet_Interfacel_Method [0]) / * 12 * /} } ;
Définition des méthodes de la classe Classel const MHW_CLM_METHOD_STRUCT_TYPE test_brevet_Classel_Method[] =Definition of methods of the Classel const class MHW_CLM_METHOD_STRUCT_TYPE test_brevet_Classel_Method [] =
{{
{ /* 0 */{/ * 0 * /
{{
(MhwClmClass*) & ( test_brevet_Class_Entry [TEST_BREVET_CLA SSE1] ) , /* class */ (char*) cString_0, /* name : <init> */ (char*)cString_l, /* type : ()V */ 0 | ACC_PUBLIC , 3409, /* hashcode */ 0 /* offset */ },(MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLA SSE1]), / * class * / (char *) cString_0, / * name: <init> * / (char *) cString_l, / * type: () V * / 0 | ACC_PUBLIC, 3409, / * hashcode * / 0 / * offset * /},
5, /* code length */ (Card8* ) byteCode_0 , MhwIntlnvokeJavaMethod, NULL, /* catch table */5, / * code length * / (Card8 *) byteCode_0, MhwIntlnvokeJavaMethod, NULL, / * catch table * /
0, /* catch count */0, / * catch count * /
1, /* arg size */ 1, /* max stack */1, / * arg size * / 1, / * max stack * /
1 /* nlocals */1 / * nlocals * /
, CLASSROM_LINENO_TABLE (Lineno_0) ,, CLASSROM_LINENO_TABLE (Lineno_0),
CLASSROM_LINENO_COUNT (1) ,CLASSROM_LINENO_COUNT (1),
CLASSROM_LOCALVAR_COUNT ( 1) , CLASSROM_LOCALVAR_TABLE (LocalVar_0 ) ,CLASSROM_LOCALVAR_COUNT (1), CLASSROM_LOCALVAR_TABLE (LocalVar_0),
NULL /* thrown exceptions */ }, { /* 1 */NULL / * thrown exceptions * /}, {/ * 1 * /
{{
(MhwClmClass*) & (test_brevet_Class__Entry[TEST_BREVET_CLA SSE1] ) , /* class */(MhwClmClass *) & (test_brevet_Class__Entry [TEST_BREVET_CLA SSE1]), / * class * /
(char*) cString_2, /* na e : methodel */ (char*)cString_l, /* type : ()V */ 0 |ACC_PUBLIC,(char *) cString_2, / * na e: methodel * / (char *) cString_l, / * type: () V * / 0 | ACC_PUBLIC,
4247, /* hashcode */ 12 /* offset */4247, / * hashcode * / 12 / * offset * /
}, } ,
9, /* code length */ (Card8*)byteCode_l,9, / * code length * / (Card8 *) byteCode_l,
MhwIntlnvokeJavaMethod, NULL, /* catch table */MhwIntlnvokeJavaMethod, NULL, / * catch table * /
0, /* catch count */0, / * catch count * /
1, /* arg size */ 2, /* max stack */1, / * arg size * / 2, / * max stack * /
1 /* nlocals */1 / * nlocals * /
, CLASSROM_LINENO_TABLE (Lineno_l) ,, CLASSROM_LINENO_TABLE (Lineno_l),
CLASSROM_LINENO_COUNT(2) ,CLASSROM_LINENO_COUNT (2),
CLASSROM_LOCALVAR_COUNT(l) , CLASSROM_LOCALVAR_TABLE (LocalVar_l) ,CLASSROM_LOCALVAR_COUNT (l), CLASSROM_LOCALVAR_TABLE (LocalVar_l),
NULL /* thrown exceptions */NULL / * thrown exceptions * /
},}
{ /* 2 */{/ * 2 * /
{{
(MhwClmClass*) & ( test_brevet_Class_Entry[TEST_BREVET_CLA(MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLA
SSE1] ) , /* class */SSE1]), / * class * /
(char*)cString_3, /* name : toString */ (char*)cString_4, /* type : ( ) Ljava/lang/String;(char *) cString_3, / * name: toString * / (char *) cString_4, / * type: () Ljava / lang / String;
0 | ACC_PUBLIC , 2189, /* hashcode 2 /* offset */0 | ACC_PUBLIC, 2189, / * hashcode 2 / * offset * /
},}
3, /* code length */ (Cardδ* ) byteCode_2 , MhwIntlnvokeJavaMethod, NULL, /* catch table */3, / * code length * / (Cardδ *) byteCode_2, MhwIntlnvokeJavaMethod, NULL, / * catch table * /
0, /* catch count */0, / * catch count * /
1, /* arg size */ 1, /* max stack */ 1 /* nlocals */1, / * arg size * / 1, / * max stack * / 1 / * nlocals * /
, CLASSROM_LINENO_TABLE (Lineno_2 ) , CLASSROM_LINENO_COUNT ( 1 ) , CLASSROM_LOCALVAR_COUNT ( 1 ) , CLASSROM_LOCALVAR_TABLE (LocalVar_2 ) NULL /* thrown exceptions */ } };, CLASSROM_LINENO_TABLE (Lineno_2), CLASSROM_LINENO_COUNT (1), CLASSROM_LOCALVAR_COUNT (1), CLASSROM_LOCALVAR_TABLE (LocalVar_2) NULL / * thrown exceptions * /}};
Table des constantes/références de la classe Classel static const void* test_brevet_Classel__CP [ ] = {Table of constants / references of the Classel class static const void * test_brevet_Classel__CP [] = {
(const void*) NULL, /* 1 */ (const void*)&string_0,(const void *) NULL, / * 1 * / (const void *) & string_0,
/* 2 */ (const void*) &(java_lang_System_Field[2] ) , /* 3 */ (const void*)&string_l, /* 4 */ (const void* ) & (test_brevet_Class_Entry [TEST_BREVET_INTERFACE1] )/ * 2 * / (const void *) & (java_lang_System_Field [2]), / * 3 * / (const void *) & string_l, / * 4 * / (const void *) & (test_brevet_Class_Entry [TEST_BREVET_INTERFACE1])
#ifndef CLASSROM_OPTIMIZE#ifndef CLASSROM_OPTIMIZE
/* 5 */ (const void*)cString_5 /* C String */, /* 6 */ (const void*)cString_6 /* C String */ #endif /* CLASSROM_OPTIMIZE *// * 5 * / (const void *) cString_5 / * C String * /, / * 6 * / (const void *) cString_6 / * C String * / #endif / * CLASSROM_OPTIMIZE * /
};};
Définition des méthodes de la classe Classe2 const MHW_CLM_METHOD_STRUCT_TYPE test_brevet_Classe2_Method[] = {Definition of methods of class Classe2 const MHW_CLM_METHOD_STRUCT_TYPE test_brevet_Classe2_Method [] = {
{ /* 0 */ { (MhwClmClass* ) & (test_brevet_Class_Entry [TEST_BREVET_CLA SSE2] ) , /* class */{/ * 0 * / { (MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLA SSE2]), / * class * /
(char*) cString_0 , /* name : <init> */ (char*)cString_l, /* type : ()V */ 0 | CC_PUBLIC, 3409, /* hashcode */ 0 /* offset */(char *) cString_0, / * name: <init> * / (char *) cString_l, / * type: () V * / 0 | CC_PUBLIC, 3409, / * hashcode * / 0 / * offset * /
}, 5, /* code length */ (Card8* ) byteCode_3 , MhwIntlnvokeJavaMethod, NULL, /* catch table */ } , 5, / * code length * / (Card8 *) byteCode_3, MhwIntlnvokeJavaMethod, NULL, / * catch table * /
0, /* catch count */ 1, /* arg size */0, / * catch count * / 1, / * arg size * /
1, /* max stack */ 1 /* nlocals */1, / * max stack * / 1 / * nlocals * /
, CLASSROM_LINENO_TABLE (Lineno_3 ) , CLASSROM_LINENO_COUNT ( 1 ) , CLASSROM_LOCALVAR_COUNT ( 1) ,, CLASSROM_LINENO_TABLE (Lineno_3), CLASSROM_LINENO_COUNT (1), CLASSROM_LOCALVAR_COUNT (1),
CLASSROM_LOCALVAR_TABLE (LocalVar_3 ) ,CLASSROM_LOCALVAR_TABLE (LocalVar_3),
NULL /* thrown exceptions */ },NULL / * thrown exceptions * /},
{ /* 1 */ {{/ * 1 * / {
(MhwClmClass* ) & ( test_brevet_Class_Entry [TEST_BREVET_CLA SSE2] ) , /* class */(MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLA SSE2]), / * class * /
(char*) cString_2 , /* name : methodel */ (char*)cString_l, /* type : ()V */(char *) cString_2, / * name: methodel * / (char *) cString_l, / * type: () V * /
0 | ACC_PUBLIC ,0 | ACC_PUBLIC,
4247, /* hashcode */4247, / * hashcode * /
12 /* offset */12 / * offset * /
}, 9, /* code length */ } , 9, / * code length * /
(Card8* ) byteCode_4 , MhwIntlnvokeJavaMethod, NULL, /* catch table */ 0, /* catch count */ 1, /* arg size */(Card8 *) byteCode_4, MhwIntlnvokeJavaMethod, NULL, / * catch table * / 0, / * catch count * / 1, / * arg size * /
2, /* max stack */ 1 /* nlocals */2, / * max stack * / 1 / * nlocals * /
, CLASSROM_LINENO_TABLE (Lineno_4) , CLASSROM_LINENO_COUNT(2) , CLASSROM_LOCALVAR_COUN ( 1) ,, CLASSROM_LINENO_TABLE (Lineno_4), CLASSROM_LINENO_COUNT (2), CLASSROM_LOCALVAR_COUN (1),
CLASSROM_LOCALVAR_TABLE (LocalVar_4) , NULL /* thrown exceptions */ };CLASSROM_LOCALVAR_TABLE (LocalVar_4), NULL / * thrown exceptions * / };
Table des constantes/références de la classe Classe2 static const void* test_brevet_Classe2_CP [ ] = {Class 2 constants / references table static const void * test_brevet_Classe2_CP [] = {
(const void*) NULL, /* 1 */ (const void*)&(java_lang__System_Field[2] ) ,(const void *) NULL, / * 1 * / (const void *) & (java_lang__System_Field [2]),
/* 2 */ (const void*)&string_2,/ * 2 * / (const void *) & string_2,
/* 3 */ (const void*) & (test_brevet__Classel_Method[0] ) #ifndef CLASSROM OPTIMIZE/ * 3 * / (const void *) & (test_brevet__Classel_Method [0]) #ifndef CLASSROM OPTIMIZE
/* 4 */ (const void*)cString_5 /* C String */, /* 5 */ (const void*)cString_9 /* C String *// * 4 * / (const void *) cString_5 / * C String * /, / * 5 * / (const void *) cString_9 / * C String * /
#endif /* CLASSROM_OPTIMIZE */#endif / * CLASSROM_OPTIMIZE * /
};};
Définition des méthodes de l'interface Interfacel const MH _CLM_METHOD_STRUCT_TYPE test_brevet_Interfacel_Method[] =Definition of the methods of the Interfacel const MH interface _CLM_METHOD_STRUCT_TYPE test_brevet_Interfacel_Method [] =
{{
{ /* 0 */ { (MhwClmClass*) & ( test_brevet_Class_Entry [TEST_BREVET__INT ERFACE1]), /* class */{/ * 0 * / {(MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET__INT ERFACE1]), / * class * /
(char*)cString_2, /* name : methodel */(char *) cString_2, / * name: methodel * /
(char*)cString_l, /* type : ()V */(char *) cString_l, / * type: () V * /
0 | ACC_PUBLIC | ACC_ABSTRACT, 4247, /* hashcode */0 | ACC_PUBLIC | ACC_ABSTRACT, 4247, / * hashcode * /
12 /* offset */12 / * offset * /
},}
0, /* code length */ NULL, /* byte code */ MhwIntlnvokeAbstractMethod, NULL, /* catch table */0, / * code length * / NULL, / * byte code * / MhwIntlnvokeAbstractMethod, NULL, / * catch table * /
0, /* catch count */0, / * catch count * /
1, /* arg size */ 0, /* max stack */ 0 /* nlocals */1, / * arg size * / 0, / * max stack * / 0 / * nlocals * /
,NULL, /* lineno table */ 0, /* lineno count */ 0, /* localvar count */ NULL, /* localvar table */ NULL /* thrown exceptions */ }, NULL, / * lineno table * / 0, / * lineno count * / 0, / * localvar count * / NULL, / * localvar table * / NULL / * thrown exceptions * /}
Définition des classes du paquetage const MhwClmClassRom test_brevet_Class_Entry [ ] =Defining the classes of the const package MhwClmClassRom test_brevet_Class_Entry [] =
{{
{ /* 0 */{/ * 0 * /
(char*) cString_7, /* name : test/brevet/Classel */ (MhwClmClass* ) & ( j ava_lang_Class_Entry [JAVA_LANG_OBJECT] ) , /* superclass */(char *) cString_7, / * name: test / patent / Classel * / (MhwClmClass *) & (j ava_lang_Class_Entry [JAVA_LANG_OBJECT]), / * superclass * /
92, /* hashcode */92, / * hashcode * /
CLASSROM_ACCESS (CLASS_ROM| CLASS_PUBLIC) ,CLASSROM_ACCESS (CLASS_ROM | CLASS_PUBLIC),
0, /* object size */ NULL, /* outerclass */0, / * object size * / NULL, / * outerclass * /
NULL, /* adrStaticFields */NULL, / * adrStaticFields * /
0, /* sizeStaticFields */ NULL, /* fields */ CLASSROM_FIELD_COUN (0,0,0), 3, /* method count */0, / * sizeStaticFields * / NULL, / * fields * / CLASSROM_FIELD_COUN (0,0,0), 3, / * method count * /
(MhwClmMethod* ) test_brevet_Classel_JMethod, (MhwClmConstantPool*) test__brevet_Classel_CP,(MhwClmMethod *) test_brevet_Classel_JMethod, (MhwClmConstantPool *) test__brevet_Classel_CP,
NULL, /* class loader */NULL, / * class loader * /
NULL, /* clinit */ NULL, /* finalizer */NULL, / * clinit * / NULL, / * finalizer * /
(Hjava_lang_Class*) &test_brevet_Classel_Handle, /* class handle */(Hjava_lang_Class *) & test_brevet_Classel_Handle, / * class handle * /
(MhwClmMethodTable*) &test_brevet_Classel_MethodTable, 13, /* ethodtable size */(MhwClmMethodTable *) & test_brevet_Classel_MethodTable, 13, / * ethodtable size * /
1, /* interface count */ (Cardl6* ) interfaceslmplemented_0 ,1, / * interface count * / (Cardl6 *) interfaceslmplemented_0,
(char*) cString_8, /* source name : Classel. java */(char *) cString_8, / * source name: Classel. java * /
NULL, /* protection domain */NULL, / * protection domain * /
NUL , / * super class name */VOID, / * super class name * /
NUL , / * strings */VOID, / * strings * /
(Cardlβ) 3, /* major_version */(Cardlβ) 3, / * major_version * /
(Cardlβ) 3, /* minor_version */(Cardlβ) 3, / * minor_version * /
(Cardlβ) 7, /* cp_count */(Cardlβ) 7, / * cp_count * /
(Card8) : 29 /* status */(Card8): 29 / * status * /
} { '/* i */ (char*) cString_10, /* name : test/brevet/Classe2 */} {'/ * i * / (char *) cString_10, / * name: test / patent / Class2 * /
(MhwClmClass* ) & ( test_brevet_Class_Entry [TEST_BREVET_CLA SSEl]), /*superclass */ 93, /* hashcode */(MhwClmClass *) & (test_brevet_Class_Entry [TEST_BREVET_CLA SSEl]), / * superclass * / 93, / * hashcode * /
CLASSROM_ACCESS (CLASS_ROM| CLASS_PUBLIC) ,CLASSROM_ACCESS (CLASS_ROM | CLASS_PUBLIC),
0, /* object size */0, / * object size * /
NULL, /* outerclass */NULL, / * outerclass * /
NULL, /* adrStaticFields */ 0, /* sizeStaticFields */NULL, / * adrStaticFields * / 0, / * sizeStaticFields * /
NULL, /* fields */NULL, / * fields * /
CLASSROM_FIELD_COUNT (0,0,0),CLASSROM_FIELD_COUNT (0,0,0),
2, /* method count */2, / * method count * /
(MhwClmMethod*) test_brevet_Classe2__Method, (MhwClmConstantPool*) test_brevet_Classe2_CP,(MhwClmMethod *) test_brevet_Classe2__Method, (MhwClmConstantPool *) test_brevet_Classe2_CP,
NULL, /* class loader */NULL, / * class loader * /
NULL, /* clinit */NULL, / * clinit * /
NULL, /* finalizer */NULL, / * finalizer * /
(Hjava_lang_Class*) &test_brevet_Classe2_Handle, /* class handle */(Hjava_lang_Class *) & test_brevet_Classe2_Handle, / * class handle * /
(MhwClmMethodTable* ) &test_brevet_Classe2_MethodTable, 13, /* methodtable size */ 0, /* interface count */ NULL, /* interfaces implemented */(MhwClmMethodTable *) & test_brevet_Classe2_MethodTable, 13, / * methodtable size * / 0, / * interface count * / NULL, / * interfaces implemented * /
(char*) cString_ll, /* source name : Classe2.java */(char *) cString_ll, / * source name: Classe2.java * /
NULL, /* protection domain */NULL, / * protection domain * /
NULL, /* super class name */NULL, / * super class name * /
NULL, /* strings */NULL, / * strings * /
(Cardlβ) 3, /* major_version */(Cardlβ) 3, / * major_version * /
(Cardlβ) 3, /* minor_version */(Cardlβ) 3, / * minor_version * /
(Cardlβ) 6, /* cp_count */(Cardlβ) 6, / * cp_count * /
(Cardδ) 29 /* status */(Cardδ) 29 / * status * /
} { /* 2 */' } {/ * 2 * / '
(char*) cString_12 , /* name : tteest/brevet/Interfacel(char *) cString_12, / * name: tteest / patent / Interfacel
77
(MhwClmClass* ) & ( j ava_lang_Class_Entry [ JAVA_LANG_OBJECT] ) , /* superclass */(MhwClmClass *) & (j ava_lang_Class_Entry [JAVA_LANG_OBJECT]), / * superclass * /
394, /* hashcode */394, / * hashcode * /
CLASSROM_ACCESS (CLASS_ROM | CLASS_PUBLIC | CLASS_INTERFACE | CLASS_ABSTRACT) , 0, /* object size */CLASSROM_ACCESS (CLASS_ROM | CLASS_PUBLIC | CLASS_INTERFACE | CLASS_ABSTRACT), 0, / * object size * /
NULL, /* outerclass */NULL, / * outerclass * /
NULL, /* adrStaticFields */ 0, /* sizeStaticFields */ NULL, /* fields */ CLASSROM_FIELD_COUNT (0,0,0),NULL, / * adrStaticFields * / 0, / * sizeStaticFields * / NULL, / * fields * / CLASSROM_FIELD_COUNT (0,0,0),
1, /* method count */ (MhwClmMethod*) test_brevet_Interf cel_Method, NULL, /* constant pool */ NULL, /* class loader */ NULL, /* clinit */ NULL, /* finalizer */ (Hjava_lang_Class*) &test_brevet_Interfacel_Handle, /* class handle */1, / * method count * / (MhwClmMethod *) test_brevet_Interf cel_Method, NULL, / * constant pool * / NULL, / * class loader * / NULL, / * clinit * / NULL, / * finalizer * / (Hjava_lang_Class *) & test_brevet_Interfacel_Handle , / * class handle * /
(MhwClmMethodTable* ) &test_brevet_Interfacel_MethodTable 13, /* methodtable size */ 0, /* interface count */ NULL, /* interfaces implemented */(MhwClmMethodTable *) & test_brevet_Interfacel_MethodTable 13, / * methodtable size * / 0, / * interface count * / NULL, / * interfaces implemented * /
(char*) cString_13 , /* source name : Interfacel . java */ NULL, /* protection domain */ NULL, /* super class name */ NULL, /* strings */ (Cardlβ) 3, /* ma or_version */ (Cardlβ) 3, /* minor_version */ (Cardlβ) 1, /* cp_count */ (Card8) 29 /* status */(char *) cString_13, / * source name: Interfacel. java * / NULL, / * protection domain * / NULL, / * super class name * / NULL, / * strings * / (Cardlβ) 3, / * ma or_version * / (Cardlβ) 3, / * minor_version * / (Cardlβ ) 1, / * cp_count * / (Card8) 29 / * status * /
Informations diverses const Card32 test_brevet_ClassNumber = 3 ; const Card32 test_brevet_CheckSum = 773706915 ; const Card32 test_brevet_PackageUsedNumber = 2 ; const PackageUsedStruct test_brevet_PackageUsedArray [ ]Miscellaneous information const Card32 test_brevet_ClassNumber = 3; const Card32 test_brevet_CheckSum = 773706915; const Card32 test_brevet_PackageUsedNumber = 2; const PackageUsedStruct test_brevet_PackageUsedArray []
{{
{{
JAVA_LANG_CHECKSUM_VALUE, &j ava_lang_CheckSum, "java/lang"JAVA_LANG_CHECKSUM_VALUE, & j ava_lang_CheckSum, "java / lang"
}, } ,
{ TEST_BREVET_CHECKSUM_VALUE, &test_brevet_CheckSum, "test/brevet" { TEST_BREVET_CHECKSUM_VALUE, & test_brevet_CheckSum, "test / patent"

Claims

REVENDICATIONS
1. Procédé de gestion de classes pour un langage orienté objet basé sur une résolution dynamique des classes objets, caractérisé en ce que l'on transforme la résolution d'au moins une classe dynamique, pour un groupe de classes autonomes, en résolution statique.1. Class management method for an object oriented language based on a dynamic resolution of object classes, characterized in that the resolution of at least one dynamic class is transformed, for a group of autonomous classes, into static resolution.
2. Procédé selon la revendication 1, utilisé dans une machine virtuelle Java pour un ensemble de classes autonomes, dans lequel on inclut la structure native exploitée directement par le noyau Java de ces classes en tant que données du binaire de la machine virtuelle.2. Method according to claim 1, used in a Java virtual machine for a set of autonomous classes, in which the native structure exploited directly by the Java kernel of these classes is included as binary data of the virtual machine.
3. Procédé selon la revendication 2 utilisé dans un système embarqué, dans lequel on inclut la structure native de ces classes en tant que données du binaire de la machine virtuelle sous une forme impliquant une optimisation des ressources mémoire du système ainsi qu'une optimisation en vitesse de l'exécution du bytecode des méthodes de classe.3. Method according to claim 2 used in an embedded system, in which the native structure of these classes is included as binary data of the virtual machine in a form implying an optimization of the memory resources of the system as well as an optimization in speed of execution of bytecode of class methods.
4. Procédé selon la revendication 3, dans lequel on crée des fichiers source en langage natif décrivant les structures natives correspondant à l'ensemble autonome des classes.4. Method according to claim 3, in which source files are created in native language describing the native structures corresponding to the autonomous set of classes.
5. Procédé selon la revendication 4, dans lequel on découpe 1 ' ensemble autonome de classes en sous-ensembles correspondant aux paquetages Java, ces sous-ensembles n'étant pas autonomes individuellement et on établit des règles de nommage des symboles de manière à pouvoir référencer une classe d'un paquetage depuis une classe d'un autre paquetage.5. Method according to claim 4, in which the autonomous set of classes is cut into subsets corresponding to Java packages, these subsets are not individually autonomous and rules for naming symbols are established so as to be able to reference a class of a package from a class of another package.
6. Procédé selon la revendication 5, dans lequel dans le cadre de la description des méthodes et plus particulièrement dans le cadre de la description du bytecode des méthodes, on . remplace le bytecode nécessitant la résolution d'une entité par le bytecode réalisant la même fonctionnalité mais qui part du principe que l'entité est résolue.6. The method of claim 5, wherein in the context of the description of methods and more particularly in the context of the description of the bytecode of methods, on. replaces the bytecode requiring the resolution of an entity by the bytecode performing the same functionality but which assumes that the entity is resolved.
7. Outil de génération des structures natives depuis les binaires objets, mettant en œuvre le procédé selon l'une quelconque des revendications précédentes . 7. Tool for generating native structures from the object binaries, implementing the method according to any one of the preceding claims.
PCT/FR2001/001848 2000-06-15 2001-06-14 Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method WO2001097013A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001267653A AU2001267653A1 (en) 2000-06-15 2001-06-14 Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR00/07629 2000-06-15
FR0007629 2000-06-15

Publications (2)

Publication Number Publication Date
WO2001097013A2 true WO2001097013A2 (en) 2001-12-20
WO2001097013A3 WO2001097013A3 (en) 2003-09-25

Family

ID=8851285

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2001/001848 WO2001097013A2 (en) 2000-06-15 2001-06-14 Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method

Country Status (2)

Country Link
AU (1) AU2001267653A1 (en)
WO (1) WO2001097013A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2006252067B1 (en) * 2005-12-20 2007-04-26 Sivantos Gmbh Earwax protection device having a colored membrane

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0810522A2 (en) * 1996-05-30 1997-12-03 Sun Microsystems, Inc. A method and system for loading classes in read-only memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0810522A2 (en) * 1996-05-30 1997-12-03 Sun Microsystems, Inc. A method and system for loading classes in read-only memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2006252067B1 (en) * 2005-12-20 2007-04-26 Sivantos Gmbh Earwax protection device having a colored membrane

Also Published As

Publication number Publication date
WO2001097013A3 (en) 2003-09-25
AU2001267653A1 (en) 2001-12-24

Similar Documents

Publication Publication Date Title
US9934005B2 (en) Dynamically building locale objects or subsections of locale objects based on historical data
US7779429B2 (en) Method and machine-readable medium for building distributed software
US7971194B1 (en) Programming language techniques for client-side development and execution
US8020146B2 (en) Applying deferred refactoring and API changes in an IDE
US8924944B2 (en) Implementation of distributed methods that support generic functions
US20060218538A1 (en) System, method and computer program product for converting a serialized object between different software versions
US11256817B2 (en) Tool for generating security policies for containers
EP1739551A1 (en) Method of handling data compatible with an object modeling formalism
Philippsen et al. Collaborative EM image processing with the IPLT image processing library and toolbox
Napieralla Considering webassembly containers for edge computing on hardware-constrained iot devices
Giallorenzo et al. LEMMA2Jolie: A tool to generate microservice APIs from domain models
US8196152B2 (en) Container context information propagation in an aspect-oriented environment
WO2001097013A2 (en) Method for managing classes for an object-oriented programming language with dynamic resolution and tool for generating native structures from java binaries implementing said method
Harzenetter et al. An Integrated Management System for Composed Applications Deployed by Different Deployment Automation Technologies
US7308679B2 (en) Method and computer program product for providing a meta-data programming language level interface
Mateos et al. Migration from COBOL to SOA: measuring the impact on web services interfaces complexity
CN110837367B (en) User interface processing method and device and electronic equipment
Thomas et al. Pharo: A reflective language—Analyzing the reflective API and its internal dependencies
FR2936327A1 (en) METHOD FOR DOWNLOADING A .NET PROGRAM AND DEVICE THEREFOR
CN117519691B (en) Application processing method, device, computer equipment and storage medium
Beres Sams teach yourself visual studio. NET 2003 in 21 days
Tanwar et al. Using Query-Based System with Slicing for Web Services Optimization
Bhatt et al. Application of Python Programming and Its Future
Pujari et al. Slicing Based on Web Scrapped Concurrent Component
Evjen et al. Visual Basic. Net bible

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP