Claims
- 1. A computer program embodied on a computer-readable medium for providing software development, the embodied program comprising:
a textual programming language; and a language front-end supporting software development in a programming methodology of the textual language and providing a graphical programming environment permitting access to types of the textual programming language and permitting subtypes to be defined and modified dynamically (“dynamic types”) while the software under development is executing.
- 2. A computer program embodied on a computer-readable medium for providing software development, the embodied program comprising:
an object-oriented programming language; and a language front-end supporting software development in a programming methodology of the object-oriented programming language and providing a graphical programming environment permitting access to classes of the object-oriented programming language and permitting subclasses to be defined and modified dynamically (“dynamic classes”) while the software under development is executing.
- 3. The computer program of claim 2, wherein modifications to the dynamic classes are reflected in future instances of the dynamic classes and in instances of the dynamic classes existing prior to the changes.
- 4. The computer program of claim 2, wherein the object-oriented programming language is Java.
- 5. The computer program of claim 2, wherein the dynamic classes coexist with compiled classes of the object-oriented programming language, the dynamic and the compiled classes each being capable of calling methods on instances of either of the dynamic or the compiled classes.
- 6. The computer program of claim 2, wherein dynamic classes may be created as subclasses of other dynamic classes or of compiled classes of the object-oriented programming language (“parent classes”) and may selectively override methods of the respective parent classes.
- 7. The computer program of claim 6, wherein the respective compiled classes are capable of calling methods on instances of the dynamic classes polymorphically, whereby overridden behavior is exhibited.
- 8. The computer program of claim 2, wherein upon creation of each dynamic class a respective peer class is automatically generated and compiled in the object-oriented programming language.
- 9. The computer program of claim 8, wherein the object-oriented programming language is Java and Java source code for each respective peer class is generated automatically, compiled into byte code by a Java compiler, and loaded into a Java interpreter upon creation of the respective dynamic class.
- 10. The computer program of claim 8, wherein the peer class overrides all methods of the parent class, whereby execution of any method overridden by the respective dynamic class is deferred to the dynamic class and execution of any method not overridden by the respective dynamic class is deferred to the parent class.
- 11. The computer program of claim 2, wherein the definition of and modifications to the dynamic classes includes a declaration of dynamically modifiable instance variables (“dynamic fields”) for retaining information within instances of the respective dynamic class.
- 12. The computer program of claim 2, wherein the definition of and modifications to the dynamic classes includes a declaration of dynamically modifiable constructors (“dynamic constructors”), with zero or more parameters, zero or more local variables, and zero or more statements for initializing information stored within instances of the respective dynamic class.
- 13. The computer program of claim 2, wherein the definition of and modifications to the dynamic classes includes a declaration of dynamically modifiable methods (“dynamic methods”), with zero or more parameters, zero or more local variables, and zero or more statements for operating upon information stored within instances of the respective dynamic class.
- 14. The computer program of claim 2, wherein the definition of and modifications to the dynamic classes includes construction of a view for graphically displaying information stored within instances of the respective dynamic class.
- 15. The computer program of claim 14, wherein the object-oriented programming language is Java and wherein constraints and an order for the view are automatically determined by generation of a rough layout by a programmer, wherein further options for the layout are provided and are selected from a group consisting of:
a regular grid, to determine a dimension and insertion order for Java's GridLayout; aligned, to determine constraints for Java's GridBagLayout; border, to determine center, north, south, east, and west components for Java's BorderLayout; scaled layout, where component positions and sizes scale to fit a respective container; and free form, where components are arranged exactly as specified by the programmer.
- 16. The computer program of claim 14, wherein the definition of and modifications to the dynamic classes includes defining relationships (“connections”) among components of the view, and between the components of the view and instance variables of the respective dynamic class.
- 17. The computer program of claim 14, wherein the definition of and modifications to the dynamic classes includes defining actions (“controllers”), the actions including steps carried out in response to events occurring within the view.
- 18. The computer program of claim 17, wherein a programmer demonstrates an event of interest by performing the event on a component of the view, and then selecting the event from a list of all recorded events.
- 19. The computer program of claim 2, wherein the definition of and modifications to the dynamic classes includes defining actions (“behaviors”), the actions having zero or more parameters and local variables, and having zero or more steps periodically executed by instances of the respective dynamic class.
- 20. The computer program of claim 19, further providing a modifiable expression to describe the period of execution, and a modifiable condition to describe when the period of execution ceases.
- 21. The computer program of claim 2, further implementing a visual representation providing for a viewing of modifications to the dynamic classes, wherein a textual syntax of the object-oriented programming language is hidden.
- 22. The computer program of claim 21, further implementing an interactive mechanism for use in conjunction with the visual representation in a process for defining and modifying the dynamic classes.
- 23. The computer program of claim 22, wherein the visual representation represents items selected from the class consisting of class, variable, constructor, method, controller, behavior, and parameter as a visual unit, the visual unit displaying a textual name of the item, showing scope of the item by visual cue, and indicating a data or return type of the item by graphical representation, and a name of the type of the item.
- 24. The computer program of claim 23, wherein the visual unit is a capsule, the visual cue is color, and the graphical representation is selected from the group consisting or an icon, popup text and an icon with popup text.
- 25. The computer program of claim 24, wherein statements and return values within a body of each constructor, method, controller and behavior are displayed as a chain of capsules and visually nested expressions.
- 26. The computer program of claim 24, wherein a name of each variable, constructor, method, controller, and behavior is updated directly on its respective capsule, and all capsules representing uses of the respective variable, constructor, method, controller and behavior have their textual names automatically updated.
- 27. The computer program of claim 22, wherein uses for each variable, constructor, method, controller, and behavior are delineated by selection from a list, or by dragging its respective capsule to an expression or chain within which it is to be used.
- 28. The computer program of claim 22, wherein creation of an instance variable causes automatic creation of appropriately named methods for getting and setting the value of the variable.
- 29. The computer program of claim 22, wherein changing a name of a variable causes a name of a method for getting and setting a value of the variable to be appropriately updated.
- 30. The computer program of claim 22, wherein, upon execution of the software under development, a programmer may control a speed of the execution and may receive visual feedback indicating a currently executing statement or expression within a context of its containing constructor, method, controller, or behavior.
- 31. The computer program of claim 30, where programmers may observe an execution stack for nested method calls and constructor calls, and may select any level of the execution stack to observe a currently executing expression within a context of its containing constructor, method, controller, or behavior.
- 32. The computer program of claim 30, where programmers may observe values produced by the most recent execution of each expression within a stack frame.
- 33. The computer program of claim 30, where programmers may specify points in the software under development (“breakpoints”), where execution automatically pauses for observation.
- 34. The computer program of claim 30, where error conditions occurring during execution of the software under development (“exceptions”) result in the execution being automatically paused for observation.
- 35. The computer program of claim 34, where programmers may modify a part of the software under development responsible for the exception, the programmers then having an option to try again, wherein the modified part of the software under development is executed again to continue with overall execution of the software under development.
- 36. The computer program of claim 34, where programmers may modify a region of the software under development responsible for the exception to catch and handle the exception, and to then allow execution to continue so that the exception is handled.
- 37. The computer program of claim 30, where programmers may modify an implementation of a dynamic class during execution, modification items being selected from a group consisting of declared instance variables, including names, modifiers and initial values, declared constructors, including their modifiers, parameters, local variables, and bodies, declared methods, including their modifiers, parameters, local variables, bodies, and return statements, view components, including their layout and connections, declared controllers, including their local variables and bodies, and declared behaviors, including their names, parameters, local variables, periodicities, termination conditions, and bodies.
- 38. A computer system comprising:
a central processing unit; a memory having a software program development system, where modifications to a program under development take effect immediately while the program is executing; and a graphical user interface supporting direct manipulation of semantic units of the program under development.
- 39. The computer system of claim 38, wherein changes to classes in the program under development are reflected in future instances of the classes and in instances of the classes existing prior to the changes.
- 40. A method of providing live software construction within an existing object-oriented programming language, the method comprising the steps of:
providing a graphical editor supporting direct manipulation of semantic units of a program under construction; receiving a programmer definition of or modification to a subclass of a compiled class of an object-oriented programming language; and executing the definition of or modification to the subclass of the compiled class in the object-oriented programming language while the program under construction is executing.
- 41. The method of claim 40, wherein modifications to subclasses in the program under construction are reflected in future instances of the subclasses and in instances of the subclasses existing prior to the modifications.
- 42. The method of claim 40, wherein the object-oriented programming language is Java.
- 43. The method of claim 40, wherein the subclasses coexist with the compiled classes, the subclasses and the compiled classes each being capable of calling methods on instances of either of the subclasses or the compiled classes.
- 44. The method of claim 40, wherein subclasses may be created within other subclasses or of compiled classes of the object-oriented programming language (“parent classes”) and may selectively override methods of the respective parent classes.
- 45. The method of claim 40, wherein upon creation of each subclass a respective peer class is automatically generated and compiled in the object-oriented programming language.
RELATED APPLICATIONS
[0001] This application claims benefit of U.S. Provisional Application Serial No. 60/373,855, filed Apr. 16, 2002, entitled, “LIVE SOFTWARE CONSTRUCTION WITH DYNAMIC CLASSES.”
Provisional Applications (1)
|
Number |
Date |
Country |
|
60373855 |
Apr 2002 |
US |